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

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

Issue 332021: Move page actions over to ExtensionAction2 (Closed)
Patch Set: Review feedback Created 11 years, 2 months 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 202a2dcfe305eb0049cf3c1846c591ecf641cd0e..2fae2abecce8b91c1a936bacf78cb22f81bac340 100644
--- a/chrome/common/extensions/extension.cc
+++ b/chrome/common/extensions/extension.cc
@@ -297,99 +297,15 @@ bool Extension::LoadUserScriptHelper(const DictionaryValue* content_script,
return true;
}
-// Helper method that loads a PageAction or BrowserAction object from a
-// dictionary in the page_actions list or browser_action key of the manifest.
-ExtensionAction* Extension::LoadExtensionActionHelper(
- const DictionaryValue* page_action, std::string* error,
- ExtensionAction::ExtensionActionType action_type) {
- scoped_ptr<ExtensionAction> result(new ExtensionAction());
- result->set_extension_id(id());
- result->set_type(action_type);
-
- // TODO(EXTENSIONS_DEPRECATED): icons list is obsolete.
- ListValue* icons = NULL;
- if (page_action->HasKey(keys::kPageActionIcons) &&
- page_action->GetList(keys::kPageActionIcons, &icons)) {
- for (ListValue::const_iterator iter = icons->begin();
- iter != icons->end(); ++iter) {
- std::string path;
- if (!(*iter)->GetAsString(&path) || path.empty()) {
- *error = errors::kInvalidPageActionIconPath;
- return NULL;
- }
-
- result->AddIconPath(path);
- }
- }
-
- // TODO(EXTENSIONS_DEPRECATED): Read the page action |id| (optional).
- std::string id;
- if (action_type == ExtensionAction::PAGE_ACTION)
- page_action->GetString(keys::kPageActionId, &id);
- result->set_id(id);
-
- std::string default_icon;
- // Read the page action |default_icon| (optional).
- if (page_action->HasKey(keys::kPageActionDefaultIcon)) {
- if (!page_action->GetString(keys::kPageActionDefaultIcon, &default_icon) ||
- default_icon.empty()) {
- *error = errors::kInvalidPageActionIconPath;
- return NULL;
- }
- // TODO(EXTENSIONS_DEPRECATED): one icon.
- result->AddIconPath(default_icon);
- }
-
- // Read the page action |default_title|.
- std::string title;
- if (!page_action->GetString(keys::kName, &title) &&
- !page_action->GetString(keys::kPageActionDefaultTitle, &title)) {
- *error = errors::kInvalidPageActionDefaultTitle;
- return NULL;
- }
- result->set_title(title);
-
- // Read the action's |popup| (optional).
- DictionaryValue* popup = NULL;
- std::string url_str;
- if (page_action->HasKey(keys::kPageActionPopup) &&
- !page_action->GetDictionary(keys::kPageActionPopup, &popup) &&
- !page_action->GetString(keys::kPageActionPopup, &url_str)) {
- *error = errors::kInvalidPageActionPopup;
- return NULL;
- }
- if (popup) {
- // TODO(EXTENSIONS_DEPRECATED): popup is a string only
- if (!popup->GetString(keys::kPageActionPopupPath, &url_str)) {
- *error = ExtensionErrorUtils::FormatErrorMessage(
- errors::kInvalidPageActionPopupPath, "<missing>");
- return NULL;
- }
- GURL url = GetResourceURL(url_str);
- if (!url.is_valid()) {
- *error = ExtensionErrorUtils::FormatErrorMessage(
- errors::kInvalidPageActionPopupPath, url_str);
- return NULL;
- }
- result->set_popup_url(url);
- } else if (!url_str.empty()) {
- GURL url = GetResourceURL(url_str);
- if (!url.is_valid()) {
- *error = ExtensionErrorUtils::FormatErrorMessage(
- errors::kInvalidPageActionPopupPath, url_str);
- return NULL;
- }
- result->set_popup_url(url);
- }
-
- return result.release();
-}
-
ExtensionAction2* Extension::LoadExtensionAction2Helper(
const DictionaryValue* extension_action, std::string* error) {
scoped_ptr<ExtensionAction2> result(new ExtensionAction2());
result->set_extension_id(id());
+ // Page actions are hidden by default, and browser actions ignore
+ // visibility.
+ result->SetIsVisible(ExtensionAction2::kDefaultTabId, false);
+
// TODO(EXTENSIONS_DEPRECATED): icons list is obsolete.
ListValue* icons = NULL;
if (extension_action->HasKey(keys::kPageActionIcons) &&
@@ -403,7 +319,6 @@ ExtensionAction2* Extension::LoadExtensionAction2Helper(
}
result->icon_paths()->push_back(path);
- result->SetDefaultIcon(path);
}
}
@@ -426,7 +341,7 @@ ExtensionAction2* Extension::LoadExtensionAction2Helper(
*error = errors::kInvalidPageActionIconPath;
return NULL;
}
- result->SetDefaultIcon(default_icon);
+ result->set_default_icon_path(default_icon);
}
// Read the page action |default_title|.
@@ -1031,8 +946,7 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_id,
}
page_action_.reset(
- LoadExtensionActionHelper(page_action_value, error,
- ExtensionAction::PAGE_ACTION));
+ LoadExtensionAction2Helper(page_action_value, error));
if (!page_action_.get())
return false; // Failed to parse page action definition.
} else if (source.HasKey(keys::kPageAction)) {
@@ -1043,8 +957,7 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_id,
}
page_action_.reset(
- LoadExtensionActionHelper(page_action_value, error,
- ExtensionAction::PAGE_ACTION));
+ LoadExtensionAction2Helper(page_action_value, error));
if (!page_action_.get())
return false; // Failed to parse page action definition.
}
@@ -1179,9 +1092,9 @@ std::set<FilePath> Extension::GetBrowserImages() {
// page action icons
if (page_action_.get()) {
- const std::vector<std::string>& icon_paths = page_action_->icon_paths();
- for (std::vector<std::string>::const_iterator iter = icon_paths.begin();
- iter != icon_paths.end(); ++iter) {
+ std::vector<std::string>* icon_paths = page_action_->icon_paths();
+ for (std::vector<std::string>::iterator iter = icon_paths->begin();
+ iter != icon_paths->end(); ++iter) {
image_paths.insert(FilePath::FromWStringHack(UTF8ToWide(*iter)));
}
}

Powered by Google App Engine
This is Rietveld 408576698