- add sources.
[platform/framework/web/crosswalk.git] / src / components / autofill / core / browser / android / auxiliary_profile_loader_android.cc
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