| Index: chrome/browser/guestview/webview/webview_guest.cc
|
| diff --git a/chrome/browser/guestview/webview/webview_guest.cc b/chrome/browser/guestview/webview/webview_guest.cc
|
| index 904e5e8a1dfaa09ddd760ec0e3ce6b6305ad0389..9febd3860bafc7843866d68602e688471941df54 100644
|
| --- a/chrome/browser/guestview/webview/webview_guest.cc
|
| +++ b/chrome/browser/guestview/webview/webview_guest.cc
|
| @@ -71,15 +71,13 @@ void RemoveWebViewEventListenersOnIOThread(
|
| void* profile,
|
| const std::string& extension_id,
|
| int embedder_process_id,
|
| - int embedder_routing_id,
|
| - int guest_instance_id) {
|
| + int view_instance_id) {
|
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
|
| ExtensionWebRequestEventRouter::GetInstance()->RemoveWebViewEventListeners(
|
| profile,
|
| extension_id,
|
| embedder_process_id,
|
| - embedder_routing_id,
|
| - guest_instance_id);
|
| + view_instance_id);
|
| }
|
|
|
| void AttachWebViewHelpers(WebContents* contents) {
|
| @@ -154,6 +152,24 @@ void WebViewGuest::Close() {
|
| 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,
|
| @@ -399,20 +415,6 @@ void WebViewGuest::DidStopLoading(content::RenderViewHost* render_view_host) {
|
|
|
| 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() {
|
| @@ -433,7 +435,6 @@ void WebViewGuest::LoadRedirect(const GURL& old_url,
|
| 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(
|
|
|