personal_data_manager_android.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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 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 // 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_ 108