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

Unified Diff: chrome/browser/ui/extensions/extension_action_view_controller.cc

Issue 1804123003: [Extensions] Refactor extension action execution (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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/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());
+}

Powered by Google App Engine
This is Rietveld 408576698