xref: /aosp_15_r20/external/cronet/components/prefs/android/pref_service_android.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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