OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/browser/autofill_profile.h" | 5 #include "components/autofill/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 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 } | 393 } |
394 } | 394 } |
395 | 395 |
396 field_data->value = number; | 396 field_data->value = number; |
397 } | 397 } |
398 | 398 |
399 const string16 AutofillProfile::Label() const { | 399 const string16 AutofillProfile::Label() const { |
400 return label_; | 400 return label_; |
401 } | 401 } |
402 | 402 |
403 const std::string AutofillProfile::CountryCode() const { | |
404 return address_.country_code(); | |
405 } | |
406 | |
407 void AutofillProfile::SetCountryCode(const std::string& country_code) { | |
408 address_.set_country_code(country_code); | |
409 } | |
410 | |
411 bool AutofillProfile::IsEmpty() const { | 403 bool AutofillProfile::IsEmpty() const { |
412 FieldTypeSet types; | 404 FieldTypeSet types; |
413 GetNonEmptyTypes(AutofillCountry::ApplicationLocale(), &types); | 405 GetNonEmptyTypes(AutofillCountry::ApplicationLocale(), &types); |
414 return types.empty(); | 406 return types.empty(); |
415 } | 407 } |
416 | 408 |
417 int AutofillProfile::Compare(const AutofillProfile& profile) const { | 409 int AutofillProfile::Compare(const AutofillProfile& profile) const { |
418 const AutofillFieldType single_value_types[] = { COMPANY_NAME, | 410 const AutofillFieldType single_value_types[] = { COMPANY_NAME, |
419 ADDRESS_HOME_LINE1, | 411 ADDRESS_HOME_LINE1, |
420 ADDRESS_HOME_LINE2, | 412 ADDRESS_HOME_LINE2, |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 if (*iter == NAME_FULL) { | 468 if (*iter == NAME_FULL) { |
477 // Ignore the compound "full name" field type. We are only interested in | 469 // Ignore the compound "full name" field type. We are only interested in |
478 // comparing the constituent parts. For example, if |this| has a middle | 470 // comparing the constituent parts. For example, if |this| has a middle |
479 // name saved, but |profile| lacks one, |profile| could still be a subset | 471 // name saved, but |profile| lacks one, |profile| could still be a subset |
480 // of |this|. | 472 // of |this|. |
481 continue; | 473 continue; |
482 } else if (AutofillType(*iter).group() == AutofillType::PHONE) { | 474 } else if (AutofillType(*iter).group() == AutofillType::PHONE) { |
483 // Phone numbers should be canonicalized prior to being compared. | 475 // Phone numbers should be canonicalized prior to being compared. |
484 if (*iter != PHONE_HOME_WHOLE_NUMBER) { | 476 if (*iter != PHONE_HOME_WHOLE_NUMBER) { |
485 continue; | 477 continue; |
486 } else if (!autofill_i18n::PhoneNumbersMatch(GetRawInfo(*iter), | 478 } else if (!autofill_i18n::PhoneNumbersMatch( |
487 profile.GetRawInfo(*iter), | 479 GetRawInfo(*iter), |
488 CountryCode())) { | 480 profile.GetRawInfo(*iter), |
| 481 UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY)))) { |
489 return false; | 482 return false; |
490 } | 483 } |
491 } else if (StringToLowerASCII(GetRawInfo(*iter)) != | 484 } else if (StringToLowerASCII(GetRawInfo(*iter)) != |
492 StringToLowerASCII(profile.GetRawInfo(*iter))) { | 485 StringToLowerASCII(profile.GetRawInfo(*iter))) { |
493 return false; | 486 return false; |
494 } | 487 } |
495 } | 488 } |
496 | 489 |
497 return true; | 490 return true; |
498 } | 491 } |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
615 } | 608 } |
616 | 609 |
617 void AutofillProfile::GetSupportedTypes(FieldTypeSet* supported_types) const { | 610 void AutofillProfile::GetSupportedTypes(FieldTypeSet* supported_types) const { |
618 FormGroupList info = FormGroups(); | 611 FormGroupList info = FormGroups(); |
619 for (FormGroupList::const_iterator it = info.begin(); it != info.end(); ++it) | 612 for (FormGroupList::const_iterator it = info.begin(); it != info.end(); ++it) |
620 (*it)->GetSupportedTypes(supported_types); | 613 (*it)->GetSupportedTypes(supported_types); |
621 } | 614 } |
622 | 615 |
623 bool AutofillProfile::FillCountrySelectControl(FormFieldData* field_data) | 616 bool AutofillProfile::FillCountrySelectControl(FormFieldData* field_data) |
624 const { | 617 const { |
625 std::string country_code = CountryCode(); | 618 std::string country_code = UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY)); |
626 std::string app_locale = AutofillCountry::ApplicationLocale(); | 619 std::string app_locale = AutofillCountry::ApplicationLocale(); |
627 | 620 |
628 DCHECK_EQ(field_data->option_values.size(), | 621 DCHECK_EQ(field_data->option_values.size(), |
629 field_data->option_contents.size()); | 622 field_data->option_contents.size()); |
630 for (size_t i = 0; i < field_data->option_values.size(); ++i) { | 623 for (size_t i = 0; i < field_data->option_values.size(); ++i) { |
631 // Canonicalize each <option> value to a country code, and compare to the | 624 // Canonicalize each <option> value to a country code, and compare to the |
632 // target country code. | 625 // target country code. |
633 string16 value = field_data->option_values[i]; | 626 string16 value = field_data->option_values[i]; |
634 string16 contents = field_data->option_contents[i]; | 627 string16 contents = field_data->option_contents[i]; |
635 if (country_code == AutofillCountry::GetCountryCode(value, app_locale) || | 628 if (country_code == AutofillCountry::GetCountryCode(value, app_locale) || |
(...skipping 23 matching lines...) Expand all Loading... |
659 values->resize(1); | 652 values->resize(1); |
660 (*values)[0] = GetFormGroupInfo(*this, type, app_locale); | 653 (*values)[0] = GetFormGroupInfo(*this, type, app_locale); |
661 } | 654 } |
662 } | 655 } |
663 | 656 |
664 void AutofillProfile::AddPhoneIfUnique(const string16& phone, | 657 void AutofillProfile::AddPhoneIfUnique(const string16& phone, |
665 std::vector<string16>* existing_phones) { | 658 std::vector<string16>* existing_phones) { |
666 DCHECK(existing_phones); | 659 DCHECK(existing_phones); |
667 // Phones allow "fuzzy" matching, so "1-800-FLOWERS", "18003569377", | 660 // Phones allow "fuzzy" matching, so "1-800-FLOWERS", "18003569377", |
668 // "(800)356-9377" and "356-9377" are considered the same. | 661 // "(800)356-9377" and "356-9377" are considered the same. |
669 if (std::find_if(existing_phones->begin(), existing_phones->end(), | 662 if (std::find_if( |
670 FindByPhone(phone, CountryCode())) == | 663 existing_phones->begin(), existing_phones->end(), |
| 664 FindByPhone(phone, UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY)))) == |
671 existing_phones->end()) { | 665 existing_phones->end()) { |
672 existing_phones->push_back(phone); | 666 existing_phones->push_back(phone); |
673 } | 667 } |
674 } | 668 } |
675 | 669 |
676 string16 AutofillProfile::ConstructInferredLabel( | 670 string16 AutofillProfile::ConstructInferredLabel( |
677 const std::vector<AutofillFieldType>& included_fields, | 671 const std::vector<AutofillFieldType>& included_fields, |
678 size_t num_fields_to_use) const { | 672 size_t num_fields_to_use) const { |
679 const string16 separator = | 673 const string16 separator = |
680 l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_SUMMARY_SEPARATOR); | 674 l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_SUMMARY_SEPARATOR); |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
839 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_CITY)) | 833 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_CITY)) |
840 << " " | 834 << " " |
841 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_STATE)) | 835 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_STATE)) |
842 << " " | 836 << " " |
843 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_ZIP)) | 837 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_ZIP)) |
844 << " " | 838 << " " |
845 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_COUNTRY)) | 839 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_COUNTRY)) |
846 << " " | 840 << " " |
847 << UTF16ToUTF8(MultiString(profile, PHONE_HOME_WHOLE_NUMBER)); | 841 << UTF16ToUTF8(MultiString(profile, PHONE_HOME_WHOLE_NUMBER)); |
848 } | 842 } |
OLD | NEW |