Home | History | Annotate | Download | only in android
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "components/autofill/core/browser/android/auxiliary_profile_loader_android.h"
      6 
      7 #include <vector>
      8 
      9 #include "base/android/jni_android.h"
     10 #include "base/android/jni_array.h"
     11 #include "base/android/jni_string.h"
     12 #include "jni/PersonalAutofillPopulator_jni.h"
     13 
     14 #define JAVA_METHOD(__jmethod__) Java_PersonalAutofillPopulator_##__jmethod__( \
     15     env_, \
     16     populator_.obj())
     17 
     18 namespace {
     19 
     20 base::string16 SafeJavaStringToUTF16(
     21     const ScopedJavaLocalRef<jstring>& jstring) {
     22   if (jstring.is_null())
     23     return base::string16();
     24 
     25   return ConvertJavaStringToUTF16(jstring);
     26 }
     27 
     28 void SafeJavaStringArrayToStringVector(
     29     const ScopedJavaLocalRef<jobjectArray>& jarray,
     30     JNIEnv* env,
     31     std::vector<base::string16>* string_vector) {
     32   if (!jarray.is_null()) {
     33     base::android::AppendJavaStringArrayToStringVector(env,
     34                                                        jarray.obj(),
     35                                                        string_vector);
     36   }
     37 }
     38 
     39 } // namespace
     40 
     41 namespace autofill {
     42 
     43 bool RegisterAuxiliaryProfileLoader(JNIEnv* env) {
     44   return RegisterNativesImpl(env);
     45 }
     46 
     47 AuxiliaryProfileLoaderAndroid::AuxiliaryProfileLoaderAndroid() {}
     48 
     49 AuxiliaryProfileLoaderAndroid::~AuxiliaryProfileLoaderAndroid() {}
     50 
     51 void AuxiliaryProfileLoaderAndroid::Init(JNIEnv* env, const jobject& context) {
     52   env_ = env;
     53   populator_ = Java_PersonalAutofillPopulator_create(env_, context);
     54 }
     55 
     56 bool AuxiliaryProfileLoaderAndroid::GetHasPermissions() const {
     57   return (bool)JAVA_METHOD(getHasPermissions);
     58 }
     59 
     60 // Address info
     61 base::string16 AuxiliaryProfileLoaderAndroid::GetStreet() const {
     62   return SafeJavaStringToUTF16(JAVA_METHOD(getStreet));
     63 }
     64 
     65 base::string16 AuxiliaryProfileLoaderAndroid::GetPostOfficeBox() const {
     66   return SafeJavaStringToUTF16(JAVA_METHOD(getPobox));
     67 }
     68 
     69 base::string16 AuxiliaryProfileLoaderAndroid::GetNeighborhood() const {
     70   return SafeJavaStringToUTF16(JAVA_METHOD(getNeighborhood));
     71 }
     72 
     73 base::string16 AuxiliaryProfileLoaderAndroid::GetRegion() const {
     74   return SafeJavaStringToUTF16(JAVA_METHOD(getRegion));
     75 }
     76 
     77 base::string16 AuxiliaryProfileLoaderAndroid::GetCity() const {
     78   return SafeJavaStringToUTF16(JAVA_METHOD(getCity));
     79 }
     80 
     81 base::string16 AuxiliaryProfileLoaderAndroid::GetPostalCode() const {
     82   return SafeJavaStringToUTF16(JAVA_METHOD(getPostalCode));
     83 }
     84 
     85 base::string16 AuxiliaryProfileLoaderAndroid::GetCountry() const {
     86   return SafeJavaStringToUTF16(JAVA_METHOD(getCountry));
     87 }
     88 
     89 // Name info
     90 base::string16 AuxiliaryProfileLoaderAndroid::GetFirstName() const {
     91   return SafeJavaStringToUTF16(JAVA_METHOD(getFirstName));
     92 }
     93 
     94 base::string16 AuxiliaryProfileLoaderAndroid::GetMiddleName() const {
     95   return SafeJavaStringToUTF16(JAVA_METHOD(getMiddleName));
     96 }
     97 
     98 base::string16 AuxiliaryProfileLoaderAndroid::GetLastName() const {
     99   return SafeJavaStringToUTF16(JAVA_METHOD(getLastName));
    100 }
    101 
    102 base::string16 AuxiliaryProfileLoaderAndroid::GetSuffix() const {
    103   return SafeJavaStringToUTF16(JAVA_METHOD(getSuffix));
    104 }
    105 
    106 // Email info
    107 void AuxiliaryProfileLoaderAndroid::GetEmailAddresses(
    108     std::vector<base::string16>* email_addresses) const {
    109   SafeJavaStringArrayToStringVector(JAVA_METHOD(getEmailAddresses),
    110                                     env_,
    111                                     email_addresses);
    112 }
    113 
    114 // Phone info
    115 void AuxiliaryProfileLoaderAndroid::GetPhoneNumbers(
    116     std::vector<base::string16>* phone_numbers) const {
    117   SafeJavaStringArrayToStringVector(JAVA_METHOD(getPhoneNumbers),
    118                                     env_,
    119                                     phone_numbers);
    120 }
    121 
    122 } // namespace
    123