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

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

Issue 4090011: Fix bug with context menus in incognito mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: manifest fix Created 10 years, 2 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/tab_contents/render_view_context_menu.cc
diff --git a/chrome/browser/tab_contents/render_view_context_menu.cc b/chrome/browser/tab_contents/render_view_context_menu.cc
index afd5ccbdc6039d45d026ff66c714b591a170a538..f792b359d7f8e69e85f1cc5e197284c81cec3c2e 100644
--- a/chrome/browser/tab_contents/render_view_context_menu.cc
+++ b/chrome/browser/tab_contents/render_view_context_menu.cc
@@ -23,6 +23,7 @@
#include "chrome/browser/debugger/devtools_manager.h"
#include "chrome/browser/debugger/devtools_window.h"
#include "chrome/browser/download/download_manager.h"
+#include "chrome/browser/extensions/extension_event_router.h"
#include "chrome/browser/extensions/extensions_service.h"
#include "chrome/browser/fonts_languages_window.h"
#include "chrome/browser/metrics/user_metrics.h"
@@ -150,10 +151,12 @@ static const GURL& GetDocumentURL(const ContextMenuParams& params) {
}
// Given a list of items, returns the ones that match given the contents
-// of |params|.
+// of |params| and the profile.
static ExtensionMenuItem::List GetRelevantExtensionItems(
const ExtensionMenuItem::List& items,
- const ContextMenuParams& params) {
+ const ContextMenuParams& params,
+ Profile* profile,
+ bool can_cross_incognito) {
ExtensionMenuItem::List result;
for (ExtensionMenuItem::List::const_iterator i = items.begin();
i != items.end(); ++i) {
@@ -171,7 +174,8 @@ static ExtensionMenuItem::List GetRelevantExtensionItems(
if (!ExtensionPatternMatch(item->target_url_patterns(), target_url))
continue;
- result.push_back(*i);
+ if (item->id().profile == profile || can_cross_incognito)
+ result.push_back(*i);
}
return result;
}
@@ -181,6 +185,8 @@ void RenderViewContextMenu::AppendExtensionItems(
ExtensionsService* service = profile_->GetExtensionsService();
ExtensionMenuManager* manager = service->menu_manager();
const Extension* extension = service->GetExtensionById(extension_id, false);
+ bool can_cross_incognito =
+ ExtensionEventRouter::CanCrossIncognito(profile_, extension);
DCHECK_GE(*index, 0);
int max_index =
IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST - IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST;
@@ -192,7 +198,8 @@ void RenderViewContextMenu::AppendExtensionItems(
if (!all_items || all_items->empty())
return;
ExtensionMenuItem::List items =
- GetRelevantExtensionItems(*all_items, params_);
+ GetRelevantExtensionItems(*all_items, params_, profile_,
+ can_cross_incognito);
if (items.empty())
return;
@@ -215,7 +222,8 @@ void RenderViewContextMenu::AppendExtensionItems(
extension_item_map_[menu_id] = item->id();
title = item->TitleWithReplacement(PrintableSelectionText(),
kMaxExtensionItemTitleLength);
- submenu_items = GetRelevantExtensionItems(item->children(), params_);
+ submenu_items = GetRelevantExtensionItems(item->children(), params_,
+ profile_, can_cross_incognito);
}
// Now add our item(s) to the menu_model_.
@@ -225,13 +233,15 @@ void RenderViewContextMenu::AppendExtensionItems(
menus::SimpleMenuModel* submenu = new menus::SimpleMenuModel(this);
extension_menu_models_.push_back(submenu);
menu_model_.AddSubMenu(menu_id, title, submenu);
- RecursivelyAppendExtensionItems(submenu_items, submenu, index);
+ RecursivelyAppendExtensionItems(submenu_items, can_cross_incognito, submenu,
+ index);
}
SetExtensionIcon(extension_id);
}
void RenderViewContextMenu::RecursivelyAppendExtensionItems(
const ExtensionMenuItem::List& items,
+ bool can_cross_incognito,
menus::SimpleMenuModel* menu_model,
int *index) {
string16 selection_text = PrintableSelectionText();
@@ -258,14 +268,16 @@ void RenderViewContextMenu::RecursivelyAppendExtensionItems(
kMaxExtensionItemTitleLength);
if (item->type() == ExtensionMenuItem::NORMAL) {
ExtensionMenuItem::List children =
- GetRelevantExtensionItems(item->children(), params_);
+ GetRelevantExtensionItems(item->children(), params_,
+ profile_, can_cross_incognito);
if (children.size() == 0) {
menu_model->AddItem(menu_id, title);
} else {
menus::SimpleMenuModel* submenu = new menus::SimpleMenuModel(this);
extension_menu_models_.push_back(submenu);
menu_model->AddSubMenu(menu_id, title, submenu);
- RecursivelyAppendExtensionItems(children, submenu, index);
+ RecursivelyAppendExtensionItems(children, can_cross_incognito,
+ submenu, index);
}
} else if (item->type() == ExtensionMenuItem::CHECKBOX) {
menu_model->AddCheckItem(menu_id, title);

Powered by Google App Engine
This is Rietveld 408576698