• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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