• 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 #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