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 b3e53ee835a0e986d72134710709c11f767dda2b..78bf14d74cbc2728047134be42e8f0c5c7609f43 100644 |
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc |
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc |
@@ -517,17 +517,25 @@ void RenderViewContextMenu::AppendCurrentExtensionItems() { |
// For Panel, this happens when the panel is navigated to a url outside of the |
// extension's package. |
const Extension* extension = GetExtension(); |
- if (extension) { |
- // Only add extension items from this extension. |
- int index = 0; |
- MenuItem::ExtensionKey key( |
- extension->id(), |
- extensions::WebViewGuest::GetViewInstanceId(source_web_contents_)); |
- extension_items_.AppendExtensionItems(key, |
- PrintableSelectionText(), |
- &index, |
- false); // is_action_menu |
+ if (!extension) |
+ return; |
+ |
+ int webview_embedder_process_id = 0; |
+ int webview_instance_id = 0; |
+ auto web_view_guest = |
+ extensions::WebViewGuest::FromWebContents(source_web_contents_); |
+ if (web_view_guest) { |
+ webview_embedder_process_id = |
+ web_view_guest->owner_web_contents()->GetRenderProcessHost()->GetID(); |
+ webview_instance_id = web_view_guest->view_instance_id(); |
} |
+ |
+ // Only add extension items from this extension. |
+ int index = 0; |
+ MenuItem::ExtensionKey key(extension->id(), webview_embedder_process_id, |
+ webview_instance_id); |
+ extension_items_.AppendExtensionItems(key, PrintableSelectionText(), &index, |
+ false /* is_action_menu */); |
} |
#endif // defined(ENABLE_EXTENSIONS) |