| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/component_extensions_whitelist/whitelist.h" | 5 #include "chrome/browser/extensions/component_extensions_whitelist/whitelist.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| 11 #include "build/build_config.h" | 11 #include "build/build_config.h" |
| 12 #include "chrome/common/extensions/extension_constants.h" | 12 #include "chrome/common/extensions/extension_constants.h" |
| 13 #include "chrome/grit/browser_resources.h" |
| 13 #include "extensions/common/constants.h" | 14 #include "extensions/common/constants.h" |
| 14 #include "grit/browser_resources.h" | |
| 15 | 15 |
| 16 #if defined(ENABLE_APP_LIST) && defined(OS_CHROMEOS) | 16 #if defined(ENABLE_APP_LIST) && defined(OS_CHROMEOS) |
| 17 #include "chrome/browser/ui/app_list/google_now_extension.h" | 17 #include "chrome/browser/ui/app_list/google_now_extension.h" |
| 18 #endif | 18 #endif |
| 19 | 19 |
| 20 #if defined(OS_CHROMEOS) | 20 #if defined(OS_CHROMEOS) |
| 21 #include "chrome/browser/chromeos/input_method/component_extension_ime_manager_i
mpl.h" | 21 #include "chrome/browser/chromeos/input_method/component_extension_ime_manager_i
mpl.h" |
| 22 #include "components/chrome_apps/grit/chrome_apps_resources.h" | 22 #include "components/chrome_apps/grit/chrome_apps_resources.h" |
| 23 #include "grit/keyboard_resources.h" | 23 #include "grit/keyboard_resources.h" |
| 24 #include "ui/file_manager/grit/file_manager_resources.h" | 24 #include "ui/file_manager/grit/file_manager_resources.h" |
| 25 #endif | 25 #endif |
| 26 | 26 |
| 27 namespace extensions { | 27 namespace extensions { |
| 28 | 28 |
| 29 bool IsComponentExtensionWhitelisted(const std::string& extension_id) { | 29 bool IsComponentExtensionWhitelisted(const std::string& extension_id) { |
| 30 const char* allowed[] = { | 30 const char* const kAllowed[] = { |
| 31 extension_misc::kHotwordSharedModuleId, | 31 extension_misc::kHotwordSharedModuleId, |
| 32 extension_misc::kInAppPaymentsSupportAppId, | 32 extension_misc::kInAppPaymentsSupportAppId, |
| 33 #if defined(ENABLE_MEDIA_ROUTER) | 33 #if defined(ENABLE_MEDIA_ROUTER) |
| 34 extension_misc::kMediaRouterStableExtensionId, | 34 extension_misc::kMediaRouterStableExtensionId, |
| 35 #endif // defined(ENABLE_MEDIA_ROUTER) | 35 #endif // defined(ENABLE_MEDIA_ROUTER) |
| 36 extension_misc::kPdfExtensionId, | 36 extension_misc::kPdfExtensionId, |
| 37 #if defined(OS_CHROMEOS) | 37 #if defined(OS_CHROMEOS) |
| 38 extension_misc::kChromeVoxExtensionId, | 38 extension_misc::kChromeVoxExtensionId, |
| 39 extension_misc::kSpeechSynthesisExtensionId, | 39 extension_misc::kSpeechSynthesisExtensionId, |
| 40 extension_misc::kZIPUnpackerExtensionId, | 40 extension_misc::kZIPUnpackerExtensionId, |
| 41 #endif | 41 #endif |
| 42 }; | 42 }; |
| 43 | 43 |
| 44 for (size_t i = 0; i < arraysize(allowed); ++i) { | 44 for (size_t i = 0; i < arraysize(kAllowed); ++i) { |
| 45 if (extension_id == allowed[i]) | 45 if (extension_id == kAllowed[i]) |
| 46 return true; | 46 return true; |
| 47 } | 47 } |
| 48 | 48 |
| 49 #if defined(ENABLE_APP_LIST) && defined(OS_CHROMEOS) | 49 #if defined(ENABLE_APP_LIST) && defined(OS_CHROMEOS) |
| 50 std::string google_now_extension_id; | 50 std::string google_now_extension_id; |
| 51 if (GetGoogleNowExtensionId(&google_now_extension_id) && | 51 if (GetGoogleNowExtensionId(&google_now_extension_id) && |
| 52 google_now_extension_id == extension_id) | 52 google_now_extension_id == extension_id) { |
| 53 return true; | 53 return true; |
| 54 } |
| 54 #endif | 55 #endif |
| 55 | 56 |
| 56 #if defined(OS_CHROMEOS) | 57 #if defined(OS_CHROMEOS) |
| 57 if (chromeos::ComponentExtensionIMEManagerImpl::IsIMEExtensionID( | 58 if (chromeos::ComponentExtensionIMEManagerImpl::IsIMEExtensionID( |
| 58 extension_id)) { | 59 extension_id)) { |
| 59 return true; | 60 return true; |
| 60 } | 61 } |
| 61 #endif | 62 #endif |
| 62 LOG(ERROR) << "Component extension with id " << extension_id << " not in " | 63 LOG(ERROR) << "Component extension with id " << extension_id << " not in " |
| 63 << "whitelist and is not being loaded as a result."; | 64 << "whitelist and is not being loaded as a result."; |
| 64 NOTREACHED(); | 65 NOTREACHED(); |
| 65 return false; | 66 return false; |
| 66 } | 67 } |
| 67 | 68 |
| 68 bool IsComponentExtensionWhitelisted(int manifest_resource_id) { | 69 bool IsComponentExtensionWhitelisted(int manifest_resource_id) { |
| 69 int allowed[] = { | 70 switch (manifest_resource_id) { |
| 70 IDR_BOOKMARKS_MANIFEST, | 71 // Please keep the list in alphabetical order. |
| 71 IDR_CHROME_APP_MANIFEST, | 72 case IDR_BOOKMARKS_MANIFEST: |
| 72 IDR_CLOUDPRINT_MANIFEST, | 73 #if defined(ENABLE_APP_LIST) |
| 73 IDR_CONNECTIVITY_DIAGNOSTICS_MANIFEST, | 74 case IDR_CHROME_APP_MANIFEST: |
| 74 IDR_CRYPTOTOKEN_MANIFEST, | 75 #endif |
| 75 IDR_FEEDBACK_MANIFEST, | 76 case IDR_CLOUDPRINT_MANIFEST: |
| 76 IDR_GAIA_AUTH_MANIFEST, | 77 case IDR_CRYPTOTOKEN_MANIFEST: |
| 77 IDR_GOOGLE_NOW_MANIFEST, | 78 case IDR_FEEDBACK_MANIFEST: |
| 78 IDR_HANGOUT_SERVICES_MANIFEST, | 79 case IDR_GAIA_AUTH_MANIFEST: |
| 79 IDR_HOTWORD_AUDIO_VERIFICATION_MANIFEST, | 80 #if defined(ENABLE_GOOGLE_NOW) |
| 80 IDR_HOTWORD_MANIFEST, | 81 case IDR_GOOGLE_NOW_MANIFEST: |
| 81 IDR_IDENTITY_API_SCOPE_APPROVAL_MANIFEST, | 82 #endif |
| 82 IDR_NETWORK_SPEECH_SYNTHESIS_MANIFEST, | 83 #if defined(GOOGLE_CHROME_BUILD) || defined(ENABLE_HANGOUT_SERVICES_EXTENSION) |
| 83 IDR_WALLPAPERMANAGER_MANIFEST, | 84 case IDR_HANGOUT_SERVICES_MANIFEST: |
| 84 IDR_WEBSTORE_MANIFEST, | 85 #endif |
| 86 #if defined(ENABLE_HOTWORDING) |
| 87 case IDR_HOTWORD_AUDIO_VERIFICATION_MANIFEST: |
| 88 case IDR_HOTWORD_MANIFEST: |
| 89 #endif |
| 90 case IDR_IDENTITY_API_SCOPE_APPROVAL_MANIFEST: |
| 85 #if defined(IMAGE_LOADER_EXTENSION) | 91 #if defined(IMAGE_LOADER_EXTENSION) |
| 86 IDR_IMAGE_LOADER_MANIFEST, | 92 case IDR_IMAGE_LOADER_MANIFEST: |
| 87 #endif | 93 #endif |
| 94 case IDR_NETWORK_SPEECH_SYNTHESIS_MANIFEST: |
| 95 case IDR_WEBSTORE_MANIFEST: |
| 96 |
| 88 #if defined(OS_CHROMEOS) | 97 #if defined(OS_CHROMEOS) |
| 89 IDR_ARC_SUPPORT_MANIFEST, | 98 // Separate ChromeOS list, as it is quite large. |
| 90 IDR_AUDIO_PLAYER_MANIFEST, | 99 case IDR_ARC_SUPPORT_MANIFEST: |
| 91 IDR_CHROME_APPS_WEBSTORE_WIDGET_MANIFEST, | 100 case IDR_AUDIO_PLAYER_MANIFEST: |
| 92 IDR_CONNECTIVITY_DIAGNOSTICS_LAUNCHER_MANIFEST, | 101 case IDR_CHROME_APPS_WEBSTORE_WIDGET_MANIFEST: |
| 93 IDR_CONNECTIVITY_DIAGNOSTICS_MANIFEST, | 102 case IDR_CONNECTIVITY_DIAGNOSTICS_LAUNCHER_MANIFEST: |
| 94 IDR_CROSH_BUILTIN_MANIFEST, | 103 case IDR_CONNECTIVITY_DIAGNOSTICS_MANIFEST: |
| 95 IDR_DEMO_APP_MANIFEST, | 104 case IDR_CROSH_BUILTIN_MANIFEST: |
| 96 IDR_EASY_UNLOCK_MANIFEST, | 105 case IDR_DEMO_APP_MANIFEST: |
| 97 IDR_EASY_UNLOCK_MANIFEST_SIGNIN, | 106 case IDR_EASY_UNLOCK_MANIFEST: |
| 98 IDR_ECHO_MANIFEST, | 107 case IDR_EASY_UNLOCK_MANIFEST_SIGNIN: |
| 99 IDR_FILEMANAGER_MANIFEST, | 108 case IDR_ECHO_MANIFEST: |
| 100 IDR_FIRST_RUN_DIALOG_MANIFEST, | 109 case IDR_FILEMANAGER_MANIFEST: |
| 101 IDR_GALLERY_MANIFEST, | 110 case IDR_FIRST_RUN_DIALOG_MANIFEST: |
| 102 IDR_GENIUS_APP_MANIFEST, | 111 case IDR_GALLERY_MANIFEST: |
| 103 IDR_HELP_MANIFEST, | 112 case IDR_KEYBOARD_MANIFEST: |
| 104 IDR_KEYBOARD_MANIFEST, | 113 case IDR_MOBILE_MANIFEST: |
| 105 IDR_MOBILE_MANIFEST, | 114 case IDR_VIDEO_PLAYER_MANIFEST: |
| 106 IDR_QUICKOFFICE_MANIFEST, | 115 case IDR_WALLPAPERMANAGER_MANIFEST: |
| 107 IDR_VIDEO_PLAYER_MANIFEST, | 116 #if defined(GOOGLE_CHROME_BUILD) |
| 108 IDR_WALLPAPERMANAGER_MANIFEST, | 117 case IDR_GENIUS_APP_MANIFEST: |
| 109 #endif | 118 case IDR_HELP_MANIFEST: |
| 110 }; | 119 case IDR_QUICKOFFICE_MANIFEST: |
| 111 | 120 #endif // defined(GOOGLE_CHROME_BUILD) |
| 112 for (size_t i = 0; i < arraysize(allowed); ++i) { | 121 #endif // defined(OS_CHROMEOS) |
| 113 if (manifest_resource_id == allowed[i]) | |
| 114 return true; | 122 return true; |
| 115 } | 123 } |
| 116 | 124 |
| 117 LOG(ERROR) << "Component extension with manifest resource id " | 125 LOG(ERROR) << "Component extension with manifest resource id " |
| 118 << manifest_resource_id << " not in whitelist and is not being " | 126 << manifest_resource_id << " not in whitelist and is not being " |
| 119 << "loaded as a result."; | 127 << "loaded as a result."; |
| 120 NOTREACHED(); | 128 NOTREACHED(); |
| 121 return false; | 129 return false; |
| 122 } | 130 } |
| 123 | 131 |
| 124 } // namespace extensions | 132 } // namespace extensions |
| OLD | NEW |