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

Unified Diff: chrome/browser/renderer_context_menu/render_view_context_menu.cc

Issue 186213003: <webview>: Context menu API implementation CL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 10 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/renderer_context_menu/render_view_context_menu.cc
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
index 28d08ba8177f3bcaccf123d1eccca7c1405c903c..6e678ba880013ca93591fc10aebeda1fdeea4ab8 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -36,6 +36,7 @@
#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/google/google_util.h"
+#include "chrome/browser/guestview/webview/webview_guest.h"
#include "chrome/browser/plugins/chrome_plugin_service_filter.h"
#include "chrome/browser/prefs/incognito_mode_prefs.h"
#include "chrome/browser/profiles/profile.h"
@@ -409,8 +410,13 @@ RenderViewContextMenu::RenderViewContextMenu(
profile_(Profile::FromBrowserContext(
source_web_contents_->GetBrowserContext())),
menu_model_(this),
- extension_items_(profile_, this, &menu_model_,
- base::Bind(MenuItemMatchesParams, params_)),
+ extension_items_(
+ profile_,
+ this,
+ &menu_model_,
+ base::Bind(MenuItemMatchesParams,
+ params_,
+ WebViewGuest::FromWebContents(source_web_contents_))),
Fady Samuel 2014/03/04 01:56:46 What if the webview is deleted while the context m
lazyboy 2014/03/04 16:11:31 I've changed this so we pass in the view_instance_
speech_input_submenu_model_(this),
protocol_handler_submenu_model_(this),
protocol_handler_registry_(
@@ -500,10 +506,18 @@ static const GURL& GetDocumentURL(const content::ContextMenuParams& params) {
return params.frame_url.is_empty() ? params.page_url : params.frame_url;
}
-// static
+// static.
bool RenderViewContextMenu::MenuItemMatchesParams(
const content::ContextMenuParams& params,
+ const WebViewGuest* guest,
const extensions::MenuItem* item) {
+ int webview_instance_id = guest ? guest->view_instance_id() : 0;
+
+ if (webview_instance_id || item->id().webview_instance_id) {
+ if (webview_instance_id != item->id().webview_instance_id)
+ return false;
+ }
+
bool match = ExtensionContextAndPatternMatch(params, item->contexts(),
item->target_url_patterns());
if (!match)

Powered by Google App Engine
This is Rietveld 408576698