1 // Copyright 2016 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.
5 #include "components/prefs/in_memory_pref_store.h"
11 #include "base/observer_list.h"
12 #include "base/strings/string_piece.h"
13 #include "base/values.h"
15 InMemoryPrefStore::InMemoryPrefStore() {}
17 InMemoryPrefStore::~InMemoryPrefStore() {}
19 bool InMemoryPrefStore::GetValue(base::StringPiece key,
20 const base::Value** value) const {
21 return prefs_.GetValue(key, value);
24 base::Value::Dict InMemoryPrefStore::GetValues() const {
25 return prefs_.AsDict();
28 bool InMemoryPrefStore::GetMutableValue(const std::string& key,
29 base::Value** value) {
30 return prefs_.GetValue(key, value);
33 void InMemoryPrefStore::AddObserver(PrefStore::Observer* observer) {
34 observers_.AddObserver(observer);
37 void InMemoryPrefStore::RemoveObserver(PrefStore::Observer* observer) {
38 observers_.RemoveObserver(observer);
41 bool InMemoryPrefStore::HasObservers() const {
42 return !observers_.empty();
45 bool InMemoryPrefStore::IsInitializationComplete() const {
49 void InMemoryPrefStore::SetValue(const std::string& key,
52 if (prefs_.SetValue(key, std::move(value)))
53 ReportValueChanged(key, flags);
56 void InMemoryPrefStore::SetValueSilently(const std::string& key,
59 prefs_.SetValue(key, std::move(value));
62 void InMemoryPrefStore::RemoveValue(const std::string& key, uint32_t flags) {
63 if (prefs_.RemoveValue(key))
64 ReportValueChanged(key, flags);
67 void InMemoryPrefStore::RemoveValuesByPrefixSilently(
68 const std::string& prefix) {
69 prefs_.ClearWithPrefix(prefix);
72 bool InMemoryPrefStore::ReadOnly() const {
76 PersistentPrefStore::PrefReadError InMemoryPrefStore::GetReadError() const {
77 return PersistentPrefStore::PREF_READ_ERROR_NONE;
80 PersistentPrefStore::PrefReadError InMemoryPrefStore::ReadPrefs() {
81 return PersistentPrefStore::PREF_READ_ERROR_NONE;
84 void InMemoryPrefStore::ReportValueChanged(const std::string& key,
86 for (Observer& observer : observers_)
87 observer.OnPrefValueChanged(key);
90 bool InMemoryPrefStore::IsInMemoryPrefStore() const {