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

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

Issue 22040002: [Autofill] Add a separate enumeration for HTML field type hints. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add docs Created 7 years, 4 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_profile.h" 5 #include "components/autofill/core/browser/autofill_profile.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <map> 9 #include <map>
10 #include <ostream> 10 #include <ostream>
(...skipping 15 matching lines...) Expand all
26 #include "components/autofill/core/common/form_field_data.h" 26 #include "components/autofill/core/common/form_field_data.h"
27 #include "grit/component_strings.h" 27 #include "grit/component_strings.h"
28 #include "ui/base/l10n/l10n_util.h" 28 #include "ui/base/l10n/l10n_util.h"
29 29
30 namespace autofill { 30 namespace autofill {
31 namespace { 31 namespace {
32 32
33 // Like |AutofillType::GetEquivalentFieldType()|, but also returns |NAME_FULL| 33 // Like |AutofillType::GetEquivalentFieldType()|, but also returns |NAME_FULL|
34 // for first, middle, and last name field types. 34 // for first, middle, and last name field types.
35 NativeFieldType GetEquivalentFieldTypeCollapsingNames(NativeFieldType type) { 35 NativeFieldType GetEquivalentFieldTypeCollapsingNames(NativeFieldType type) {
36 if (type == NAME_FIRST || type == NAME_MIDDLE || type == NAME_LAST || 36 NativeFieldType equivalent_type =
37 type == NAME_MIDDLE_INITIAL) 37 AutofillType(type).GetEquivalentNativeType();
Evan Stade 2013/08/05 18:47:24 this fn seems a little bit hoop-jumpy. Would it be
Ilya Sherman 2013/08/06 05:05:39 It's not quite the same unless we also check for N
Evan Stade 2013/08/06 18:39:59 I think the original way is fine now that I unders
Ilya Sherman 2013/08/06 23:04:56 Done.
38
39 if (AutofillType(equivalent_type).group() == NAME)
38 return NAME_FULL; 40 return NAME_FULL;
39 41
40 return AutofillType::GetEquivalentFieldType(type); 42 return equivalent_type;
41 } 43 }
42 44
43 // Fills |distinguishing_fields| with a list of fields to use when creating 45 // Fills |distinguishing_fields| with a list of fields to use when creating
44 // labels that can help to distinguish between two profiles. Draws fields from 46 // labels that can help to distinguish between two profiles. Draws fields from
45 // |suggested_fields| if it is non-NULL; otherwise returns a default list. 47 // |suggested_fields| if it is non-NULL; otherwise returns a default list.
46 // If |suggested_fields| is non-NULL, does not include |excluded_field| in the 48 // If |suggested_fields| is non-NULL, does not include |excluded_field| in the
47 // list. Otherwise, |excluded_field| is ignored, and should be set to 49 // list. Otherwise, |excluded_field| is ignored, and should be set to
48 // |UNKNOWN_TYPE| by convention. The resulting list of fields is sorted in 50 // |UNKNOWN_TYPE| by convention. The resulting list of fields is sorted in
49 // decreasing order of importance. 51 // decreasing order of importance.
50 void GetFieldsForDistinguishingProfiles( 52 void GetFieldsForDistinguishingProfiles(
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 accumulate += ASCIIToUTF16(" "); 119 accumulate += ASCIIToUTF16(" ");
118 accumulate += values[i]; 120 accumulate += values[i];
119 } 121 }
120 return accumulate; 122 return accumulate;
121 } 123 }
122 124
123 base::string16 GetFormGroupInfo(const FormGroup& form_group, 125 base::string16 GetFormGroupInfo(const FormGroup& form_group,
124 const AutofillType& type, 126 const AutofillType& type,
125 const std::string& app_locale) { 127 const std::string& app_locale) {
126 return app_locale.empty() ? 128 return app_locale.empty() ?
127 form_group.GetRawInfo(type.native_type()) : 129 form_group.GetRawInfo(type.GetEquivalentNativeType()) :
128 form_group.GetInfo(type, app_locale); 130 form_group.GetInfo(type, app_locale);
129 } 131 }
130 132
131 template <class T> 133 template <class T>
132 void CopyValuesToItems(NativeFieldType type, 134 void CopyValuesToItems(NativeFieldType type,
133 const std::vector<base::string16>& values, 135 const std::vector<base::string16>& values,
134 std::vector<T>* form_group_items, 136 std::vector<T>* form_group_items,
135 const T& prototype) { 137 const T& prototype) {
136 form_group_items->resize(values.size(), prototype); 138 form_group_items->resize(values.size(), prototype);
137 for (size_t i = 0; i < form_group_items->size(); ++i) { 139 for (size_t i = 0; i < form_group_items->size(); ++i) {
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 void AutofillProfile::GetMatchingTypes( 270 void AutofillProfile::GetMatchingTypes(
269 const base::string16& text, 271 const base::string16& text,
270 const std::string& app_locale, 272 const std::string& app_locale,
271 NativeFieldTypeSet* matching_types) const { 273 NativeFieldTypeSet* matching_types) const {
272 FormGroupList info = FormGroups(); 274 FormGroupList info = FormGroups();
273 for (FormGroupList::const_iterator it = info.begin(); it != info.end(); ++it) 275 for (FormGroupList::const_iterator it = info.begin(); it != info.end(); ++it)
274 (*it)->GetMatchingTypes(text, app_locale, matching_types); 276 (*it)->GetMatchingTypes(text, app_locale, matching_types);
275 } 277 }
276 278
277 base::string16 AutofillProfile::GetRawInfo(NativeFieldType type) const { 279 base::string16 AutofillProfile::GetRawInfo(NativeFieldType type) const {
278 NativeFieldType return_type = AutofillType::GetEquivalentFieldType(type); 280 const FormGroup* form_group = FormGroupForType(AutofillType(type));
279 const FormGroup* form_group = FormGroupForType(AutofillType(return_type));
280 if (!form_group) 281 if (!form_group)
281 return base::string16(); 282 return base::string16();
282 283
283 return form_group->GetRawInfo(return_type); 284 return form_group->GetRawInfo(type);
284 } 285 }
285 286
286 void AutofillProfile::SetRawInfo(NativeFieldType type, 287 void AutofillProfile::SetRawInfo(NativeFieldType type,
287 const base::string16& value) { 288 const base::string16& value) {
288 FormGroup* form_group = MutableFormGroupForType(AutofillType(type)); 289 FormGroup* form_group = MutableFormGroupForType(AutofillType(type));
289 if (form_group) 290 if (form_group)
290 form_group->SetRawInfo(type, CollapseWhitespace(value, false)); 291 form_group->SetRawInfo(type, CollapseWhitespace(value, false));
291 } 292 }
292 293
293 base::string16 AutofillProfile::GetInfo(const AutofillType& type, 294 base::string16 AutofillProfile::GetInfo(const AutofillType& type,
294 const std::string& app_locale) const { 295 const std::string& app_locale) const {
295 NativeFieldType return_type = 296 const FormGroup* form_group = FormGroupForType(type);
296 AutofillType::GetEquivalentFieldType(type.native_type());
297 const FormGroup* form_group = FormGroupForType(AutofillType(return_type));
298 if (!form_group) 297 if (!form_group)
299 return base::string16(); 298 return base::string16();
300 299
301 return form_group->GetInfo(AutofillType(return_type), app_locale); 300 return form_group->GetInfo(type, app_locale);
302 } 301 }
303 302
304 bool AutofillProfile::SetInfo(const AutofillType& type, 303 bool AutofillProfile::SetInfo(const AutofillType& type,
305 const base::string16& value, 304 const base::string16& value,
306 const std::string& app_locale) { 305 const std::string& app_locale) {
307 FormGroup* form_group = MutableFormGroupForType(type); 306 FormGroup* form_group = MutableFormGroupForType(type);
308 if (!form_group) 307 if (!form_group)
309 return false; 308 return false;
310 309
311 return 310 return
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 } 355 }
357 356
358 void AutofillProfile::FillFormField(const AutofillField& field, 357 void AutofillProfile::FillFormField(const AutofillField& field,
359 size_t variant, 358 size_t variant,
360 const std::string& app_locale, 359 const std::string& app_locale,
361 FormFieldData* field_data) const { 360 FormFieldData* field_data) const {
362 AutofillType type = field.Type(); 361 AutofillType type = field.Type();
363 DCHECK_NE(CREDIT_CARD, type.group()); 362 DCHECK_NE(CREDIT_CARD, type.group());
364 DCHECK(field_data); 363 DCHECK(field_data);
365 364
366 if (type.native_type() == PHONE_HOME_NUMBER || 365 if (type.GetEquivalentNativeType() == PHONE_HOME_NUMBER) {
367 type.native_type() == PHONE_BILLING_NUMBER) {
368 FillPhoneNumberField(field, variant, app_locale, field_data); 366 FillPhoneNumberField(field, variant, app_locale, field_data);
369 } else if (field_data->form_control_type == "select-one") { 367 } else if (field_data->form_control_type == "select-one") {
370 FillSelectControl(type, app_locale, field_data); 368 FillSelectControl(type, app_locale, field_data);
371 } else { 369 } else {
372 std::vector<base::string16> values; 370 std::vector<base::string16> values;
373 GetMultiInfo(type, app_locale, &values); 371 GetMultiInfo(type, app_locale, &values);
374 if (variant >= values.size()) { 372 if (variant >= values.size()) {
375 // If the variant is unavailable, bail. This case is reachable, for 373 // If the variant is unavailable, bail. This case is reachable, for
376 // example if Sync updates a profile during the filling process. 374 // example if Sync updates a profile during the filling process.
377 return; 375 return;
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_STATE)) 899 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_STATE))
902 << " " 900 << " "
903 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_ZIP)) 901 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_ZIP))
904 << " " 902 << " "
905 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_COUNTRY)) 903 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_COUNTRY))
906 << " " 904 << " "
907 << UTF16ToUTF8(MultiString(profile, PHONE_HOME_WHOLE_NUMBER)); 905 << UTF16ToUTF8(MultiString(profile, PHONE_HOME_WHOLE_NUMBER));
908 } 906 }
909 907
910 } // namespace autofill 908 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698