Chromium Code Reviews| Index: chrome/common/extensions/extension.cc |
| diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc |
| index 2ed5e3d3698956936597de2c79902da18c3269ee..8ae8fdb7f154fc537b367765588143556ca800af 100644 |
| --- a/chrome/common/extensions/extension.cc |
| +++ b/chrome/common/extensions/extension.cc |
| @@ -2186,17 +2186,18 @@ bool Extension::LoadFileHandlers(string16* error) { |
| return true; |
| } |
| -bool Extension::LoadExtensionFeatures(const APIPermissionSet& api_permissions, |
| +bool Extension::LoadExtensionFeatures(APIPermissionSet* api_permissions, |
| string16* error) { |
| if (manifest_->HasKey(keys::kConvertedFromUserScript)) |
| manifest_->GetBoolean(keys::kConvertedFromUserScript, |
| &converted_from_user_script_); |
| if (!LoadDevToolsPage(error) || |
| - !LoadInputComponents(api_permissions, error) || |
| + !LoadInputComponents(*api_permissions, error) || |
| !LoadContentScripts(error) || |
| !LoadPageAction(error) || |
| !LoadBrowserAction(error) || |
| + !LoadSystemIndicator(api_permissions, error) || |
| !LoadScriptBadge(error) || |
| !LoadFileBrowserHandlers(error) || |
| !LoadChromeURLOverrides(error) || |
| @@ -2443,6 +2444,35 @@ bool Extension::LoadBrowserAction(string16* error) { |
| return true; |
| } |
| +bool Extension::LoadSystemIndicator(APIPermissionSet* api_permissions, |
| + string16* error) { |
| + if (!manifest_->HasKey(keys::kSystemIndicator)) { |
| + // There was no manifest entry for the system indicator. |
| + return true; |
| + } |
| + |
| + DictionaryValue* system_indicator_value = NULL; |
| + if (!manifest_->GetDictionary(keys::kSystemIndicator, |
| + &system_indicator_value)) { |
| + *error = ASCIIToUTF16(errors::kInvalidSystemIndicator); |
| + return false; |
| + } |
| + |
| + system_indicator_info_ = LoadExtensionActionInfoHelper( |
| + system_indicator_value, |
| + Extension::ActionInfo::TYPE_SYSTEM_INDICATOR, |
| + error); |
| + |
| + if (!system_indicator_info_.get()) { |
| + return false; |
| + } |
| + |
| + // Because the manifest was successfully parsed, auto-grant the permission. |
| + api_permissions->insert(APIPermission::kSystemIndicator); |
|
not at google - send to devlin
2012/11/21 23:39:23
TODO(dewittj): do this for all extension action AP
dewittj
2012/11/26 18:32:58
Done.
|
| + |
| + return true; |
| +} |
| + |
| bool Extension::LoadScriptBadge(string16* error) { |
| if (manifest_->HasKey(keys::kScriptBadge)) { |
| if (!FeatureSwitch::script_badges()->IsEnabled()) { |
| @@ -3264,7 +3294,7 @@ bool Extension::InitFromValue(int flags, string16* error) { |
| if (!LoadSharedFeatures(api_permissions, error)) |
| return false; |
| - if (!LoadExtensionFeatures(api_permissions, error)) |
| + if (!LoadExtensionFeatures(&api_permissions, error)) |
| return false; |
| if (!LoadThemeFeatures(error)) |