Chromium Code Reviews| Index: components/autofill/browser/personal_data_manager.cc |
| =================================================================== |
| --- components/autofill/browser/personal_data_manager.cc (revision 192175) |
| +++ components/autofill/browser/personal_data_manager.cc (working copy) |
| @@ -15,7 +15,6 @@ |
| #include "base/utf_string_conversions.h" |
| #include "chrome/common/chrome_notification_types.h" |
| #include "components/autofill/browser/autofill-inl.h" |
| -#include "components/autofill/browser/autofill_country.h" |
| #include "components/autofill/browser/autofill_field.h" |
| #include "components/autofill/browser/autofill_metrics.h" |
| #include "components/autofill/browser/form_group.h" |
| @@ -110,11 +109,12 @@ |
| } // namespace |
| -PersonalDataManager::PersonalDataManager() |
| +PersonalDataManager::PersonalDataManager(const std::string& app_locale) |
| : browser_context_(NULL), |
| is_data_loaded_(false), |
| pending_profiles_query_(0), |
| pending_creditcards_query_(0), |
| + app_locale_(app_locale), |
| metric_logger_(new AutofillMetrics), |
| has_logged_profile_count_(false) {} |
| @@ -218,7 +218,6 @@ |
| // complete at the end. |
| PhoneNumber::PhoneCombineHelper home; |
| - const std::string app_locale = AutofillCountry::ApplicationLocale(); |
| for (size_t i = 0; i < form.field_count(); ++i) { |
| const AutofillField* field = form.field(i); |
| string16 value = CollapseWhitespace(field->value, false); |
| @@ -246,7 +245,7 @@ |
| DCHECK_EQ(CREDIT_CARD_EXP_MONTH, field_type); |
| local_imported_credit_card->SetInfoForMonthInputType(value); |
| } else { |
| - local_imported_credit_card->SetInfo(field_type, value, app_locale); |
| + local_imported_credit_card->SetInfo(field_type, value, app_locale_); |
| } |
| ++importable_credit_card_fields; |
| } else { |
| @@ -255,7 +254,7 @@ |
| // If the fields are not the phone fields in question home.SetInfo() is |
| // going to return false. |
| if (!home.SetInfo(field_type, value)) |
| - imported_profile->SetInfo(field_type, value, app_locale); |
| + imported_profile->SetInfo(field_type, value, app_locale_); |
| // Reject profiles with invalid country information. |
| if (field_type == ADDRESS_HOME_COUNTRY && |
| @@ -269,9 +268,10 @@ |
| // Construct the phone number. Reject the profile if the number is invalid. |
| if (imported_profile.get() && !home.IsEmpty()) { |
| string16 constructed_number; |
| - if (!home.ParseNumber(*imported_profile, app_locale, &constructed_number) || |
| + if (!home.ParseNumber(*imported_profile, app_locale_, |
| + &constructed_number) || |
| !imported_profile->SetInfo(PHONE_HOME_WHOLE_NUMBER, constructed_number, |
| - app_locale)) { |
| + app_locale_)) { |
| imported_profile.reset(); |
| } |
| } |
| @@ -296,7 +296,7 @@ |
| iter != credit_cards_.end(); |
| ++iter) { |
| if ((*iter)->UpdateFromImportedCard(*local_imported_credit_card.get(), |
| - app_locale)) { |
| + app_locale_)) { |
| merged_credit_card = true; |
| UpdateCreditCard(**iter); |
| local_imported_credit_card.reset(); |
| @@ -324,7 +324,7 @@ |
| if (browser_context_->IsOffTheRecord()) |
| return; |
| - if (profile.IsEmpty()) |
| + if (profile.IsEmpty(app_locale_)) |
| return; |
| // Don't add an existing profile. |
| @@ -354,7 +354,7 @@ |
| if (!FindByGUID<AutofillProfile>(web_profiles_, profile.guid())) |
| return; |
| - if (profile.IsEmpty()) { |
| + if (profile.IsEmpty(app_locale_)) { |
| RemoveByGUID(profile.guid()); |
| return; |
| } |
| @@ -386,7 +386,7 @@ |
| if (browser_context_->IsOffTheRecord()) |
| return; |
| - if (credit_card.IsEmpty()) |
| + if (credit_card.IsEmpty(app_locale_)) |
| return; |
| if (FindByGUID<CreditCard>(credit_cards_, credit_card.guid())) |
| @@ -415,7 +415,7 @@ |
| if (!FindByGUID<CreditCard>(credit_cards_, credit_card.guid())) |
| return; |
| - if (credit_card.IsEmpty()) { |
| + if (credit_card.IsEmpty(app_locale_)) { |
| RemoveByGUID(credit_card.guid()); |
| return; |
| } |
| @@ -467,16 +467,15 @@ |
| void PersonalDataManager::GetNonEmptyTypes( |
| FieldTypeSet* non_empty_types) { |
| - const std::string app_locale = AutofillCountry::ApplicationLocale(); |
| const std::vector<AutofillProfile*>& profiles = GetProfiles(); |
| for (std::vector<AutofillProfile*>::const_iterator iter = profiles.begin(); |
| iter != profiles.end(); ++iter) { |
| - (*iter)->GetNonEmptyTypes(app_locale, non_empty_types); |
| + (*iter)->GetNonEmptyTypes(app_locale_, non_empty_types); |
| } |
| for (ScopedVector<CreditCard>::const_iterator iter = credit_cards_.begin(); |
| iter != credit_cards_.end(); ++iter) { |
| - (*iter)->GetNonEmptyTypes(app_locale, non_empty_types); |
| + (*iter)->GetNonEmptyTypes(app_locale_, non_empty_types); |
| } |
| } |
| @@ -529,7 +528,6 @@ |
| guid_pairs->clear(); |
| const std::vector<AutofillProfile*>& profiles = GetProfiles(); |
| - const std::string app_locale = AutofillCountry::ApplicationLocale(); |
| std::vector<AutofillProfile*> matched_profiles; |
| for (std::vector<AutofillProfile*>::const_iterator iter = profiles.begin(); |
| iter != profiles.end(); ++iter) { |
| @@ -537,7 +535,7 @@ |
| // The value of the stored data for this field type in the |profile|. |
| std::vector<string16> multi_values; |
| - profile->GetMultiInfo(type, app_locale, &multi_values); |
| + profile->GetMultiInfo(type, app_locale_, &multi_values); |
| for (size_t i = 0; i < multi_values.size(); ++i) { |
| if (!field_is_autofilled) { |
| @@ -602,13 +600,12 @@ |
| std::vector<string16>* labels, |
| std::vector<string16>* icons, |
| std::vector<GUIDPair>* guid_pairs) { |
| - const std::string app_locale = AutofillCountry::ApplicationLocale(); |
| for (std::vector<CreditCard*>::const_iterator iter = credit_cards().begin(); |
| iter != credit_cards().end(); ++iter) { |
| CreditCard* credit_card = *iter; |
| // The value of the stored data for this field type in the |credit_card|. |
| - string16 creditcard_field_value = credit_card->GetInfo(type, app_locale); |
| + string16 creditcard_field_value = credit_card->GetInfo(type, app_locale_); |
| if (!creditcard_field_value.empty() && |
| StartsWith(creditcard_field_value, field_contents, false)) { |
| if (type == CREDIT_CARD_NUMBER) |
| @@ -617,7 +614,7 @@ |
| string16 label; |
| if (credit_card->number().empty()) { |
| // If there is no CC number, return name to show something. |
| - label = credit_card->GetInfo(CREDIT_CARD_NAME, app_locale); |
| + label = credit_card->GetInfo(CREDIT_CARD_NAME, app_locale_); |
| } else { |
| label = kCreditCardPrefix; |
| label.append(credit_card->LastFourDigits()); |
| @@ -666,6 +663,7 @@ |
| bool PersonalDataManager::MergeProfile( |
| const AutofillProfile& profile, |
| const std::vector<AutofillProfile*>& existing_profiles, |
| + const std::string& app_locale, |
| std::vector<AutofillProfile>* merged_profiles) { |
| merged_profiles->clear(); |
| @@ -682,7 +680,7 @@ |
| StringToLowerASCII((*iter)->PrimaryValue()) == |
| StringToLowerASCII(profile.PrimaryValue())) { |
| merged = true; |
| - (*iter)->OverwriteWithOrAddTo(profile); |
| + (*iter)->OverwriteWithOrAddTo(profile, app_locale); |
| } |
| } |
| merged_profiles->push_back(**iter); |
| @@ -700,10 +698,14 @@ |
| return; |
| // Remove empty profiles from input. |
| - profiles->erase( |
| - std::remove_if(profiles->begin(), profiles->end(), |
| - std::mem_fun_ref(&AutofillProfile::IsEmpty)), |
| - profiles->end()); |
| + for (std::vector<AutofillProfile>::iterator i = profiles->begin(); |
|
Ilya Sherman
2013/04/04 04:27:38
nit: Please use "it" for the iterator name.
jam
2013/04/04 17:58:12
Done.
jam
2013/04/04 17:58:12
Done.
|
| + i != profiles->end();) { |
| + if (i->IsEmpty(app_locale_)) { |
| + profiles->erase(i); |
| + } else { |
| + i++; |
| + } |
|
Ilya Sherman
2013/04/04 04:27:38
nit: No need for curly braces.
jam
2013/04/04 17:58:12
yeah, i prefer having them when there's an else. t
Ilya Sherman
2013/04/04 23:00:40
The style guide might not set a rule for this, but
|
| + } |
| // Ensure that profile labels are up to date. Currently, sync relies on |
| // labels to identify a profile. |
| @@ -760,11 +762,14 @@ |
| return; |
| // Remove empty credit cards from input. |
| - credit_cards->erase( |
| - std::remove_if( |
| - credit_cards->begin(), credit_cards->end(), |
| - std::mem_fun_ref(&CreditCard::IsEmpty)), |
| - credit_cards->end()); |
| + for (std::vector<CreditCard>::iterator i = credit_cards->begin(); |
| + i != credit_cards->end();) { |
|
Ilya Sherman
2013/04/04 04:27:38
nit: Please use "it" for the iterator name.
jam
2013/04/04 17:58:12
Done.
|
| + if (i->IsEmpty(app_locale_)) { |
| + credit_cards->erase(i); |
| + } else { |
| + i++; |
| + } |
|
Ilya Sherman
2013/04/04 04:27:38
nit: No need for curly braces.
|
| + } |
| scoped_refptr<AutofillWebDataService> autofill_data( |
| AutofillWebDataService::FromBrowserContext(browser_context_)); |
| @@ -902,12 +907,12 @@ |
| for (std::vector<AutofillProfile*>::const_iterator iter = |
| auxiliary_profiles_.begin(); |
| iter != auxiliary_profiles_.end(); ++iter) { |
| - if (imported_profile.IsSubsetOf(**iter)) |
| + if (imported_profile.IsSubsetOf(**iter, app_locale_)) |
| return; |
| } |
| std::vector<AutofillProfile> profiles; |
| - MergeProfile(imported_profile, web_profiles_.get(), &profiles); |
| + MergeProfile(imported_profile, web_profiles_.get(), app_locale_, &profiles); |
| SetProfiles(&profiles); |
| } |
| @@ -925,14 +930,13 @@ |
| // Set to true if |imported_card| is merged into the credit card list. |
| bool merged = false; |
| - const std::string app_locale = AutofillCountry::ApplicationLocale(); |
| std::vector<CreditCard> credit_cards; |
| for (std::vector<CreditCard*>::const_iterator card = credit_cards_.begin(); |
| card != credit_cards_.end(); |
| ++card) { |
| // If |imported_card| has not yet been merged, check whether it should be |
| // with the current |card|. |
| - if (!merged && (*card)->UpdateFromImportedCard(imported_card, app_locale)) |
| + if (!merged && (*card)->UpdateFromImportedCard(imported_card, app_locale_)) |
| merged = true; |
| credit_cards.push_back(**card); |