Index: extensions/browser/guest_view/web_view/web_view_guest.cc |
diff --git a/extensions/browser/guest_view/web_view/web_view_guest.cc b/extensions/browser/guest_view/web_view/web_view_guest.cc |
index b3dda987a080982e9fcc984ca330266b3ccf5556..2e124e01dc070380423b783f5e2f6949dd845d69 100644 |
--- a/extensions/browser/guest_view/web_view/web_view_guest.cc |
+++ b/extensions/browser/guest_view/web_view/web_view_guest.cc |
@@ -31,6 +31,7 @@ |
#include "content/public/common/stop_find_action.h" |
#include "content/public/common/url_constants.h" |
#include "extensions/browser/api/extensions_api_client.h" |
+#include "extensions/browser/api/web_request/web_request_api.h" |
#include "extensions/browser/api/web_view/web_view_internal_api.h" |
#include "extensions/browser/extension_system.h" |
#include "extensions/browser/guest_view/guest_view_manager.h" |
@@ -132,6 +133,19 @@ void ParsePartitionParam(const base::DictionaryValue& create_params, |
} |
} |
+void RemoveWebViewEventListenersOnIOThread( |
+ void* profile, |
+ const std::string& extension_id, |
+ int embedder_process_id, |
+ int view_instance_id) { |
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
+ ExtensionWebRequestEventRouter::GetInstance()->RemoveWebViewEventListeners( |
+ profile, |
+ extension_id, |
+ embedder_process_id, |
+ view_instance_id); |
+} |
+ |
} // namespace |
// static |
@@ -336,8 +350,15 @@ void WebViewGuest::DidStopLoading() { |
} |
void WebViewGuest::EmbedderDestroyed() { |
- if (web_view_guest_delegate_) |
- web_view_guest_delegate_->OnEmbedderDestroyed(); |
+ content::BrowserThread::PostTask( |
+ content::BrowserThread::IO, |
+ FROM_HERE, |
+ base::Bind( |
+ &RemoveWebViewEventListenersOnIOThread, |
+ browser_context(), |
+ embedder_extension_id(), |
+ embedder_render_process_id(), |
+ view_instance_id())); |
} |
void WebViewGuest::GuestDestroyed() { |