| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/common/extensions/extension.h" | 5 #include "chrome/common/extensions/extension.h" |
| 6 | 6 |
| 7 #include <ostream> | 7 #include <ostream> |
| 8 | 8 |
| 9 #include "base/base64.h" | 9 #include "base/base64.h" |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 #include "chrome/common/chrome_switches.h" | 27 #include "chrome/common/chrome_switches.h" |
| 28 #include "chrome/common/chrome_version_info.h" | 28 #include "chrome/common/chrome_version_info.h" |
| 29 #include "chrome/common/extensions/csp_validator.h" | 29 #include "chrome/common/extensions/csp_validator.h" |
| 30 #include "chrome/common/extensions/extension_manifest_constants.h" | 30 #include "chrome/common/extensions/extension_manifest_constants.h" |
| 31 #include "chrome/common/extensions/extension_resource.h" | 31 #include "chrome/common/extensions/extension_resource.h" |
| 32 #include "chrome/common/extensions/feature_switch.h" | 32 #include "chrome/common/extensions/feature_switch.h" |
| 33 #include "chrome/common/extensions/features/feature.h" | 33 #include "chrome/common/extensions/features/feature.h" |
| 34 #include "chrome/common/extensions/features/simple_feature_provider.h" | 34 #include "chrome/common/extensions/features/simple_feature_provider.h" |
| 35 #include "chrome/common/extensions/file_browser_handler.h" | 35 #include "chrome/common/extensions/file_browser_handler.h" |
| 36 #include "chrome/common/extensions/manifest.h" | 36 #include "chrome/common/extensions/manifest.h" |
| 37 #include "chrome/common/extensions/manifest_handler.h" |
| 37 #include "chrome/common/extensions/permissions/permission_set.h" | 38 #include "chrome/common/extensions/permissions/permission_set.h" |
| 38 #include "chrome/common/extensions/permissions/permissions_info.h" | 39 #include "chrome/common/extensions/permissions/permissions_info.h" |
| 39 #include "chrome/common/extensions/user_script.h" | 40 #include "chrome/common/extensions/user_script.h" |
| 40 #include "chrome/common/url_constants.h" | 41 #include "chrome/common/url_constants.h" |
| 41 #include "crypto/sha2.h" | 42 #include "crypto/sha2.h" |
| 42 #include "extensions/common/constants.h" | 43 #include "extensions/common/constants.h" |
| 43 #include "extensions/common/error_utils.h" | 44 #include "extensions/common/error_utils.h" |
| 44 #include "extensions/common/url_pattern_set.h" | 45 #include "extensions/common/url_pattern_set.h" |
| 45 #include "googleurl/src/url_util.h" | 46 #include "googleurl/src/url_util.h" |
| 46 #include "grit/chromium_strings.h" | 47 #include "grit/chromium_strings.h" |
| (...skipping 2673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2720 } | 2721 } |
| 2721 return true; | 2722 return true; |
| 2722 } | 2723 } |
| 2723 | 2724 |
| 2724 bool Extension::LoadExtensionFeatures(APIPermissionSet* api_permissions, | 2725 bool Extension::LoadExtensionFeatures(APIPermissionSet* api_permissions, |
| 2725 string16* error) { | 2726 string16* error) { |
| 2726 if (manifest_->HasKey(keys::kConvertedFromUserScript)) | 2727 if (manifest_->HasKey(keys::kConvertedFromUserScript)) |
| 2727 manifest_->GetBoolean(keys::kConvertedFromUserScript, | 2728 manifest_->GetBoolean(keys::kConvertedFromUserScript, |
| 2728 &converted_from_user_script_); | 2729 &converted_from_user_script_); |
| 2729 | 2730 |
| 2730 if (!LoadDevToolsPage(error) || | 2731 if (!LoadManifestHandlerFeatures(error) || |
| 2732 !LoadDevToolsPage(error) || |
| 2731 !LoadInputComponents(*api_permissions, error) || | 2733 !LoadInputComponents(*api_permissions, error) || |
| 2732 !LoadContentScripts(error) || | 2734 !LoadContentScripts(error) || |
| 2733 !LoadPageAction(error) || | 2735 !LoadPageAction(error) || |
| 2734 !LoadBrowserAction(error) || | 2736 !LoadBrowserAction(error) || |
| 2735 !LoadSystemIndicator(api_permissions, error) || | 2737 !LoadSystemIndicator(api_permissions, error) || |
| 2736 !LoadScriptBadge(error) || | 2738 !LoadScriptBadge(error) || |
| 2737 !LoadFileBrowserHandlers(error) || | 2739 !LoadFileBrowserHandlers(error) || |
| 2738 !LoadChromeURLOverrides(error) || | 2740 !LoadChromeURLOverrides(error) || |
| 2739 !LoadOmnibox(error) || | |
| 2740 !LoadTextToSpeechVoices(error) || | 2741 !LoadTextToSpeechVoices(error) || |
| 2741 !LoadIncognitoMode(error) || | 2742 !LoadIncognitoMode(error) || |
| 2742 !LoadFileHandlers(error) || | 2743 !LoadFileHandlers(error) || |
| 2743 !LoadContentSecurityPolicy(error)) | 2744 !LoadContentSecurityPolicy(error)) |
| 2744 return false; | 2745 return false; |
| 2745 | 2746 |
| 2746 return true; | 2747 return true; |
| 2747 } | 2748 } |
| 2748 | 2749 |
| 2750 bool Extension::LoadManifestHandlerFeatures(string16* error) { |
| 2751 std::vector<std::string> keys = GetManifestHandlerKeys(); |
| 2752 for (size_t i = 0; i < keys.size(); ++i) { |
| 2753 Value* value = NULL; |
| 2754 if (!manifest_->Get(keys[i], &value)) |
| 2755 continue; |
| 2756 if (!GetManifestHandler(keys[i])->Parse(value, this, error)) |
| 2757 return false; |
| 2758 } |
| 2759 return true; |
| 2760 } |
| 2761 |
| 2749 bool Extension::LoadDevToolsPage(string16* error) { | 2762 bool Extension::LoadDevToolsPage(string16* error) { |
| 2750 if (!manifest_->HasKey(keys::kDevToolsPage)) | 2763 if (!manifest_->HasKey(keys::kDevToolsPage)) |
| 2751 return true; | 2764 return true; |
| 2752 std::string devtools_str; | 2765 std::string devtools_str; |
| 2753 if (!manifest_->GetString(keys::kDevToolsPage, &devtools_str)) { | 2766 if (!manifest_->GetString(keys::kDevToolsPage, &devtools_str)) { |
| 2754 *error = ASCIIToUTF16(errors::kInvalidDevToolsPage); | 2767 *error = ASCIIToUTF16(errors::kInvalidDevToolsPage); |
| 2755 return false; | 2768 return false; |
| 2756 } | 2769 } |
| 2757 devtools_url_ = GetResourceURL(devtools_str); | 2770 devtools_url_ = GetResourceURL(devtools_str); |
| 2758 return true; | 2771 return true; |
| (...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3262 | 3275 |
| 3263 // An extension may override at most one page. | 3276 // An extension may override at most one page. |
| 3264 if (overrides->size() > 1) { | 3277 if (overrides->size() > 1) { |
| 3265 *error = ASCIIToUTF16(errors::kMultipleOverrides); | 3278 *error = ASCIIToUTF16(errors::kMultipleOverrides); |
| 3266 return false; | 3279 return false; |
| 3267 } | 3280 } |
| 3268 | 3281 |
| 3269 return true; | 3282 return true; |
| 3270 } | 3283 } |
| 3271 | 3284 |
| 3272 bool Extension::LoadOmnibox(string16* error) { | |
| 3273 if (!manifest_->HasKey(keys::kOmnibox)) | |
| 3274 return true; | |
| 3275 if (!manifest_->GetString(keys::kOmniboxKeyword, &omnibox_keyword_) || | |
| 3276 omnibox_keyword_.empty()) { | |
| 3277 *error = ASCIIToUTF16(errors::kInvalidOmniboxKeyword); | |
| 3278 return false; | |
| 3279 } | |
| 3280 return true; | |
| 3281 } | |
| 3282 | |
| 3283 bool Extension::LoadTextToSpeechVoices(string16* error) { | 3285 bool Extension::LoadTextToSpeechVoices(string16* error) { |
| 3284 if (!manifest_->HasKey(keys::kTtsEngine)) | 3286 if (!manifest_->HasKey(keys::kTtsEngine)) |
| 3285 return true; | 3287 return true; |
| 3286 DictionaryValue* tts_dict = NULL; | 3288 DictionaryValue* tts_dict = NULL; |
| 3287 if (!manifest_->GetDictionary(keys::kTtsEngine, &tts_dict)) { | 3289 if (!manifest_->GetDictionary(keys::kTtsEngine, &tts_dict)) { |
| 3288 *error = ASCIIToUTF16(errors::kInvalidTts); | 3290 *error = ASCIIToUTF16(errors::kInvalidTts); |
| 3289 return false; | 3291 return false; |
| 3290 } | 3292 } |
| 3291 | 3293 |
| 3292 if (tts_dict->HasKey(keys::kTtsVoices)) { | 3294 if (tts_dict->HasKey(keys::kTtsVoices)) { |
| (...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4131 | 4133 |
| 4132 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( | 4134 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( |
| 4133 const Extension* extension, | 4135 const Extension* extension, |
| 4134 const PermissionSet* permissions, | 4136 const PermissionSet* permissions, |
| 4135 Reason reason) | 4137 Reason reason) |
| 4136 : reason(reason), | 4138 : reason(reason), |
| 4137 extension(extension), | 4139 extension(extension), |
| 4138 permissions(permissions) {} | 4140 permissions(permissions) {} |
| 4139 | 4141 |
| 4140 } // namespace extensions | 4142 } // namespace extensions |
| OLD | NEW |