Chromium Code Reviews| 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) |