| Index: chrome/browser/extensions/api/extension_action/extension_actions_api.cc
|
| diff --git a/chrome/browser/extensions/api/extension_action/extension_actions_api.cc b/chrome/browser/extensions/api/extension_action/extension_actions_api.cc
|
| index 1f919f1177f6996e09497d7798e50e0299e181d6..e075c7750f52601ce83144768cbd8ed552864cdc 100644
|
| --- a/chrome/browser/extensions/api/extension_action/extension_actions_api.cc
|
| +++ b/chrome/browser/extensions/api/extension_action/extension_actions_api.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/string_piece.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/extensions/api/extension_action/extension_page_actions_api_constants.h"
|
| +#include "chrome/browser/extensions/extension_action.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/extensions/extension_system.h"
|
| #include "chrome/browser/extensions/extension_tab_util.h"
|
| @@ -21,7 +22,6 @@
|
| #include "chrome/browser/ui/tab_contents/tab_contents.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| #include "chrome/common/extensions/extension.h"
|
| -#include "chrome/common/extensions/extension_action.h"
|
| #include "chrome/common/extensions/extension_error_utils.h"
|
| #include "chrome/common/render_messages.h"
|
| #include "content/public/browser/navigation_entry.h"
|
| @@ -240,26 +240,27 @@ void ExtensionActionStorageManager::WriteToStorage(
|
|
|
| void ExtensionActionStorageManager::ReadFromStorage(
|
| const std::string& extension_id, scoped_ptr<base::Value> value) {
|
| - const Extension* extension =
|
| - ExtensionSystem::Get(profile_)->extension_service()->
|
| - GetExtensionById(extension_id, true);
|
| + const ExtensionService* service =
|
| + ExtensionSystem::Get(profile_)->extension_service();
|
| + const Extension* extension = service->GetExtensionById(extension_id, true);
|
| if (!extension)
|
| return;
|
|
|
| - CHECK(extension->browser_action());
|
| + ExtensionAction* browser_action = service->GetBrowserAction(*extension);
|
| + CHECK(browser_action);
|
|
|
| // Don't load values from storage if the extension has updated a value
|
| // already. The extension may have only updated some of the values, but
|
| // this is a good first approximation. If the extension is doing stuff
|
| // to the browser action, we can assume it is ready to take over.
|
| - if (extension->browser_action()->has_changed())
|
| + if (browser_action->has_changed())
|
| return;
|
|
|
| const base::DictionaryValue* dict = NULL;
|
| if (!value.get() || !value->GetAsDictionary(&dict))
|
| return;
|
|
|
| - SetDefaultsFromValue(dict, extension->browser_action());
|
| + SetDefaultsFromValue(dict, browser_action);
|
| }
|
|
|
| } // namespace extensions
|
| @@ -281,11 +282,11 @@ ExtensionActionFunction::~ExtensionActionFunction() {
|
|
|
| bool ExtensionActionFunction::RunImpl() {
|
| if (base::StringPiece(name()).starts_with("scriptBadge.")) {
|
| - extension_action_ = GetExtension()->script_badge();
|
| + extension_action_ = GetScriptBadge(profile(), *GetExtension());
|
| } else {
|
| - extension_action_ = GetExtension()->browser_action();
|
| + extension_action_ = GetBrowserAction(profile(), *GetExtension());
|
| if (!extension_action_)
|
| - extension_action_ = GetExtension()->page_action();
|
| + extension_action_ = GetPageAction(profile(), *GetExtension());
|
| }
|
| if (!extension_action_) {
|
| // TODO(kalman): ideally the browserAction/pageAction APIs wouldn't event
|
| @@ -352,16 +353,17 @@ bool ExtensionActionFunction::RunImpl() {
|
| }
|
|
|
| void ExtensionActionFunction::NotifyChange() {
|
| + typedef extensions::Extension::ActionInfo ActionInfo;
|
| switch (extension_action_->action_type()) {
|
| - case ExtensionAction::TYPE_BROWSER:
|
| - case ExtensionAction::TYPE_PAGE:
|
| + case ActionInfo::TYPE_BROWSER:
|
| + case ActionInfo::TYPE_PAGE:
|
| if (extension_->browser_action()) {
|
| NotifyBrowserActionChange();
|
| } else if (extension_->page_action()) {
|
| NotifyLocationBarChange();
|
| }
|
| return;
|
| - case ExtensionAction::TYPE_SCRIPT_BADGE:
|
| + case ActionInfo::TYPE_SCRIPT_BADGE:
|
| NotifyLocationBarChange();
|
| return;
|
| }
|
|
|