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 |