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

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

Issue 1151763013: [Autofill] remove *MultiInfo* functions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 6 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
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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 it != suggested_fields->end(); ++it) { 179 it != suggested_fields->end(); ++it) {
180 if (*it != excluded_field && 180 if (*it != excluded_field &&
181 GetStorableTypeCollapsingGroups(*it) == effective_excluded_type) { 181 GetStorableTypeCollapsingGroups(*it) == effective_excluded_type) {
182 distinguishing_fields->push_back(effective_excluded_type); 182 distinguishing_fields->push_back(effective_excluded_type);
183 break; 183 break;
184 } 184 }
185 } 185 }
186 } 186 }
187 } 187 }
188 188
189 // A helper function for string streaming. Concatenates multi-valued entries
190 // stored for a given |type| into a single string. This string is returned.
191 const base::string16 MultiString(const AutofillProfile& p,
192 ServerFieldType type) {
193 std::vector<base::string16> values;
194 p.GetRawMultiInfo(type, &values);
195 base::string16 accumulate;
196 for (size_t i = 0; i < values.size(); ++i) {
197 if (i > 0)
198 accumulate += ASCIIToUTF16(" ");
199 accumulate += values[i];
200 }
201 return accumulate;
202 }
203
204 base::string16 GetFormGroupInfo(const FormGroup& form_group,
205 const AutofillType& type,
206 const std::string& app_locale) {
207 return app_locale.empty() ?
208 form_group.GetRawInfo(type.GetStorableType()) :
209 form_group.GetInfo(type, app_locale);
210 }
211
212 // Collapse compound field types to their "full" type. I.e. First name 189 // Collapse compound field types to their "full" type. I.e. First name
213 // collapses to full name, area code collapses to full phone, etc. 190 // collapses to full name, area code collapses to full phone, etc.
214 void CollapseCompoundFieldTypes(ServerFieldTypeSet* type_set) { 191 void CollapseCompoundFieldTypes(ServerFieldTypeSet* type_set) {
215 ServerFieldTypeSet collapsed_set; 192 ServerFieldTypeSet collapsed_set;
216 for (ServerFieldTypeSet::iterator it = type_set->begin(); 193 for (ServerFieldTypeSet::iterator it = type_set->begin();
217 it != type_set->end(); ++it) { 194 it != type_set->end(); ++it) {
218 switch (*it) { 195 switch (*it) {
219 case NAME_FIRST: 196 case NAME_FIRST:
220 case NAME_MIDDLE: 197 case NAME_MIDDLE:
221 case NAME_LAST: 198 case NAME_LAST:
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 DCHECK(type == SERVER_PROFILE); 253 DCHECK(type == SERVER_PROFILE);
277 } 254 }
278 255
279 AutofillProfile::AutofillProfile() 256 AutofillProfile::AutofillProfile()
280 : AutofillDataModel(base::GenerateGUID(), std::string()), 257 : AutofillDataModel(base::GenerateGUID(), std::string()),
281 record_type_(LOCAL_PROFILE), 258 record_type_(LOCAL_PROFILE),
282 phone_number_(this) { 259 phone_number_(this) {
283 } 260 }
284 261
285 AutofillProfile::AutofillProfile(const AutofillProfile& profile) 262 AutofillProfile::AutofillProfile(const AutofillProfile& profile)
286 : AutofillDataModel(std::string(), std::string()), 263 : AutofillDataModel(std::string(), std::string()), phone_number_(this) {
287 phone_number_(this) {
288 operator=(profile); 264 operator=(profile);
289 } 265 }
290 266
291 AutofillProfile::~AutofillProfile() { 267 AutofillProfile::~AutofillProfile() {
292 } 268 }
293 269
294 AutofillProfile& AutofillProfile::operator=(const AutofillProfile& profile) { 270 AutofillProfile& AutofillProfile::operator=(const AutofillProfile& profile) {
295 set_use_count(profile.use_count()); 271 set_use_count(profile.use_count());
296 set_use_date(profile.use_date()); 272 set_use_date(profile.use_date());
297 set_modification_date(profile.modification_date()); 273 set_modification_date(profile.modification_date());
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 const std::string& app_locale) { 343 const std::string& app_locale) {
368 FormGroup* form_group = MutableFormGroupForType(type); 344 FormGroup* form_group = MutableFormGroupForType(type);
369 if (!form_group) 345 if (!form_group)
370 return false; 346 return false;
371 347
372 base::string16 trimmed_value; 348 base::string16 trimmed_value;
373 base::TrimWhitespace(value, base::TRIM_ALL, &trimmed_value); 349 base::TrimWhitespace(value, base::TRIM_ALL, &trimmed_value);
374 return form_group->SetInfo(type, trimmed_value, app_locale); 350 return form_group->SetInfo(type, trimmed_value, app_locale);
375 } 351 }
376 352
377 // TODO(estade): remove this function.
378 void AutofillProfile::SetRawMultiInfo(
379 ServerFieldType type,
380 const std::vector<base::string16>& values) {
381 switch (AutofillType(type).group()) {
382 case NAME:
383 case NAME_BILLING:
384 case EMAIL:
385 case PHONE_HOME:
386 case PHONE_BILLING:
387 SetRawInfo(type, values.empty() ? base::string16() : values[0]);
388 break;
389
390 default:
391 if (values.size() == 1U) {
392 SetRawInfo(type, values[0]);
393 } else if (values.empty()) {
394 SetRawInfo(type, base::string16());
395 } else {
396 NOTREACHED();
397 }
398 break;
399 }
400 }
401
402 void AutofillProfile::GetRawMultiInfo(
403 ServerFieldType type,
404 std::vector<base::string16>* values) const {
405 GetMultiInfoImpl(AutofillType(type), std::string(), values);
406 }
407
408 bool AutofillProfile::IsEmpty(const std::string& app_locale) const { 353 bool AutofillProfile::IsEmpty(const std::string& app_locale) const {
409 ServerFieldTypeSet types; 354 ServerFieldTypeSet types;
410 GetNonEmptyTypes(app_locale, &types); 355 GetNonEmptyTypes(app_locale, &types);
411 return types.empty(); 356 return types.empty();
412 } 357 }
413 358
414 bool AutofillProfile::IsPresentButInvalid(ServerFieldType type) const { 359 bool AutofillProfile::IsPresentButInvalid(ServerFieldType type) const {
415 std::string country = UTF16ToUTF8(GetRawInfo(ADDRESS_HOME_COUNTRY)); 360 std::string country = UTF16ToUTF8(GetRawInfo(ADDRESS_HOME_COUNTRY));
416 base::string16 data = GetRawInfo(type); 361 base::string16 data = GetRawInfo(type);
417 if (data.empty()) 362 if (data.empty())
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 // We have more than one profile with the same label, so add 644 // We have more than one profile with the same label, so add
700 // differentiating fields. 645 // differentiating fields.
701 CreateInferredLabelsHelper(profiles, it->second, fields_to_use, 646 CreateInferredLabelsHelper(profiles, it->second, fields_to_use,
702 minimal_fields_shown, app_locale, labels); 647 minimal_fields_shown, app_locale, labels);
703 } 648 }
704 } 649 }
705 } 650 }
706 651
707 void AutofillProfile::GenerateServerProfileIdentifier() { 652 void AutofillProfile::GenerateServerProfileIdentifier() {
708 DCHECK_EQ(SERVER_PROFILE, record_type()); 653 DCHECK_EQ(SERVER_PROFILE, record_type());
709 base::string16 contents = MultiString(*this, NAME_FIRST); 654 base::string16 contents = GetRawInfo(NAME_FIRST);
710 contents.append(MultiString(*this, NAME_MIDDLE)); 655 contents.append(GetRawInfo(NAME_MIDDLE));
711 contents.append(MultiString(*this, NAME_LAST)); 656 contents.append(GetRawInfo(NAME_LAST));
712 contents.append(MultiString(*this, EMAIL_ADDRESS)); 657 contents.append(GetRawInfo(EMAIL_ADDRESS));
713 contents.append(GetRawInfo(COMPANY_NAME)); 658 contents.append(GetRawInfo(COMPANY_NAME));
714 contents.append(GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); 659 contents.append(GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
715 contents.append(GetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY)); 660 contents.append(GetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY));
716 contents.append(GetRawInfo(ADDRESS_HOME_CITY)); 661 contents.append(GetRawInfo(ADDRESS_HOME_CITY));
717 contents.append(GetRawInfo(ADDRESS_HOME_STATE)); 662 contents.append(GetRawInfo(ADDRESS_HOME_STATE));
718 contents.append(GetRawInfo(ADDRESS_HOME_ZIP)); 663 contents.append(GetRawInfo(ADDRESS_HOME_ZIP));
719 contents.append(GetRawInfo(ADDRESS_HOME_SORTING_CODE)); 664 contents.append(GetRawInfo(ADDRESS_HOME_SORTING_CODE));
720 contents.append(GetRawInfo(ADDRESS_HOME_COUNTRY)); 665 contents.append(GetRawInfo(ADDRESS_HOME_COUNTRY));
721 contents.append(MultiString(*this, PHONE_HOME_WHOLE_NUMBER)); 666 contents.append(GetRawInfo(PHONE_HOME_WHOLE_NUMBER));
722 std::string contents_utf8 = UTF16ToUTF8(contents); 667 std::string contents_utf8 = UTF16ToUTF8(contents);
723 contents_utf8.append(language_code()); 668 contents_utf8.append(language_code());
724 server_id_ = base::SHA1HashString(contents_utf8); 669 server_id_ = base::SHA1HashString(contents_utf8);
725 } 670 }
726 671
727 // static 672 // static
728 base::string16 AutofillProfile::CanonicalizeProfileString( 673 base::string16 AutofillProfile::CanonicalizeProfileString(
729 const base::string16& str) { 674 const base::string16& str) {
730 base::string16 ret; 675 base::string16 ret;
731 ret.reserve(str.size()); 676 ret.reserve(str.size());
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 return CanonicalizeProfileString(a) == CanonicalizeProfileString(b); 735 return CanonicalizeProfileString(a) == CanonicalizeProfileString(b);
791 } 736 }
792 737
793 void AutofillProfile::GetSupportedTypes( 738 void AutofillProfile::GetSupportedTypes(
794 ServerFieldTypeSet* supported_types) const { 739 ServerFieldTypeSet* supported_types) const {
795 FormGroupList info = FormGroups(); 740 FormGroupList info = FormGroups();
796 for (FormGroupList::const_iterator it = info.begin(); it != info.end(); ++it) 741 for (FormGroupList::const_iterator it = info.begin(); it != info.end(); ++it)
797 (*it)->GetSupportedTypes(supported_types); 742 (*it)->GetSupportedTypes(supported_types);
798 } 743 }
799 744
800 // TODO(estade): remove this function.
801 void AutofillProfile::GetMultiInfoImpl(
802 const AutofillType& type,
803 const std::string& app_locale,
804 std::vector<base::string16>* values) const {
805 values->resize(1);
806 (*values)[0] = GetFormGroupInfo(*this, type, app_locale);
807 }
808
809 base::string16 AutofillProfile::ConstructInferredLabel( 745 base::string16 AutofillProfile::ConstructInferredLabel(
810 const std::vector<ServerFieldType>& included_fields, 746 const std::vector<ServerFieldType>& included_fields,
811 size_t num_fields_to_use, 747 size_t num_fields_to_use,
812 const std::string& app_locale) const { 748 const std::string& app_locale) const {
813 // TODO(estade): use libaddressinput? 749 // TODO(estade): use libaddressinput?
814 base::string16 separator = 750 base::string16 separator =
815 l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_SUMMARY_SEPARATOR); 751 l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_SUMMARY_SEPARATOR);
816 752
817 AutofillType region_code_type(HTML_TYPE_COUNTRY_CODE, HTML_MODE_NONE); 753 AutofillType region_code_type(HTML_TYPE_COUNTRY_CODE, HTML_MODE_NONE);
818 const base::string16& profile_region_code = 754 const base::string16& profile_region_code =
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 } 941 }
1006 942
1007 bool AutofillProfile::EqualsSansGuid(const AutofillProfile& profile) const { 943 bool AutofillProfile::EqualsSansGuid(const AutofillProfile& profile) const {
1008 return origin() == profile.origin() && 944 return origin() == profile.origin() &&
1009 language_code() == profile.language_code() && 945 language_code() == profile.language_code() &&
1010 Compare(profile) == 0; 946 Compare(profile) == 0;
1011 } 947 }
1012 948
1013 // So we can compare AutofillProfiles with EXPECT_EQ(). 949 // So we can compare AutofillProfiles with EXPECT_EQ().
1014 std::ostream& operator<<(std::ostream& os, const AutofillProfile& profile) { 950 std::ostream& operator<<(std::ostream& os, const AutofillProfile& profile) {
1015 return os 951 return os << profile.guid() << " " << profile.origin() << " "
1016 << profile.guid() 952 << UTF16ToUTF8(profile.GetRawInfo(NAME_FIRST)) << " "
1017 << " " 953 << UTF16ToUTF8(profile.GetRawInfo(NAME_MIDDLE)) << " "
1018 << profile.origin() 954 << UTF16ToUTF8(profile.GetRawInfo(NAME_LAST)) << " "
1019 << " " 955 << UTF16ToUTF8(profile.GetRawInfo(EMAIL_ADDRESS)) << " "
1020 << UTF16ToUTF8(MultiString(profile, NAME_FIRST)) 956 << UTF16ToUTF8(profile.GetRawInfo(COMPANY_NAME)) << " "
1021 << " " 957 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_LINE1)) << " "
1022 << UTF16ToUTF8(MultiString(profile, NAME_MIDDLE)) 958 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_LINE2)) << " "
1023 << " " 959 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY))
1024 << UTF16ToUTF8(MultiString(profile, NAME_LAST)) 960 << " " << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_CITY)) << " "
1025 << " " 961 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_STATE)) << " "
1026 << UTF16ToUTF8(MultiString(profile, EMAIL_ADDRESS)) 962 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_ZIP)) << " "
1027 << " " 963 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE)) << " "
1028 << UTF16ToUTF8(profile.GetRawInfo(COMPANY_NAME)) 964 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_COUNTRY)) << " "
1029 << " " 965 << profile.language_code() << " "
1030 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_LINE1)) 966 << UTF16ToUTF8(profile.GetRawInfo(PHONE_HOME_WHOLE_NUMBER));
1031 << " "
1032 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_LINE2))
1033 << " "
1034 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY))
1035 << " "
1036 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_CITY))
1037 << " "
1038 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_STATE))
1039 << " "
1040 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_ZIP))
1041 << " "
1042 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE))
1043 << " "
1044 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_COUNTRY))
1045 << " "
1046 << profile.language_code()
1047 << " "
1048 << UTF16ToUTF8(MultiString(profile, PHONE_HOME_WHOLE_NUMBER));
1049 } 967 }
1050 968
1051 } // namespace autofill 969 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698