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