• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "components/prefs/android/pref_service_android.h"
6 
7 #include <string>
8 
9 #include "components/prefs/android/jni_headers/PrefService_jni.h"
10 #include "components/prefs/pref_service.h"
11 
12 using base::android::JavaParamRef;
13 using base::android::ScopedJavaLocalRef;
14 
PrefServiceAndroid(PrefService * pref_service)15 PrefServiceAndroid::PrefServiceAndroid(PrefService* pref_service)
16     : pref_service_(pref_service) {}
17 
~PrefServiceAndroid()18 PrefServiceAndroid::~PrefServiceAndroid() {
19   if (java_ref_) {
20     Java_PrefService_clearNativePtr(base::android::AttachCurrentThread(),
21                                     java_ref_);
22     java_ref_.Reset();
23   }
24 }
25 
GetJavaObject()26 ScopedJavaLocalRef<jobject> PrefServiceAndroid::GetJavaObject() {
27   JNIEnv* env = base::android::AttachCurrentThread();
28   if (!java_ref_) {
29     java_ref_.Reset(
30         Java_PrefService_create(env, reinterpret_cast<intptr_t>(this)));
31   }
32   return ScopedJavaLocalRef<jobject>(java_ref_);
33 }
34 
ClearPref(JNIEnv * env,const JavaParamRef<jstring> & j_preference)35 void PrefServiceAndroid::ClearPref(JNIEnv* env,
36                                    const JavaParamRef<jstring>& j_preference) {
37   pref_service_->ClearPref(
38       base::android::ConvertJavaStringToUTF8(env, j_preference));
39 }
40 
HasPrefPath(JNIEnv * env,const base::android::JavaParamRef<jstring> & j_preference)41 jboolean PrefServiceAndroid::HasPrefPath(
42     JNIEnv* env,
43     const base::android::JavaParamRef<jstring>& j_preference) {
44   return pref_service_->HasPrefPath(
45       base::android::ConvertJavaStringToUTF8(env, j_preference));
46 }
47 
GetBoolean(JNIEnv * env,const JavaParamRef<jstring> & j_preference)48 jboolean PrefServiceAndroid::GetBoolean(
49     JNIEnv* env,
50     const JavaParamRef<jstring>& j_preference) {
51   return pref_service_->GetBoolean(
52       base::android::ConvertJavaStringToUTF8(env, j_preference));
53 }
54 
SetBoolean(JNIEnv * env,const JavaParamRef<jstring> & j_preference,const jboolean j_value)55 void PrefServiceAndroid::SetBoolean(JNIEnv* env,
56                                     const JavaParamRef<jstring>& j_preference,
57                                     const jboolean j_value) {
58   pref_service_->SetBoolean(
59       base::android::ConvertJavaStringToUTF8(env, j_preference), j_value);
60 }
61 
GetInteger(JNIEnv * env,const JavaParamRef<jstring> & j_preference)62 jint PrefServiceAndroid::GetInteger(JNIEnv* env,
63                                     const JavaParamRef<jstring>& j_preference) {
64   return pref_service_->GetInteger(
65       base::android::ConvertJavaStringToUTF8(env, j_preference));
66 }
67 
SetInteger(JNIEnv * env,const JavaParamRef<jstring> & j_preference,const jint j_value)68 void PrefServiceAndroid::SetInteger(JNIEnv* env,
69                                     const JavaParamRef<jstring>& j_preference,
70                                     const jint j_value) {
71   pref_service_->SetInteger(
72       base::android::ConvertJavaStringToUTF8(env, j_preference), j_value);
73 }
74 
GetString(JNIEnv * env,const JavaParamRef<jstring> & j_preference)75 ScopedJavaLocalRef<jstring> PrefServiceAndroid::GetString(
76     JNIEnv* env,
77     const JavaParamRef<jstring>& j_preference) {
78   return base::android::ConvertUTF8ToJavaString(
79       env, pref_service_->GetString(
80                base::android::ConvertJavaStringToUTF8(env, j_preference)));
81 }
82 
SetString(JNIEnv * env,const JavaParamRef<jstring> & j_preference,const base::android::JavaParamRef<jstring> & j_value)83 void PrefServiceAndroid::SetString(
84     JNIEnv* env,
85     const JavaParamRef<jstring>& j_preference,
86     const base::android::JavaParamRef<jstring>& j_value) {
87   pref_service_->SetString(
88       base::android::ConvertJavaStringToUTF8(env, j_preference),
89       base::android::ConvertJavaStringToUTF8(env, j_value));
90 }
91 
IsManagedPreference(JNIEnv * env,const JavaParamRef<jstring> & j_preference)92 jboolean PrefServiceAndroid::IsManagedPreference(
93     JNIEnv* env,
94     const JavaParamRef<jstring>& j_preference) {
95   return pref_service_->IsManagedPreference(
96       base::android::ConvertJavaStringToUTF8(env, j_preference));
97 }
98 
IsDefaultValuePreference(JNIEnv * env,const base::android::JavaParamRef<jstring> & j_preference)99 jboolean PrefServiceAndroid::IsDefaultValuePreference(
100     JNIEnv* env,
101     const base::android::JavaParamRef<jstring>& j_preference) {
102   const PrefService::Preference* pref = pref_service_->FindPreference(
103       base::android::ConvertJavaStringToUTF8(env, j_preference));
104   return pref && pref->IsDefaultValue();
105 }
106