Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / autofill / android / personal_data_manager_android.h
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 #ifndef CHROME_BROWSER_AUTOFILL_ANDROID_PERSONAL_DATA_MANAGER_ANDROID_H_
6 #define CHROME_BROWSER_AUTOFILL_ANDROID_PERSONAL_DATA_MANAGER_ANDROID_H_
7
8 #include "base/android/jni_weak_ref.h"
9 #include "base/android/scoped_java_ref.h"
10 #include "components/autofill/core/browser/personal_data_manager.h"
11 #include "components/autofill/core/browser/personal_data_manager_observer.h"
12
13 namespace autofill {
14
15 // Android wrapper of the PersonalDataManager which provides access from the
16 // Java layer. Note that on Android, there's only a single profile, and
17 // therefore a single instance of this wrapper.
18 class PersonalDataManagerAndroid : public PersonalDataManagerObserver {
19  public:
20   PersonalDataManagerAndroid(JNIEnv* env, jobject obj);
21
22   // Regular Autofill Profiles
23   // -------------------------
24
25   // Returns the number of web and auxiliary profiles.
26   jint GetProfileCount(JNIEnv* unused_env, jobject unused_obj);
27
28   // Returns the profile as indexed by |index| in the PersonalDataManager's
29   // |GetProfiles()| collection.
30   base::android::ScopedJavaLocalRef<jobject> GetProfileByIndex(
31       JNIEnv* env,
32       jobject unused_obj,
33       jint index);
34
35   // Returns the profile with the specified |jguid|, or NULL if there is no
36   // profile with the specified |jguid|. Both web and auxiliary profiles may
37   // be returned.
38   base::android::ScopedJavaLocalRef<jobject> GetProfileByGUID(
39       JNIEnv* env,
40       jobject unused_obj,
41       jstring jguid);
42
43   // Adds or modifies a profile.  If |jguid| is an empty string, we are creating
44   // a new profile.  Else we are updating an existing profile.  Always returns
45   // the GUID for this profile; the GUID it may have just been created.
46   base::android::ScopedJavaLocalRef<jstring> SetProfile(JNIEnv* env,
47                                                         jobject unused_obj,
48                                                         jobject jprofile);
49
50   // Credit Card Profiles
51   // --------------------
52
53   // Returns the number of credit cards.
54   jint GetCreditCardCount(JNIEnv* unused_env, jobject unused_obj);
55
56   // Returns the credit card as indexed by |index| in the PersonalDataManager's
57   // |GetCreditCards()| collection.
58   base::android::ScopedJavaLocalRef<jobject> GetCreditCardByIndex(
59       JNIEnv* env,
60       jobject unused_obj,
61       jint index);
62
63   // Returns the credit card with the specified |jguid|, or NULL if there is
64   // no credit card with the specified |jguid|.
65   base::android::ScopedJavaLocalRef<jobject> GetCreditCardByGUID(
66       JNIEnv* env,
67       jobject unused_obj,
68       jstring jguid);
69
70   // Adds or modifies a credit card.  If |jguid| is an empty string, we are
71   // creating a new profile.  Else we are updating an existing profile.  Always
72   // returns the GUID for this profile; the GUID it may have just been created.
73   base::android::ScopedJavaLocalRef<jstring> SetCreditCard(
74       JNIEnv* env,
75       jobject unused_obj,
76       jobject jcard);
77
78   // Gets the labels for all known profiles. These labels are useful for
79   // distinguishing the profiles from one another.
80   base::android::ScopedJavaLocalRef<jobjectArray> GetProfileLabels(
81       JNIEnv* env,
82       jobject unused_obj);
83
84   // Removes the profile or credit card represented by |jguid|.
85   void RemoveByGUID(JNIEnv* env, jobject unused_obj, jstring jguid);
86
87   // PersonalDataManagerObserver:
88   virtual void OnPersonalDataChanged() OVERRIDE;
89
90   // Registers the JNI bindings for this class.
91   static bool Register(JNIEnv* env);
92
93  private:
94   virtual ~PersonalDataManagerAndroid();
95
96   // Pointer to the java counterpart.
97   JavaObjectWeakGlobalRef weak_java_obj_;
98
99   // Pointer to the PersonalDataManager for the main profile.
100   PersonalDataManager* personal_data_manager_;
101
102   DISALLOW_COPY_AND_ASSIGN(PersonalDataManagerAndroid);
103 };
104
105 }  // namespace autofill
106
107 #endif  // CHROME_BROWSER_AUTOFILL_ANDROID_PERSONAL_DATA_MANAGER_ANDROID_H_