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

Side by Side Diff: components/autofill/core/browser/autofill_external_delegate.cc

Issue 184103016: Autofill: Refactoring to support fetching password after a username is selected (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Get unit tests compiling. Created 6 years, 9 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "components/autofill/core/browser/autofill_external_delegate.h" 5 #include "components/autofill/core/browser/autofill_external_delegate.h"
6 6
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "components/autofill/core/browser/autocomplete_history_manager.h" 8 #include "components/autofill/core/browser/autocomplete_history_manager.h"
9 #include "components/autofill/core/browser/autofill_driver.h" 9 #include "components/autofill/core/browser/autofill_driver.h"
10 #include "components/autofill/core/browser/autofill_manager.h" 10 #include "components/autofill/core/browser/autofill_manager.h"
11 #include "components/autofill/core/browser/popup_item_ids.h" 11 #include "components/autofill/core/browser/popup_item_ids.h"
12 #include "grit/component_strings.h" 12 #include "grit/component_strings.h"
13 #include "ui/base/l10n/l10n_util.h" 13 #include "ui/base/l10n/l10n_util.h"
14 14
15 namespace autofill { 15 namespace autofill {
16 16
17 AutofillExternalDelegate::AutofillExternalDelegate( 17 AutofillExternalDelegate::AutofillExternalDelegate(
18 AutofillManager* manager, 18 AutofillManager* manager,
19 AutofillDriver* driver) 19 AutofillDriver* driver)
20 : manager_(manager), 20 : manager_(manager),
21 driver_(driver), 21 driver_(driver),
22 password_manager_(driver),
23 query_id_(0), 22 query_id_(0),
24 display_warning_if_disabled_(false), 23 display_warning_if_disabled_(false),
25 has_suggestion_(false), 24 has_suggestion_(false),
26 has_shown_popup_for_current_edit_(false), 25 has_shown_popup_for_current_edit_(false),
27 weak_ptr_factory_(this) { 26 weak_ptr_factory_(this) {
28 DCHECK(manager); 27 DCHECK(manager);
29 } 28 }
30 29
31 AutofillExternalDelegate::~AutofillExternalDelegate() {} 30 AutofillExternalDelegate::~AutofillExternalDelegate() {}
32 31
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 element_bounds_, 103 element_bounds_,
105 query_field_.text_direction, 104 query_field_.text_direction,
106 values, 105 values,
107 labels, 106 labels,
108 icons, 107 icons,
109 ids, 108 ids,
110 GetWeakPtr()); 109 GetWeakPtr());
111 } 110 }
112 } 111 }
113 112
114 void AutofillExternalDelegate::OnShowPasswordSuggestions(
115 const std::vector<base::string16>& suggestions,
116 const std::vector<base::string16>& realms,
117 const FormFieldData& field,
118 const gfx::RectF& element_bounds) {
119 query_field_ = field;
120 element_bounds_ = element_bounds;
121
122 if (suggestions.empty()) {
123 manager_->delegate()->HideAutofillPopup();
124 return;
125 }
126
127 std::vector<base::string16> empty(suggestions.size());
128 std::vector<int> password_ids(suggestions.size(),
129 POPUP_ITEM_ID_PASSWORD_ENTRY);
130 manager_->delegate()->ShowAutofillPopup(
131 element_bounds_,
132 query_field_.text_direction,
133 suggestions,
134 realms,
135 empty,
136 password_ids,
137 GetWeakPtr());
138 }
139
140 void AutofillExternalDelegate::SetCurrentDataListValues( 113 void AutofillExternalDelegate::SetCurrentDataListValues(
141 const std::vector<base::string16>& data_list_values, 114 const std::vector<base::string16>& data_list_values,
142 const std::vector<base::string16>& data_list_labels) { 115 const std::vector<base::string16>& data_list_labels) {
143 data_list_values_ = data_list_values; 116 data_list_values_ = data_list_values;
144 data_list_labels_ = data_list_labels; 117 data_list_labels_ = data_list_labels;
145 118
146 manager_->delegate()->UpdateAutofillPopupDataListValues( 119 manager_->delegate()->UpdateAutofillPopupDataListValues(
147 data_list_values, 120 data_list_values,
148 data_list_labels); 121 data_list_labels);
149 } 122 }
(...skipping 21 matching lines...) Expand all
171 } 144 }
172 145
173 void AutofillExternalDelegate::DidAcceptSuggestion(const base::string16& value, 146 void AutofillExternalDelegate::DidAcceptSuggestion(const base::string16& value,
174 int identifier) { 147 int identifier) {
175 if (identifier == POPUP_ITEM_ID_AUTOFILL_OPTIONS) { 148 if (identifier == POPUP_ITEM_ID_AUTOFILL_OPTIONS) {
176 // User selected 'Autofill Options'. 149 // User selected 'Autofill Options'.
177 manager_->ShowAutofillSettings(); 150 manager_->ShowAutofillSettings();
178 } else if (identifier == POPUP_ITEM_ID_CLEAR_FORM) { 151 } else if (identifier == POPUP_ITEM_ID_CLEAR_FORM) {
179 // User selected 'Clear form'. 152 // User selected 'Clear form'.
180 driver_->RendererShouldClearFilledForm(); 153 driver_->RendererShouldClearFilledForm();
181 } else if (identifier == POPUP_ITEM_ID_PASSWORD_ENTRY) { 154 } else if (identifier == POPUP_ITEM_ID_PASSWORD_ENTRY) {
Garrett Casto 2014/03/14 08:25:22 Seems like eventually this should be removed, but
182 bool success = password_manager_.DidAcceptAutofillSuggestion( 155 NOTREACHED(); // Should be handled elsewhere.
183 query_field_, value);
184 DCHECK(success);
185 } else if (identifier == POPUP_ITEM_ID_DATALIST_ENTRY) { 156 } else if (identifier == POPUP_ITEM_ID_DATALIST_ENTRY) {
186 driver_->RendererShouldAcceptDataListSuggestion(value); 157 driver_->RendererShouldAcceptDataListSuggestion(value);
187 } else if (identifier == POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY) { 158 } else if (identifier == POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY) {
188 // User selected an Autocomplete, so we fill directly. 159 // User selected an Autocomplete, so we fill directly.
189 driver_->RendererShouldSetNodeText(value); 160 driver_->RendererShouldSetNodeText(value);
190 } else { 161 } else {
191 FillAutofillFormData(identifier, false); 162 FillAutofillFormData(identifier, false);
192 } 163 }
193 164
194 manager_->delegate()->HideAutofillPopup(); 165 manager_->delegate()->HideAutofillPopup();
(...skipping 12 matching lines...) Expand all
207 178
208 has_shown_popup_for_current_edit_ = false; 179 has_shown_popup_for_current_edit_ = false;
209 } 180 }
210 181
211 void AutofillExternalDelegate::ClearPreviewedForm() { 182 void AutofillExternalDelegate::ClearPreviewedForm() {
212 driver_->RendererShouldClearPreviewedForm(); 183 driver_->RendererShouldClearPreviewedForm();
213 } 184 }
214 185
215 void AutofillExternalDelegate::Reset() { 186 void AutofillExternalDelegate::Reset() {
216 manager_->delegate()->HideAutofillPopup(); 187 manager_->delegate()->HideAutofillPopup();
217
218 password_manager_.Reset();
219 }
220
221 void AutofillExternalDelegate::AddPasswordFormMapping(
222 const FormFieldData& username_field,
223 const PasswordFormFillData& fill_data) {
224 password_manager_.AddPasswordFormMapping(username_field, fill_data);
225 } 188 }
226 189
227 base::WeakPtr<AutofillExternalDelegate> AutofillExternalDelegate::GetWeakPtr() { 190 base::WeakPtr<AutofillExternalDelegate> AutofillExternalDelegate::GetWeakPtr() {
228 return weak_ptr_factory_.GetWeakPtr(); 191 return weak_ptr_factory_.GetWeakPtr();
229 } 192 }
230 193
231 void AutofillExternalDelegate::FillAutofillFormData(int unique_id, 194 void AutofillExternalDelegate::FillAutofillFormData(int unique_id,
232 bool is_preview) { 195 bool is_preview) {
233 // If the selected element is a warning we don't want to do anything. 196 // If the selected element is a warning we don't want to do anything.
234 if (unique_id == POPUP_ITEM_ID_WARNING_MESSAGE) 197 if (unique_id == POPUP_ITEM_ID_WARNING_MESSAGE)
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 // Set the values that all datalist elements share. 303 // Set the values that all datalist elements share.
341 icons->insert(icons->begin(), 304 icons->insert(icons->begin(),
342 data_list_values_.size(), 305 data_list_values_.size(),
343 base::string16()); 306 base::string16());
344 unique_ids->insert(unique_ids->begin(), 307 unique_ids->insert(unique_ids->begin(),
345 data_list_values_.size(), 308 data_list_values_.size(),
346 POPUP_ITEM_ID_DATALIST_ENTRY); 309 POPUP_ITEM_ID_DATALIST_ENTRY);
347 } 310 }
348 311
349 } // namespace autofill 312 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698