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

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

Issue 1162203004: [Autofill] More variant-related code deletion (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 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 } 202 }
203 203
204 base::string16 GetFormGroupInfo(const FormGroup& form_group, 204 base::string16 GetFormGroupInfo(const FormGroup& form_group,
205 const AutofillType& type, 205 const AutofillType& type,
206 const std::string& app_locale) { 206 const std::string& app_locale) {
207 return app_locale.empty() ? 207 return app_locale.empty() ?
208 form_group.GetRawInfo(type.GetStorableType()) : 208 form_group.GetRawInfo(type.GetStorableType()) :
209 form_group.GetInfo(type, app_locale); 209 form_group.GetInfo(type, app_locale);
210 } 210 }
211 211
212 template <class T>
213 void CopyRawValuesToItems(ServerFieldType type,
214 const std::vector<base::string16>& values,
215 const T& prototype,
216 std::vector<T>* form_group_items) {
217 form_group_items->resize(values.size(), prototype);
218 for (size_t i = 0; i < form_group_items->size(); ++i) {
219 (*form_group_items)[i].SetRawInfo(type, values[i]);
220 }
221 // Must have at least one (possibly empty) element.
222 form_group_items->resize(std::max<size_t>(1UL, values.size()), prototype);
223 }
224
225 template <class T>
226 void CopyValuesToItems(AutofillType type,
227 const std::vector<base::string16>& values,
228 const T& prototype,
229 const std::string& app_locale,
230 std::vector<T>* form_group_items) {
231 form_group_items->resize(values.size(), prototype);
232 for (size_t i = 0; i < form_group_items->size(); ++i) {
233 (*form_group_items)[i].SetInfo(type, values[i], app_locale);
234 }
235 // Must have at least one (possibly empty) element.
236 form_group_items->resize(std::max<size_t>(1UL, values.size()), prototype);
237 }
238
239 template <class T>
240 void CopyItemsToValues(const AutofillType& type,
241 const std::vector<T>& form_group_items,
242 const std::string& app_locale,
243 std::vector<base::string16>* values) {
244 values->resize(form_group_items.size());
245 for (size_t i = 0; i < values->size(); ++i) {
246 (*values)[i] = GetFormGroupInfo(form_group_items[i], type, app_locale);
247 }
248 }
249
250 // Collapse compound field types to their "full" type. I.e. First name 212 // Collapse compound field types to their "full" type. I.e. First name
251 // collapses to full name, area code collapses to full phone, etc. 213 // collapses to full name, area code collapses to full phone, etc.
252 void CollapseCompoundFieldTypes(ServerFieldTypeSet* type_set) { 214 void CollapseCompoundFieldTypes(ServerFieldTypeSet* type_set) {
253 ServerFieldTypeSet collapsed_set; 215 ServerFieldTypeSet collapsed_set;
254 for (ServerFieldTypeSet::iterator it = type_set->begin(); 216 for (ServerFieldTypeSet::iterator it = type_set->begin();
255 it != type_set->end(); ++it) { 217 it != type_set->end(); ++it) {
256 switch (*it) { 218 switch (*it) {
257 case NAME_FIRST: 219 case NAME_FIRST:
258 case NAME_MIDDLE: 220 case NAME_MIDDLE:
259 case NAME_LAST: 221 case NAME_LAST:
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 std::string country_code_; 258 std::string country_code_;
297 std::string app_locale_; 259 std::string app_locale_;
298 }; 260 };
299 261
300 } // namespace 262 } // namespace
301 263
302 AutofillProfile::AutofillProfile(const std::string& guid, 264 AutofillProfile::AutofillProfile(const std::string& guid,
303 const std::string& origin) 265 const std::string& origin)
304 : AutofillDataModel(guid, origin), 266 : AutofillDataModel(guid, origin),
305 record_type_(LOCAL_PROFILE), 267 record_type_(LOCAL_PROFILE),
306 email_(1), 268 phone_number_(this) {
307 phone_number_(1, PhoneNumber(this)) {
308 } 269 }
309 270
310 AutofillProfile::AutofillProfile(RecordType type, const std::string& server_id) 271 AutofillProfile::AutofillProfile(RecordType type, const std::string& server_id)
311 : AutofillDataModel(base::GenerateGUID(), std::string()), 272 : AutofillDataModel(base::GenerateGUID(), std::string()),
312 record_type_(type), 273 record_type_(type),
313 email_(1), 274 phone_number_(this),
314 phone_number_(1, PhoneNumber(this)),
315 server_id_(server_id) { 275 server_id_(server_id) {
316 DCHECK(type == SERVER_PROFILE); 276 DCHECK(type == SERVER_PROFILE);
317 } 277 }
318 278
319 AutofillProfile::AutofillProfile() 279 AutofillProfile::AutofillProfile()
320 : AutofillDataModel(base::GenerateGUID(), std::string()), 280 : AutofillDataModel(base::GenerateGUID(), std::string()),
321 record_type_(LOCAL_PROFILE), 281 record_type_(LOCAL_PROFILE),
322 email_(1), 282 phone_number_(this) {
323 phone_number_(1, PhoneNumber(this)) {
324 } 283 }
325 284
326 AutofillProfile::AutofillProfile(const AutofillProfile& profile) 285 AutofillProfile::AutofillProfile(const AutofillProfile& profile)
327 : AutofillDataModel(std::string(), std::string()) { 286 : AutofillDataModel(std::string(), std::string()),
287 phone_number_(this) {
328 operator=(profile); 288 operator=(profile);
329 } 289 }
330 290
331 AutofillProfile::~AutofillProfile() { 291 AutofillProfile::~AutofillProfile() {
332 } 292 }
333 293
334 AutofillProfile& AutofillProfile::operator=(const AutofillProfile& profile) { 294 AutofillProfile& AutofillProfile::operator=(const AutofillProfile& profile) {
335 set_use_count(profile.use_count()); 295 set_use_count(profile.use_count());
336 set_use_date(profile.use_date()); 296 set_use_date(profile.use_date());
337 set_modification_date(profile.modification_date()); 297 set_modification_date(profile.modification_date());
338 298
339 if (this == &profile) 299 if (this == &profile)
340 return *this; 300 return *this;
341 301
342 set_guid(profile.guid()); 302 set_guid(profile.guid());
343 set_origin(profile.origin()); 303 set_origin(profile.origin());
344 304
345 record_type_ = profile.record_type_; 305 record_type_ = profile.record_type_;
346 306
347 name_ = profile.name_; 307 name_ = profile.name_;
348 email_ = profile.email_; 308 email_ = profile.email_;
349 company_ = profile.company_; 309 company_ = profile.company_;
350 phone_number_ = profile.phone_number_; 310 phone_number_ = profile.phone_number_;
351 311 phone_number_.set_profile(this);
352 for (size_t i = 0; i < phone_number_.size(); ++i)
353 phone_number_[i].set_profile(this);
354 312
355 address_ = profile.address_; 313 address_ = profile.address_;
356 set_language_code(profile.language_code()); 314 set_language_code(profile.language_code());
357 315
358 server_id_ = profile.server_id(); 316 server_id_ = profile.server_id();
359 317
360 return *this; 318 return *this;
361 } 319 }
362 320
363 void AutofillProfile::GetMatchingTypes( 321 void AutofillProfile::GetMatchingTypes(
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 return form_group->SetInfo(type, trimmed_value, app_locale); 374 return form_group->SetInfo(type, trimmed_value, app_locale);
417 } 375 }
418 376
419 // TODO(estade): remove this function. 377 // TODO(estade): remove this function.
420 void AutofillProfile::SetRawMultiInfo( 378 void AutofillProfile::SetRawMultiInfo(
421 ServerFieldType type, 379 ServerFieldType type,
422 const std::vector<base::string16>& values) { 380 const std::vector<base::string16>& values) {
423 switch (AutofillType(type).group()) { 381 switch (AutofillType(type).group()) {
424 case NAME: 382 case NAME:
425 case NAME_BILLING: 383 case NAME_BILLING:
384 case EMAIL:
385 case PHONE_HOME:
386 case PHONE_BILLING:
426 SetRawInfo(type, values.empty() ? base::string16() : values[0]); 387 SetRawInfo(type, values.empty() ? base::string16() : values[0]);
427 break; 388 break;
428 389
429 case EMAIL:
430 CopyRawValuesToItems(type, values, EmailInfo(), &email_);
431 break;
432
433 case PHONE_HOME:
434 case PHONE_BILLING:
435 CopyRawValuesToItems(type, values, PhoneNumber(this), &phone_number_);
436 break;
437
438 default: 390 default:
439 if (values.size() == 1U) { 391 if (values.size() == 1U) {
440 SetRawInfo(type, values[0]); 392 SetRawInfo(type, values[0]);
441 } else if (values.empty()) { 393 } else if (values.empty()) {
442 SetRawInfo(type, base::string16()); 394 SetRawInfo(type, base::string16());
443 } else { 395 } else {
444 NOTREACHED(); 396 NOTREACHED();
445 } 397 }
446 break; 398 break;
447 } 399 }
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 return CanonicalizeProfileString(a) == CanonicalizeProfileString(b); 790 return CanonicalizeProfileString(a) == CanonicalizeProfileString(b);
839 } 791 }
840 792
841 void AutofillProfile::GetSupportedTypes( 793 void AutofillProfile::GetSupportedTypes(
842 ServerFieldTypeSet* supported_types) const { 794 ServerFieldTypeSet* supported_types) const {
843 FormGroupList info = FormGroups(); 795 FormGroupList info = FormGroups();
844 for (FormGroupList::const_iterator it = info.begin(); it != info.end(); ++it) 796 for (FormGroupList::const_iterator it = info.begin(); it != info.end(); ++it)
845 (*it)->GetSupportedTypes(supported_types); 797 (*it)->GetSupportedTypes(supported_types);
846 } 798 }
847 799
800 // TODO(estade): remove this function.
848 void AutofillProfile::GetMultiInfoImpl( 801 void AutofillProfile::GetMultiInfoImpl(
849 const AutofillType& type, 802 const AutofillType& type,
850 const std::string& app_locale, 803 const std::string& app_locale,
851 std::vector<base::string16>* values) const { 804 std::vector<base::string16>* values) const {
852 switch (type.group()) { 805 values->resize(1);
853 case EMAIL: 806 (*values)[0] = GetFormGroupInfo(*this, type, app_locale);
854 CopyItemsToValues(type, email_, app_locale, values);
855 break;
856 case PHONE_HOME:
857 case PHONE_BILLING:
858 CopyItemsToValues(type, phone_number_, app_locale, values);
859 break;
860 default:
861 values->resize(1);
862 (*values)[0] = GetFormGroupInfo(*this, type, app_locale);
863 }
864 } 807 }
865 808
866 base::string16 AutofillProfile::ConstructInferredLabel( 809 base::string16 AutofillProfile::ConstructInferredLabel(
867 const std::vector<ServerFieldType>& included_fields, 810 const std::vector<ServerFieldType>& included_fields,
868 size_t num_fields_to_use, 811 size_t num_fields_to_use,
869 const std::string& app_locale) const { 812 const std::string& app_locale) const {
870 // TODO(estade): use libaddressinput? 813 // TODO(estade): use libaddressinput?
871 base::string16 separator = 814 base::string16 separator =
872 l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_SUMMARY_SEPARATOR); 815 l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_SUMMARY_SEPARATOR);
873 816
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 } 953 }
1011 954
1012 (*labels)[*it] = profile->ConstructInferredLabel( 955 (*labels)[*it] = profile->ConstructInferredLabel(
1013 label_fields, label_fields.size(), app_locale); 956 label_fields, label_fields.size(), app_locale);
1014 } 957 }
1015 } 958 }
1016 959
1017 AutofillProfile::FormGroupList AutofillProfile::FormGroups() const { 960 AutofillProfile::FormGroupList AutofillProfile::FormGroups() const {
1018 FormGroupList v(5); 961 FormGroupList v(5);
1019 v[0] = &name_; 962 v[0] = &name_;
1020 v[1] = &email_[0]; 963 v[1] = &email_;
1021 v[2] = &company_; 964 v[2] = &company_;
1022 v[3] = &phone_number_[0]; 965 v[3] = &phone_number_;
1023 v[4] = &address_; 966 v[4] = &address_;
1024 return v; 967 return v;
1025 } 968 }
1026 969
1027 const FormGroup* AutofillProfile::FormGroupForType( 970 const FormGroup* AutofillProfile::FormGroupForType(
1028 const AutofillType& type) const { 971 const AutofillType& type) const {
1029 return const_cast<AutofillProfile*>(this)->MutableFormGroupForType(type); 972 return const_cast<AutofillProfile*>(this)->MutableFormGroupForType(type);
1030 } 973 }
1031 974
1032 FormGroup* AutofillProfile::MutableFormGroupForType(const AutofillType& type) { 975 FormGroup* AutofillProfile::MutableFormGroupForType(const AutofillType& type) {
1033 switch (type.group()) { 976 switch (type.group()) {
1034 case NAME: 977 case NAME:
1035 case NAME_BILLING: 978 case NAME_BILLING:
1036 return &name_; 979 return &name_;
1037 980
1038 case EMAIL: 981 case EMAIL:
1039 return &email_[0]; 982 return &email_;
1040 983
1041 case COMPANY: 984 case COMPANY:
1042 return &company_; 985 return &company_;
1043 986
1044 case PHONE_HOME: 987 case PHONE_HOME:
1045 case PHONE_BILLING: 988 case PHONE_BILLING:
1046 return &phone_number_[0]; 989 return &phone_number_;
1047 990
1048 case ADDRESS_HOME: 991 case ADDRESS_HOME:
1049 case ADDRESS_BILLING: 992 case ADDRESS_BILLING:
1050 return &address_; 993 return &address_;
1051 994
1052 case NO_GROUP: 995 case NO_GROUP:
1053 case CREDIT_CARD: 996 case CREDIT_CARD:
1054 case PASSWORD_FIELD: 997 case PASSWORD_FIELD:
1055 case USERNAME_FIELD: 998 case USERNAME_FIELD:
1056 case TRANSACTION: 999 case TRANSACTION:
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE)) 1042 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE))
1100 << " " 1043 << " "
1101 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_COUNTRY)) 1044 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_COUNTRY))
1102 << " " 1045 << " "
1103 << profile.language_code() 1046 << profile.language_code()
1104 << " " 1047 << " "
1105 << UTF16ToUTF8(MultiString(profile, PHONE_HOME_WHOLE_NUMBER)); 1048 << UTF16ToUTF8(MultiString(profile, PHONE_HOME_WHOLE_NUMBER));
1106 } 1049 }
1107 1050
1108 } // namespace autofill 1051 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698