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