Index: chrome/common/extensions/extension.cc |
diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc |
index 2ed5e3d3698956936597de2c79902da18c3269ee..fe86cc6f2e967baa95e47ede0ff07e4cc536b961 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,36 @@ 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. |
+ // TODO(dewittj) Add this for all extension action APIs. |
+ api_permissions->insert(APIPermission::kSystemIndicator); |
+ |
+ return true; |
+} |
+ |
bool Extension::LoadScriptBadge(string16* error) { |
if (manifest_->HasKey(keys::kScriptBadge)) { |
if (!FeatureSwitch::script_badges()->IsEnabled()) { |
@@ -3264,7 +3295,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)) |