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. |