personal_data_manager_android.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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_helper.h"
9#include "base/android/scoped_java_ref.h"
10#include "components/autofill/browser/personal_data_manager.h"
11#include "components/autofill/browser/personal_data_manager_observer.h"
12
13namespace 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.
18class 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  // Removes the profile or credit card represented by |jguid|.
79  void RemoveByGUID(JNIEnv* env, jobject unused_obj, jstring jguid);
80
81  // PersonalDataManagerObserver:
82  virtual void OnPersonalDataChanged() OVERRIDE;
83
84  // Registers the JNI bindings for this class.
85  static bool Register(JNIEnv* env);
86
87 private:
88  virtual ~PersonalDataManagerAndroid();
89
90  // Pointer to the java counterpart.
91  JavaObjectWeakGlobalRef weak_java_obj_;
92
93  // Pointer to the PersonalDataManager for the main profile.
94  PersonalDataManager* personal_data_manager_;
95
96  DISALLOW_COPY_AND_ASSIGN(PersonalDataManagerAndroid);
97};
98
99}  // namespace autofill
100
101#endif  // CHROME_BROWSER_AUTOFILL_ANDROID_PERSONAL_DATA_MANAGER_ANDROID_H_
102