1 // Copyright 2020 The Chromium Authors 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 COMPONENTS_PREFS_ANDROID_PREF_SERVICE_ANDROID_H_ 6 #define COMPONENTS_PREFS_ANDROID_PREF_SERVICE_ANDROID_H_ 7 8 #include <jni.h> 9 10 #include "base/android/jni_string.h" 11 #include "base/android/scoped_java_ref.h" 12 #include "base/memory/raw_ptr.h" 13 #include "components/prefs/prefs_export.h" 14 15 class PrefService; 16 17 // The native side of the PrefServiceAndroid is created and destroyed by the 18 // Java. 19 class COMPONENTS_PREFS_EXPORT PrefServiceAndroid { 20 public: 21 explicit PrefServiceAndroid(PrefService* pref_service); 22 PrefServiceAndroid(const PrefServiceAndroid& other) = delete; 23 PrefServiceAndroid& operator=(const PrefServiceAndroid& other) = delete; 24 ~PrefServiceAndroid(); 25 26 // Returns the native counterpart of a Java `PrefService`. 27 static PrefService* FromPrefServiceAndroid( 28 const base::android::JavaRef<jobject>& obj); 29 30 base::android::ScopedJavaLocalRef<jobject> GetJavaObject(); 31 32 void ClearPref(JNIEnv* env, 33 const base::android::JavaParamRef<jstring>& j_preference); 34 jboolean HasPrefPath( 35 JNIEnv* env, 36 const base::android::JavaParamRef<jstring>& j_preference); 37 jboolean GetBoolean(JNIEnv* env, 38 const base::android::JavaParamRef<jstring>& j_preference); 39 void SetBoolean(JNIEnv* env, 40 const base::android::JavaParamRef<jstring>& j_preference, 41 const jboolean j_value); 42 jint GetInteger(JNIEnv* env, 43 const base::android::JavaParamRef<jstring>& j_preference); 44 void SetInteger(JNIEnv* env, 45 const base::android::JavaParamRef<jstring>& j_preference, 46 const jint j_value); 47 jdouble GetDouble(JNIEnv* env, 48 const base::android::JavaParamRef<jstring>& j_preference); 49 void SetDouble(JNIEnv* env, 50 const base::android::JavaParamRef<jstring>& j_preference, 51 const jdouble j_value); 52 base::android::ScopedJavaLocalRef<jstring> GetString( 53 JNIEnv* env, 54 const base::android::JavaParamRef<jstring>& j_preference); 55 void SetString(JNIEnv* env, 56 const base::android::JavaParamRef<jstring>& j_preference, 57 const base::android::JavaParamRef<jstring>& j_value); 58 jboolean IsManagedPreference( 59 JNIEnv* env, 60 const base::android::JavaParamRef<jstring>& j_preference); 61 jboolean IsDefaultValuePreference( 62 JNIEnv* env, 63 const base::android::JavaParamRef<jstring>& j_preference); 64 65 private: 66 raw_ptr<PrefService> pref_service_; 67 base::android::ScopedJavaGlobalRef<jobject> java_ref_; 68 }; 69 70 #endif // COMPONENTS_PREFS_ANDROID_PREF_SERVICE_ANDROID_H_ 71