xref: /aosp_15_r20/external/cronet/base/android/shared_preferences/shared_preferences_manager.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2023 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 "base/android/shared_preferences/shared_preferences_manager.h"
6 
7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h"
9 #include "base/base_shared_preferences_jni/SharedPreferencesManager_jni.h"
10 #include "base/check.h"
11 
12 namespace base::android {
13 
SharedPreferencesManager(const JavaRef<jobject> & jobj,JNIEnv * env)14 SharedPreferencesManager::SharedPreferencesManager(const JavaRef<jobject>& jobj,
15                                                    JNIEnv* env)
16     : java_obj_(jobj), env_(env) {}
17 
SharedPreferencesManager(const SharedPreferencesManager & other)18 SharedPreferencesManager::SharedPreferencesManager(
19     const SharedPreferencesManager& other)
20     : java_obj_(other.java_obj_), env_(other.env_) {}
21 
~SharedPreferencesManager()22 SharedPreferencesManager::~SharedPreferencesManager() {}
23 
RemoveKey(const std::string & shared_preference_key)24 void SharedPreferencesManager::RemoveKey(
25     const std::string& shared_preference_key) {
26   ScopedJavaLocalRef<jstring> jkey =
27       ConvertUTF8ToJavaString(env_, shared_preference_key);
28   Java_SharedPreferencesManager_removeKey(env_, java_obj_, jkey);
29 }
30 
ContainsKey(const std::string & shared_preference_key)31 bool SharedPreferencesManager::ContainsKey(
32     const std::string& shared_preference_key) {
33   ScopedJavaLocalRef<jstring> jkey =
34       ConvertUTF8ToJavaString(env_, shared_preference_key);
35   return Java_SharedPreferencesManager_contains(env_, java_obj_, jkey);
36 }
37 
ReadBoolean(const std::string & shared_preference_key,bool default_value)38 bool SharedPreferencesManager::ReadBoolean(
39     const std::string& shared_preference_key,
40     bool default_value) {
41   ScopedJavaLocalRef<jstring> jkey =
42       ConvertUTF8ToJavaString(env_, shared_preference_key);
43   return Java_SharedPreferencesManager_readBoolean(env_, java_obj_, jkey,
44                                                    default_value);
45 }
46 
ReadInt(const std::string & shared_preference_key,int default_value)47 int SharedPreferencesManager::ReadInt(const std::string& shared_preference_key,
48                                       int default_value) {
49   ScopedJavaLocalRef<jstring> jkey =
50       ConvertUTF8ToJavaString(env_, shared_preference_key);
51   return Java_SharedPreferencesManager_readInt(env_, java_obj_, jkey,
52                                                default_value);
53 }
54 
ReadString(const std::string & shared_preference_key,const std::string & default_value)55 std::string SharedPreferencesManager::ReadString(
56     const std::string& shared_preference_key,
57     const std::string& default_value) {
58   ScopedJavaLocalRef<jstring> jkey =
59       ConvertUTF8ToJavaString(env_, shared_preference_key);
60   ScopedJavaLocalRef<jstring> jdefault_value =
61       ConvertUTF8ToJavaString(env_, default_value);
62   ScopedJavaLocalRef<jstring> java_result =
63       Java_SharedPreferencesManager_readString(env_, java_obj_, jkey,
64                                                jdefault_value);
65   return ConvertJavaStringToUTF8(java_result);
66 }
67 
WriteString(const std::string & shared_preference_key,const std::string & value)68 void SharedPreferencesManager::WriteString(
69     const std::string& shared_preference_key,
70     const std::string& value) {
71   ScopedJavaLocalRef<jstring> jkey =
72       ConvertUTF8ToJavaString(env_, shared_preference_key);
73   ScopedJavaLocalRef<jstring> jvalue = ConvertUTF8ToJavaString(env_, value);
74   Java_SharedPreferencesManager_writeString(env_, java_obj_, jkey, jvalue);
75 }
76 
77 }  // namespace base::android
78