1 // Copyright 2012 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 "components/prefs/value_map_pref_store.h"
6
7 #include <string_view>
8 #include <utility>
9
10 #include "base/observer_list.h"
11 #include "base/values.h"
12
13 ValueMapPrefStore::ValueMapPrefStore() = default;
14
GetValue(std::string_view key,const base::Value ** value) const15 bool ValueMapPrefStore::GetValue(std::string_view key,
16 const base::Value** value) const {
17 return prefs_.GetValue(key, value);
18 }
19
GetValues() const20 base::Value::Dict ValueMapPrefStore::GetValues() const {
21 return prefs_.AsDict();
22 }
23
AddObserver(PrefStore::Observer * observer)24 void ValueMapPrefStore::AddObserver(PrefStore::Observer* observer) {
25 observers_.AddObserver(observer);
26 }
27
RemoveObserver(PrefStore::Observer * observer)28 void ValueMapPrefStore::RemoveObserver(PrefStore::Observer* observer) {
29 observers_.RemoveObserver(observer);
30 }
31
HasObservers() const32 bool ValueMapPrefStore::HasObservers() const {
33 return !observers_.empty();
34 }
35
SetValue(std::string_view key,base::Value value,uint32_t flags)36 void ValueMapPrefStore::SetValue(std::string_view key,
37 base::Value value,
38 uint32_t flags) {
39 if (prefs_.SetValue(key, std::move(value))) {
40 for (Observer& observer : observers_)
41 observer.OnPrefValueChanged(key);
42 }
43 }
44
RemoveValue(std::string_view key,uint32_t flags)45 void ValueMapPrefStore::RemoveValue(std::string_view key, uint32_t flags) {
46 if (prefs_.RemoveValue(key)) {
47 for (Observer& observer : observers_)
48 observer.OnPrefValueChanged(key);
49 }
50 }
51
GetMutableValue(std::string_view key,base::Value ** value)52 bool ValueMapPrefStore::GetMutableValue(std::string_view key,
53 base::Value** value) {
54 return prefs_.GetValue(key, value);
55 }
56
ReportValueChanged(std::string_view key,uint32_t flags)57 void ValueMapPrefStore::ReportValueChanged(std::string_view key,
58 uint32_t flags) {
59 for (Observer& observer : observers_)
60 observer.OnPrefValueChanged(key);
61 }
62
SetValueSilently(std::string_view key,base::Value value,uint32_t flags)63 void ValueMapPrefStore::SetValueSilently(std::string_view key,
64 base::Value value,
65 uint32_t flags) {
66 prefs_.SetValue(key, std::move(value));
67 }
68
69 ValueMapPrefStore::~ValueMapPrefStore() = default;
70
NotifyInitializationCompleted()71 void ValueMapPrefStore::NotifyInitializationCompleted() {
72 for (Observer& observer : observers_)
73 observer.OnInitializationCompleted(true);
74 }
75
RemoveValuesByPrefixSilently(std::string_view prefix)76 void ValueMapPrefStore::RemoveValuesByPrefixSilently(std::string_view prefix) {
77 prefs_.ClearWithPrefix(prefix);
78 }
79