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_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 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
558 return !operator==(profile); | 558 return !operator==(profile); |
559 } | 559 } |
560 | 560 |
561 const base::string16 AutofillProfile::PrimaryValue() const { | 561 const base::string16 AutofillProfile::PrimaryValue() const { |
562 return GetRawInfo(ADDRESS_HOME_LINE1) + GetRawInfo(ADDRESS_HOME_CITY); | 562 return GetRawInfo(ADDRESS_HOME_LINE1) + GetRawInfo(ADDRESS_HOME_CITY); |
563 } | 563 } |
564 | 564 |
565 bool AutofillProfile::IsSubsetOf(const AutofillProfile& profile, | 565 bool AutofillProfile::IsSubsetOf(const AutofillProfile& profile, |
566 const std::string& app_locale) const { | 566 const std::string& app_locale) const { |
567 ServerFieldTypeSet types; | 567 ServerFieldTypeSet types; |
568 GetNonEmptyTypes(app_locale, &types); | 568 GetSupportedTypes(&types); |
| 569 return IsSubsetOfForFieldSet(profile, app_locale, types); |
| 570 } |
569 | 571 |
| 572 bool AutofillProfile::IsSubsetOfForFieldSet( |
| 573 const AutofillProfile& profile, |
| 574 const std::string& app_locale, |
| 575 const ServerFieldTypeSet& types) const { |
570 for (ServerFieldType type : types) { | 576 for (ServerFieldType type : types) { |
| 577 base::string16 value = GetRawInfo(type); |
| 578 if (value.empty()) |
| 579 continue; |
| 580 |
571 if (type == NAME_FULL || type == ADDRESS_HOME_STREET_ADDRESS) { | 581 if (type == NAME_FULL || type == ADDRESS_HOME_STREET_ADDRESS) { |
572 // Ignore the compound "full name" field type. We are only interested in | 582 // Ignore the compound "full name" field type. We are only interested in |
573 // comparing the constituent parts. For example, if |this| has a middle | 583 // comparing the constituent parts. For example, if |this| has a middle |
574 // name saved, but |profile| lacks one, |profile| could still be a subset | 584 // name saved, but |profile| lacks one, |profile| could still be a subset |
575 // of |this|. Likewise, ignore the compound "street address" type, as we | 585 // of |this|. Likewise, ignore the compound "street address" type, as we |
576 // are only interested in matching line-by-line. | 586 // are only interested in matching line-by-line. |
577 continue; | 587 continue; |
578 } else if (AutofillType(type).group() == PHONE_HOME) { | 588 } else if (AutofillType(type).group() == PHONE_HOME) { |
579 // Phone numbers should be canonicalized prior to being compared. | 589 // Phone numbers should be canonicalized prior to being compared. |
580 if (type != PHONE_HOME_WHOLE_NUMBER) { | 590 if (type != PHONE_HOME_WHOLE_NUMBER) { |
581 continue; | 591 continue; |
582 } else if (!i18n::PhoneNumbersMatch( | 592 } else if (!i18n::PhoneNumbersMatch( |
583 GetRawInfo(type), profile.GetRawInfo(type), | 593 value, profile.GetRawInfo(type), |
584 base::UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY)), | 594 base::UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY)), |
585 app_locale)) { | 595 app_locale)) { |
586 return false; | 596 return false; |
587 } | 597 } |
588 } else if (base::StringToLowerASCII(GetRawInfo(type)) != | 598 } else if (base::StringToLowerASCII(value) != |
589 base::StringToLowerASCII(profile.GetRawInfo(type))) { | 599 base::StringToLowerASCII(profile.GetRawInfo(type))) { |
590 return false; | 600 return false; |
591 } | 601 } |
592 } | 602 } |
593 | 603 |
594 return true; | 604 return true; |
595 } | 605 } |
596 | 606 |
597 void AutofillProfile::CopyAndUpdateNameList( | 607 void AutofillProfile::CopyAndUpdateNameList( |
598 const std::vector<base::string16> names, | 608 const std::vector<base::string16> names, |
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1143 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE)) | 1153 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE)) |
1144 << " " | 1154 << " " |
1145 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_COUNTRY)) | 1155 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_COUNTRY)) |
1146 << " " | 1156 << " " |
1147 << profile.language_code() | 1157 << profile.language_code() |
1148 << " " | 1158 << " " |
1149 << UTF16ToUTF8(MultiString(profile, PHONE_HOME_WHOLE_NUMBER)); | 1159 << UTF16ToUTF8(MultiString(profile, PHONE_HOME_WHOLE_NUMBER)); |
1150 } | 1160 } |
1151 | 1161 |
1152 } // namespace autofill | 1162 } // namespace autofill |
OLD | NEW |