| 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 8960f4c023ea5cdd5adc8f75063e89cb2541bb84..75f65c4f3f613d54fe7936c464509981c6ecca05 100644
|
| --- a/extensions/browser/guest_view/web_view/web_view_guest.cc
|
| +++ b/extensions/browser/guest_view/web_view/web_view_guest.cc
|
| @@ -170,13 +170,11 @@ 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_CURRENTLY_ON(content::BrowserThread::IO);
|
| ExtensionWebRequestEventRouter::GetInstance()->RemoveWebViewEventListeners(
|
| profile,
|
| - extension_id,
|
| embedder_process_id,
|
| view_instance_id);
|
| }
|
| @@ -189,9 +187,42 @@ double ConvertZoomLevelToZoomFactor(double zoom_level) {
|
| return zoom_factor;
|
| }
|
|
|
| +using WebViewKey = std::pair<int, int>;
|
| +using WebViewKeyToIDMap = std::map<WebViewKey, int>;
|
| +static base::LazyInstance<WebViewKeyToIDMap> web_view_key_to_id_map =
|
| + LAZY_INSTANCE_INITIALIZER;
|
| +
|
| } // namespace
|
|
|
| // static
|
| +void WebViewGuest::CleanUp(int embedder_process_id, int view_instance_id) {
|
| + GuestViewBase::CleanUp(embedder_process_id, view_instance_id);
|
| +
|
| + auto rph = content::RenderProcessHost::FromID(embedder_process_id);
|
| + auto browser_context = rph->GetBrowserContext();
|
| +
|
| + // Clean up rules registries for the WebView.
|
| + WebViewKey key(embedder_process_id, view_instance_id);
|
| + auto it = web_view_key_to_id_map.Get().find(key);
|
| + if (it != web_view_key_to_id_map.Get().end()) {
|
| + auto rules_registry_id = it->second;
|
| + web_view_key_to_id_map.Get().erase(it);
|
| + RulesRegistryService::Get(browser_context)
|
| + ->RemoveRulesRegistriesByID(rules_registry_id);
|
| + }
|
| +
|
| + // Clean up web request event listeners for the WebView.
|
| + content::BrowserThread::PostTask(
|
| + content::BrowserThread::IO,
|
| + FROM_HERE,
|
| + base::Bind(
|
| + &RemoveWebViewEventListenersOnIOThread,
|
| + browser_context,
|
| + embedder_process_id,
|
| + view_instance_id));
|
| +}
|
| +
|
| +// static
|
| GuestViewBase* WebViewGuest::Create(content::WebContents* owner_web_contents) {
|
| return new WebViewGuest(owner_web_contents);
|
| }
|
| @@ -222,11 +253,6 @@ bool WebViewGuest::GetGuestPartitionConfigForSite(
|
| // static
|
| const char WebViewGuest::Type[] = "webview";
|
|
|
| -using WebViewKey = std::pair<int, int>;
|
| -using WebViewKeyToIDMap = std::map<WebViewKey, int>;
|
| -static base::LazyInstance<WebViewKeyToIDMap> web_view_key_to_id_map =
|
| - LAZY_INSTANCE_INITIALIZER;
|
| -
|
| // static
|
| int WebViewGuest::GetOrGenerateRulesRegistryID(
|
| int embedder_process_id,
|
| @@ -388,25 +414,6 @@ void WebViewGuest::EmbedderFullscreenToggled(bool entered_fullscreen) {
|
| SetFullscreenState(false);
|
| }
|
|
|
| -void WebViewGuest::EmbedderWillBeDestroyed() {
|
| - // Clean up rules registries for the webview.
|
| - RulesRegistryService::Get(browser_context())
|
| - ->RemoveRulesRegistriesByID(rules_registry_id_);
|
| - WebViewKey key(owner_web_contents()->GetRenderProcessHost()->GetID(),
|
| - view_instance_id());
|
| - web_view_key_to_id_map.Get().erase(key);
|
| -
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::IO,
|
| - FROM_HERE,
|
| - base::Bind(
|
| - &RemoveWebViewEventListenersOnIOThread,
|
| - browser_context(),
|
| - owner_host(),
|
| - owner_web_contents()->GetRenderProcessHost()->GetID(),
|
| - view_instance_id()));
|
| -}
|
| -
|
| const char* WebViewGuest::GetAPINamespace() const {
|
| return webview::kAPINamespace;
|
| }
|
|
|