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

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

Issue 597413003: Introduce an "ExtensionWantsToAct" method (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Latest master for CQ Created 6 years, 3 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 efbecfa5667ff6bda55ec106c8ea2a177e5324c4..fb05935330ea0b98b4ece4f8989258255ba2423f 100644
--- a/chrome/browser/extensions/api/extension_action/extension_action_api.cc
+++ b/chrome/browser/extensions/api/extension_action/extension_action_api.cc
@@ -230,6 +230,26 @@ bool ExtensionActionAPI::ShowExtensionActionPopup(
}
}
+bool ExtensionActionAPI::ExtensionWantsToRun(
+ const Extension* extension, content::WebContents* web_contents) {
+ // An extension wants to act if it has a visible page action on the given
+ // page...
+ ExtensionAction* page_action =
+ ExtensionActionManager::Get(browser_context_)->GetPageAction(*extension);
+ if (page_action &&
+ page_action->GetIsVisible(SessionTabHelper::IdForTab(web_contents)))
+ return true;
+
+ // ... Or if it has pending scripts that need approval for execution.
+ ActiveScriptController* active_script_controller =
+ ActiveScriptController::GetForWebContents(web_contents);
+ if (active_script_controller &&
+ active_script_controller->WantsToRun(extension))
+ return true;
+
+ return false;
+}
+
void ExtensionActionAPI::NotifyChange(ExtensionAction* extension_action,
content::WebContents* web_contents,
content::BrowserContext* context) {
@@ -255,9 +275,7 @@ void ExtensionActionAPI::ClearAllValuesForTab(
for (ExtensionSet::const_iterator iter = enabled_extensions.begin();
iter != enabled_extensions.end(); ++iter) {
ExtensionAction* extension_action =
- action_manager->GetBrowserAction(*iter->get());
- if (!extension_action)
- extension_action = action_manager->GetPageAction(*iter->get());
+ action_manager->GetExtensionAction(**iter);
if (extension_action) {
extension_action->ClearAllValuesForTab(tab_id);
NotifyChange(extension_action, web_contents, browser_context);

Powered by Google App Engine
This is Rietveld 408576698