| 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() {
|
|
|