Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(528)

Unified Diff: components/autofill/core/browser/phone_number_i18n.cc

Issue 355823007: Adjust autofill phone number format. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use "git cl format". Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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, &region_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
}

Powered by Google App Engine
This is Rietveld 408576698