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