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

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

Issue 13488009: Remove application locale cache in autofill code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: sync Created 7 years, 8 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/browser/autofill_profile.cc
===================================================================
--- components/autofill/browser/autofill_profile.cc (revision 192613)
+++ components/autofill/browser/autofill_profile.cc (working copy)
@@ -186,22 +186,28 @@
class FindByPhone {
public:
- FindByPhone(const string16& phone, const std::string& country_code)
+ FindByPhone(const string16& phone,
+ const std::string& country_code,
+ const std::string& app_locale)
: phone_(phone),
- country_code_(country_code) {
+ country_code_(country_code),
+ app_locale_(app_locale) {
}
bool operator()(const string16& phone) {
- return autofill_i18n::PhoneNumbersMatch(phone, phone_, country_code_);
+ return autofill_i18n::PhoneNumbersMatch(
+ phone, phone_, country_code_, app_locale_);
}
bool operator()(const string16* phone) {
- return autofill_i18n::PhoneNumbersMatch(*phone, phone_, country_code_);
+ return autofill_i18n::PhoneNumbersMatch(
+ *phone, phone_, country_code_, app_locale_);
}
private:
string16 phone_;
std::string country_code_;
+ std::string app_locale_;
};
// Functor used to check for case-insensitive equality of two strings.
@@ -348,18 +354,19 @@
void AutofillProfile::FillFormField(const AutofillField& field,
size_t variant,
+ const std::string& app_locale,
FormFieldData* field_data) const {
AutofillFieldType type = field.type();
DCHECK_NE(AutofillType::CREDIT_CARD, AutofillType(type).group());
DCHECK(field_data);
if (type == PHONE_HOME_NUMBER) {
- FillPhoneNumberField(field, variant, field_data);
+ FillPhoneNumberField(field, variant, app_locale, field_data);
} else if (field_data->form_control_type == "select-one") {
- FillSelectControl(type, field_data);
+ FillSelectControl(type, app_locale, field_data);
} else {
std::vector<string16> values;
- GetMultiInfo(type, AutofillCountry::ApplicationLocale(), &values);
+ GetMultiInfo(type, app_locale, &values);
if (variant >= values.size()) {
// If the variant is unavailable, bail. This case is reachable, for
// example if Sync updates a profile during the filling process.
@@ -372,9 +379,10 @@
void AutofillProfile::FillPhoneNumberField(const AutofillField& field,
size_t variant,
+ const std::string& app_locale,
FormFieldData* field_data) const {
std::vector<string16> values;
- GetMultiInfo(field.type(), AutofillCountry::ApplicationLocale(), &values);
+ GetMultiInfo(field.type(), app_locale, &values);
DCHECK(variant < values.size());
// If we are filling a phone number, check to see if the size field
@@ -400,9 +408,9 @@
return label_;
}
-bool AutofillProfile::IsEmpty() const {
+bool AutofillProfile::IsEmpty(const std::string& app_locale) const {
FieldTypeSet types;
- GetNonEmptyTypes(AutofillCountry::ApplicationLocale(), &types);
+ GetNonEmptyTypes(app_locale, &types);
return types.empty();
}
@@ -459,9 +467,10 @@
return GetRawInfo(ADDRESS_HOME_LINE1) + GetRawInfo(ADDRESS_HOME_CITY);
}
-bool AutofillProfile::IsSubsetOf(const AutofillProfile& profile) const {
+bool AutofillProfile::IsSubsetOf(const AutofillProfile& profile,
+ const std::string& app_locale) const {
FieldTypeSet types;
- GetNonEmptyTypes(AutofillCountry::ApplicationLocale(), &types);
+ GetNonEmptyTypes(app_locale, &types);
for (FieldTypeSet::const_iterator iter = types.begin(); iter != types.end();
++iter) {
@@ -478,7 +487,8 @@
} else if (!autofill_i18n::PhoneNumbersMatch(
GetRawInfo(*iter),
profile.GetRawInfo(*iter),
- UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY)))) {
+ UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY)),
+ app_locale)) {
return false;
}
} else if (StringToLowerASCII(GetRawInfo(*iter)) !=
@@ -490,9 +500,10 @@
return true;
}
-void AutofillProfile::OverwriteWithOrAddTo(const AutofillProfile& profile) {
+void AutofillProfile::OverwriteWithOrAddTo(const AutofillProfile& profile,
+ const std::string& app_locale) {
FieldTypeSet field_types;
- profile.GetNonEmptyTypes(AutofillCountry::ApplicationLocale(), &field_types);
+ profile.GetNonEmptyTypes(app_locale, &field_types);
// Only transfer "full" types (e.g. full name) and not fragments (e.g.
// first name, last name).
@@ -516,7 +527,7 @@
value_iter != new_values.end(); ++value_iter) {
// Don't add duplicates.
if (group == AutofillType::PHONE) {
- AddPhoneIfUnique(*value_iter, &existing_values);
+ AddPhoneIfUnique(*value_iter, app_locale, &existing_values);
} else {
std::vector<string16>::const_iterator existing_iter = std::find_if(
existing_values.begin(), existing_values.end(),
@@ -613,10 +624,10 @@
(*it)->GetSupportedTypes(supported_types);
}
-bool AutofillProfile::FillCountrySelectControl(FormFieldData* field_data)
- const {
+bool AutofillProfile::FillCountrySelectControl(
+ const std::string& app_locale,
+ FormFieldData* field_data) const {
std::string country_code = UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY));
- std::string app_locale = AutofillCountry::ApplicationLocale();
DCHECK_EQ(field_data->option_values.size(),
field_data->option_contents.size());
@@ -655,13 +666,14 @@
}
void AutofillProfile::AddPhoneIfUnique(const string16& phone,
+ const std::string& app_locale,
std::vector<string16>* existing_phones) {
DCHECK(existing_phones);
// Phones allow "fuzzy" matching, so "1-800-FLOWERS", "18003569377",
// "(800)356-9377" and "356-9377" are considered the same.
- if (std::find_if(
- existing_phones->begin(), existing_phones->end(),
- FindByPhone(phone, UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY)))) ==
+ std::string country_code = UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY));
+ if (std::find_if(existing_phones->begin(), existing_phones->end(),
+ FindByPhone(phone, country_code, app_locale)) ==
existing_phones->end()) {
existing_phones->push_back(phone);
}
« no previous file with comments | « components/autofill/browser/autofill_profile.h ('k') | components/autofill/browser/autofill_profile_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698