Chromium Code Reviews| Index: components/autofill/core/browser/webdata/autofill_table.cc |
| diff --git a/components/autofill/core/browser/webdata/autofill_table.cc b/components/autofill/core/browser/webdata/autofill_table.cc |
| index b9468bb2a51ddec27b3c3692b6f593ea57909492..c337f60223f165cecc20a75e0ae7808ddaf7f800 100644 |
| --- a/components/autofill/core/browser/webdata/autofill_table.cc |
| +++ b/components/autofill/core/browser/webdata/autofill_table.cc |
| @@ -191,90 +191,68 @@ scoped_ptr<CreditCard> CreditCardFromStatement(const sql::Statement& s) { |
| bool AddAutofillProfileNamesToProfile(sql::Connection* db, |
| AutofillProfile* profile) { |
| + // TODO(estade): update schema so that multiple names are not associated per |
| + // unique profile guid. Please refer https://crbug.com/497934. |
| sql::Statement s(db->GetUniqueStatement( |
| "SELECT guid, first_name, middle_name, last_name, full_name " |
| "FROM autofill_profile_names " |
| - "WHERE guid=?")); |
| + "WHERE guid=?" |
| + "LIMIT 1")); |
|
Scott Hess - ex-Googler
2015/08/12 21:31:29
Note that if you have multiple items with the same
|
| s.BindString(0, profile->guid()); |
| if (!s.is_valid()) |
| return false; |
| - std::vector<base::string16> first_names; |
| - std::vector<base::string16> middle_names; |
| - std::vector<base::string16> last_names; |
| - std::vector<base::string16> full_names; |
| - while (s.Step()) { |
| + if (s.Step()) { |
| DCHECK_EQ(profile->guid(), s.ColumnString(0)); |
| - first_names.push_back(s.ColumnString16(1)); |
| - middle_names.push_back(s.ColumnString16(2)); |
| - last_names.push_back(s.ColumnString16(3)); |
| - full_names.push_back(s.ColumnString16(4)); |
| + profile->SetRawInfo(NAME_FIRST, s.ColumnString16(1)); |
| + profile->SetRawInfo(NAME_MIDDLE, s.ColumnString16(2)); |
| + profile->SetRawInfo(NAME_LAST, s.ColumnString16(3)); |
| + profile->SetRawInfo(NAME_FULL, s.ColumnString16(4)); |
| } |
| - if (!s.Succeeded()) |
| - return false; |
| - |
| - // TODO(estade): update schema so these aren't vectors. |
| - first_names.resize(1); |
| - middle_names.resize(1); |
| - last_names.resize(1); |
| - full_names.resize(1); |
| - |
| - profile->SetRawInfo(NAME_FIRST, first_names[0]); |
| - profile->SetRawInfo(NAME_MIDDLE, middle_names[0]); |
| - profile->SetRawInfo(NAME_LAST, last_names[0]); |
| - profile->SetRawInfo(NAME_FULL, full_names[0]); |
| - return true; |
| + return s.Succeeded(); |
| } |
| bool AddAutofillProfileEmailsToProfile(sql::Connection* db, |
| AutofillProfile* profile) { |
| + // TODO(estade): update schema so that multiple emails are not associated per |
| + // unique profile guid. Please refer https://crbug.com/497934. |
| sql::Statement s(db->GetUniqueStatement( |
| "SELECT guid, email " |
| "FROM autofill_profile_emails " |
| - "WHERE guid=?")); |
| + "WHERE guid=?" |
| + "LIMIT 1")); |
| s.BindString(0, profile->guid()); |
| if (!s.is_valid()) |
| return false; |
| - std::vector<base::string16> emails; |
| - while (s.Step()) { |
| + if (s.Step()) { |
| DCHECK_EQ(profile->guid(), s.ColumnString(0)); |
| - emails.push_back(s.ColumnString16(1)); |
| + profile->SetRawInfo(EMAIL_ADDRESS, s.ColumnString16(1)); |
| } |
| - if (!s.Succeeded()) |
| - return false; |
| - |
| - // TODO(estade): update schema so this is not a vector. |
| - emails.resize(1); |
| - profile->SetRawInfo(EMAIL_ADDRESS, emails[0]); |
| - return true; |
| + return s.Succeeded(); |
| } |
| bool AddAutofillProfilePhonesToProfile(sql::Connection* db, |
| AutofillProfile* profile) { |
| + // TODO(estade): update schema so that multiple phone numbers are not |
| + // associated per unique profile guid. Please refer https://crbug.com/497934. |
| sql::Statement s(db->GetUniqueStatement( |
| "SELECT guid, number " |
| "FROM autofill_profile_phones " |
| - "WHERE guid=?")); |
| + "WHERE guid=?" |
| + "LIMIT 1")); |
| s.BindString(0, profile->guid()); |
| if (!s.is_valid()) |
| return false; |
| - std::vector<base::string16> numbers; |
| - while (s.Step()) { |
| + if (s.Step()) { |
| DCHECK_EQ(profile->guid(), s.ColumnString(0)); |
| - numbers.push_back(s.ColumnString16(1)); |
| + profile->SetRawInfo(PHONE_HOME_WHOLE_NUMBER, s.ColumnString16(1)); |
| } |
| - if (!s.Succeeded()) |
| - return false; |
| - |
| - // TODO(estade): update schema so this isn't a vector. |
| - numbers.resize(1); |
| - profile->SetRawInfo(PHONE_HOME_WHOLE_NUMBER, numbers[0]); |
| - return true; |
| + return s.Succeeded(); |
| } |
| bool AddAutofillProfileNames(const AutofillProfile& profile, |