| Index: components/autofill/core/browser/phone_number_i18n.cc
|
| diff --git a/components/autofill/core/browser/phone_number_i18n.cc b/components/autofill/core/browser/phone_number_i18n.cc
|
| index 72b2e1f481849956d8091f5bc9adb460ff4ddc0c..10a71d6a7964a22a831e27001a86c657503156b2 100644
|
| --- a/components/autofill/core/browser/phone_number_i18n.cc
|
| +++ b/components/autofill/core/browser/phone_number_i18n.cc
|
| @@ -100,8 +100,9 @@ bool ParsePhoneNumber(const base::string16& value,
|
|
|
| // The |default_region| should already be sanitized.
|
| DCHECK_EQ(2U, default_region.size());
|
| - if (phone_util->Parse(number_text, default_region, i18n_number) !=
|
| - PhoneNumberUtil::NO_PARSING_ERROR) {
|
| + if (phone_util->ParseAndKeepRawInput(
|
| + number_text, default_region, i18n_number) !=
|
| + PhoneNumberUtil::NO_PARSING_ERROR) {
|
| return false;
|
| }
|
|
|
| @@ -131,21 +132,13 @@ bool ParsePhoneNumber(const base::string16& value,
|
| }
|
| *number = base::UTF8ToUTF16(subscriber_number);
|
| *city_code = base::UTF8ToUTF16(area_code);
|
| - *country_code = base::string16();
|
| -
|
| - phone_util->NormalizeDigitsOnly(&number_text);
|
| - base::string16 normalized_number(base::UTF8ToUTF16(number_text));
|
|
|
| // Check if parsed number has a country code that was not inferred from the
|
| // region.
|
| - if (i18n_number->has_country_code()) {
|
| + if (i18n_number->has_country_code() &&
|
| + i18n_number->country_code_source() != PhoneNumber::FROM_DEFAULT_COUNTRY) {
|
| *country_code = base::UTF8ToUTF16(
|
| base::StringPrintf("%d", i18n_number->country_code()));
|
| - if (normalized_number.length() <= national_significant_number.length() &&
|
| - !StartsWith(normalized_number, *country_code,
|
| - true /* case_sensitive */)) {
|
| - country_code->clear();
|
| - }
|
| }
|
|
|
| // The region might be different from what we started with.
|
|
|