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

Side by Side Diff: chrome/browser/tab_contents/render_view_context_menu.cc

Issue 8363042: Refactor the "spell-checker options" submenu. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <algorithm> 5 #include <algorithm>
6 #include <set> 6 #include <set>
7 7
8 #include "chrome/browser/tab_contents/render_view_context_menu.h" 8 #include "chrome/browser/tab_contents/render_view_context_menu.h"
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 21 matching lines...) Expand all
32 #include "chrome/browser/printing/print_preview_tab_controller.h" 32 #include "chrome/browser/printing/print_preview_tab_controller.h"
33 #include "chrome/browser/printing/print_view_manager.h" 33 #include "chrome/browser/printing/print_view_manager.h"
34 #include "chrome/browser/profiles/profile.h" 34 #include "chrome/browser/profiles/profile.h"
35 #include "chrome/browser/profiles/profile_io_data.h" 35 #include "chrome/browser/profiles/profile_io_data.h"
36 #include "chrome/browser/search_engines/template_url.h" 36 #include "chrome/browser/search_engines/template_url.h"
37 #include "chrome/browser/search_engines/template_url_service.h" 37 #include "chrome/browser/search_engines/template_url_service.h"
38 #include "chrome/browser/search_engines/template_url_service_factory.h" 38 #include "chrome/browser/search_engines/template_url_service_factory.h"
39 #include "chrome/browser/spellchecker/spellcheck_host.h" 39 #include "chrome/browser/spellchecker/spellcheck_host.h"
40 #include "chrome/browser/spellchecker/spellcheck_host_metrics.h" 40 #include "chrome/browser/spellchecker/spellcheck_host_metrics.h"
41 #include "chrome/browser/spellchecker/spellchecker_platform_engine.h" 41 #include "chrome/browser/spellchecker/spellchecker_platform_engine.h"
42 #include "chrome/browser/tab_contents/spellchecker_submenu_observer.h"
42 #include "chrome/browser/tab_contents/spelling_menu_observer.h" 43 #include "chrome/browser/tab_contents/spelling_menu_observer.h"
43 #include "chrome/browser/translate/translate_manager.h" 44 #include "chrome/browser/translate/translate_manager.h"
44 #include "chrome/browser/translate/translate_prefs.h" 45 #include "chrome/browser/translate/translate_prefs.h"
45 #include "chrome/browser/translate/translate_tab_helper.h" 46 #include "chrome/browser/translate/translate_tab_helper.h"
46 #include "chrome/browser/ui/browser.h" 47 #include "chrome/browser/ui/browser.h"
47 #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" 48 #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h"
48 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 49 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
49 #include "chrome/common/chrome_constants.h" 50 #include "chrome/common/chrome_constants.h"
50 #include "chrome/common/chrome_switches.h" 51 #include "chrome/common/chrome_switches.h"
51 #include "chrome/common/pref_names.h" 52 #include "chrome/common/pref_names.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 static const int kSpellcheckRadioGroup = 1; 221 static const int kSpellcheckRadioGroup = 1;
221 222
222 RenderViewContextMenu::RenderViewContextMenu( 223 RenderViewContextMenu::RenderViewContextMenu(
223 TabContents* tab_contents, 224 TabContents* tab_contents,
224 const ContextMenuParams& params) 225 const ContextMenuParams& params)
225 : params_(params), 226 : params_(params),
226 source_tab_contents_(tab_contents), 227 source_tab_contents_(tab_contents),
227 profile_(Profile::FromBrowserContext(tab_contents->browser_context())), 228 profile_(Profile::FromBrowserContext(tab_contents->browser_context())),
228 ALLOW_THIS_IN_INITIALIZER_LIST(menu_model_(this)), 229 ALLOW_THIS_IN_INITIALIZER_LIST(menu_model_(this)),
229 external_(false), 230 external_(false),
230 ALLOW_THIS_IN_INITIALIZER_LIST(spellcheck_submenu_model_(this)),
231 ALLOW_THIS_IN_INITIALIZER_LIST(speech_input_submenu_model_(this)), 231 ALLOW_THIS_IN_INITIALIZER_LIST(speech_input_submenu_model_(this)),
232 ALLOW_THIS_IN_INITIALIZER_LIST(bidi_submenu_model_(this)), 232 ALLOW_THIS_IN_INITIALIZER_LIST(bidi_submenu_model_(this)),
233 ALLOW_THIS_IN_INITIALIZER_LIST(protocol_handler_submenu_model_(this)), 233 ALLOW_THIS_IN_INITIALIZER_LIST(protocol_handler_submenu_model_(this)),
234 protocol_handler_registry_(profile_->GetProtocolHandlerRegistry()) { 234 protocol_handler_registry_(profile_->GetProtocolHandlerRegistry()) {
235 } 235 }
236 236
237 RenderViewContextMenu::~RenderViewContextMenu() { 237 RenderViewContextMenu::~RenderViewContextMenu() {
238 } 238 }
239 239
240 // Menu construction functions ------------------------------------------------- 240 // Menu construction functions -------------------------------------------------
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 case WebContextMenuData::MediaTypePlugin: 567 case WebContextMenuData::MediaTypePlugin:
568 AppendPluginItems(); 568 AppendPluginItems();
569 break; 569 break;
570 #ifdef WEBCONTEXT_MEDIATYPEFILE_DEFINED 570 #ifdef WEBCONTEXT_MEDIATYPEFILE_DEFINED
571 case WebContextMenuData::MediaTypeFile: 571 case WebContextMenuData::MediaTypeFile:
572 break; 572 break;
573 #endif 573 #endif
574 } 574 }
575 575
576 if (params_.is_editable) { 576 if (params_.is_editable) {
577 // Add a menu item that shows suggestions from the Spelling service. 577 // Add a menu item that shows suggestions.
578 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 578 if (!spelling_menu_observer_.get()) {
579 if (command_line.HasSwitch(switches::kExperimentalSpellcheckerFeatures)) { 579 spelling_menu_observer_.reset(
580 PrefService* pref = profile_->GetPrefs(); 580 new SpellingMenuObserver(this));
581 bool use_spelling_service =
582 pref && pref->GetBoolean(prefs::kSpellCheckUseSpellingService);
583 if (use_spelling_service) {
584 if (!spelling_menu_observer_.get())
585 spelling_menu_observer_.reset(new SpellingMenuObserver(this));
586
587 if (spelling_menu_observer_.get())
588 observers_.AddObserver(spelling_menu_observer_.get());
589 }
590 } 581 }
582 if (spelling_menu_observer_.get())
583 observers_.AddObserver(spelling_menu_observer_.get());
591 } 584 }
592 585
593 // Ask our observers to add their menu items. 586 // Ask our observers to add their menu items.
594 FOR_EACH_OBSERVER(RenderViewContextMenuObserver, observers_, 587 FOR_EACH_OBSERVER(RenderViewContextMenuObserver, observers_,
595 InitMenu(params_)); 588 InitMenu(params_));
596 589
597 if (params_.is_editable) 590 if (params_.is_editable)
598 AppendEditableItems(); 591 AppendEditableItems();
599 else if (has_selection) 592 else if (has_selection)
600 AppendCopyItem(); 593 AppendCopyItem();
(...skipping 10 matching lines...) Expand all
611 void RenderViewContextMenu::LookUpInDictionary() { 604 void RenderViewContextMenu::LookUpInDictionary() {
612 // Used only in the Mac port. 605 // Used only in the Mac port.
613 NOTREACHED(); 606 NOTREACHED();
614 } 607 }
615 608
616 void RenderViewContextMenu::AddMenuItem(int command_id, 609 void RenderViewContextMenu::AddMenuItem(int command_id,
617 const string16& title) { 610 const string16& title) {
618 menu_model_.AddItem(command_id, title); 611 menu_model_.AddItem(command_id, title);
619 } 612 }
620 613
614 void RenderViewContextMenu::AddSubMenu(int command_id,
615 const string16& label,
616 ui::MenuModel* model) {
617 menu_model_.AddSubMenu(command_id, label, model);
618 }
619
621 void RenderViewContextMenu::UpdateMenuItem(int command_id, 620 void RenderViewContextMenu::UpdateMenuItem(int command_id,
622 bool enabled, 621 bool enabled,
623 bool hidden, 622 bool hidden,
624 const string16& label) { 623 const string16& label) {
625 // This function needs platform-specific implementation. 624 // This function needs platform-specific implementation.
626 NOTIMPLEMENTED(); 625 NOTIMPLEMENTED();
627 } 626 }
628 627
629
630 RenderViewHost* RenderViewContextMenu::GetRenderViewHost() const { 628 RenderViewHost* RenderViewContextMenu::GetRenderViewHost() const {
631 return source_tab_contents_->render_view_host(); 629 return source_tab_contents_->render_view_host();
632 } 630 }
633 631
634 Profile* RenderViewContextMenu::GetProfile() const { 632 Profile* RenderViewContextMenu::GetProfile() const {
635 return profile_; 633 return profile_;
636 } 634 }
637 635
638 bool RenderViewContextMenu::AppendCustomItems() { 636 bool RenderViewContextMenu::AppendCustomItems() {
639 size_t total_items = 0; 637 size_t total_items = 0;
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 // This functionality is exposed as a keyboard shortcut on Windows & Linux. 899 // This functionality is exposed as a keyboard shortcut on Windows & Linux.
902 AppendBidiSubMenu(); 900 AppendBidiSubMenu();
903 #endif // OS_MACOSX 901 #endif // OS_MACOSX
904 902
905 menu_model_.AddSeparator(); 903 menu_model_.AddSeparator();
906 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SELECTALL, 904 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SELECTALL,
907 IDS_CONTENT_CONTEXT_SELECTALL); 905 IDS_CONTENT_CONTEXT_SELECTALL);
908 } 906 }
909 907
910 void RenderViewContextMenu::AppendSpellcheckOptionsSubMenu() { 908 void RenderViewContextMenu::AppendSpellcheckOptionsSubMenu() {
911 // Add Spell Check languages to sub menu. 909 if (!spellchecker_submenu_observer_.get()) {
912 std::vector<std::string> spellcheck_languages; 910 spellchecker_submenu_observer_.reset(new SpellCheckerSubMenuObserver(
913 SpellCheckHost::GetSpellCheckLanguages(profile_, 911 this, this, kSpellcheckRadioGroup));
914 &spellcheck_languages);
915 DCHECK(spellcheck_languages.size() <
916 IDC_SPELLCHECK_LANGUAGES_LAST - IDC_SPELLCHECK_LANGUAGES_FIRST);
917 const std::string app_locale = g_browser_process->GetApplicationLocale();
918 for (size_t i = 0; i < spellcheck_languages.size(); ++i) {
919 string16 display_name(l10n_util::GetDisplayNameForLocale(
920 spellcheck_languages[i], app_locale, true));
921 spellcheck_submenu_model_.AddRadioItem(
922 IDC_SPELLCHECK_LANGUAGES_FIRST + i,
923 display_name,
924 kSpellcheckRadioGroup);
925 } 912 }
926 913 if (spellchecker_submenu_observer_.get()) {
927 // Add item in the sub menu to pop up the fonts and languages options menu. 914 spellchecker_submenu_observer_->InitMenu(params_);
928 spellcheck_submenu_model_.AddSeparator(); 915 observers_.AddObserver(spellchecker_submenu_observer_.get());
929 spellcheck_submenu_model_.AddItemWithStringId(
930 IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS,
931 IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS);
932
933 // Add 'Check the spelling of this field' item in the sub menu.
934 spellcheck_submenu_model_.AddCheckItem(
935 IDC_CHECK_SPELLING_OF_THIS_FIELD,
936 l10n_util::GetStringUTF16(
937 IDS_CONTENT_CONTEXT_CHECK_SPELLING_OF_THIS_FIELD));
938
939 // Add option for showing the spelling panel if the platform spellchecker
940 // supports it.
941 if (SpellCheckerPlatform::SpellCheckerAvailable() &&
942 SpellCheckerPlatform::SpellCheckerProvidesPanel()) {
943 spellcheck_submenu_model_.AddCheckItem(
944 IDC_SPELLPANEL_TOGGLE,
945 l10n_util::GetStringUTF16(
946 SpellCheckerPlatform::SpellingPanelVisible() ?
947 IDS_CONTENT_CONTEXT_HIDE_SPELLING_PANEL :
948 IDS_CONTENT_CONTEXT_SHOW_SPELLING_PANEL));
949 } 916 }
950
951 menu_model_.AddSubMenu(
952 IDC_SPELLCHECK_MENU,
953 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_SPELLCHECK_MENU),
954 &spellcheck_submenu_model_);
955 } 917 }
956 918
957 void RenderViewContextMenu::AppendSpeechInputOptionsSubMenu() { 919 void RenderViewContextMenu::AppendSpeechInputOptionsSubMenu() {
958 if (params_.speech_input_enabled) { 920 if (params_.speech_input_enabled) {
959 speech_input_submenu_model_.AddCheckItem( 921 speech_input_submenu_model_.AddCheckItem(
960 IDC_CONTENT_CONTEXT_SPEECH_INPUT_FILTER_PROFANITIES, 922 IDC_CONTENT_CONTEXT_SPEECH_INPUT_FILTER_PROFANITIES,
961 l10n_util::GetStringUTF16( 923 l10n_util::GetStringUTF16(
962 IDS_CONTENT_CONTEXT_SPEECH_INPUT_FILTER_PROFANITIES)); 924 IDS_CONTENT_CONTEXT_SPEECH_INPUT_FILTER_PROFANITIES));
963 925
964 speech_input_submenu_model_.AddItemWithStringId( 926 speech_input_submenu_model_.AddItemWithStringId(
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
1333 case IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS: 1295 case IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS:
1334 return true; 1296 return true;
1335 1297
1336 default: 1298 default:
1337 NOTREACHED(); 1299 NOTREACHED();
1338 return false; 1300 return false;
1339 } 1301 }
1340 } 1302 }
1341 1303
1342 bool RenderViewContextMenu::IsCommandIdChecked(int id) const { 1304 bool RenderViewContextMenu::IsCommandIdChecked(int id) const {
1305 // If this command is is added by one of our observers, we dispatch it to the
1306 // observer.
1307 ObserverListBase<RenderViewContextMenuObserver>::Iterator it(observers_);
1308 RenderViewContextMenuObserver* observer;
1309 while ((observer = it.GetNext()) != NULL) {
1310 if (observer->IsCommandIdSupported(id))
1311 return observer->IsCommandIdChecked(id);
1312 }
1313
1343 // See if the video is set to looping. 1314 // See if the video is set to looping.
1344 if (id == IDC_CONTENT_CONTEXT_LOOP) { 1315 if (id == IDC_CONTENT_CONTEXT_LOOP) {
1345 return (params_.media_flags & 1316 return (params_.media_flags &
1346 WebContextMenuData::MediaLoop) != 0; 1317 WebContextMenuData::MediaLoop) != 0;
1347 } 1318 }
1348 1319
1349 if (id == IDC_CONTENT_CONTEXT_CONTROLS) { 1320 if (id == IDC_CONTENT_CONTEXT_CONTROLS) {
1350 return (params_.media_flags & 1321 return (params_.media_flags &
1351 WebContextMenuData::MediaControlRootElement) != 0; 1322 WebContextMenuData::MediaControlRootElement) != 0;
1352 } 1323 }
(...skipping 21 matching lines...) Expand all
1374 if (id == IDC_WRITING_DIRECTION_RTL) 1345 if (id == IDC_WRITING_DIRECTION_RTL)
1375 return params_.writing_direction_right_to_left & 1346 return params_.writing_direction_right_to_left &
1376 WebContextMenuData::CheckableMenuItemChecked; 1347 WebContextMenuData::CheckableMenuItemChecked;
1377 if (id == IDC_WRITING_DIRECTION_LTR) 1348 if (id == IDC_WRITING_DIRECTION_LTR)
1378 return params_.writing_direction_left_to_right & 1349 return params_.writing_direction_left_to_right &
1379 WebContextMenuData::CheckableMenuItemChecked; 1350 WebContextMenuData::CheckableMenuItemChecked;
1380 if (id == IDC_CONTENT_CONTEXT_LOOK_UP_IN_DICTIONARY) 1351 if (id == IDC_CONTENT_CONTEXT_LOOK_UP_IN_DICTIONARY)
1381 return false; 1352 return false;
1382 #endif // OS_MACOSX 1353 #endif // OS_MACOSX
1383 1354
1384 // Check box for 'Check the Spelling of this field'.
1385 if (id == IDC_CHECK_SPELLING_OF_THIS_FIELD) {
1386 return (params_.spellcheck_enabled &&
1387 profile_->GetPrefs()->GetBoolean(prefs::kEnableSpellCheck));
1388 }
1389
1390 // Check box for menu item 'Block offensive words'. 1355 // Check box for menu item 'Block offensive words'.
1391 if (id == IDC_CONTENT_CONTEXT_SPEECH_INPUT_FILTER_PROFANITIES) { 1356 if (id == IDC_CONTENT_CONTEXT_SPEECH_INPUT_FILTER_PROFANITIES) {
1392 return profile_->GetPrefs()->GetBoolean( 1357 return profile_->GetPrefs()->GetBoolean(
1393 prefs::kSpeechInputFilterProfanities); 1358 prefs::kSpeechInputFilterProfanities);
1394 } 1359 }
1395 1360
1396 // Don't bother getting the display language vector if this isn't a spellcheck 1361 return false;
1397 // language.
1398 if ((id < IDC_SPELLCHECK_LANGUAGES_FIRST) ||
1399 (id >= IDC_SPELLCHECK_LANGUAGES_LAST))
1400 return false;
1401
1402 std::vector<std::string> languages;
1403 return SpellCheckHost::GetSpellCheckLanguages(profile_, &languages) ==
1404 (id - IDC_SPELLCHECK_LANGUAGES_FIRST);
1405 } 1362 }
1406 1363
1407 void RenderViewContextMenu::ExecuteCommand(int id) { 1364 void RenderViewContextMenu::ExecuteCommand(int id) {
1408 return ExecuteCommand(id, 0); 1365 return ExecuteCommand(id, 0);
1409 } 1366 }
1410 1367
1411 void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) { 1368 void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
1412 // If this command is is added by one of our observers, we dispatch it to the 1369 // If this command is is added by one of our observers, we dispatch it to the
1413 // observer. 1370 // observer.
1414 ObserverListBase<RenderViewContextMenuObserver>::Iterator it(observers_); 1371 ObserverListBase<RenderViewContextMenuObserver>::Iterator it(observers_);
1415 RenderViewContextMenuObserver* observer; 1372 RenderViewContextMenuObserver* observer;
1416 while ((observer = it.GetNext()) != NULL) { 1373 while ((observer = it.GetNext()) != NULL) {
1417 if (observer->IsCommandIdSupported(id)) 1374 if (observer->IsCommandIdSupported(id))
1418 return observer->ExecuteCommand(id); 1375 return observer->ExecuteCommand(id);
1419 } 1376 }
1420 1377
1421 // Check to see if one of the spell check language ids have been clicked.
1422 if (id >= IDC_SPELLCHECK_LANGUAGES_FIRST &&
1423 id < IDC_SPELLCHECK_LANGUAGES_LAST) {
1424 const size_t language_number = id - IDC_SPELLCHECK_LANGUAGES_FIRST;
1425 std::vector<std::string> languages;
1426 SpellCheckHost::GetSpellCheckLanguages(profile_, &languages);
1427 if (language_number < languages.size()) {
1428 StringPrefMember dictionary_language;
1429 dictionary_language.Init(prefs::kSpellCheckDictionary,
1430 profile_->GetPrefs(), NULL);
1431 dictionary_language.SetValue(languages[language_number]);
1432 }
1433 return;
1434 }
1435
1436 RenderViewHost* rvh = source_tab_contents_->render_view_host(); 1378 RenderViewHost* rvh = source_tab_contents_->render_view_host();
1437 1379
1438 // Process custom actions range. 1380 // Process custom actions range.
1439 if (id >= IDC_CONTENT_CONTEXT_CUSTOM_FIRST && 1381 if (id >= IDC_CONTENT_CONTEXT_CUSTOM_FIRST &&
1440 id <= IDC_CONTENT_CONTEXT_CUSTOM_LAST) { 1382 id <= IDC_CONTENT_CONTEXT_CUSTOM_LAST) {
1441 unsigned action = id - IDC_CONTENT_CONTEXT_CUSTOM_FIRST; 1383 unsigned action = id - IDC_CONTENT_CONTEXT_CUSTOM_FIRST;
1442 rvh->ExecuteCustomContextMenuCommand(action, params_.custom_context); 1384 rvh->ExecuteCustomContextMenuCommand(action, params_.custom_context);
1443 return; 1385 return;
1444 } 1386 }
1445 1387
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
1754 case IDC_SPELLCHECK_SUGGESTION_4: { 1696 case IDC_SPELLCHECK_SUGGESTION_4: {
1755 rvh->Replace( 1697 rvh->Replace(
1756 params_.dictionary_suggestions[id - IDC_SPELLCHECK_SUGGESTION_0]); 1698 params_.dictionary_suggestions[id - IDC_SPELLCHECK_SUGGESTION_0]);
1757 // GetSpellCheckHost() can return null when the suggested word is 1699 // GetSpellCheckHost() can return null when the suggested word is
1758 // provided by Web SpellCheck API. 1700 // provided by Web SpellCheck API.
1759 SpellCheckHost* spellcheck_host = profile_->GetSpellCheckHost(); 1701 SpellCheckHost* spellcheck_host = profile_->GetSpellCheckHost();
1760 if (spellcheck_host && spellcheck_host->GetMetrics()) 1702 if (spellcheck_host && spellcheck_host->GetMetrics())
1761 spellcheck_host->GetMetrics()->RecordReplacedWordStats(1); 1703 spellcheck_host->GetMetrics()->RecordReplacedWordStats(1);
1762 break; 1704 break;
1763 } 1705 }
1764 case IDC_CHECK_SPELLING_OF_THIS_FIELD: {
1765 rvh->Send(new SpellCheckMsg_ToggleSpellCheck(rvh->routing_id()));
1766 break;
1767 }
1768 case IDC_SPELLCHECK_ADD_TO_DICTIONARY: { 1706 case IDC_SPELLCHECK_ADD_TO_DICTIONARY: {
1769 // GetSpellCheckHost() can return null when the suggested word is 1707 // GetSpellCheckHost() can return null when the suggested word is
1770 // provided by Web SpellCheck API. 1708 // provided by Web SpellCheck API.
1771 if (profile_->GetSpellCheckHost()) 1709 if (profile_->GetSpellCheckHost())
1772 profile_->GetSpellCheckHost()->AddWord( 1710 profile_->GetSpellCheckHost()->AddWord(
1773 UTF16ToUTF8(params_.misspelled_word)); 1711 UTF16ToUTF8(params_.misspelled_word));
1774 SpellCheckerPlatform::AddWord(params_.misspelled_word); 1712 SpellCheckerPlatform::AddWord(params_.misspelled_word);
1775 break; 1713 break;
1776 } 1714 }
1777 1715
1778 case IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS: { 1716 case IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS: {
1779 WindowOpenDisposition disposition = 1717 WindowOpenDisposition disposition =
1780 ForceNewTabDispositionFromEventFlags(event_flags); 1718 ForceNewTabDispositionFromEventFlags(event_flags);
1781 std::string url = std::string(chrome::kChromeUISettingsURL) + 1719 std::string url = std::string(chrome::kChromeUISettingsURL) +
1782 chrome::kLanguageOptionsSubPage; 1720 chrome::kLanguageOptionsSubPage;
1783 OpenURL(GURL(url), GURL(), 0, disposition, content::PAGE_TRANSITION_LINK); 1721 OpenURL(GURL(url), GURL(), 0, disposition, content::PAGE_TRANSITION_LINK);
1784 break; 1722 break;
1785 } 1723 }
1786 1724
1787 case IDC_SPELLPANEL_TOGGLE: {
1788 rvh->Send(new SpellCheckMsg_ToggleSpellPanel(
1789 rvh->routing_id(), SpellCheckerPlatform::SpellingPanelVisible()));
1790 break;
1791 }
1792
1793 #if defined(OS_MACOSX) 1725 #if defined(OS_MACOSX)
1794 case IDC_WRITING_DIRECTION_DEFAULT: 1726 case IDC_WRITING_DIRECTION_DEFAULT:
1795 // WebKit's current behavior is for this menu item to always be disabled. 1727 // WebKit's current behavior is for this menu item to always be disabled.
1796 NOTREACHED(); 1728 NOTREACHED();
1797 break; 1729 break;
1798 case IDC_WRITING_DIRECTION_RTL: 1730 case IDC_WRITING_DIRECTION_RTL:
1799 case IDC_WRITING_DIRECTION_LTR: { 1731 case IDC_WRITING_DIRECTION_LTR: {
1800 WebKit::WebTextDirection dir = WebKit::WebTextDirectionLeftToRight; 1732 WebKit::WebTextDirection dir = WebKit::WebTextDirectionLeftToRight;
1801 if (id == IDC_WRITING_DIRECTION_RTL) 1733 if (id == IDC_WRITING_DIRECTION_RTL)
1802 dir = WebKit::WebTextDirectionRightToLeft; 1734 dir = WebKit::WebTextDirectionRightToLeft;
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
1965 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages), 1897 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages),
1966 g_browser_process->clipboard()); 1898 g_browser_process->clipboard());
1967 } 1899 }
1968 1900
1969 void RenderViewContextMenu::MediaPlayerActionAt( 1901 void RenderViewContextMenu::MediaPlayerActionAt(
1970 const gfx::Point& location, 1902 const gfx::Point& location,
1971 const WebMediaPlayerAction& action) { 1903 const WebMediaPlayerAction& action) {
1972 source_tab_contents_->render_view_host()-> 1904 source_tab_contents_->render_view_host()->
1973 ExecuteMediaPlayerActionAtLocation(location, action); 1905 ExecuteMediaPlayerActionAtLocation(location, action);
1974 } 1906 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698