Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2755)

Unified Diff: chrome/common/extensions/extension.cc

Issue 11361189: Initial skeleton for System Indicator API (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Add manifest parsing and integrate with extension action api handlers. Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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))

Powered by Google App Engine
This is Rietveld 408576698