| 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..8073d936cc2c0d85fd99f8146979d09f39d5b9bf 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| to
|
| +// 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
|
|
|