• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
SafeJavaStringToUTF16(const ScopedJavaLocalRef<jstring> & jstring)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 
SafeJavaStringArrayToStringVector(const ScopedJavaLocalRef<jobjectArray> & jarray,JNIEnv * env,std::vector<base::string16> * string_vector)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 
RegisterAuxiliaryProfileLoader(JNIEnv * env)43 bool RegisterAuxiliaryProfileLoader(JNIEnv* env) {
44   return RegisterNativesImpl(env);
45 }
46 
AuxiliaryProfileLoaderAndroid()47 AuxiliaryProfileLoaderAndroid::AuxiliaryProfileLoaderAndroid() {}
48 
~AuxiliaryProfileLoaderAndroid()49 AuxiliaryProfileLoaderAndroid::~AuxiliaryProfileLoaderAndroid() {}
50 
Init(JNIEnv * env,const jobject & context)51 void AuxiliaryProfileLoaderAndroid::Init(JNIEnv* env, const jobject& context) {
52   env_ = env;
53   populator_ = Java_PersonalAutofillPopulator_create(env_, context);
54 }
55 
GetHasPermissions() const56 bool AuxiliaryProfileLoaderAndroid::GetHasPermissions() const {
57   return (bool)JAVA_METHOD(getHasPermissions);
58 }
59 
60 // Address info
GetStreet() const61 base::string16 AuxiliaryProfileLoaderAndroid::GetStreet() const {
62   return SafeJavaStringToUTF16(JAVA_METHOD(getStreet));
63 }
64 
GetPostOfficeBox() const65 base::string16 AuxiliaryProfileLoaderAndroid::GetPostOfficeBox() const {
66   return SafeJavaStringToUTF16(JAVA_METHOD(getPobox));
67 }
68 
GetNeighborhood() const69 base::string16 AuxiliaryProfileLoaderAndroid::GetNeighborhood() const {
70   return SafeJavaStringToUTF16(JAVA_METHOD(getNeighborhood));
71 }
72 
GetRegion() const73 base::string16 AuxiliaryProfileLoaderAndroid::GetRegion() const {
74   return SafeJavaStringToUTF16(JAVA_METHOD(getRegion));
75 }
76 
GetCity() const77 base::string16 AuxiliaryProfileLoaderAndroid::GetCity() const {
78   return SafeJavaStringToUTF16(JAVA_METHOD(getCity));
79 }
80 
GetPostalCode() const81 base::string16 AuxiliaryProfileLoaderAndroid::GetPostalCode() const {
82   return SafeJavaStringToUTF16(JAVA_METHOD(getPostalCode));
83 }
84 
GetCountry() const85 base::string16 AuxiliaryProfileLoaderAndroid::GetCountry() const {
86   return SafeJavaStringToUTF16(JAVA_METHOD(getCountry));
87 }
88 
89 // Name info
GetFirstName() const90 base::string16 AuxiliaryProfileLoaderAndroid::GetFirstName() const {
91   return SafeJavaStringToUTF16(JAVA_METHOD(getFirstName));
92 }
93 
GetMiddleName() const94 base::string16 AuxiliaryProfileLoaderAndroid::GetMiddleName() const {
95   return SafeJavaStringToUTF16(JAVA_METHOD(getMiddleName));
96 }
97 
GetLastName() const98 base::string16 AuxiliaryProfileLoaderAndroid::GetLastName() const {
99   return SafeJavaStringToUTF16(JAVA_METHOD(getLastName));
100 }
101 
GetSuffix() const102 base::string16 AuxiliaryProfileLoaderAndroid::GetSuffix() const {
103   return SafeJavaStringToUTF16(JAVA_METHOD(getSuffix));
104 }
105 
106 // Email info
GetEmailAddresses(std::vector<base::string16> * email_addresses) const107 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
GetPhoneNumbers(std::vector<base::string16> * phone_numbers) const115 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