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) |