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

Unified Diff: chrome/browser/extensions/api/extension_action/extension_action_api.cc

Issue 516633002: Stop showing page actions in the location bar with redesign enabled (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Latest CQ for Master Created 6 years, 4 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/extensions/api/extension_action/extension_action_api.cc
diff --git a/chrome/browser/extensions/api/extension_action/extension_action_api.cc b/chrome/browser/extensions/api/extension_action/extension_action_api.cc
index cf7db41e04b1917be399cd9f05d0a433caef1ef8..9e9b8a87d6bb102fad8df79047ad990ed4b904e3 100644
--- a/chrome/browser/extensions/api/extension_action/extension_action_api.cc
+++ b/chrome/browser/extensions/api/extension_action/extension_action_api.cc
@@ -171,14 +171,13 @@ ExtensionAction::ShowAction ExtensionActionAPI::ExecuteExtensionAction(
int tab_id = SessionTabHelper::IdForTab(web_contents);
- ExtensionAction* extension_action =
- ExtensionActionManager::Get(browser_context_)->GetExtensionAction(
- *extension);
-
- // Anything that calls this should have a page or browser action.
- DCHECK(extension_action);
- if (!extension_action->GetIsVisible(tab_id))
- return ExtensionAction::ACTION_NONE;
+ ActiveScriptController* active_script_controller =
+ ActiveScriptController::GetForWebContents(web_contents);
+ bool has_pending_scripts = false;
+ if (active_script_controller &&
+ active_script_controller->GetActionForExtension(extension)) {
+ has_pending_scripts = true;
+ }
// Grant active tab if appropriate.
if (grant_active_tab_permissions) {
@@ -186,13 +185,20 @@ ExtensionAction::ShowAction ExtensionActionAPI::ExecuteExtensionAction(
GrantIfRequested(extension);
}
- // Notify ActiveScriptController that the action was clicked, if appropriate.
- ActiveScriptController* active_script_controller =
- ActiveScriptController::GetForWebContents(web_contents);
- if (active_script_controller &&
- active_script_controller->GetActionForExtension(extension)) {
- active_script_controller->OnClicked(extension);
- }
+ // If this was a request to run a script, it will have been run once active
+ // tab was granted. Return without executing the action, since we should only
+ // run pending scripts OR the extension action, not both.
+ if (has_pending_scripts)
+ return ExtensionAction::ACTION_NONE;
+
+ ExtensionAction* extension_action =
+ ExtensionActionManager::Get(browser_context_)->GetExtensionAction(
+ *extension);
+
+ // Anything that gets here should have a page or browser action.
+ DCHECK(extension_action);
+ if (!extension_action->GetIsVisible(tab_id))
+ return ExtensionAction::ACTION_NONE;
if (extension_action->HasPopup(tab_id))
return ExtensionAction::ACTION_SHOW_POPUP;

Powered by Google App Engine
This is Rietveld 408576698