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

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

Issue 1357393002: Desktop context menu reorganisation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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 5a4ab40131b9e7646e31a3ba46e0a045871eb86b..fe5a1a027bb65e171303151d97fb90a860ca635a 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -38,7 +38,6 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_io_data.h"
#include "chrome/browser/renderer_context_menu/context_menu_content_type_factory.h"
-#include "chrome/browser/renderer_context_menu/spellchecker_submenu_observer.h"
#include "chrome/browser/renderer_context_menu/spelling_menu_observer.h"
#include "chrome/browser/search/search.h"
#include "chrome/browser/search_engines/template_url_service_factory.h"
@@ -155,9 +154,14 @@ const int kImageSearchThumbnailMaxHeight = 600;
// Never change mapping or reuse |enum_id|. Always push back new items.
// Items that is not used any more by |RenderViewContextMenu.ExecuteCommand|
// could be deleted, but don't change the rest of |kUmaEnumToControlId|.
+//
+// |context_specific_enum_id| matches the ContextMenuOption histogram enum.
+// Used to track command usage under specific contexts - Specifically Menu
Avi (use Gerrit) 2015/09/26 02:26:15 "... specific contexts, specifically menu items...
edwardjung 2015/09/28 14:11:25 Done.
+// items under 'link + image' and 'selected text'.
const struct UmaEnumCommandIdPair {
int enum_id;
int control_id;
+ int context_specific_enum_id;
Avi (use Gerrit) 2015/09/26 02:26:15 This order makes it hard to read the list. Do: co
edwardjung 2015/09/28 14:11:25 Makes sense, done.
} kUmaEnumToControlId[] = {
/*
enum id for 0, 1 are detected using
@@ -165,17 +169,17 @@ const struct UmaEnumCommandIdPair {
ContextMenuMatcher::IsExtensionsCustomCommandId
*/
{2, IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST},
- {3, IDC_CONTENT_CONTEXT_OPENLINKNEWTAB},
- {4, IDC_CONTENT_CONTEXT_OPENLINKNEWWINDOW},
- {5, IDC_CONTENT_CONTEXT_OPENLINKOFFTHERECORD},
- {6, IDC_CONTENT_CONTEXT_SAVELINKAS},
- {7, IDC_CONTENT_CONTEXT_SAVEAVAS},
- {8, IDC_CONTENT_CONTEXT_SAVEIMAGEAS},
- {9, IDC_CONTENT_CONTEXT_COPYLINKLOCATION},
- {10, IDC_CONTENT_CONTEXT_COPYIMAGELOCATION},
+ {3, IDC_CONTENT_CONTEXT_OPENLINKNEWTAB, 0},
+ {4, IDC_CONTENT_CONTEXT_OPENLINKNEWWINDOW, 15},
+ {5, IDC_CONTENT_CONTEXT_OPENLINKOFFTHERECORD, 1},
+ {6, IDC_CONTENT_CONTEXT_SAVELINKAS, 5},
+ {7, IDC_CONTENT_CONTEXT_SAVEAVAS, 17},
+ {8, IDC_CONTENT_CONTEXT_SAVEIMAGEAS, 6},
+ {9, IDC_CONTENT_CONTEXT_COPYLINKLOCATION, 2},
+ {10, IDC_CONTENT_CONTEXT_COPYIMAGELOCATION, 10},
{11, IDC_CONTENT_CONTEXT_COPYAVLOCATION},
- {12, IDC_CONTENT_CONTEXT_COPYIMAGE},
- {13, IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB},
+ {12, IDC_CONTENT_CONTEXT_COPYIMAGE, 9},
+ {13, IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB, 8},
{14, IDC_CONTENT_CONTEXT_OPENAVNEWTAB},
{15, IDC_CONTENT_CONTEXT_PLAYPAUSE},
{16, IDC_CONTENT_CONTEXT_MUTE},
@@ -189,7 +193,7 @@ const struct UmaEnumCommandIdPair {
{24, IDC_RELOAD},
{25, IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP},
{26, IDC_CONTENT_CONTEXT_RESTART_PACKAGED_APP},
- {27, IDC_PRINT},
+ {27, IDC_PRINT, 16},
{28, IDC_VIEW_SOURCE},
{29, IDC_CONTENT_CONTEXT_INSPECTELEMENT},
{30, IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE},
@@ -201,12 +205,12 @@ const struct UmaEnumCommandIdPair {
{36, IDC_CONTENT_CONTEXT_UNDO},
{37, IDC_CONTENT_CONTEXT_REDO},
{38, IDC_CONTENT_CONTEXT_CUT},
- {39, IDC_CONTENT_CONTEXT_COPY},
+ {39, IDC_CONTENT_CONTEXT_COPY, 4},
{40, IDC_CONTENT_CONTEXT_PASTE},
{41, IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE},
{42, IDC_CONTENT_CONTEXT_DELETE},
{43, IDC_CONTENT_CONTEXT_SELECTALL},
- {44, IDC_CONTENT_CONTEXT_SEARCHWEBFOR},
+ {44, IDC_CONTENT_CONTEXT_SEARCHWEBFOR, 17},
{45, IDC_CONTENT_CONTEXT_GOTOURL},
{46, IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS},
{47, IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS},
@@ -216,7 +220,7 @@ const struct UmaEnumCommandIdPair {
{54, IDC_SPELLCHECK_MENU},
{55, IDC_CONTENT_CONTEXT_SPELLING_TOGGLE},
{56, IDC_SPELLCHECK_LANGUAGES_FIRST},
- {57, IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE},
+ {57, IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE, 11},
{58, IDC_SPELLCHECK_SUGGESTION_0},
{59, IDC_SPELLCHECK_ADD_TO_DICTIONARY},
{60, IDC_SPELLPANEL_TOGGLE},
@@ -256,7 +260,8 @@ int CollapseCommandsForUMA(int id) {
}
// Returns UMA enum value for command specified by |id| or -1 if not found.
-int FindUMAEnumValueForCommand(int id) {
+// |use_specific_context_enum| set to true returns the context_specific_enum_id.
+int FindUMAEnumValueForCommand(int id, bool use_specific_context_enum) {
Avi (use Gerrit) 2015/09/26 02:26:15 This is a magic bool as a parameter that is imposs
edwardjung 2015/09/28 14:11:25 Understood. Changed to use an enum.
if (RenderViewContextMenu::IsContentCustomCommandId(id))
return 0;
@@ -267,9 +272,15 @@ int FindUMAEnumValueForCommand(int id) {
const size_t kMappingSize = arraysize(kUmaEnumToControlId);
for (size_t i = 0; i < kMappingSize; ++i) {
if (kUmaEnumToControlId[i].control_id == id) {
- return kUmaEnumToControlId[i].enum_id;
+ if (!use_specific_context_enum) {
+ return kUmaEnumToControlId[i].enum_id;
+ } else if (use_specific_context_enum &&
+ kUmaEnumToControlId[i].context_specific_enum_id > -1) {
Avi (use Gerrit) 2015/09/26 02:26:15 How could this ever not be true? In most of the li
edwardjung 2015/09/28 14:11:25 Understood. Fixed.
+ return kUmaEnumToControlId[i].context_specific_enum_id;
+ }
}
}
+
return -1;
}
@@ -341,8 +352,6 @@ void WriteURLToClipboard(const GURL& url, const std::string& languages) {
bool g_custom_id_ranges_initialized = false;
-const int kSpellcheckRadioGroup = 1;
-
} // namespace
// static
@@ -558,13 +567,6 @@ void RenderViewContextMenu::InitMenu() {
if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_PAGE))
AppendPageItems();
- if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_FRAME)) {
- // Merge in frame items with page items if we clicked within a frame that
- // needs them.
- menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
- AppendFrameItems();
- }
-
if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_LINK)) {
AppendLinkItems();
if (params_.media_type != WebContextMenuData::MediaTypeNone)
@@ -617,8 +619,18 @@ void RenderViewContextMenu::InitMenu() {
AppendSearchProvider();
}
- if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_PRINT))
+ if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_PRINT) &&
+ !content_type_->SupportsGroup(
+ ContextMenuContentType::ITEM_GROUP_MEDIA_IMAGE)) {
AppendPrintItem();
+ }
+
+ if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_EDITABLE))
+ {
+ menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
+ AppendPlatformEditableItems();
+ AppendLanguageSettings();
+ }
Avi (use Gerrit) 2015/09/26 02:26:15 Your indenting is wack; please fix.
edwardjung 2015/09/28 14:11:25 Done.
if (content_type_->SupportsGroup(
ContextMenuContentType::ITEM_GROUP_MEDIA_PLUGIN)) {
@@ -665,18 +677,37 @@ Profile* RenderViewContextMenu::GetProfile() {
}
void RenderViewContextMenu::RecordUsedItem(int id) {
- int enum_id = FindUMAEnumValueForCommand(id);
+ int enum_id = FindUMAEnumValueForCommand(id, false);
if (enum_id != -1) {
const size_t kMappingSize = arraysize(kUmaEnumToControlId);
UMA_HISTOGRAM_ENUMERATION("RenderViewContextMenu.Used", enum_id,
kUmaEnumToControlId[kMappingSize - 1].enum_id);
+ // Record to additional context specific histograms.
+ enum_id = FindUMAEnumValueForCommand(id, true);
+
+ // Linked image context.
+ if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_LINK) &&
+ content_type_->SupportsGroup(
+ ContextMenuContentType::ITEM_GROUP_MEDIA_IMAGE)) {
+ UMA_HISTOGRAM_ENUMERATION("ContextMenu.SelectedOption.ImageLink", enum_id,
+ kUmaEnumToControlId[kMappingSize - 1].enum_id);
+ }
+ // Selected text context.
+ if (content_type_->SupportsGroup(
+ ContextMenuContentType::ITEM_GROUP_SEARCH_PROVIDER) &&
+ content_type_->SupportsGroup(
+ ContextMenuContentType::ITEM_GROUP_PRINT)) {
Avi (use Gerrit) 2015/09/26 02:26:15 Your indenting is weird; you should indent line 69
edwardjung 2015/09/28 14:11:25 Done.
+ UMA_HISTOGRAM_ENUMERATION("ContextMenu.SelectedOption.SelectedText",
+ enum_id,
+ kUmaEnumToControlId[kMappingSize - 1].enum_id);
+ }
} else {
NOTREACHED() << "Update kUmaEnumToControlId. Unhanded IDC: " << id;
}
}
void RenderViewContextMenu::RecordShownItem(int id) {
- int enum_id = FindUMAEnumValueForCommand(id);
+ int enum_id = FindUMAEnumValueForCommand(id, false);
if (enum_id != -1) {
const size_t kMappingSize = arraysize(kUmaEnumToControlId);
UMA_HISTOGRAM_ENUMERATION("RenderViewContextMenu.Shown", enum_id,
@@ -726,6 +757,14 @@ void RenderViewContextMenu::AppendDeveloperItems() {
// In the DevTools popup menu, "developer items" is normally the only
// section, so omit the separator there.
menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
+ // Page context source.
+ if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_PAGE))
+ menu_model_.AddItemWithStringId(IDC_VIEW_SOURCE,
+ IDS_CONTENT_CONTEXT_VIEWPAGESOURCE);
+ // Frame context source.
+ if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_FRAME))
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_VIEWFRAMESOURCE,
+ IDS_CONTENT_CONTEXT_VIEWFRAMESOURCE);
Avi (use Gerrit) 2015/09/26 02:26:15 Are these useful comments? I would say no.
edwardjung 2015/09/28 14:11:25 Removed.
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_INSPECTELEMENT,
IDS_CONTENT_CONTEXT_INSPECTELEMENT);
}
@@ -767,12 +806,6 @@ void RenderViewContextMenu::AppendLinkItems() {
}
void RenderViewContextMenu::AppendImageItems() {
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEIMAGEAS,
- IDS_CONTENT_CONTEXT_SAVEIMAGEAS);
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGELOCATION,
- IDS_CONTENT_CONTEXT_COPYIMAGELOCATION);
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGE,
- IDS_CONTENT_CONTEXT_COPYIMAGE);
std::map<std::string, std::string>::const_iterator it =
params_.properties.find(data_reduction_proxy::chrome_proxy_header());
if (it != params_.properties.end() && it->second ==
@@ -792,6 +825,12 @@ void RenderViewContextMenu::AppendImageItems() {
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB,
IDS_CONTENT_CONTEXT_OPENIMAGENEWTAB);
}
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEIMAGEAS,
+ IDS_CONTENT_CONTEXT_SAVEIMAGEAS);
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGE,
+ IDS_CONTENT_CONTEXT_COPYIMAGE);
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGELOCATION,
+ IDS_CONTENT_CONTEXT_COPYIMAGELOCATION);
}
void RenderViewContextMenu::AppendSearchWebForImageItems() {
@@ -810,14 +849,13 @@ void RenderViewContextMenu::AppendSearchWebForImageItems() {
}
void RenderViewContextMenu::AppendAudioItems() {
- AppendMediaItems();
menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENAVNEWTAB,
+ IDS_CONTENT_CONTEXT_OPENAUDIONEWTAB);
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEAVAS,
IDS_CONTENT_CONTEXT_SAVEAUDIOAS);
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYAVLOCATION,
IDS_CONTENT_CONTEXT_COPYAUDIOLOCATION);
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENAVNEWTAB,
- IDS_CONTENT_CONTEXT_OPENAUDIONEWTAB);
}
void RenderViewContextMenu::AppendCanvasItems() {
@@ -828,35 +866,13 @@ void RenderViewContextMenu::AppendCanvasItems() {
}
void RenderViewContextMenu::AppendVideoItems() {
- AppendMediaItems();
menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENAVNEWTAB,
+ IDS_CONTENT_CONTEXT_OPENVIDEONEWTAB);
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEAVAS,
IDS_CONTENT_CONTEXT_SAVEVIDEOAS);
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYAVLOCATION,
IDS_CONTENT_CONTEXT_COPYVIDEOLOCATION);
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENAVNEWTAB,
- IDS_CONTENT_CONTEXT_OPENVIDEONEWTAB);
-}
-
-void RenderViewContextMenu::AppendMediaItems() {
- int media_flags = params_.media_flags;
-
- menu_model_.AddItemWithStringId(
- IDC_CONTENT_CONTEXT_PLAYPAUSE,
- media_flags & WebContextMenuData::MediaPaused ?
- IDS_CONTENT_CONTEXT_PLAY :
- IDS_CONTENT_CONTEXT_PAUSE);
-
- menu_model_.AddItemWithStringId(
- IDC_CONTENT_CONTEXT_MUTE,
- media_flags & WebContextMenuData::MediaMuted ?
- IDS_CONTENT_CONTEXT_UNMUTE :
- IDS_CONTENT_CONTEXT_MUTE);
-
- menu_model_.AddCheckItemWithStringId(IDC_CONTENT_CONTEXT_LOOP,
- IDS_CONTENT_CONTEXT_LOOP);
- menu_model_.AddCheckItemWithStringId(IDC_CONTENT_CONTEXT_CONTROLS,
- IDS_CONTENT_CONTEXT_CONTROLS);
}
void RenderViewContextMenu::AppendPluginItems() {
@@ -895,27 +911,11 @@ void RenderViewContextMenu::AppendPageItems() {
IDC_CONTENT_CONTEXT_TRANSLATE,
l10n_util::GetStringFUTF16(IDS_CONTENT_CONTEXT_TRANSLATE, language));
}
-
- menu_model_.AddItemWithStringId(IDC_VIEW_SOURCE,
- IDS_CONTENT_CONTEXT_VIEWPAGESOURCE);
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_VIEWPAGEINFO,
- IDS_CONTENT_CONTEXT_VIEWPAGEINFO);
-}
-
-void RenderViewContextMenu::AppendFrameItems() {
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_RELOADFRAME,
- IDS_CONTENT_CONTEXT_RELOADFRAME);
- // These two menu items have yet to be implemented.
- // http://code.google.com/p/chromium/issues/detail?id=11827
- // IDS_CONTENT_CONTEXT_SAVEFRAMEAS
- // IDS_CONTENT_CONTEXT_PRINTFRAME
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_VIEWFRAMESOURCE,
- IDS_CONTENT_CONTEXT_VIEWFRAMESOURCE);
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_VIEWFRAMEINFO,
- IDS_CONTENT_CONTEXT_VIEWFRAMEINFO);
}
void RenderViewContextMenu::AppendCopyItem() {
+ if (menu_model_.GetItemCount())
+ menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPY,
IDS_CONTENT_CONTEXT_COPY);
}
@@ -993,13 +993,26 @@ void RenderViewContextMenu::AppendEditableItems() {
if (use_spellcheck_and_search)
AppendSpellingSuggestionsSubMenu();
- if (!IsDevToolsURL(params_.page_url)) {
+ // 'Undo' and 'Redo' for tText input with no suggestions and no text selected.
Avi (use Gerrit) 2015/09/26 02:26:15 typo: tText
edwardjung 2015/09/28 14:11:25 Done.
+ // We make an exception for OSX as context clicking will select the closest
Avi (use Gerrit) 2015/09/26 02:26:15 s/OSX/Mac OS X/ or /OS X/ or /the Mac/
edwardjung 2015/09/28 14:11:25 Done.
+ // word. In this case both items are always shown.
+#if defined(OS_MACOSX)
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_UNDO,
+ IDS_CONTENT_CONTEXT_UNDO);
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_REDO,
+ IDS_CONTENT_CONTEXT_REDO);
+ menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
+#else
+ if (!IsDevToolsURL(params_.page_url) &&
+ !menu_model_.GetItemCount() &&
+ !content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_PRINT)) {
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_UNDO,
IDS_CONTENT_CONTEXT_UNDO);
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_REDO,
IDS_CONTENT_CONTEXT_REDO);
menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
}
+#endif
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_CUT,
IDS_CONTENT_CONTEXT_CUT);
@@ -1009,33 +1022,18 @@ void RenderViewContextMenu::AppendEditableItems() {
IDS_CONTENT_CONTEXT_PASTE);
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE,
IDS_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE);
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_DELETE,
- IDS_CONTENT_CONTEXT_DELETE);
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SELECTALL,
+ IDS_CONTENT_CONTEXT_SELECTALL);
+
menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
+}
- if (use_spellcheck_and_search && !params_.keyword_url.is_empty()) {
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_ADDSEARCHENGINE,
- IDS_CONTENT_CONTEXT_ADDSEARCHENGINE);
- menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
- }
+void RenderViewContextMenu::AppendLanguageSettings() {
+ const bool use_spellcheck_and_search = !chrome::IsRunningInForcedAppMode();
-#if defined(OS_MACOSX)
if (use_spellcheck_and_search)
- AppendSpellcheckOptionsSubMenu();
-#else
- if (chrome::spellcheck_common::IsMultilingualSpellcheckEnabled()) {
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS,
- IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS);
- } else if (use_spellcheck_and_search) {
- AppendSpellcheckOptionsSubMenu();
- }
-#endif // defined(OS_MACOSX)
-
- AppendPlatformEditableItems();
-
- menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SELECTALL,
- IDS_CONTENT_CONTEXT_SELECTALL);
+ IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS);
}
void RenderViewContextMenu::AppendSpellingSuggestionsSubMenu() {
@@ -1045,15 +1043,6 @@ void RenderViewContextMenu::AppendSpellingSuggestionsSubMenu() {
spelling_menu_observer_->InitMenu(params_);
}
-void RenderViewContextMenu::AppendSpellcheckOptionsSubMenu() {
- if (!spellchecker_submenu_observer_.get()) {
- spellchecker_submenu_observer_.reset(new SpellCheckerSubMenuObserver(
- this, this, kSpellcheckRadioGroup));
- }
- spellchecker_submenu_observer_->InitMenu(params_);
- observers_.AddObserver(spellchecker_submenu_observer_.get());
-}
-
void RenderViewContextMenu::AppendProtocolHandlerSubMenu() {
const ProtocolHandlerRegistry::ProtocolHandlerList handlers =
GetHandlersForLinkUrl();

Powered by Google App Engine
This is Rietveld 408576698