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; |
} |