xref: /aosp_15_r20/external/cronet/base/android/shared_preferences/shared_preferences_manager.h (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 #ifndef BASE_ANDROID_SHARED_PREFERENCES_SHARED_PREFERENCES_MANAGER_H_
6 #define BASE_ANDROID_SHARED_PREFERENCES_SHARED_PREFERENCES_MANAGER_H_
7 
8 #include "base/base_export.h"
9 
10 #include "base/android/jni_android.h"
11 
12 namespace base::android {
13 
14 // A SharedPreferencesManager that provides access to Android SharedPreferences
15 // with uniqueness key checking.
16 class BASE_EXPORT SharedPreferencesManager {
17  public:
18   explicit SharedPreferencesManager(const JavaRef<jobject>& jobj, JNIEnv* env);
19   SharedPreferencesManager(const SharedPreferencesManager&);
20   SharedPreferencesManager& operator=(const SharedPreferencesManager&) = delete;
21   ~SharedPreferencesManager();
22 
23   void RemoveKey(const std::string& shared_preference_key);
24   bool ContainsKey(const std::string& shared_preference_key);
25   bool ReadBoolean(const std::string& shared_preference_key,
26                    bool default_value);
27   int ReadInt(const std::string& shared_preference_key, int default_value);
28   std::string ReadString(const std::string& shared_preference_key,
29                          const std::string& default_value);
30   void WriteString(const std::string& shared_preference_key,
31                    const std::string& value);
32 
33  private:
34   ScopedJavaLocalRef<jobject> java_obj_;
35   raw_ptr<JNIEnv> env_;
36 };
37 
38 }  // namespace base::android
39 
40 #endif  // BASE_ANDROID_SHARED_PREFERENCES_SHARED_PREFERENCES_MANAGER_H_
41