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

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

Issue 1142923002: Add a "Save password" item to the context menu. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/renderer_context_menu/render_view_context_menu.h" 5 #include "chrome/browser/renderer_context_menu/render_view_context_menu.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 #include "chrome/common/net/url_util.h" 59 #include "chrome/common/net/url_util.h"
60 #include "chrome/common/pref_names.h" 60 #include "chrome/common/pref_names.h"
61 #include "chrome/common/render_messages.h" 61 #include "chrome/common/render_messages.h"
62 #include "chrome/common/spellcheck_messages.h" 62 #include "chrome/common/spellcheck_messages.h"
63 #include "chrome/common/url_constants.h" 63 #include "chrome/common/url_constants.h"
64 #include "chrome/grit/generated_resources.h" 64 #include "chrome/grit/generated_resources.h"
65 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_heade rs.h" 65 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_heade rs.h"
66 #include "components/google/core/browser/google_util.h" 66 #include "components/google/core/browser/google_util.h"
67 #include "components/metrics/proto/omnibox_input_type.pb.h" 67 #include "components/metrics/proto/omnibox_input_type.pb.h"
68 #include "components/omnibox/autocomplete_match.h" 68 #include "components/omnibox/autocomplete_match.h"
69 #include "components/password_manager/core/common/experiments.h"
69 #include "components/search_engines/template_url.h" 70 #include "components/search_engines/template_url.h"
70 #include "components/search_engines/template_url_service.h" 71 #include "components/search_engines/template_url_service.h"
71 #include "components/translate/core/browser/translate_download_manager.h" 72 #include "components/translate/core/browser/translate_download_manager.h"
72 #include "components/translate/core/browser/translate_manager.h" 73 #include "components/translate/core/browser/translate_manager.h"
73 #include "components/translate/core/browser/translate_prefs.h" 74 #include "components/translate/core/browser/translate_prefs.h"
74 #include "components/user_prefs/user_prefs.h" 75 #include "components/user_prefs/user_prefs.h"
75 #include "content/public/browser/child_process_security_policy.h" 76 #include "content/public/browser/child_process_security_policy.h"
76 #include "content/public/browser/download_manager.h" 77 #include "content/public/browser/download_manager.h"
77 #include "content/public/browser/download_save_info.h" 78 #include "content/public/browser/download_save_info.h"
78 #include "content/public/browser/download_url_parameters.h" 79 #include "content/public/browser/download_url_parameters.h"
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 {57, IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE}, 216 {57, IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE},
216 {58, IDC_SPELLCHECK_SUGGESTION_0}, 217 {58, IDC_SPELLCHECK_SUGGESTION_0},
217 {59, IDC_SPELLCHECK_ADD_TO_DICTIONARY}, 218 {59, IDC_SPELLCHECK_ADD_TO_DICTIONARY},
218 {60, IDC_SPELLPANEL_TOGGLE}, 219 {60, IDC_SPELLPANEL_TOGGLE},
219 {61, IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB}, 220 {61, IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB},
220 {62, IDC_WRITING_DIRECTION_MENU}, 221 {62, IDC_WRITING_DIRECTION_MENU},
221 {63, IDC_WRITING_DIRECTION_DEFAULT}, 222 {63, IDC_WRITING_DIRECTION_DEFAULT},
222 {64, IDC_WRITING_DIRECTION_LTR}, 223 {64, IDC_WRITING_DIRECTION_LTR},
223 {65, IDC_WRITING_DIRECTION_RTL}, 224 {65, IDC_WRITING_DIRECTION_RTL},
224 {66, IDC_CONTENT_CONTEXT_SHOW_ORIGINAL_IMAGE}, 225 {66, IDC_CONTENT_CONTEXT_SHOW_ORIGINAL_IMAGE},
226 {67, IDC_CONTENT_CONTEXT_FORCESAVEPASSWORD},
225 // Add new items here and use |enum_id| from the next line. 227 // Add new items here and use |enum_id| from the next line.
226 // Also, add new items to RenderViewContextMenuItem enum in histograms.xml. 228 // Also, add new items to RenderViewContextMenuItem enum in histograms.xml.
227 {67, 0}, // Must be the last. Increment |enum_id| when new IDC was added. 229 {68, 0}, // Must be the last. Increment |enum_id| when new IDC was added.
228 }; 230 };
229 231
230 // Collapses large ranges of ids before looking for UMA enum. 232 // Collapses large ranges of ids before looking for UMA enum.
231 int CollapseCommandsForUMA(int id) { 233 int CollapseCommandsForUMA(int id) {
232 DCHECK(!RenderViewContextMenu::IsContentCustomCommandId(id)); 234 DCHECK(!RenderViewContextMenu::IsContentCustomCommandId(id));
233 DCHECK(!ContextMenuMatcher::IsExtensionsCustomCommandId(id)); 235 DCHECK(!ContextMenuMatcher::IsExtensionsCustomCommandId(id));
234 236
235 if (id >= IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST && 237 if (id >= IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST &&
236 id <= IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_LAST) { 238 id <= IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_LAST) {
237 return IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST; 239 return IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST;
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 624
623 if (content_type_->SupportsGroup( 625 if (content_type_->SupportsGroup(
624 ContextMenuContentType::ITEM_GROUP_DEVTOOLS_UNPACKED_EXT)) { 626 ContextMenuContentType::ITEM_GROUP_DEVTOOLS_UNPACKED_EXT)) {
625 AppendDevtoolsForUnpackedExtensions(); 627 AppendDevtoolsForUnpackedExtensions();
626 } 628 }
627 629
628 if (content_type_->SupportsGroup( 630 if (content_type_->SupportsGroup(
629 ContextMenuContentType::ITEM_GROUP_PRINT_PREVIEW)) { 631 ContextMenuContentType::ITEM_GROUP_PRINT_PREVIEW)) {
630 AppendPrintPreviewItems(); 632 AppendPrintPreviewItems();
631 } 633 }
634
635 if (content_type_->SupportsGroup(
636 ContextMenuContentType::ITEM_GROUP_PASSWORD)) {
637 AppendPasswordItems();
638 }
632 } 639 }
633 640
634 Profile* RenderViewContextMenu::GetProfile() { 641 Profile* RenderViewContextMenu::GetProfile() {
635 return Profile::FromBrowserContext(browser_context_); 642 return Profile::FromBrowserContext(browser_context_);
636 } 643 }
637 644
638 void RenderViewContextMenu::RecordUsedItem(int id) { 645 void RenderViewContextMenu::RecordUsedItem(int id) {
639 int enum_id = FindUMAEnumValueForCommand(id); 646 int enum_id = FindUMAEnumValueForCommand(id);
640 if (enum_id != -1) { 647 if (enum_id != -1) {
641 const size_t kMappingSize = arraysize(kUmaEnumToControlId); 648 const size_t kMappingSize = arraysize(kUmaEnumToControlId);
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 protocol_handler_submenu_model_.AddItem( 1038 protocol_handler_submenu_model_.AddItem(
1032 IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS, 1039 IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS,
1033 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_OPENLINKWITH_CONFIGURE)); 1040 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_OPENLINKWITH_CONFIGURE));
1034 1041
1035 menu_model_.AddSubMenu( 1042 menu_model_.AddSubMenu(
1036 IDC_CONTENT_CONTEXT_OPENLINKWITH, 1043 IDC_CONTENT_CONTEXT_OPENLINKWITH,
1037 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_OPENLINKWITH), 1044 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_OPENLINKWITH),
1038 &protocol_handler_submenu_model_); 1045 &protocol_handler_submenu_model_);
1039 } 1046 }
1040 1047
1048 void RenderViewContextMenu::AppendPasswordItems() {
1049 if (password_manager::ForceSavingExperimentEnabled()) {
vabr (Chromium) 2015/05/19 09:58:13 nit: To spare indenting, we usually do if (!experi
msramek 2015/05/19 12:53:11 I thought that this is semantically better, as App
1050 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
1051 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_FORCESAVEPASSWORD,
1052 IDS_CONTENT_CONTEXT_FORCESAVEPASSWORD);
1053 }
1054 }
1055
1041 // Menu delegate functions ----------------------------------------------------- 1056 // Menu delegate functions -----------------------------------------------------
1042 1057
1043 bool RenderViewContextMenu::IsCommandIdEnabled(int id) const { 1058 bool RenderViewContextMenu::IsCommandIdEnabled(int id) const {
1044 { 1059 {
1045 bool enabled = false; 1060 bool enabled = false;
1046 if (RenderViewContextMenuBase::IsCommandIdKnown(id, &enabled)) 1061 if (RenderViewContextMenuBase::IsCommandIdKnown(id, &enabled))
1047 return enabled; 1062 return enabled;
1048 } 1063 }
1049 1064
1050 CoreTabHelper* core_tab_helper = 1065 CoreTabHelper* core_tab_helper =
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
1333 1348
1334 case IDC_SPELLCHECK_MENU: 1349 case IDC_SPELLCHECK_MENU:
1335 return true; 1350 return true;
1336 1351
1337 case IDC_CONTENT_CONTEXT_OPENLINKWITH: 1352 case IDC_CONTENT_CONTEXT_OPENLINKWITH:
1338 return true; 1353 return true;
1339 1354
1340 case IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS: 1355 case IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS:
1341 return true; 1356 return true;
1342 1357
1358 case IDC_CONTENT_CONTEXT_FORCESAVEPASSWORD:
1359 return true;
1360
1343 default: 1361 default:
1344 NOTREACHED(); 1362 NOTREACHED();
1345 return false; 1363 return false;
1346 } 1364 }
1347 } 1365 }
1348 1366
1349 bool RenderViewContextMenu::IsCommandIdChecked(int id) const { 1367 bool RenderViewContextMenu::IsCommandIdChecked(int id) const {
1350 if (RenderViewContextMenuBase::IsCommandIdChecked(id)) 1368 if (RenderViewContextMenuBase::IsCommandIdChecked(id))
1351 return true; 1369 return true;
1352 1370
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
1773 data.SetURL(params_.keyword_url.spec()); 1791 data.SetURL(params_.keyword_url.spec());
1774 data.favicon_url = 1792 data.favicon_url =
1775 TemplateURL::GenerateFaviconURL(params_.page_url.GetOrigin()); 1793 TemplateURL::GenerateFaviconURL(params_.page_url.GetOrigin());
1776 // Takes ownership of the TemplateURL. 1794 // Takes ownership of the TemplateURL.
1777 search_engine_tab_helper->delegate()->ConfirmAddSearchProvider( 1795 search_engine_tab_helper->delegate()->ConfirmAddSearchProvider(
1778 new TemplateURL(data), GetProfile()); 1796 new TemplateURL(data), GetProfile());
1779 } 1797 }
1780 break; 1798 break;
1781 } 1799 }
1782 1800
1801 case IDC_CONTENT_CONTEXT_FORCESAVEPASSWORD:
1802 // TODO(msramek): Force-save the password.
1803 break;
1804
1783 default: 1805 default:
1784 NOTREACHED(); 1806 NOTREACHED();
1785 break; 1807 break;
1786 } 1808 }
1787 } 1809 }
1788 1810
1789 ProtocolHandlerRegistry::ProtocolHandlerList 1811 ProtocolHandlerRegistry::ProtocolHandlerList
1790 RenderViewContextMenu::GetHandlersForLinkUrl() { 1812 RenderViewContextMenu::GetHandlersForLinkUrl() {
1791 ProtocolHandlerRegistry::ProtocolHandlerList handlers = 1813 ProtocolHandlerRegistry::ProtocolHandlerList handlers =
1792 protocol_handler_registry_->GetHandlersFor(params_.link_url.scheme()); 1814 protocol_handler_registry_->GetHandlersFor(params_.link_url.scheme());
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1885 source_web_contents_->GetRenderViewHost()-> 1907 source_web_contents_->GetRenderViewHost()->
1886 ExecuteMediaPlayerActionAtLocation(location, action); 1908 ExecuteMediaPlayerActionAtLocation(location, action);
1887 } 1909 }
1888 1910
1889 void RenderViewContextMenu::PluginActionAt( 1911 void RenderViewContextMenu::PluginActionAt(
1890 const gfx::Point& location, 1912 const gfx::Point& location,
1891 const WebPluginAction& action) { 1913 const WebPluginAction& action) {
1892 source_web_contents_->GetRenderViewHost()-> 1914 source_web_contents_->GetRenderViewHost()->
1893 ExecutePluginActionAtLocation(location, action); 1915 ExecutePluginActionAtLocation(location, action);
1894 } 1916 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698