| Index: chrome/browser/extensions/active_script_controller.cc
|
| diff --git a/chrome/browser/extensions/active_script_controller.cc b/chrome/browser/extensions/active_script_controller.cc
|
| index 80c7fbdc5e93c015b6465199dcad964694ca4a81..e6f0cec5e0fb8c77a5ef533fbe601f9f2e64c48f 100644
|
| --- a/chrome/browser/extensions/active_script_controller.cc
|
| +++ b/chrome/browser/extensions/active_script_controller.cc
|
| @@ -61,8 +61,11 @@ bool ShouldRecordExtension(const Extension* extension) {
|
| ActiveScriptController::ActiveScriptController(
|
| content::WebContents* web_contents)
|
| : content::WebContentsObserver(web_contents),
|
| - enabled_(FeatureSwitch::scripts_require_action()->IsEnabled()) {
|
| + enabled_(FeatureSwitch::scripts_require_action()->IsEnabled()),
|
| + extension_registry_observer_(this) {
|
| CHECK(web_contents);
|
| + extension_registry_observer_.Add(
|
| + ExtensionRegistry::Get(web_contents->GetBrowserContext()));
|
| }
|
|
|
| ActiveScriptController::~ActiveScriptController() {
|
| @@ -169,12 +172,6 @@ ExtensionAction* ActiveScriptController::GetActionForExtension(
|
| return action.get();
|
| }
|
|
|
| -void ActiveScriptController::OnExtensionUnloaded(const Extension* extension) {
|
| - PendingRequestMap::iterator iter = pending_requests_.find(extension->id());
|
| - if (iter != pending_requests_.end())
|
| - pending_requests_.erase(iter);
|
| -}
|
| -
|
| PermissionsData::AccessType
|
| ActiveScriptController::RequiresUserConsentForScriptInjection(
|
| const Extension* extension,
|
| @@ -323,16 +320,6 @@ void ActiveScriptController::PermitScriptInjection(int64 request_id) {
|
| }
|
| }
|
|
|
| -bool ActiveScriptController::OnMessageReceived(const IPC::Message& message) {
|
| - bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP(ActiveScriptController, message)
|
| - IPC_MESSAGE_HANDLER(ExtensionHostMsg_RequestScriptInjectionPermission,
|
| - OnRequestScriptInjectionPermission)
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP()
|
| - return handled;
|
| -}
|
| -
|
| void ActiveScriptController::LogUMA() const {
|
| UMA_HISTOGRAM_COUNTS_100(
|
| "Extensions.ActiveScriptController.ShownActiveScriptsOnPage",
|
| @@ -350,6 +337,16 @@ void ActiveScriptController::LogUMA() const {
|
| }
|
| }
|
|
|
| +bool ActiveScriptController::OnMessageReceived(const IPC::Message& message) {
|
| + bool handled = true;
|
| + IPC_BEGIN_MESSAGE_MAP(ActiveScriptController, message)
|
| + IPC_MESSAGE_HANDLER(ExtensionHostMsg_RequestScriptInjectionPermission,
|
| + OnRequestScriptInjectionPermission)
|
| + IPC_MESSAGE_UNHANDLED(handled = false)
|
| + IPC_END_MESSAGE_MAP()
|
| + return handled;
|
| +}
|
| +
|
| void ActiveScriptController::DidNavigateMainFrame(
|
| const content::LoadCommittedDetails& details,
|
| const content::FrameNavigateParams& params) {
|
| @@ -361,4 +358,16 @@ void ActiveScriptController::DidNavigateMainFrame(
|
| pending_requests_.clear();
|
| }
|
|
|
| +void ActiveScriptController::OnExtensionUnloaded(
|
| + content::BrowserContext* browser_context,
|
| + const Extension* extension,
|
| + UnloadedExtensionInfo::Reason reason) {
|
| + PendingRequestMap::iterator iter = pending_requests_.find(extension->id());
|
| + if (iter != pending_requests_.end()) {
|
| + pending_requests_.erase(iter);
|
| + ExtensionActionAPI::Get(web_contents()->GetBrowserContext())->
|
| + NotifyPageActionsChanged(web_contents());
|
| + }
|
| +}
|
| +
|
| } // namespace extensions
|
|
|