Make autofill's Address store country using the country code so that app locale isn't needed for the raw methods.
This is in preparation for removing content::GetContentClient calls outside of content.
BUG=227047
Review URL: https://codereview.chromium.org/13697002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@192588 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/components/autofill/browser/address.cc b/components/autofill/browser/address.cc
index 7e430f8..6dda502 100644
--- a/components/autofill/browser/address.cc
+++ b/components/autofill/browser/address.cc
@@ -9,6 +9,7 @@
#include "base/basictypes.h"
#include "base/logging.h"
#include "base/string_util.h"
+#include "base/utf_string_conversions.h"
#include "components/autofill/browser/autofill_country.h"
#include "components/autofill/browser/autofill_type.h"
#include "components/autofill/browser/field_types.h"
@@ -66,32 +67,50 @@
return zip_code_;
if (type == ADDRESS_HOME_COUNTRY)
- return Country();
+ return country_code_;
return string16();
}
void Address::SetRawInfo(AutofillFieldType type, const string16& value) {
type = AutofillType::GetEquivalentFieldType(type);
- if (type == ADDRESS_HOME_LINE1)
+ if (type == ADDRESS_HOME_LINE1) {
line1_ = value;
- else if (type == ADDRESS_HOME_LINE2)
+ } else if (type == ADDRESS_HOME_LINE2) {
line2_ = value;
- else if (type == ADDRESS_HOME_CITY)
+ } else if (type == ADDRESS_HOME_CITY) {
city_ = value;
- else if (type == ADDRESS_HOME_STATE)
+ } else if (type == ADDRESS_HOME_STATE) {
state_ = value;
- else if (type == ADDRESS_HOME_COUNTRY)
- // TODO(isherman): When setting the country, it should only be possible to
- // call this with a country code, which means we should be able to drop the
- // call to GetCountryCode() below.
- country_code_ =
- AutofillCountry::GetCountryCode(value,
- AutofillCountry::ApplicationLocale());
- else if (type == ADDRESS_HOME_ZIP)
+ } else if (type == ADDRESS_HOME_COUNTRY) {
+ DCHECK(value.empty() || value.length() == 2u);
+ country_code_ = value;
+ } else if (type == ADDRESS_HOME_ZIP) {
zip_code_ = value;
- else
+ } else {
NOTREACHED();
+ }
+}
+
+string16 Address::GetInfo(AutofillFieldType type,
+ const std::string& app_locale) const {
+ if (type == ADDRESS_HOME_COUNTRY && !country_code_.empty())
+ return AutofillCountry(UTF16ToASCII(country_code_), app_locale).name();
+
+ return GetRawInfo(type);
+}
+
+bool Address::SetInfo(AutofillFieldType type,
+ const string16& value,
+ const std::string& app_locale) {
+ if (type == ADDRESS_HOME_COUNTRY && !value.empty()) {
+ country_code_ =
+ ASCIIToUTF16(AutofillCountry::GetCountryCode(value, app_locale));
+ return !country_code_.empty();
+ }
+
+ SetRawInfo(type, value);
+ return true;
}
void Address::GetMatchingTypes(const string16& text,
@@ -101,14 +120,6 @@
// Check to see if the |text| canonicalized as a country name is a match.
std::string country_code = AutofillCountry::GetCountryCode(text, app_locale);
- if (!country_code.empty() && country_code_ == country_code)
+ if (!country_code.empty() && country_code_ == ASCIIToUTF16(country_code))
matching_types->insert(ADDRESS_HOME_COUNTRY);
}
-
-string16 Address::Country() const {
- if (country_code().empty())
- return string16();
-
- std::string app_locale = AutofillCountry::ApplicationLocale();
- return AutofillCountry(country_code(), app_locale).name();
-}
diff --git a/components/autofill/browser/address.h b/components/autofill/browser/address.h
index 5a3127d..40896ab0 100644
--- a/components/autofill/browser/address.h
+++ b/components/autofill/browser/address.h
@@ -26,28 +26,25 @@
virtual string16 GetRawInfo(AutofillFieldType type) const OVERRIDE;
virtual void SetRawInfo(AutofillFieldType type,
const string16& value) OVERRIDE;
+ virtual string16 GetInfo(AutofillFieldType type,
+ const std::string& app_locale) const OVERRIDE;
+ virtual bool SetInfo(AutofillFieldType type,
+ const string16& value,
+ const std::string& app_locale) OVERRIDE;
virtual void GetMatchingTypes(const string16& text,
const std::string& app_locale,
FieldTypeSet* matching_types) const OVERRIDE;
- const std::string& country_code() const { return country_code_; }
- void set_country_code(const std::string& country_code) {
- country_code_ = country_code;
- }
-
private:
// FormGroup:
virtual void GetSupportedTypes(FieldTypeSet* supported_types) const OVERRIDE;
- // Returns the localized country name corresponding to |country_code_|.
- string16 Country() const;
-
// The address.
string16 line1_;
string16 line2_;
string16 city_;
string16 state_;
- std::string country_code_;
+ string16 country_code_;
string16 zip_code_;
};
diff --git a/components/autofill/browser/address_unittest.cc b/components/autofill/browser/address_unittest.cc
index 0925146..d4446ce7f 100644
--- a/components/autofill/browser/address_unittest.cc
+++ b/components/autofill/browser/address_unittest.cc
@@ -27,32 +27,20 @@
DISALLOW_COPY_AND_ASSIGN(AddressTest);
};
-// Test that the getters and setters for country code are working.
-TEST_F(AddressTest, CountryCode) {
- Address address;
- EXPECT_EQ(std::string(), address.country_code());
-
- address.set_country_code("US");
- EXPECT_EQ("US", address.country_code());
-
- address.set_country_code("CA");
- EXPECT_EQ("CA", address.country_code());
-}
-
// Test that country codes are properly decoded as country names.
TEST_F(AddressTest, GetCountry) {
Address address;
- EXPECT_EQ(std::string(), address.country_code());
+ EXPECT_EQ(string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
// Make sure that nothing breaks when the country code is missing.
string16 country = address.GetInfo(ADDRESS_HOME_COUNTRY, "en-US");
EXPECT_EQ(string16(), country);
- address.set_country_code("US");
+ address.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US"), "en-US");
country = address.GetInfo(ADDRESS_HOME_COUNTRY, "en-US");
EXPECT_EQ(ASCIIToUTF16("United States"), country);
- address.set_country_code("CA");
+ address.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA"));
country = address.GetInfo(ADDRESS_HOME_COUNTRY, "en-US");
EXPECT_EQ(ASCIIToUTF16("Canada"), country);
}
@@ -60,43 +48,43 @@
// Test that we properly detect country codes appropriate for each country.
TEST_F(AddressTest, SetCountry) {
Address address;
- EXPECT_EQ(std::string(), address.country_code());
+ EXPECT_EQ(string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
// Test basic conversion.
address.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("United States"), "en-US");
string16 country = address.GetInfo(ADDRESS_HOME_COUNTRY, "en-US");
- EXPECT_EQ("US", address.country_code());
+ EXPECT_EQ(ASCIIToUTF16("US"), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
EXPECT_EQ(ASCIIToUTF16("United States"), country);
// Test basic synonym detection.
address.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("USA"), "en-US");
country = address.GetInfo(ADDRESS_HOME_COUNTRY, "en-US");
- EXPECT_EQ("US", address.country_code());
+ EXPECT_EQ(ASCIIToUTF16("US"), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
EXPECT_EQ(ASCIIToUTF16("United States"), country);
// Test case-insensitivity.
address.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("canADA"), "en-US");
country = address.GetInfo(ADDRESS_HOME_COUNTRY, "en-US");
- EXPECT_EQ("CA", address.country_code());
+ EXPECT_EQ(ASCIIToUTF16("CA"), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
EXPECT_EQ(ASCIIToUTF16("Canada"), country);
// Test country code detection.
address.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("JP"), "en-US");
country = address.GetInfo(ADDRESS_HOME_COUNTRY, "en-US");
- EXPECT_EQ("JP", address.country_code());
+ EXPECT_EQ(ASCIIToUTF16("JP"), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
EXPECT_EQ(ASCIIToUTF16("Japan"), country);
// Test that we ignore unknown countries.
address.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("Unknown"), "en-US");
country = address.GetInfo(ADDRESS_HOME_COUNTRY, "en-US");
- EXPECT_EQ(std::string(), address.country_code());
+ EXPECT_EQ(string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
EXPECT_EQ(string16(), country);
}
// Test that we properly match typed values to stored country data.
TEST_F(AddressTest, IsCountry) {
Address address;
- address.set_country_code("US");
+ address.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US"));
const char* const kValidMatches[] = {
"United States",
@@ -126,8 +114,8 @@
}
// Make sure that garbage values don't match when the country code is empty.
- address.set_country_code("");
- EXPECT_EQ(std::string(), address.country_code());
+ address.SetRawInfo(ADDRESS_HOME_COUNTRY, string16());
+ EXPECT_EQ(string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
FieldTypeSet matching_types;
address.GetMatchingTypes(ASCIIToUTF16("Garbage"), "US", &matching_types);
EXPECT_EQ(0U, matching_types.size());
diff --git a/components/autofill/browser/android/auxiliary_profile_unittest_android.cc b/components/autofill/browser/android/auxiliary_profile_unittest_android.cc
index 2bf26b9e..ca96eb2b 100644
--- a/components/autofill/browser/android/auxiliary_profile_unittest_android.cc
+++ b/components/autofill/browser/android/auxiliary_profile_unittest_android.cc
@@ -16,7 +16,7 @@
AuxiliaryProfileAndroidTest() {}
AutofillProfile* GetAndLoadProfile() {
- autofill::AuxiliaryProfilesAndroid impl(profile_loader_);
+ autofill::AuxiliaryProfilesAndroid impl(profile_loader_, "en-US");
profile_ = impl.LoadContactsProfile();
return profile_.get();
}
diff --git a/components/autofill/browser/android/auxiliary_profiles_android.cc b/components/autofill/browser/android/auxiliary_profiles_android.cc
index 52c5fe3..4ee7682f 100644
--- a/components/autofill/browser/android/auxiliary_profiles_android.cc
+++ b/components/autofill/browser/android/auxiliary_profiles_android.cc
@@ -49,8 +49,10 @@
namespace autofill {
AuxiliaryProfilesAndroid::AuxiliaryProfilesAndroid(
- const AuxiliaryProfileLoaderAndroid& profileLoader)
- : profile_loader_(profileLoader) {}
+ const AuxiliaryProfileLoaderAndroid& profileLoader,
+ const std::string& app_locale)
+ : profile_loader_(profileLoader),
+ app_locale_(app_locale) {}
AuxiliaryProfilesAndroid::~AuxiliaryProfilesAndroid() {
}
@@ -87,7 +89,7 @@
profile->SetRawInfo(ADDRESS_HOME_CITY, city);
profile->SetRawInfo(ADDRESS_HOME_STATE, region);
profile->SetRawInfo(ADDRESS_HOME_ZIP, postal_code);
- profile->SetRawInfo(ADDRESS_HOME_COUNTRY, country);
+ profile->SetInfo(ADDRESS_HOME_COUNTRY, country, app_locale_);
}
void AuxiliaryProfilesAndroid::LoadName(AutofillProfile* profile) {
diff --git a/components/autofill/browser/android/auxiliary_profiles_android.h b/components/autofill/browser/android/auxiliary_profiles_android.h
index ec0ee9c..c624af1 100644
--- a/components/autofill/browser/android/auxiliary_profiles_android.h
+++ b/components/autofill/browser/android/auxiliary_profiles_android.h
@@ -25,8 +25,9 @@
public:
// Takes in an AuxiliaryProfileLoader object which provides contact
// information methods.
- explicit AuxiliaryProfilesAndroid(
- const autofill::AuxiliaryProfileLoaderAndroid& profile_loader);
+ AuxiliaryProfilesAndroid(
+ const autofill::AuxiliaryProfileLoaderAndroid& profile_loader,
+ const std::string& app_locale);
~AuxiliaryProfilesAndroid();
// Returns autofill profile constructed from profile_loader_.
@@ -43,6 +44,7 @@
void LoadPhoneNumbers(AutofillProfile* profile);
const AuxiliaryProfileLoaderAndroid& profile_loader_;
+ std::string app_locale_;
DISALLOW_COPY_AND_ASSIGN(AuxiliaryProfilesAndroid);
};
diff --git a/components/autofill/browser/android/personal_data_manager_android.cc b/components/autofill/browser/android/personal_data_manager_android.cc
index 0d47e5d..8d7a6d1 100644
--- a/components/autofill/browser/android/personal_data_manager_android.cc
+++ b/components/autofill/browser/android/personal_data_manager_android.cc
@@ -8,6 +8,10 @@
#include "components/autofill/browser/android/auxiliary_profiles_android.h"
#include "components/autofill/browser/personal_data_manager.h"
+// TODO(jam) remove once https://codereview.chromium.org/13488009/ lands, since
+// that brings localle to PDM.
+#include "content/public/browser/content_browser_client.h"
+
void PersonalDataManager::LoadAuxiliaryProfiles() {
auxiliary_profiles_.clear();
autofill::AuxiliaryProfileLoaderAndroid profile_loader;
@@ -15,7 +19,11 @@
base::android::AttachCurrentThread(),
base::android::GetApplicationContext());
if (profile_loader.GetHasPermissions()) {
- autofill::AuxiliaryProfilesAndroid impl(profile_loader);
+ autofill::AuxiliaryProfilesAndroid impl(
+ profile_loader,
+ // TODO(jam) remove once https://codereview.chromium.org/13488009/
+ // lands, since that brings localle to PDM.
+ content::GetContentClient()->browser()->GetApplicationLocale());
auxiliary_profiles_.push_back(impl.LoadContactsProfile().release());
}
}
diff --git a/components/autofill/browser/autocheckout_manager.cc b/components/autofill/browser/autocheckout_manager.cc
index 0c8181b..46fcb95 100644
--- a/components/autofill/browser/autocheckout_manager.cc
+++ b/components/autofill/browser/autocheckout_manager.cc
@@ -20,6 +20,9 @@
#include "components/autofill/common/form_data.h"
#include "components/autofill/common/form_field_data.h"
#include "components/autofill/common/web_element_descriptor.h"
+// TODO(jam) remove once https://codereview.chromium.org/13488009/ lands, since
+// that brings localle to AutofillManager.
+#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/ssl_status.h"
@@ -287,6 +290,15 @@
if (AutofillType(type).group() == AutofillType::CREDIT_CARD) {
credit_card_->SetRawInfo(result->field(i)->type(),
result->field(i)->value);
+ } else if (result->field(i)->type() == ADDRESS_HOME_COUNTRY ||
+ result->field(i)->type() == ADDRESS_BILLING_COUNTRY) {
+ profile_->SetInfo(result->field(i)->type(),
+ result->field(i)->value,
+ // TODO(jam) remove once
+ // https://codereview.chromium.org/13488009/
+ // lands, since that brings localle to AutofillManager.
+ content::GetContentClient()->browser()->
+ GetApplicationLocale());
} else {
profile_->SetRawInfo(result->field(i)->type(), result->field(i)->value);
}
diff --git a/components/autofill/browser/autofill_profile.cc b/components/autofill/browser/autofill_profile.cc
index f793fa4..b1a0da0 100644
--- a/components/autofill/browser/autofill_profile.cc
+++ b/components/autofill/browser/autofill_profile.cc
@@ -400,14 +400,6 @@
return label_;
}
-const std::string AutofillProfile::CountryCode() const {
- return address_.country_code();
-}
-
-void AutofillProfile::SetCountryCode(const std::string& country_code) {
- address_.set_country_code(country_code);
-}
-
bool AutofillProfile::IsEmpty() const {
FieldTypeSet types;
GetNonEmptyTypes(AutofillCountry::ApplicationLocale(), &types);
@@ -483,9 +475,10 @@
// Phone numbers should be canonicalized prior to being compared.
if (*iter != PHONE_HOME_WHOLE_NUMBER) {
continue;
- } else if (!autofill_i18n::PhoneNumbersMatch(GetRawInfo(*iter),
- profile.GetRawInfo(*iter),
- CountryCode())) {
+ } else if (!autofill_i18n::PhoneNumbersMatch(
+ GetRawInfo(*iter),
+ profile.GetRawInfo(*iter),
+ UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY)))) {
return false;
}
} else if (StringToLowerASCII(GetRawInfo(*iter)) !=
@@ -622,7 +615,7 @@
bool AutofillProfile::FillCountrySelectControl(FormFieldData* field_data)
const {
- std::string country_code = CountryCode();
+ std::string country_code = UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY));
std::string app_locale = AutofillCountry::ApplicationLocale();
DCHECK_EQ(field_data->option_values.size(),
@@ -666,8 +659,9 @@
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, CountryCode())) ==
+ if (std::find_if(
+ existing_phones->begin(), existing_phones->end(),
+ FindByPhone(phone, UTF16ToASCII(GetRawInfo(ADDRESS_HOME_COUNTRY)))) ==
existing_phones->end()) {
existing_phones->push_back(phone);
}
diff --git a/components/autofill/browser/autofill_profile.h b/components/autofill/browser/autofill_profile.h
index 8dbf63a5..d5a0561 100644
--- a/components/autofill/browser/autofill_profile.h
+++ b/components/autofill/browser/autofill_profile.h
@@ -82,10 +82,6 @@
const std::string guid() const { return guid_; }
void set_guid(const std::string& guid) { guid_ = guid; }
- // Accessors for the stored address's country code.
- const std::string CountryCode() const;
- void SetCountryCode(const std::string& country_code);
-
// Returns true if there are no values (field types) set.
bool IsEmpty() const;
diff --git a/components/autofill/browser/autofill_profile_unittest.cc b/components/autofill/browser/autofill_profile_unittest.cc
index bccb6e6..c93547f 100644
--- a/components/autofill/browser/autofill_profile_unittest.cc
+++ b/components/autofill/browser/autofill_profile_unittest.cc
@@ -589,14 +589,6 @@
EXPECT_LT(0, b.Compare(a));
}
-TEST(AutofillProfileTest, CountryCode) {
- AutofillProfile profile;
- EXPECT_EQ(std::string(), profile.CountryCode());
-
- profile.SetCountryCode("US");
- EXPECT_EQ("US", profile.CountryCode());
-}
-
TEST(AutofillProfileTest, MultiValueNames) {
AutofillProfile p;
const string16 kJohnDoe(ASCIIToUTF16("John Doe"));
@@ -758,7 +750,7 @@
field.option_contents = options;
AutofillProfile profile;
- profile.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("Canada"), "en-US");
+ profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA"));
profile.FillSelectControl(ADDRESS_HOME_COUNTRY, &field);
EXPECT_EQ(ASCIIToUTF16("CA"), field.value);
}
diff --git a/components/autofill/browser/personal_data_manager.cc b/components/autofill/browser/personal_data_manager.cc
index 4c3ff50..fd6456b 100644
--- a/components/autofill/browser/personal_data_manager.cc
+++ b/components/autofill/browser/personal_data_manager.cc
@@ -87,7 +87,8 @@
if (profile.GetRawInfo(ADDRESS_HOME_LINE1).empty())
return false;
std::string app_locale = AutofillCountry::ApplicationLocale();
- std::string country_code = profile.CountryCode();
+ std::string country_code =
+ UTF16ToASCII(profile.GetRawInfo(ADDRESS_HOME_COUNTRY));
if (country_code.empty())
country_code = AutofillCountry::CountryCodeForLocale(app_locale);
@@ -278,7 +279,8 @@
// Reject profiles with invalid country information.
if (field_type == ADDRESS_HOME_COUNTRY &&
- !value.empty() && imported_profile->CountryCode().empty()) {
+ !value.empty() &&
+ imported_profile->GetRawInfo(ADDRESS_HOME_COUNTRY).empty()) {
imported_profile.reset();
break;
}
@@ -667,15 +669,15 @@
// Reject profiles with invalid US state information.
string16 state = profile.GetRawInfo(ADDRESS_HOME_STATE);
- if (profile.CountryCode() == "US" &&
+ if (profile.GetRawInfo(ADDRESS_HOME_COUNTRY) == ASCIIToUTF16("US") &&
!state.empty() && !FormGroup::IsValidState(state)) {
return false;
}
// Reject profiles with invalid US zip information.
string16 zip = profile.GetRawInfo(ADDRESS_HOME_ZIP);
- if (profile.CountryCode() == "US" && !zip.empty() &&
- !autofill::IsValidZip(zip))
+ if (profile.GetRawInfo(ADDRESS_HOME_COUNTRY) == ASCIIToUTF16("US") &&
+ !zip.empty() && !autofill::IsValidZip(zip))
return false;
return true;
diff --git a/components/autofill/browser/phone_number.cc b/components/autofill/browser/phone_number.cc
index 0a785e5..703e63e 100644
--- a/components/autofill/browser/phone_number.cc
+++ b/components/autofill/browser/phone_number.cc
@@ -34,9 +34,9 @@
// code corresponding to the |app_locale|.
std::string GetRegion(const AutofillProfile& profile,
const std::string& app_locale) {
- std::string country_code = profile.CountryCode();
+ string16 country_code = profile.GetRawInfo(ADDRESS_HOME_COUNTRY);
if (!country_code.empty())
- return country_code;
+ return UTF16ToASCII(country_code);
return AutofillCountry::CountryCodeForLocale(app_locale);
}
diff --git a/components/autofill/browser/phone_number_unittest.cc b/components/autofill/browser/phone_number_unittest.cc
index 6772e75..2fabb0b 100644
--- a/components/autofill/browser/phone_number_unittest.cc
+++ b/components/autofill/browser/phone_number_unittest.cc
@@ -12,7 +12,7 @@
TEST(PhoneNumberTest, Matcher) {
AutofillProfile profile;
- profile.SetCountryCode("US");
+ profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US"));
// Set phone number so country_code == 1, city_code = 650, number = 2345678.
string16 phone(ASCIIToUTF16("1 [650] 234-5678"));
PhoneNumber phone_number(&profile);
@@ -83,7 +83,7 @@
// Verify that PhoneNumber::SetInfo() correctly formats the incoming number.
TEST(PhoneNumberTest, SetInfo) {
AutofillProfile profile;
- profile.SetCountryCode("US");
+ profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US"));
PhoneNumber phone(&profile);
EXPECT_EQ(string16(), phone.GetRawInfo(PHONE_HOME_WHOLE_NUMBER));
@@ -116,7 +116,7 @@
// Test that cached phone numbers are correctly invalidated and updated.
TEST(PhoneNumberTest, UpdateCachedPhoneNumber) {
AutofillProfile profile;
- profile.SetCountryCode("US");
+ profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US"));
PhoneNumber phone(&profile);
phone.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, ASCIIToUTF16("6502345678"));
@@ -133,14 +133,14 @@
// Now try parsing using the correct locale. Note that the profile's country
// code should override the app locale, which is still set to "US".
- profile.SetCountryCode("GB");
+ profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("GB"));
phone.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, ASCIIToUTF16("07023456789"));
EXPECT_EQ(ASCIIToUTF16("70"), phone.GetInfo(PHONE_HOME_CITY_CODE, "US"));
}
TEST(PhoneNumberTest, PhoneCombineHelper) {
AutofillProfile profile;
- profile.SetCountryCode("US");
+ profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US"));
PhoneNumber::PhoneCombineHelper number1;
EXPECT_FALSE(number1.SetInfo(ADDRESS_BILLING_CITY,
diff --git a/components/autofill/browser/wallet/wallet_address.cc b/components/autofill/browser/wallet/wallet_address.cc
index 8f7a0b84..9e5f5d4da 100644
--- a/components/autofill/browser/wallet/wallet_address.cc
+++ b/components/autofill/browser/wallet/wallet_address.cc
@@ -82,7 +82,8 @@
Address::Address() {}
Address::Address(const AutofillProfile& profile)
- : country_name_code_(profile.CountryCode()),
+ : country_name_code_(
+ UTF16ToASCII(profile.GetRawInfo(ADDRESS_HOME_COUNTRY))),
recipient_name_(profile.GetRawInfo(NAME_FULL)),
address_line_1_(profile.GetRawInfo(ADDRESS_HOME_LINE1)),
address_line_2_(profile.GetRawInfo(ADDRESS_HOME_LINE2)),
diff --git a/components/webdata/autofill/autofill_table.cc b/components/webdata/autofill/autofill_table.cc
index 8892e82..8218d143 100644
--- a/components/webdata/autofill/autofill_table.cc
+++ b/components/webdata/autofill/autofill_table.cc
@@ -51,7 +51,8 @@
}
void BindAutofillProfileToStatement(const AutofillProfile& profile,
- sql::Statement* s) {
+ sql::Statement* s,
+ const std::string& app_locale) {
DCHECK(base::IsValidGUID(profile.guid()));
s->BindString(0, profile.guid());
@@ -67,14 +68,15 @@
s->BindString16(5, LimitDataSize(text));
text = profile.GetRawInfo(ADDRESS_HOME_ZIP);
s->BindString16(6, LimitDataSize(text));
- text = profile.GetRawInfo(ADDRESS_HOME_COUNTRY);
+ text = profile.GetInfo(ADDRESS_HOME_COUNTRY, app_locale);
s->BindString16(7, LimitDataSize(text));
- std::string country_code = profile.CountryCode();
- s->BindString(8, country_code);
+ text = profile.GetRawInfo(ADDRESS_HOME_COUNTRY);
+ s->BindString16(8, LimitDataSize(text));
s->BindInt64(9, Time::Now().ToTimeT());
}
-AutofillProfile* AutofillProfileFromStatement(const sql::Statement& s) {
+AutofillProfile* AutofillProfileFromStatement(const sql::Statement& s,
+ const std::string& app_locale) {
AutofillProfile* profile = new AutofillProfile;
profile->set_guid(s.ColumnString(0));
DCHECK(base::IsValidGUID(profile->guid()));
@@ -86,7 +88,7 @@
profile->SetRawInfo(ADDRESS_HOME_STATE, s.ColumnString16(5));
profile->SetRawInfo(ADDRESS_HOME_ZIP, s.ColumnString16(6));
// Intentionally skip column 7, which stores the localized country name.
- profile->SetCountryCode(s.ColumnString(8));
+ profile->SetRawInfo(ADDRESS_HOME_COUNTRY, s.ColumnString16(8));
// Intentionally skip column 9, which stores the profile's modification date.
return profile;
@@ -933,7 +935,7 @@
"(guid, company_name, address_line_1, address_line_2, city, state,"
" zipcode, country, country_code, date_modified)"
"VALUES (?,?,?,?,?,?,?,?,?,?)"));
- BindAutofillProfileToStatement(profile, &s);
+ BindAutofillProfileToStatement(profile, &s, app_locale_);
if (!s.Run())
return false;
@@ -955,7 +957,7 @@
if (!s.Step())
return false;
- scoped_ptr<AutofillProfile> p(AutofillProfileFromStatement(s));
+ scoped_ptr<AutofillProfile> p(AutofillProfileFromStatement(s, app_locale_));
// Get associated name info.
AddAutofillProfileNamesToProfile(db_, p.get());
@@ -1048,7 +1050,7 @@
" city=?, state=?, zipcode=?, country=?, country_code=?, "
" date_modified=? "
"WHERE guid=?"));
- BindAutofillProfileToStatement(profile, &s);
+ BindAutofillProfileToStatement(profile, &s, app_locale_);
s.BindString(10, profile.guid());
bool result = s.Run();
@@ -1855,7 +1857,7 @@
profile.SetRawInfo(ADDRESS_HOME_CITY, s.ColumnString16(8));
profile.SetRawInfo(ADDRESS_HOME_STATE, s.ColumnString16(9));
profile.SetRawInfo(ADDRESS_HOME_ZIP, s.ColumnString16(10));
- profile.SetRawInfo(ADDRESS_HOME_COUNTRY, s.ColumnString16(11));
+ profile.SetInfo(ADDRESS_HOME_COUNTRY, s.ColumnString16(11), app_locale_);
profile.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, s.ColumnString16(12));
int64 date_modified = s.ColumnInt64(13);