Index: chrome/browser/chrome_content_browser_client.cc |
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc |
index 78e9939d38cc003068921a9791fd538180182f71..9ef25b72c14162740454b9e8c6d43ec244e6e231 100644 |
--- a/chrome/browser/chrome_content_browser_client.cc |
+++ b/chrome/browser/chrome_content_browser_client.cc |
@@ -687,6 +687,43 @@ void ChromeContentBrowserClient::GuestWebContentsCreated( |
guest_web_contents->Send(new ExtensionMsg_Loaded(extensions)); |
} |
+void ChromeContentBrowserClient::GuestWebContentsDestroyed( |
+ WebContents* guest_web_contents, WebContents* embedder_web_contents) { |
+ Profile* profile = Profile::FromBrowserContext( |
+ embedder_web_contents->GetBrowserContext()); |
+ ExtensionService* service = |
+ extensions::ExtensionSystem::Get(profile)->extension_service(); |
+ if (!service) |
+ return; |
+ const GURL& url = embedder_web_contents->GetSiteInstance()->GetSiteURL(); |
+ const Extension* extension = service->extensions()-> |
+ GetExtensionOrAppByURL(ExtensionURLInfo(url)); |
+ if (!extension) |
+ return; |
+ |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, |
Matt Perry
2013/02/06 22:40:24
indent+2
Fady Samuel
2013/05/15 21:58:53
Done.
|
+ FROM_HERE, |
+ base::Bind( |
+ &ChromeContentBrowserClient::RemoveWebViewEventListenersOnIOThread, |
+ base::Unretained(this), profile, extension->id(), |
+ embedder_web_contents->GetRenderProcessHost()->GetID(), |
+ embedder_web_contents->GetRoutingID(), |
+ guest_web_contents->GetInstanceID())); |
+} |
+ |
+void ChromeContentBrowserClient::RemoveWebViewEventListenersOnIOThread( |
Matt Perry
2013/02/06 22:40:24
nit: this sort of thing can be a global static fun
Fady Samuel
2013/05/15 21:58:53
Done.
|
+ void* profile, |
+ const std::string& extension_id, |
+ int embedder_process_id, |
+ int embedder_routing_id, |
+ int web_view_instance_id) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ ExtensionWebRequestEventRouter::GetInstance()->RemoveWebViewEventListeners( |
+ profile, extension_id, embedder_process_id, embedder_routing_id, |
Matt Perry
2013/02/06 22:40:24
indent+2
Fady Samuel
2013/05/15 21:58:53
Done.
|
+ web_view_instance_id); |
+} |
+ |
void ChromeContentBrowserClient::RenderProcessHostCreated( |
content::RenderProcessHost* host) { |
int id = host->GetID(); |