Chromium Code Reviews| 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(); |