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