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

Unified Diff: components/autofill/core/browser/autofill_profile.cc

Issue 399003002: Parse full name set in chrome://settings/autofill (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: satisfy msvc? Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: components/autofill/core/browser/autofill_profile.cc
diff --git a/components/autofill/core/browser/autofill_profile.cc b/components/autofill/core/browser/autofill_profile.cc
index 3a0ab1c1451087eb2f83ab374b5eb956d9bdedb2..250b7a17694ca6261956385fac8769028cc7c9b5 100644
--- a/components/autofill/core/browser/autofill_profile.cc
+++ b/components/autofill/core/browser/autofill_profile.cc
@@ -136,17 +136,30 @@ base::string16 GetFormGroupInfo(const FormGroup& form_group,
}
template <class T>
-void CopyValuesToItems(ServerFieldType type,
- const std::vector<base::string16>& values,
- std::vector<T>* form_group_items,
- const T& prototype) {
+void CopyRawValuesToItems(ServerFieldType type,
+ const std::vector<base::string16>& values,
+ const T& prototype,
+ std::vector<T>* form_group_items) {
form_group_items->resize(values.size(), prototype);
for (size_t i = 0; i < form_group_items->size(); ++i) {
(*form_group_items)[i].SetRawInfo(type, values[i]);
}
// Must have at least one (possibly empty) element.
- if (form_group_items->empty())
- form_group_items->resize(1, prototype);
+ form_group_items->resize(std::max<size_t>(1UL, values.size()), prototype);
+}
+
+template <class T>
+void CopyValuesToItems(AutofillType type,
+ const std::vector<base::string16>& values,
+ const T& prototype,
+ const std::string& app_locale,
+ std::vector<T>* form_group_items) {
+ form_group_items->resize(values.size(), prototype);
+ for (size_t i = 0; i < form_group_items->size(); ++i) {
+ (*form_group_items)[i].SetInfo(type, values[i], app_locale);
+ }
+ // Must have at least one (possibly empty) element.
+ form_group_items->resize(std::max<size_t>(1UL, values.size()), prototype);
}
template <class T>
@@ -349,22 +362,22 @@ void AutofillProfile::SetRawMultiInfo(
switch (AutofillType(type).group()) {
case NAME:
case NAME_BILLING:
- CopyValuesToItems(type, values, &name_, NameInfo());
+ CopyRawValuesToItems(type, values, NameInfo(), &name_);
break;
+
case EMAIL:
- CopyValuesToItems(type, values, &email_, EmailInfo());
+ CopyRawValuesToItems(type, values, EmailInfo(), &email_);
break;
+
case PHONE_HOME:
case PHONE_BILLING:
- CopyValuesToItems(type,
- values,
- &phone_number_,
- PhoneNumber(this));
+ CopyRawValuesToItems(type, values, PhoneNumber(this), &phone_number_);
break;
+
default:
- if (values.size() == 1) {
+ if (values.size() == 1U) {
SetRawInfo(type, values[0]);
- } else if (values.size() == 0) {
+ } else if (values.empty()) {
SetRawInfo(type, base::string16());
} else {
// Shouldn't attempt to set multiple values on single-valued field.
@@ -380,6 +393,38 @@ void AutofillProfile::GetRawMultiInfo(
GetMultiInfoImpl(AutofillType(type), std::string(), values);
}
+void AutofillProfile::SetMultiInfo(const AutofillType& type,
+ const std::vector<base::string16>& values,
+ const std::string& app_locale) {
+ switch (AutofillType(type).group()) {
+ case NAME:
+ case NAME_BILLING:
+ CopyValuesToItems(type, values, NameInfo(), app_locale, &name_);
+ break;
+
+ case EMAIL:
+ CopyValuesToItems(type, values, EmailInfo(), app_locale, &email_);
+ break;
+
+ case PHONE_HOME:
+ case PHONE_BILLING:
+ CopyValuesToItems(
+ type, values, PhoneNumber(this), app_locale, &phone_number_);
+ break;
+
+ default:
+ if (values.size() == 1U) {
+ SetInfo(type, values[0], app_locale);
+ } else if (values.empty()) {
+ SetInfo(type, base::string16(), app_locale);
+ } else {
+ // Shouldn't attempt to set multiple values on single-valued field.
+ NOTREACHED();
+ }
+ break;
+ }
+}
+
void AutofillProfile::GetMultiInfo(const AutofillType& type,
const std::string& app_locale,
std::vector<base::string16>* values) const {
« no previous file with comments | « components/autofill/core/browser/autofill_profile.h ('k') | components/autofill/core/browser/autofill_profile_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698