Index: chrome/browser/extensions/active_script_controller.h |
diff --git a/chrome/browser/extensions/active_script_controller.h b/chrome/browser/extensions/active_script_controller.h |
index f7b20888b0338840c819e3b0d76dddfa721894c4..b6f0ffebc9305824e21d61080ad25faed835a77e 100644 |
--- a/chrome/browser/extensions/active_script_controller.h |
+++ b/chrome/browser/extensions/active_script_controller.h |
@@ -13,8 +13,10 @@ |
#include "base/callback.h" |
#include "base/compiler_specific.h" |
#include "base/memory/linked_ptr.h" |
+#include "base/scoped_observer.h" |
#include "chrome/browser/extensions/location_bar_controller.h" |
#include "content/public/browser/web_contents_observer.h" |
+#include "extensions/browser/extension_registry_observer.h" |
namespace content { |
class WebContents; |
@@ -28,13 +30,15 @@ class ExtensionAction; |
namespace extensions { |
class Extension; |
+class ExtensionRegistry; |
// The provider for ExtensionActions corresponding to scripts which are actively |
// running or need permission. |
// TODO(rdevlin.cronin): This isn't really a controller, but it has good parity |
// with PageAction"Controller". |
class ActiveScriptController : public LocationBarController::ActionProvider, |
- public content::WebContentsObserver { |
+ public content::WebContentsObserver, |
+ public ExtensionRegistryObserver { |
public: |
explicit ActiveScriptController(content::WebContents* web_contents); |
virtual ~ActiveScriptController(); |
@@ -62,7 +66,7 @@ class ActiveScriptController : public LocationBarController::ActionProvider, |
void OnActiveTabPermissionGranted(const Extension* extension); |
// Notifies the ActiveScriptController of detected ad injection. |
- void OnAdInjectionDetected(const std::set<std::string> ad_injectors); |
+ void OnAdInjectionDetected(const std::set<std::string>& ad_injectors); |
// LocationBarControllerProvider implementation. |
virtual ExtensionAction* GetActionForExtension( |
@@ -88,13 +92,23 @@ class ActiveScriptController : public LocationBarController::ActionProvider, |
// Runs any pending injections for the corresponding extension. |
void RunPendingForExtension(const Extension* extension); |
- // Handles the NotifyExtensionScriptExecution message. |
- void OnNotifyExtensionScriptExecution(const std::string& extension_id, |
- int page_id); |
+ // Handle the RequestContentScriptPermission message. |
+ void OnRequestContentScriptPermission(const std::string& extension_id, |
+ int page_id, |
+ int request_id); |
+ |
+ // Grants permission for the given request to run. |
+ void GrantContentScriptPermission(int request_id); |
// content::WebContentsObserver implementation. |
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; |
+ // ExtensionRegistryObserver implementation. |
+ virtual void OnExtensionUnloaded( |
+ content::BrowserContext* browser_context, |
+ const Extension* extension, |
+ UnloadedExtensionInfo::Reason reason) OVERRIDE; |
+ |
// Log metrics. |
void LogUMA() const; |
@@ -118,6 +132,9 @@ class ActiveScriptController : public LocationBarController::ActionProvider, |
typedef std::map<std::string, linked_ptr<ExtensionAction> > ActiveScriptMap; |
ActiveScriptMap active_script_actions_; |
+ ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> |
+ extension_registry_observer_; |
+ |
DISALLOW_COPY_AND_ASSIGN(ActiveScriptController); |
}; |