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