Index: chrome/browser/extensions/chrome_extensions_browser_client.cc |
diff --git a/chrome/browser/extensions/chrome_extensions_browser_client.cc b/chrome/browser/extensions/chrome_extensions_browser_client.cc |
index 88593643723596259030352aa4110ea27e4ceb9d..02940338b9b02ee2c48ed8ffc341c5add30146d5 100644 |
--- a/chrome/browser/extensions/chrome_extensions_browser_client.cc |
+++ b/chrome/browser/extensions/chrome_extensions_browser_client.cc |
@@ -26,6 +26,7 @@ |
#include "chrome/browser/extensions/event_router_forwarder.h" |
#include "chrome/browser/extensions/extension_system_factory.h" |
#include "chrome/browser/extensions/extension_util.h" |
+#include "chrome/browser/extensions/menu_manager.h" |
#include "chrome/browser/external_protocol/external_protocol_handler.h" |
#include "chrome/browser/net/chrome_net_log.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -35,9 +36,11 @@ |
#include "chrome/common/chrome_version_info.h" |
#include "chrome/common/extensions/features/feature_channel.h" |
#include "chrome/common/pref_names.h" |
+#include "content/public/browser/render_process_host.h" |
#include "extensions/browser/api/generated_api_registration.h" |
#include "extensions/browser/extension_function_registry.h" |
#include "extensions/browser/extension_prefs.h" |
+#include "extensions/browser/guest_view/web_view/web_view_guest.h" |
#include "extensions/browser/mojo/service_registration.h" |
#include "extensions/browser/pref_names.h" |
#include "extensions/browser/url_request_util.h" |
@@ -331,4 +334,23 @@ void ChromeExtensionsBrowserClient::ReportError( |
extensions::ErrorConsole::Get(context)->ReportError(error.Pass()); |
} |
+void ChromeExtensionsBrowserClient::CleanUpWebView(int embedder_process_id, |
+ int view_instance_id) { |
+ content::BrowserContext* browser_context = |
+ content::RenderProcessHost::FromID(embedder_process_id) |
+ ->GetBrowserContext(); |
+ std::string extension_id = |
+ WebViewGuest::GetExtensionID(embedder_process_id, view_instance_id); |
+ |
+ // Not all WebViews are in extensions. |
+ if (extension_id.empty()) |
+ return; |
+ |
+ // Clean up context menus for the WebView. |
+ auto menu_manager = |
+ MenuManager::Get(Profile::FromBrowserContext(browser_context)); |
+ menu_manager->RemoveAllContextItems( |
+ MenuItem::ExtensionKey(extension_id, view_instance_id)); |
+} |
+ |
} // namespace extensions |