Index: chrome/browser/ui/extensions/extension_action_view_controller.cc |
diff --git a/chrome/browser/ui/extensions/extension_action_view_controller.cc b/chrome/browser/ui/extensions/extension_action_view_controller.cc |
index cca14768e673f2dcf52f406fd1f96b3ff89b3e1e..bdbb532645e5ea77decfac2d16466af113dc8b38 100644 |
--- a/chrome/browser/ui/extensions/extension_action_view_controller.cc |
+++ b/chrome/browser/ui/extensions/extension_action_view_controller.cc |
@@ -11,6 +11,7 @@ |
#include "chrome/browser/extensions/api/commands/command_service.h" |
#include "chrome/browser/extensions/api/extension_action/extension_action_api.h" |
#include "chrome/browser/extensions/extension_action.h" |
+#include "chrome/browser/extensions/extension_action_runner.h" |
#include "chrome/browser/extensions/extension_view.h" |
#include "chrome/browser/extensions/extension_view_host.h" |
#include "chrome/browser/extensions/extension_view_host_factory.h" |
@@ -33,6 +34,7 @@ |
using extensions::ActionInfo; |
using extensions::CommandService; |
+using extensions::ExtensionActionRunner; |
ExtensionActionViewController::ExtensionActionViewController( |
const extensions::Extension* extension, |
@@ -119,16 +121,13 @@ bool ExtensionActionViewController::IsEnabled( |
return extension_action_->GetIsVisible( |
SessionTabHelper::IdForTab(web_contents)) || |
- extensions::ExtensionActionAPI::Get(browser_->profile()) |
- ->HasBeenBlocked(extension(), web_contents); |
+ HasBeenBlocked(web_contents); |
} |
bool ExtensionActionViewController::WantsToRun( |
content::WebContents* web_contents) const { |
- extensions::ExtensionActionAPI* action_api = |
- extensions::ExtensionActionAPI::Get(browser_->profile()); |
- return action_api->PageActionWantsToRun(extension(), web_contents) || |
- action_api->HasBeenBlocked(extension(), web_contents); |
+ return ExtensionIsValid() && |
+ (PageActionWantsToRun(web_contents) || HasBeenBlocked(web_contents)); |
} |
bool ExtensionActionViewController::HasPopup( |
@@ -208,9 +207,13 @@ bool ExtensionActionViewController::ExecuteAction(PopupShowAction show_action, |
if (!ExtensionIsValid()) |
return false; |
- if (extensions::ExtensionActionAPI::Get(browser_->profile()) |
- ->ExecuteExtensionAction( |
- extension_.get(), browser_, grant_tab_permissions) == |
+ content::WebContents* web_contents = view_delegate_->GetCurrentWebContents(); |
+ ExtensionActionRunner* action_runner = |
+ ExtensionActionRunner::GetForWebContents(web_contents); |
+ if (!action_runner) |
+ return false; |
+ |
+ if (action_runner->RunAction(extension(), grant_tab_permissions) == |
ExtensionAction::ACTION_SHOW_POPUP) { |
GURL popup_url = extension_action_->GetPopupUrl( |
SessionTabHelper::IdForTab(view_delegate_->GetCurrentWebContents())); |
@@ -401,14 +404,27 @@ ExtensionActionViewController::GetIconImageSource( |
bool is_overflow = |
toolbar_actions_bar_ && toolbar_actions_bar_->in_overflow_mode(); |
- extensions::ExtensionActionAPI* api = |
- extensions::ExtensionActionAPI::Get(browser_->profile()); |
- bool has_blocked_actions = api->HasBeenBlocked(extension(), web_contents); |
+ bool has_blocked_actions = HasBeenBlocked(web_contents); |
image_source->set_paint_blocked_actions_decoration(has_blocked_actions); |
image_source->set_paint_page_action_decoration( |
!has_blocked_actions && is_overflow && |
- api->PageActionWantsToRun(extension(), web_contents)); |
+ PageActionWantsToRun(web_contents)); |
} |
return image_source; |
} |
+ |
+bool ExtensionActionViewController::PageActionWantsToRun( |
+ content::WebContents* web_contents) const { |
+ return extension_action_->action_type() == |
+ extensions::ActionInfo::TYPE_PAGE && |
+ extension_action_->GetIsVisible( |
+ SessionTabHelper::IdForTab(web_contents)); |
+} |
+ |
+bool ExtensionActionViewController::HasBeenBlocked( |
+ content::WebContents* web_contents) const { |
+ ExtensionActionRunner* action_runner = |
+ ExtensionActionRunner::GetForWebContents(web_contents); |
+ return action_runner && action_runner->WantsToRun(extension()); |
+} |