| 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 2677 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2724 } | 2725 } |
| 2725 return true; | 2726 return true; |
| 2726 } | 2727 } |
| 2727 | 2728 |
| 2728 bool Extension::LoadExtensionFeatures(APIPermissionSet* api_permissions, | 2729 bool Extension::LoadExtensionFeatures(APIPermissionSet* api_permissions, |
| 2729 string16* error) { | 2730 string16* error) { |
| 2730 if (manifest_->HasKey(keys::kConvertedFromUserScript)) | 2731 if (manifest_->HasKey(keys::kConvertedFromUserScript)) |
| 2731 manifest_->GetBoolean(keys::kConvertedFromUserScript, | 2732 manifest_->GetBoolean(keys::kConvertedFromUserScript, |
| 2732 &converted_from_user_script_); | 2733 &converted_from_user_script_); |
| 2733 | 2734 |
| 2734 if (!LoadDevToolsPage(error) || | 2735 if (!LoadManifestHandlerFeatures(error) || |
| 2736 !LoadDevToolsPage(error) || |
| 2735 !LoadInputComponents(*api_permissions, error) || | 2737 !LoadInputComponents(*api_permissions, error) || |
| 2736 !LoadContentScripts(error) || | 2738 !LoadContentScripts(error) || |
| 2737 !LoadPageAction(error) || | 2739 !LoadPageAction(error) || |
| 2738 !LoadBrowserAction(error) || | 2740 !LoadBrowserAction(error) || |
| 2739 !LoadSystemIndicator(api_permissions, error) || | 2741 !LoadSystemIndicator(api_permissions, error) || |
| 2740 !LoadScriptBadge(error) || | 2742 !LoadScriptBadge(error) || |
| 2741 !LoadFileBrowserHandlers(error) || | 2743 !LoadFileBrowserHandlers(error) || |
| 2742 !LoadChromeURLOverrides(error) || | 2744 !LoadChromeURLOverrides(error) || |
| 2743 !LoadOmnibox(error) || | |
| 2744 !LoadTextToSpeechVoices(error) || | 2745 !LoadTextToSpeechVoices(error) || |
| 2745 !LoadIncognitoMode(error) || | 2746 !LoadIncognitoMode(error) || |
| 2746 !LoadFileHandlers(error) || | 2747 !LoadFileHandlers(error) || |
| 2747 !LoadContentSecurityPolicy(error)) | 2748 !LoadContentSecurityPolicy(error)) |
| 2748 return false; | 2749 return false; |
| 2749 | 2750 |
| 2750 return true; | 2751 return true; |
| 2751 } | 2752 } |
| 2752 | 2753 |
| 2754 bool Extension::LoadManifestHandlerFeatures(string16* error) { |
| 2755 std::vector<std::string> keys = ManifestHandler::GetKeys(); |
| 2756 for (size_t i = 0; i < keys.size(); ++i) { |
| 2757 Value* value = NULL; |
| 2758 if (!manifest_->Get(keys[i], &value)) |
| 2759 continue; |
| 2760 if (!ManifestHandler::Get(keys[i])->Parse(value, this, error)) |
| 2761 return false; |
| 2762 } |
| 2763 return true; |
| 2764 } |
| 2765 |
| 2753 bool Extension::LoadDevToolsPage(string16* error) { | 2766 bool Extension::LoadDevToolsPage(string16* error) { |
| 2754 if (!manifest_->HasKey(keys::kDevToolsPage)) | 2767 if (!manifest_->HasKey(keys::kDevToolsPage)) |
| 2755 return true; | 2768 return true; |
| 2756 std::string devtools_str; | 2769 std::string devtools_str; |
| 2757 if (!manifest_->GetString(keys::kDevToolsPage, &devtools_str)) { | 2770 if (!manifest_->GetString(keys::kDevToolsPage, &devtools_str)) { |
| 2758 *error = ASCIIToUTF16(errors::kInvalidDevToolsPage); | 2771 *error = ASCIIToUTF16(errors::kInvalidDevToolsPage); |
| 2759 return false; | 2772 return false; |
| 2760 } | 2773 } |
| 2761 devtools_url_ = GetResourceURL(devtools_str); | 2774 devtools_url_ = GetResourceURL(devtools_str); |
| 2762 return true; | 2775 return true; |
| (...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3295 | 3308 |
| 3296 // An extension may override at most one page. | 3309 // An extension may override at most one page. |
| 3297 if (overrides->size() > 1) { | 3310 if (overrides->size() > 1) { |
| 3298 *error = ASCIIToUTF16(errors::kMultipleOverrides); | 3311 *error = ASCIIToUTF16(errors::kMultipleOverrides); |
| 3299 return false; | 3312 return false; |
| 3300 } | 3313 } |
| 3301 | 3314 |
| 3302 return true; | 3315 return true; |
| 3303 } | 3316 } |
| 3304 | 3317 |
| 3305 bool Extension::LoadOmnibox(string16* error) { | |
| 3306 if (!manifest_->HasKey(keys::kOmnibox)) | |
| 3307 return true; | |
| 3308 if (!manifest_->GetString(keys::kOmniboxKeyword, &omnibox_keyword_) || | |
| 3309 omnibox_keyword_.empty()) { | |
| 3310 *error = ASCIIToUTF16(errors::kInvalidOmniboxKeyword); | |
| 3311 return false; | |
| 3312 } | |
| 3313 return true; | |
| 3314 } | |
| 3315 | |
| 3316 bool Extension::LoadTextToSpeechVoices(string16* error) { | 3318 bool Extension::LoadTextToSpeechVoices(string16* error) { |
| 3317 if (!manifest_->HasKey(keys::kTtsEngine)) | 3319 if (!manifest_->HasKey(keys::kTtsEngine)) |
| 3318 return true; | 3320 return true; |
| 3319 DictionaryValue* tts_dict = NULL; | 3321 DictionaryValue* tts_dict = NULL; |
| 3320 if (!manifest_->GetDictionary(keys::kTtsEngine, &tts_dict)) { | 3322 if (!manifest_->GetDictionary(keys::kTtsEngine, &tts_dict)) { |
| 3321 *error = ASCIIToUTF16(errors::kInvalidTts); | 3323 *error = ASCIIToUTF16(errors::kInvalidTts); |
| 3322 return false; | 3324 return false; |
| 3323 } | 3325 } |
| 3324 | 3326 |
| 3325 if (tts_dict->HasKey(keys::kTtsVoices)) { | 3327 if (tts_dict->HasKey(keys::kTtsVoices)) { |
| (...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4164 | 4166 |
| 4165 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( | 4167 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( |
| 4166 const Extension* extension, | 4168 const Extension* extension, |
| 4167 const PermissionSet* permissions, | 4169 const PermissionSet* permissions, |
| 4168 Reason reason) | 4170 Reason reason) |
| 4169 : reason(reason), | 4171 : reason(reason), |
| 4170 extension(extension), | 4172 extension(extension), |
| 4171 permissions(permissions) {} | 4173 permissions(permissions) {} |
| 4172 | 4174 |
| 4173 } // namespace extensions | 4175 } // namespace extensions |
| OLD | NEW |