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

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

Issue 335023: Add the feature "Add as seach engine..." when right clicking on ... (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 9 years, 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/external_tab_container_win.cc ('k') | chrome/common/automation_messages.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 24 matching lines...) Expand all
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/spellcheck_host.h" 39 #include "chrome/browser/spellcheck_host.h"
40 #include "chrome/browser/spellcheck_host_metrics.h" 40 #include "chrome/browser/spellcheck_host_metrics.h"
41 #include "chrome/browser/spellchecker_platform_engine.h" 41 #include "chrome/browser/spellchecker_platform_engine.h"
42 #include "chrome/browser/translate/translate_manager.h" 42 #include "chrome/browser/translate/translate_manager.h"
43 #include "chrome/browser/translate/translate_prefs.h" 43 #include "chrome/browser/translate/translate_prefs.h"
44 #include "chrome/browser/translate/translate_tab_helper.h" 44 #include "chrome/browser/translate/translate_tab_helper.h"
45 #include "chrome/browser/ui/browser.h"
45 #include "chrome/browser/ui/download/download_tab_helper.h" 46 #include "chrome/browser/ui/download/download_tab_helper.h"
47 #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h"
46 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 48 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
47 #include "chrome/common/chrome_constants.h" 49 #include "chrome/common/chrome_constants.h"
48 #include "chrome/common/chrome_switches.h" 50 #include "chrome/common/chrome_switches.h"
49 #include "chrome/common/pref_names.h" 51 #include "chrome/common/pref_names.h"
50 #include "chrome/common/print_messages.h" 52 #include "chrome/common/print_messages.h"
51 #include "chrome/common/spellcheck_messages.h" 53 #include "chrome/common/spellcheck_messages.h"
52 #include "chrome/common/url_constants.h" 54 #include "chrome/common/url_constants.h"
53 #include "content/browser/child_process_security_policy.h" 55 #include "content/browser/child_process_security_policy.h"
54 #include "content/browser/renderer_host/render_view_host.h" 56 #include "content/browser/renderer_host/render_view_host.h"
55 #include "content/browser/renderer_host/render_widget_host_view.h" 57 #include "content/browser/renderer_host/render_widget_host_view.h"
(...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_CUT, 780 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_CUT,
779 IDS_CONTENT_CONTEXT_CUT); 781 IDS_CONTENT_CONTEXT_CUT);
780 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPY, 782 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPY,
781 IDS_CONTENT_CONTEXT_COPY); 783 IDS_CONTENT_CONTEXT_COPY);
782 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_PASTE, 784 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_PASTE,
783 IDS_CONTENT_CONTEXT_PASTE); 785 IDS_CONTENT_CONTEXT_PASTE);
784 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_DELETE, 786 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_DELETE,
785 IDS_CONTENT_CONTEXT_DELETE); 787 IDS_CONTENT_CONTEXT_DELETE);
786 menu_model_.AddSeparator(); 788 menu_model_.AddSeparator();
787 789
790 if (!params_.keyword_url.is_empty()) {
791 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_ADDSEARCHENGINE,
792 IDS_CONTENT_CONTEXT_ADDSEARCHENGINE);
793 menu_model_.AddSeparator();
794 }
795
788 AppendSpellcheckOptionsSubMenu(); 796 AppendSpellcheckOptionsSubMenu();
789 797
790 #if defined(OS_MACOSX) 798 #if defined(OS_MACOSX)
791 // OS X provides a contextual menu to set writing direction for BiDi 799 // OS X provides a contextual menu to set writing direction for BiDi
792 // languages. 800 // languages.
793 // This functionality is exposed as a keyboard shortcut on Windows & Linux. 801 // This functionality is exposed as a keyboard shortcut on Windows & Linux.
794 AppendBidiSubMenu(); 802 AppendBidiSubMenu();
795 #endif // OS_MACOSX 803 #endif // OS_MACOSX
796 804
797 menu_model_.AddSeparator(); 805 menu_model_.AddSeparator();
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
1170 case IDC_CONTENT_CONTEXT_LOOK_UP_IN_DICTIONARY: 1178 case IDC_CONTENT_CONTEXT_LOOK_UP_IN_DICTIONARY:
1171 // This is OK because the menu is not shown when it isn't 1179 // This is OK because the menu is not shown when it isn't
1172 // appropriate. 1180 // appropriate.
1173 return true; 1181 return true;
1174 #elif defined(OS_POSIX) 1182 #elif defined(OS_POSIX)
1175 // TODO(suzhe): this should not be enabled for password fields. 1183 // TODO(suzhe): this should not be enabled for password fields.
1176 case IDC_INPUT_METHODS_MENU: 1184 case IDC_INPUT_METHODS_MENU:
1177 return true; 1185 return true;
1178 #endif 1186 #endif
1179 1187
1188 case IDC_CONTENT_CONTEXT_ADDSEARCHENGINE:
1189 return !params_.keyword_url.is_empty();
1190
1180 case IDC_SPELLCHECK_MENU: 1191 case IDC_SPELLCHECK_MENU:
1181 return true; 1192 return true;
1182 1193
1183 case IDC_CONTENT_CONTEXT_OPENLINKWITH: 1194 case IDC_CONTENT_CONTEXT_OPENLINKWITH:
1184 return true; 1195 return true;
1185 1196
1186 case IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS: 1197 case IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS:
1187 return true; 1198 return true;
1188 1199
1189 default: 1200 default:
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after
1615 LookUpInDictionary(); 1626 LookUpInDictionary();
1616 break; 1627 break;
1617 #endif // OS_MACOSX 1628 #endif // OS_MACOSX
1618 case IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS: { 1629 case IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS: {
1619 std::string url = std::string(chrome::kChromeUISettingsURL) + 1630 std::string url = std::string(chrome::kChromeUISettingsURL) +
1620 chrome::kHandlerSettingsSubPage; 1631 chrome::kHandlerSettingsSubPage;
1621 OpenURL(GURL(url), GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); 1632 OpenURL(GURL(url), GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK);
1622 break; 1633 break;
1623 } 1634 }
1624 1635
1636 case IDC_CONTENT_CONTEXT_ADDSEARCHENGINE: {
1637 // Make sure the model is loaded.
1638 TemplateURLService* model =
1639 TemplateURLServiceFactory::GetForProfile(profile_);
1640 if (!model)
1641 return;
1642 model->Load();
1643
1644 scoped_ptr<TemplateURL> template_url(new TemplateURL);
1645 string16 keyword =
1646 net::StripWWW(UTF8ToUTF16((params_.page_url.host())));
1647 template_url->set_short_name(keyword);
1648 template_url->set_keyword(keyword);
1649 template_url->SetURL(params_.keyword_url.spec(), 0, 0);
1650 template_url->SetFaviconURL(TemplateURL::GenerateFaviconURL(
1651 params_.page_url.GetOrigin()));
1652
1653 TabContentsWrapper* tab_contents_wrapper =
1654 TabContentsWrapper::GetCurrentWrapperForContents(
1655 source_tab_contents_);
1656 if (tab_contents_wrapper &&
1657 tab_contents_wrapper->search_engine_tab_helper() &&
1658 tab_contents_wrapper->search_engine_tab_helper()->delegate()) {
1659 // Takes ownership of |template_url|.
1660 tab_contents_wrapper->search_engine_tab_helper()->delegate()->
1661 ConfirmAddSearchProvider(template_url.release(), profile_);
1662 }
1663 break;
1664 }
1665
1625 default: 1666 default:
1626 NOTREACHED(); 1667 NOTREACHED();
1627 break; 1668 break;
1628 } 1669 }
1629 } 1670 }
1630 1671
1631 ProtocolHandlerRegistry::ProtocolHandlerList 1672 ProtocolHandlerRegistry::ProtocolHandlerList
1632 RenderViewContextMenu::GetHandlersForLinkUrl() { 1673 RenderViewContextMenu::GetHandlersForLinkUrl() {
1633 ProtocolHandlerRegistry::ProtocolHandlerList handlers = 1674 ProtocolHandlerRegistry::ProtocolHandlerList handlers =
1634 protocol_handler_registry_->GetHandlersFor(params_.link_url.scheme()); 1675 protocol_handler_registry_->GetHandlersFor(params_.link_url.scheme());
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1713 g_browser_process->clipboard()); 1754 g_browser_process->clipboard());
1714 } 1755 }
1715 1756
1716 void RenderViewContextMenu::MediaPlayerActionAt( 1757 void RenderViewContextMenu::MediaPlayerActionAt(
1717 const gfx::Point& location, 1758 const gfx::Point& location,
1718 const WebMediaPlayerAction& action) { 1759 const WebMediaPlayerAction& action) {
1719 RenderViewHost* rvh = source_tab_contents_->render_view_host(); 1760 RenderViewHost* rvh = source_tab_contents_->render_view_host();
1720 rvh->Send(new ViewMsg_MediaPlayerActionAt( 1761 rvh->Send(new ViewMsg_MediaPlayerActionAt(
1721 rvh->routing_id(), location, action)); 1762 rvh->routing_id(), location, action));
1722 } 1763 }
OLDNEW
« no previous file with comments | « chrome/browser/external_tab_container_win.cc ('k') | chrome/common/automation_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698