Chromium Code Reviews| 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 |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b7c033afe17c323269a7f9f17af5f1b327fbceca |
| --- /dev/null |
| +++ b/chrome/browser/autofill/android/phone_number_util_android.cc |
| @@ -0,0 +1,76 @@ |
| +// Copyright 2017 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/autofill/android/phone_number_util_android.h" |
| + |
| +#include "base/android/jni_string.h" |
| +#include "base/logging.h" |
| +#include "chrome/browser/browser_process.h" |
| +#include "components/autofill/core/browser/autofill_country.h" |
| +#include "jni/PhoneNumberUtil_jni.h" |
| + |
| +using base::android::ConvertJavaStringToUTF8; |
| +using base::android::ConvertUTF8ToJavaString; |
| +using ::i18n::phonenumbers::PhoneNumber; |
| + |
| +namespace autofill { |
| + |
| +// static |
| +bool PhoneNumberUtilAndroid::Register(JNIEnv* env) { |
| + return RegisterNativesImpl(env); |
| +} |
| + |
| +PhoneNumberUtilAndroid::PhoneNumberUtilAndroid(JNIEnv* env, jobject obj) |
| + : weak_java_obj_(env, obj), |
| + phone_number_util_(PhoneNumberUtil::GetInstance()) {} |
|
Mathieu
2017/03/10 20:42:51
It looks like this is cheap? Perhaps we can make F
gogerald1
2017/03/10 23:17:36
Done.
|
| + |
| +ScopedJavaLocalRef<jstring> PhoneNumberUtilAndroid::Format( |
| + JNIEnv* env, |
| + const JavaParamRef<jobject>& unused_obj, |
| + const JavaParamRef<jstring>& jphone_number) { |
| + const std::string phone_number = ConvertJavaStringToUTF8(env, jphone_number); |
| + |
| + PhoneNumber parsed_number; |
| + std::string default_region_code = |
| + autofill::AutofillCountry::CountryCodeForLocale( |
| + g_browser_process->GetApplicationLocale()); |
| + if (phone_number_util_->Parse(phone_number, default_region_code, |
| + &parsed_number) != |
| + PhoneNumberUtil::NO_PARSING_ERROR) { |
| + return ConvertUTF8ToJavaString(env, phone_number); |
| + } |
| + |
| + std::string formtted_number; |
| + phone_number_util_->Format(parsed_number, |
| + PhoneNumberUtil::PhoneNumberFormat::INTERNATIONAL, |
| + &formtted_number); |
| + |
| + return ConvertUTF8ToJavaString(env, formtted_number); |
| +} |
| + |
| +jboolean PhoneNumberUtilAndroid::IsValidNumber( |
| + JNIEnv* env, |
| + const JavaParamRef<jobject>& unused_obj, |
| + const JavaParamRef<jstring>& jphone_number) { |
| + const std::string phone_number = ConvertJavaStringToUTF8(env, jphone_number); |
| + |
| + PhoneNumber parsed_number; |
| + if (phone_number_util_->Parse(phone_number, |
| + autofill::AutofillCountry::CountryCodeForLocale( |
| + g_browser_process->GetApplicationLocale()), |
| + &parsed_number) != |
| + PhoneNumberUtil::NO_PARSING_ERROR) { |
| + return false; |
| + } |
| + |
| + return phone_number_util_->IsValidNumber(parsed_number); |
| +} |
| + |
| +static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| + PhoneNumberUtilAndroid* phone_number_util_android = |
| + new PhoneNumberUtilAndroid(env, obj); |
| + return reinterpret_cast<intptr_t>(phone_number_util_android); |
| +} |
| + |
| +} // namespace autofill |