| Index: trunk/src/chrome/browser/guestview/webview/webview_guest.cc
|
| ===================================================================
|
| --- trunk/src/chrome/browser/guestview/webview/webview_guest.cc (revision 222122)
|
| +++ trunk/src/chrome/browser/guestview/webview/webview_guest.cc (working copy)
|
| @@ -71,13 +71,15 @@
|
| void* profile,
|
| const std::string& extension_id,
|
| int embedder_process_id,
|
| - int view_instance_id) {
|
| + int embedder_routing_id,
|
| + int guest_instance_id) {
|
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
|
| ExtensionWebRequestEventRouter::GetInstance()->RemoveWebViewEventListeners(
|
| profile,
|
| extension_id,
|
| embedder_process_id,
|
| - view_instance_id);
|
| + embedder_routing_id,
|
| + guest_instance_id);
|
| }
|
|
|
| void AttachWebViewHelpers(WebContents* contents) {
|
| @@ -152,24 +154,6 @@
|
| DispatchEvent(new GuestView::Event(webview::kEventClose, args.Pass()));
|
| }
|
|
|
| -void WebViewGuest::EmbedderDestroyed() {
|
| - // TODO(fsamuel): WebRequest event listeners for <webview> should survive
|
| - // reparenting of a <webview> within a single embedder. Right now, we keep
|
| - // around the browser state for the listener for the lifetime of the embedder.
|
| - // Ideally, the lifetime of the listeners should match the lifetime of the
|
| - // <webview> DOM node. Once http://crbug.com/156219 is resolved we can move
|
| - // the call to RemoveWebViewEventListenersOnIOThread back to
|
| - // WebViewGuest::WebContentsDestroyed.
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::IO,
|
| - FROM_HERE,
|
| - base::Bind(
|
| - &RemoveWebViewEventListenersOnIOThread,
|
| - browser_context(), extension_id(),
|
| - embedder_render_process_id(),
|
| - view_instance_id()));
|
| -}
|
| -
|
| void WebViewGuest::GuestProcessGone(base::TerminationStatus status) {
|
| scoped_ptr<DictionaryValue> args(new DictionaryValue());
|
| args->SetInteger(webview::kProcessId,
|
| @@ -415,6 +399,20 @@
|
|
|
| void WebViewGuest::WebContentsDestroyed(WebContents* web_contents) {
|
| RemoveWebViewFromExtensionRendererState(web_contents);
|
| + // TODO(fsamuel): WebRequest event listeners for <webview> should survive
|
| + // reparenting of a <webview> within a single embedder. The lifetime of
|
| + // WebRequest event listeners should be equal to the lifetime of the embedder
|
| + // WebContents rather than the guest until http://crbug.com/156219 is
|
| + // resolved.
|
| + content::BrowserThread::PostTask(
|
| + content::BrowserThread::IO,
|
| + FROM_HERE,
|
| + base::Bind(
|
| + &RemoveWebViewEventListenersOnIOThread,
|
| + browser_context(), extension_id(),
|
| + embedder_render_process_id(),
|
| + embedder_routing_id(),
|
| + view_instance_id()));
|
| }
|
|
|
| void WebViewGuest::LoadHandlerCalled() {
|
| @@ -435,6 +433,7 @@
|
| void WebViewGuest::AddWebViewToExtensionRendererState() {
|
| ExtensionRendererState::WebViewInfo webview_info;
|
| webview_info.embedder_process_id = embedder_render_process_id();
|
| + webview_info.embedder_routing_id = embedder_web_contents()->GetRoutingID();
|
| webview_info.instance_id = view_instance_id();
|
|
|
| content::BrowserThread::PostTask(
|
|
|