| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "extensions/browser/guest_view/web_view/web_view_guest.h" | 5 #include "extensions/browser/guest_view/web_view/web_view_guest.h" |
| 6 | 6 |
| 7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
| 8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "components/browsing_data/storage_partition_http_cache_data_remover.h" | 10 #include "components/browsing_data/storage_partition_http_cache_data_remover.h" |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 } | 189 } |
| 190 | 190 |
| 191 using WebViewKey = std::pair<int, int>; | 191 using WebViewKey = std::pair<int, int>; |
| 192 using WebViewKeyToIDMap = std::map<WebViewKey, int>; | 192 using WebViewKeyToIDMap = std::map<WebViewKey, int>; |
| 193 static base::LazyInstance<WebViewKeyToIDMap> web_view_key_to_id_map = | 193 static base::LazyInstance<WebViewKeyToIDMap> web_view_key_to_id_map = |
| 194 LAZY_INSTANCE_INITIALIZER; | 194 LAZY_INSTANCE_INITIALIZER; |
| 195 | 195 |
| 196 } // namespace | 196 } // namespace |
| 197 | 197 |
| 198 // static | 198 // static |
| 199 void WebViewGuest::CleanUp(int embedder_process_id, int view_instance_id) { | 199 void WebViewGuest::CleanUp(content::BrowserContext* browser_context, |
| 200 GuestViewBase::CleanUp(embedder_process_id, view_instance_id); | 200 int embedder_process_id, |
| 201 | 201 int view_instance_id) { |
| 202 auto rph = content::RenderProcessHost::FromID(embedder_process_id); | 202 GuestViewBase::CleanUp(browser_context, embedder_process_id, |
| 203 // TODO(paulmeyer): It should be impossible for rph to be nullptr here, but | 203 view_instance_id); |
| 204 // this check is needed here for now as there seems to be occasional crashes | |
| 205 // because of this (http//crbug.com/499438). This should be removed once the | |
| 206 // cause is discovered and fixed. | |
| 207 DCHECK(rph != nullptr) | |
| 208 << "Cannot find RenderProcessHost for embedder process ID# " | |
| 209 << embedder_process_id; | |
| 210 if (rph == nullptr) | |
| 211 return; | |
| 212 auto browser_context = rph->GetBrowserContext(); | |
| 213 | 204 |
| 214 // Clean up rules registries for the WebView. | 205 // Clean up rules registries for the WebView. |
| 215 WebViewKey key(embedder_process_id, view_instance_id); | 206 WebViewKey key(embedder_process_id, view_instance_id); |
| 216 auto it = web_view_key_to_id_map.Get().find(key); | 207 auto it = web_view_key_to_id_map.Get().find(key); |
| 217 if (it != web_view_key_to_id_map.Get().end()) { | 208 if (it != web_view_key_to_id_map.Get().end()) { |
| 218 auto rules_registry_id = it->second; | 209 auto rules_registry_id = it->second; |
| 219 web_view_key_to_id_map.Get().erase(it); | 210 web_view_key_to_id_map.Get().erase(it); |
| 220 RulesRegistryService::Get(browser_context) | 211 RulesRegistryService::Get(browser_context) |
| 221 ->RemoveRulesRegistriesByID(rules_registry_id); | 212 ->RemoveRulesRegistriesByID(rules_registry_id); |
| 222 } | 213 } |
| (...skipping 1234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1457 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 1448 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
| 1458 DispatchEventToView( | 1449 DispatchEventToView( |
| 1459 new GuestViewEvent(webview::kEventExitFullscreen, args.Pass())); | 1450 new GuestViewEvent(webview::kEventExitFullscreen, args.Pass())); |
| 1460 } | 1451 } |
| 1461 // Since we changed fullscreen state, sending a Resize message ensures that | 1452 // Since we changed fullscreen state, sending a Resize message ensures that |
| 1462 // renderer/ sees the change. | 1453 // renderer/ sees the change. |
| 1463 web_contents()->GetRenderViewHost()->WasResized(); | 1454 web_contents()->GetRenderViewHost()->WasResized(); |
| 1464 } | 1455 } |
| 1465 | 1456 |
| 1466 } // namespace extensions | 1457 } // namespace extensions |
| OLD | NEW |