| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/extensions/component_extensions_whitelist/whitelist.h" |
| |
| #include <stddef.h> |
| |
| #include "base/logging.h" |
| #include "base/macros.h" |
| #include "build/build_config.h" |
| #include "chrome/common/extensions/extension_constants.h" |
| #include "extensions/common/constants.h" |
| #include "grit/browser_resources.h" |
| |
| #if defined(ENABLE_APP_LIST) && defined(OS_CHROMEOS) |
| #include "chrome/browser/ui/app_list/google_now_extension.h" |
| #endif |
| |
| #if defined(OS_CHROMEOS) |
| #include "chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.h" |
| #include "components/chrome_apps/grit/chrome_apps_resources.h" |
| #include "grit/keyboard_resources.h" |
| #include "ui/file_manager/grit/file_manager_resources.h" |
| #endif |
| |
| namespace extensions { |
| |
| bool IsComponentExtensionWhitelisted(const std::string& extension_id) { |
| const char* allowed[] = { |
| extension_misc::kHotwordSharedModuleId, |
| extension_misc::kInAppPaymentsSupportAppId, |
| #if defined(ENABLE_MEDIA_ROUTER) |
| extension_misc::kMediaRouterStableExtensionId, |
| #endif // defined(ENABLE_MEDIA_ROUTER) |
| extension_misc::kPdfExtensionId, |
| #if defined(OS_CHROMEOS) |
| extension_misc::kChromeVoxExtensionId, |
| extension_misc::kSpeechSynthesisExtensionId, |
| extension_misc::kZIPUnpackerExtensionId, |
| #endif |
| }; |
| |
| for (size_t i = 0; i < arraysize(allowed); ++i) { |
| if (extension_id == allowed[i]) |
| return true; |
| } |
| |
| #if defined(ENABLE_APP_LIST) && defined(OS_CHROMEOS) |
| std::string google_now_extension_id; |
| if (GetGoogleNowExtensionId(&google_now_extension_id) && |
| google_now_extension_id == extension_id) |
| return true; |
| #endif |
| |
| #if defined(OS_CHROMEOS) |
| if (chromeos::ComponentExtensionIMEManagerImpl::IsIMEExtensionID( |
| extension_id)) { |
| return true; |
| } |
| #endif |
| LOG(ERROR) << "Component extension with id " << extension_id << " not in " |
| << "whitelist and is not being loaded as a result."; |
| NOTREACHED(); |
| return false; |
| } |
| |
| bool IsComponentExtensionWhitelisted(int manifest_resource_id) { |
| int allowed[] = { |
| IDR_BOOKMARKS_MANIFEST, |
| IDR_CHROME_APP_MANIFEST, |
| IDR_CLOUDPRINT_MANIFEST, |
| IDR_CONNECTIVITY_DIAGNOSTICS_MANIFEST, |
| IDR_CRYPTOTOKEN_MANIFEST, |
| IDR_FEEDBACK_MANIFEST, |
| IDR_GAIA_AUTH_MANIFEST, |
| IDR_GOOGLE_NOW_MANIFEST, |
| IDR_HANGOUT_SERVICES_MANIFEST, |
| IDR_HOTWORD_AUDIO_VERIFICATION_MANIFEST, |
| IDR_HOTWORD_MANIFEST, |
| IDR_IDENTITY_API_SCOPE_APPROVAL_MANIFEST, |
| IDR_NETWORK_SPEECH_SYNTHESIS_MANIFEST, |
| IDR_SETTINGS_APP_MANIFEST, |
| IDR_WALLPAPERMANAGER_MANIFEST, |
| IDR_WEBSTORE_MANIFEST, |
| IDR_WHISPERNET_PROXY_MANIFEST, |
| #if defined(IMAGE_LOADER_EXTENSION) |
| IDR_IMAGE_LOADER_MANIFEST, |
| #endif |
| #if defined(OS_CHROMEOS) |
| IDR_ARC_SUPPORT_MANIFEST, |
| IDR_AUDIO_PLAYER_MANIFEST, |
| IDR_CHROME_APPS_WEBSTORE_WIDGET_MANIFEST, |
| IDR_CONNECTIVITY_DIAGNOSTICS_LAUNCHER_MANIFEST, |
| IDR_CONNECTIVITY_DIAGNOSTICS_MANIFEST, |
| IDR_CROSH_BUILTIN_MANIFEST, |
| IDR_DEMO_APP_MANIFEST, |
| IDR_EASY_UNLOCK_MANIFEST, |
| IDR_EASY_UNLOCK_MANIFEST_SIGNIN, |
| IDR_ECHO_MANIFEST, |
| IDR_FILEMANAGER_MANIFEST, |
| IDR_FIRST_RUN_DIALOG_MANIFEST, |
| IDR_GALLERY_MANIFEST, |
| IDR_GENIUS_APP_MANIFEST, |
| IDR_HELP_MANIFEST, |
| IDR_KEYBOARD_MANIFEST, |
| IDR_MOBILE_MANIFEST, |
| IDR_QUICKOFFICE_MANIFEST, |
| IDR_VIDEO_PLAYER_MANIFEST, |
| IDR_WALLPAPERMANAGER_MANIFEST, |
| #endif |
| }; |
| |
| for (size_t i = 0; i < arraysize(allowed); ++i) { |
| if (manifest_resource_id == allowed[i]) |
| return true; |
| } |
| |
| LOG(ERROR) << "Component extension with manifest resource id " |
| << manifest_resource_id << " not in whitelist and is not being " |
| << "loaded as a result."; |
| NOTREACHED(); |
| return false; |
| } |
| |
| } // namespace extensions |