Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2812)

Unified Diff: chrome/browser/guestview/webview/webview_guest.cc

Issue 186213003: <webview>: Context menu API implementation CL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added test + fixed MenuManager::ExtensionIds(). Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/guestview/webview/webview_guest.cc
diff --git a/chrome/browser/guestview/webview/webview_guest.cc b/chrome/browser/guestview/webview/webview_guest.cc
index 6baba57ec469610403e504b69ef336e2d610c750..c2c3654a954a8856a1c281a2a3d9ecec99fa1ee7 100644
--- a/chrome/browser/guestview/webview/webview_guest.cc
+++ b/chrome/browser/guestview/webview/webview_guest.cc
@@ -10,6 +10,7 @@
#include "chrome/browser/extensions/api/webview/webview_api.h"
#include "chrome/browser/extensions/extension_renderer_state.h"
#include "chrome/browser/extensions/extension_web_contents_observer.h"
+#include "chrome/browser/extensions/menu_manager.h"
#include "chrome/browser/extensions/script_executor.h"
#include "chrome/browser/favicon/favicon_tab_helper.h"
#include "chrome/browser/guestview/guestview_constants.h"
@@ -169,6 +170,15 @@ WebViewGuest* WebViewGuest::FromWebContents(WebContents* contents) {
return guest ? guest->AsWebView() : NULL;
}
+// static.
+int WebViewGuest::GetViewInstanceId(WebContents* contents) {
+ WebViewGuest* guest = FromWebContents(contents);
+ if (!guest)
+ return guestview::kInstanceIDNone;
+
+ return guest->view_instance_id();
+}
+
// static
void WebViewGuest::RecordUserInitiatedUMA(const PermissionResponseInfo& info,
bool allow) {
@@ -682,6 +692,13 @@ void WebViewGuest::DidStopLoading(content::RenderViewHost* render_view_host) {
}
void WebViewGuest::WebContentsDestroyed(WebContents* web_contents) {
+ // Clean up custom context menu items for this guest.
+ extensions::MenuManager* menu_manager = extensions::MenuManager::Get(
+ Profile::FromBrowserContext(browser_context()));
+ menu_manager->RemoveAllContextItems(
+ extensions::MenuItem::ExtensionKey(embedder_extension_id(),
+ view_instance_id()));
+
RemoveWebViewFromExtensionRendererState(web_contents);
}

Powered by Google App Engine
This is Rietveld 408576698