| 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 938 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 949 | 949 |
| 950 if (page_action_info() && !page_action_info()->default_icon.empty()) { | 950 if (page_action_info() && !page_action_info()->default_icon.empty()) { |
| 951 for (ExtensionIconSet::IconMap::const_iterator iter = | 951 for (ExtensionIconSet::IconMap::const_iterator iter = |
| 952 page_action_info()->default_icon.map().begin(); | 952 page_action_info()->default_icon.map().begin(); |
| 953 iter != page_action_info()->default_icon.map().end(); | 953 iter != page_action_info()->default_icon.map().end(); |
| 954 ++iter) { | 954 ++iter) { |
| 955 image_paths.insert(FilePath::FromWStringHack(UTF8ToWide(iter->second))); | 955 image_paths.insert(FilePath::FromWStringHack(UTF8ToWide(iter->second))); |
| 956 } | 956 } |
| 957 } | 957 } |
| 958 | 958 |
| 959 if (browser_action_info() && !browser_action_info()->default_icon.empty()) { | 959 const ActionInfo* browser_action = ActionInfoData::GetBrowserActionInfo(this); |
| 960 if (browser_action && !browser_action->default_icon.empty()) { |
| 960 for (ExtensionIconSet::IconMap::const_iterator iter = | 961 for (ExtensionIconSet::IconMap::const_iterator iter = |
| 961 browser_action_info()->default_icon.map().begin(); | 962 browser_action->default_icon.map().begin(); |
| 962 iter != browser_action_info()->default_icon.map().end(); | 963 iter != browser_action->default_icon.map().end(); |
| 963 ++iter) { | 964 ++iter) { |
| 964 image_paths.insert(FilePath::FromWStringHack(UTF8ToWide(iter->second))); | 965 image_paths.insert(FilePath::FromWStringHack(UTF8ToWide(iter->second))); |
| 965 } | 966 } |
| 966 } | 967 } |
| 967 | 968 |
| 968 return image_paths; | 969 return image_paths; |
| 969 } | 970 } |
| 970 | 971 |
| 971 ExtensionResource Extension::GetIconResource( | 972 ExtensionResource Extension::GetIconResource( |
| 972 int size, ExtensionIconSet::MatchType match_type) const { | 973 int size, ExtensionIconSet::MatchType match_type) const { |
| (...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1257 runtime_data_.UpdateTabSpecificPermissions(tab_id, permissions); | 1258 runtime_data_.UpdateTabSpecificPermissions(tab_id, permissions); |
| 1258 } | 1259 } |
| 1259 | 1260 |
| 1260 void Extension::ClearTabSpecificPermissions(int tab_id) const { | 1261 void Extension::ClearTabSpecificPermissions(int tab_id) const { |
| 1261 base::AutoLock auto_lock(runtime_data_lock_); | 1262 base::AutoLock auto_lock(runtime_data_lock_); |
| 1262 runtime_data_.ClearTabSpecificPermissions(tab_id); | 1263 runtime_data_.ClearTabSpecificPermissions(tab_id); |
| 1263 } | 1264 } |
| 1264 | 1265 |
| 1265 Extension::ManifestData* Extension::GetManifestData(const std::string& key) | 1266 Extension::ManifestData* Extension::GetManifestData(const std::string& key) |
| 1266 const { | 1267 const { |
| 1267 DCHECK(finished_parsing_manifest_); | 1268 DCHECK(finished_parsing_manifest_ || thread_checker_.CalledOnValidThread()); |
| 1268 ManifestDataMap::const_iterator iter = manifest_data_.find(key); | 1269 ManifestDataMap::const_iterator iter = manifest_data_.find(key); |
| 1269 if (iter != manifest_data_.end()) | 1270 if (iter != manifest_data_.end()) |
| 1270 return iter->second.get(); | 1271 return iter->second.get(); |
| 1271 return NULL; | 1272 return NULL; |
| 1272 } | 1273 } |
| 1273 | 1274 |
| 1274 void Extension::SetManifestData(const std::string& key, | 1275 void Extension::SetManifestData(const std::string& key, |
| 1275 Extension::ManifestData* data) { | 1276 Extension::ManifestData* data) { |
| 1276 DCHECK(!finished_parsing_manifest_); | 1277 DCHECK(!finished_parsing_manifest_ && thread_checker_.CalledOnValidThread()); |
| 1277 manifest_data_[key] = linked_ptr<ManifestData>(data); | 1278 manifest_data_[key] = linked_ptr<ManifestData>(data); |
| 1278 } | 1279 } |
| 1279 | 1280 |
| 1280 Extension::Location Extension::location() const { | 1281 Extension::Location Extension::location() const { |
| 1281 return manifest_->location(); | 1282 return manifest_->location(); |
| 1282 } | 1283 } |
| 1283 | 1284 |
| 1284 const std::string& Extension::id() const { | 1285 const std::string& Extension::id() const { |
| 1285 return manifest_->extension_id(); | 1286 return manifest_->extension_id(); |
| 1286 } | 1287 } |
| (...skipping 1474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2761 string16* error) { | 2762 string16* error) { |
| 2762 if (manifest_->HasKey(keys::kConvertedFromUserScript)) | 2763 if (manifest_->HasKey(keys::kConvertedFromUserScript)) |
| 2763 manifest_->GetBoolean(keys::kConvertedFromUserScript, | 2764 manifest_->GetBoolean(keys::kConvertedFromUserScript, |
| 2764 &converted_from_user_script_); | 2765 &converted_from_user_script_); |
| 2765 | 2766 |
| 2766 if (!LoadManifestHandlerFeatures(error) || | 2767 if (!LoadManifestHandlerFeatures(error) || |
| 2767 !LoadDevToolsPage(error) || | 2768 !LoadDevToolsPage(error) || |
| 2768 !LoadInputComponents(*api_permissions, error) || | 2769 !LoadInputComponents(*api_permissions, error) || |
| 2769 !LoadContentScripts(error) || | 2770 !LoadContentScripts(error) || |
| 2770 !LoadPageAction(error) || | 2771 !LoadPageAction(error) || |
| 2771 !LoadBrowserAction(error) || | |
| 2772 !LoadSystemIndicator(api_permissions, error) || | 2772 !LoadSystemIndicator(api_permissions, error) || |
| 2773 !LoadChromeURLOverrides(error) || | 2773 !LoadChromeURLOverrides(error) || |
| 2774 !LoadTextToSpeechVoices(error) || | 2774 !LoadTextToSpeechVoices(error) || |
| 2775 !LoadIncognitoMode(error) || | 2775 !LoadIncognitoMode(error) || |
| 2776 !LoadFileHandlers(error) || | 2776 !LoadFileHandlers(error) || |
| 2777 !LoadContentSecurityPolicy(error)) | 2777 !LoadContentSecurityPolicy(error)) |
| 2778 return false; | 2778 return false; |
| 2779 | 2779 |
| 2780 return true; | 2780 return true; |
| 2781 } | 2781 } |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3004 if (page_action_value) { | 3004 if (page_action_value) { |
| 3005 page_action_info_ = LoadExtensionActionInfoHelper( | 3005 page_action_info_ = LoadExtensionActionInfoHelper( |
| 3006 this, page_action_value, error); | 3006 this, page_action_value, error); |
| 3007 if (!page_action_info_.get()) | 3007 if (!page_action_info_.get()) |
| 3008 return false; // Failed to parse page action definition. | 3008 return false; // Failed to parse page action definition. |
| 3009 } | 3009 } |
| 3010 | 3010 |
| 3011 return true; | 3011 return true; |
| 3012 } | 3012 } |
| 3013 | 3013 |
| 3014 bool Extension::LoadBrowserAction(string16* error) { | |
| 3015 if (!manifest_->HasKey(keys::kBrowserAction)) | |
| 3016 return true; | |
| 3017 DictionaryValue* browser_action_value = NULL; | |
| 3018 if (!manifest_->GetDictionary(keys::kBrowserAction, &browser_action_value)) { | |
| 3019 *error = ASCIIToUTF16(errors::kInvalidBrowserAction); | |
| 3020 return false; | |
| 3021 } | |
| 3022 | |
| 3023 browser_action_info_ = LoadExtensionActionInfoHelper( | |
| 3024 this, browser_action_value, error); | |
| 3025 if (!browser_action_info_.get()) | |
| 3026 return false; // Failed to parse browser action definition. | |
| 3027 return true; | |
| 3028 } | |
| 3029 | |
| 3030 bool Extension::LoadSystemIndicator(APIPermissionSet* api_permissions, | 3014 bool Extension::LoadSystemIndicator(APIPermissionSet* api_permissions, |
| 3031 string16* error) { | 3015 string16* error) { |
| 3032 if (!manifest_->HasKey(keys::kSystemIndicator)) { | 3016 if (!manifest_->HasKey(keys::kSystemIndicator)) { |
| 3033 // There was no manifest entry for the system indicator. | 3017 // There was no manifest entry for the system indicator. |
| 3034 return true; | 3018 return true; |
| 3035 } | 3019 } |
| 3036 | 3020 |
| 3037 DictionaryValue* system_indicator_value = NULL; | 3021 DictionaryValue* system_indicator_value = NULL; |
| 3038 if (!manifest_->GetDictionary(keys::kSystemIndicator, | 3022 if (!manifest_->GetDictionary(keys::kSystemIndicator, |
| 3039 &system_indicator_value)) { | 3023 &system_indicator_value)) { |
| (...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3652 | 3636 |
| 3653 return true; | 3637 return true; |
| 3654 } | 3638 } |
| 3655 | 3639 |
| 3656 bool Extension::HasMultipleUISurfaces() const { | 3640 bool Extension::HasMultipleUISurfaces() const { |
| 3657 int num_surfaces = 0; | 3641 int num_surfaces = 0; |
| 3658 | 3642 |
| 3659 if (page_action_info()) | 3643 if (page_action_info()) |
| 3660 ++num_surfaces; | 3644 ++num_surfaces; |
| 3661 | 3645 |
| 3662 if (browser_action_info()) | 3646 if (ActionInfoData::GetBrowserActionInfo(this)) |
| 3663 ++num_surfaces; | 3647 ++num_surfaces; |
| 3664 | 3648 |
| 3665 if (is_app()) | 3649 if (is_app()) |
| 3666 ++num_surfaces; | 3650 ++num_surfaces; |
| 3667 | 3651 |
| 3668 return num_surfaces > 1; | 3652 return num_surfaces > 1; |
| 3669 } | 3653 } |
| 3670 | 3654 |
| 3671 void Extension::OverrideLaunchUrl(const GURL& override_url) { | 3655 void Extension::OverrideLaunchUrl(const GURL& override_url) { |
| 3672 GURL new_url(override_url); | 3656 GURL new_url(override_url); |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3837 | 3821 |
| 3838 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( | 3822 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( |
| 3839 const Extension* extension, | 3823 const Extension* extension, |
| 3840 const PermissionSet* permissions, | 3824 const PermissionSet* permissions, |
| 3841 Reason reason) | 3825 Reason reason) |
| 3842 : reason(reason), | 3826 : reason(reason), |
| 3843 extension(extension), | 3827 extension(extension), |
| 3844 permissions(permissions) {} | 3828 permissions(permissions) {} |
| 3845 | 3829 |
| 3846 } // namespace extensions | 3830 } // namespace extensions |
| OLD | NEW |