Index: chrome/browser/autofill/android/phone_number_util_android.cc |
diff --git a/chrome/browser/autofill/android/phone_number_util_android.cc b/chrome/browser/autofill/android/phone_number_util_android.cc |
index 6aff62a456b6b6eaf8f3d93cb57a335ebb696e08..7f7ed9c7ee713757de05dae04219083d06278acf 100644 |
--- a/chrome/browser/autofill/android/phone_number_util_android.cc |
+++ b/chrome/browser/autofill/android/phone_number_util_android.cc |
@@ -21,18 +21,15 @@ using ::base::android::ScopedJavaLocalRef; |
using ::i18n::phonenumbers::PhoneNumber; |
using ::i18n::phonenumbers::PhoneNumberUtil; |
-// Formats the |phone_number| to the specified |format|. Returns the original |
-// number if the operation is not possible. |
-std::string FormatPhoneNumber(const std::string& phone_number, |
- PhoneNumberUtil::PhoneNumberFormat format) { |
- const std::string default_region_code = |
- autofill::AutofillCountry::CountryCodeForLocale( |
- g_browser_process->GetApplicationLocale()); |
- |
+// Formats the |phone_number| to the specified |format| based on a given |
+// country code. Returns the original number if the operation is not possible. |
+std::string FormatPhoneNumberWithCountryCode( |
+ const std::string& phone_number, |
+ const std::string& countryCode, |
+ PhoneNumberUtil::PhoneNumberFormat format) { |
PhoneNumber parsed_number; |
PhoneNumberUtil* phone_number_util = PhoneNumberUtil::GetInstance(); |
- if (phone_number_util->Parse(phone_number, default_region_code, |
- &parsed_number) != |
+ if (phone_number_util->Parse(phone_number, countryCode, &parsed_number) != |
PhoneNumberUtil::NO_PARSING_ERROR) { |
return phone_number; |
} |
@@ -42,11 +39,53 @@ std::string FormatPhoneNumber(const std::string& phone_number, |
return formatted_number; |
} |
+// Formats the |phone_number| to the specified |format|. Use application locale |
+// to determine country code. Returns the original number if the operation is |
+// not possible. |
+std::string FormatPhoneNumber(const std::string& phone_number, |
+ PhoneNumberUtil::PhoneNumberFormat format) { |
+ return FormatPhoneNumberWithCountryCode( |
+ phone_number, |
+ autofill::AutofillCountry::CountryCodeForLocale( |
+ g_browser_process->GetApplicationLocale()), |
+ format); |
+} |
+ |
+// Checks whether the given number |jphone_number| is valid by using |
+// i18n::phonenumbers::PhoneNumberUtil::IsValidNumber. |
+bool IsValidNumberImpl(const std::string& phone_number, |
+ const std::string& country_code) { |
+ PhoneNumber parsed_number; |
+ PhoneNumberUtil* phone_number_util = PhoneNumberUtil::GetInstance(); |
+ if (phone_number_util->Parse(phone_number, country_code, &parsed_number) != |
+ PhoneNumberUtil::NO_PARSING_ERROR) { |
+ return false; |
+ } |
+ |
+ return phone_number_util->IsValidNumber(parsed_number); |
+} |
+ |
} // namespace |
-// Formats the given number |jphone_number| to |
+// Formats the given number |jphone_number| for a given country to |
// i18n::phonenumbers::PhoneNumberUtil::PhoneNumberFormat::INTERNATIONAL format |
// by using i18n::phonenumbers::PhoneNumberUtil::Format. |
+ScopedJavaLocalRef<jstring> FormatForDisplayWithCountryCode( |
+ JNIEnv* env, |
+ const base::android::JavaParamRef<jclass>& jcaller, |
+ const JavaParamRef<jstring>& jphone_number, |
+ const JavaParamRef<jstring>& jcountry_code) { |
+ return ConvertUTF8ToJavaString( |
+ env, FormatPhoneNumberWithCountryCode( |
+ ConvertJavaStringToUTF8(env, jphone_number), |
+ ConvertJavaStringToUTF8(env, jcountry_code), |
+ PhoneNumberUtil::PhoneNumberFormat::INTERNATIONAL)); |
+} |
+ |
+// Formats the given number |jphone_number| |
gogerald1
2017/06/08 16:20:43
* to *
wuandy1
2017/06/08 20:34:58
Done.
|
+// i18n::phonenumbers::PhoneNumberUtil::PhoneNumberFormat::INTERNATIONAL format |
+// by using i18n::phonenumbers::PhoneNumberUtil::Format. It uses application |
+// locale's country code. |
ScopedJavaLocalRef<jstring> FormatForDisplay( |
JNIEnv* env, |
const base::android::JavaParamRef<jclass>& jcaller, |
@@ -72,7 +111,8 @@ ScopedJavaLocalRef<jstring> FormatForResponse( |
} |
// Checks whether the given number |jphone_number| is valid by using |
-// i18n::phonenumbers::PhoneNumberUtil::IsValidNumber. |
+// i18n::phonenumbers::PhoneNumberUtil::IsValidNumber. It uses application's |
+// locale's country code. |
jboolean IsValidNumber(JNIEnv* env, |
const base::android::JavaParamRef<jclass>& jcaller, |
const JavaParamRef<jstring>& jphone_number) { |
@@ -81,15 +121,20 @@ jboolean IsValidNumber(JNIEnv* env, |
autofill::AutofillCountry::CountryCodeForLocale( |
g_browser_process->GetApplicationLocale()); |
- PhoneNumber parsed_number; |
- PhoneNumberUtil* phone_number_util = PhoneNumberUtil::GetInstance(); |
- if (phone_number_util->Parse(phone_number, default_region_code, |
- &parsed_number) != |
- PhoneNumberUtil::NO_PARSING_ERROR) { |
- return false; |
- } |
+ return IsValidNumberImpl(phone_number, default_region_code); |
+} |
- return phone_number_util->IsValidNumber(parsed_number); |
+// Checks whether the given number |jphone_number| is valid for a given country |
+// by using i18n::phonenumbers::PhoneNumberUtil::IsValidNumber. |
+jboolean IsValidNumberWithCountryCode( |
+ JNIEnv* env, |
+ const base::android::JavaParamRef<jclass>& jcaller, |
+ const JavaParamRef<jstring>& jphone_number, |
+ const JavaParamRef<jstring>& jcountry_code) { |
+ const std::string phone_number = ConvertJavaStringToUTF8(env, jphone_number); |
+ const std::string country_code = ConvertJavaStringToUTF8(env, jcountry_code); |
+ |
+ return IsValidNumberImpl(phone_number, country_code); |
} |
} // namespace autofill |