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 10a71d6a7964a22a831e27001a86c657503156b2..f484be7d1f8dac2c629c4efb2bceb2ed7908db62 100644 |
--- a/components/autofill/core/browser/phone_number_i18n.cc |
+++ b/components/autofill/core/browser/phone_number_i18n.cc |
@@ -65,11 +65,29 @@ void FormatValidatedNumber(const PhoneNumber& number, |
std::string processed_number; |
phone_util->Format(number, format, &processed_number); |
- if (formatted_number) |
- *formatted_number = base::UTF8ToUTF16(processed_number); |
+ std::string region_code; |
+ phone_util->GetRegionCodeForNumber(number, ®ion_code); |
+ |
+ if (formatted_number) { |
+ // Drop the leading '+' for US numbers as some US sites can't handle |
+ // the "+" and in the US dialing "+1..." is the same as dialing "1...". |
+ if (processed_number[0] == '+' && region_code == "US") { |
+ *formatted_number = base::UTF8ToUTF16( |
+ processed_number.substr(1, processed_number.length())); |
Ilya Sherman
2014/07/16 17:50:17
nit: foo.substr(1, foo.length()) is equivalent to
|
+ } else { |
+ *formatted_number = base::UTF8ToUTF16(processed_number); |
+ } |
+ } |
if (normalized_number) { |
- phone_util->NormalizeDigitsOnly(&processed_number); |
+ // Keep the leading '+' while normalising numbers, excluding US numbers. |
Ilya Sherman
2014/07/16 17:50:17
nit: "normalising" -> "normalizing"
|
+ if (processed_number[0] == '+' && region_code != "US") { |
+ processed_number = processed_number.substr(1, processed_number.length()); |
Ilya Sherman
2014/07/16 17:50:17
(here too)
Evan Stade
2014/07/17 00:54:48
why do you have to remove the '+' then re-add it?
ziran.sun
2014/07/17 12:35:36
NormalizeDigitsOnly () will remove the '+' sign. F
Evan Stade
2014/07/17 17:28:50
If NormalizeDigitsOnly () will remove the '+' sign
Ilya Sherman
2014/07/17 18:44:33
Evan, the code is structured differently now. Do
Evan Stade
2014/07/17 18:53:49
nope
|
+ phone_util->NormalizeDigitsOnly(&processed_number); |
+ processed_number.insert(processed_number.begin(), '+'); |
+ } else { |
+ phone_util->NormalizeDigitsOnly(&processed_number); |
+ } |
*normalized_number = base::UTF8ToUTF16(processed_number); |
} |
Ilya Sherman
2014/07/16 17:50:17
It might be cleaner to factor out the code that sp
|
} |