OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |