blob: fe2c80893db34f77d86a3bf0a1891b0623bc8273 [file] [log] [blame]
[email protected]d3b05ea2012-01-24 22:57:051// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]f2d1f612010-12-09 15:10:172// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
brettwf00b9b42016-02-01 22:11:385#include "components/prefs/value_map_pref_store.h"
[email protected]f2d1f612010-12-09 15:10:176
7#include <algorithm>
danakj0c8d4aa2015-11-25 05:29:588#include <utility>
[email protected]f2d1f612010-12-09 15:10:179
[email protected]7286e3fc2011-07-19 22:13:2410#include "base/stl_util.h"
[email protected]f2d1f612010-12-09 15:10:1711#include "base/values.h"
12
[email protected]e4be2dd2010-12-14 00:44:3913ValueMapPrefStore::ValueMapPrefStore() {}
14
[email protected]892f1d62012-11-08 18:24:3415bool ValueMapPrefStore::GetValue(const std::string& key,
[email protected]a43a667b2013-06-14 17:56:0816 const base::Value** value) const {
[email protected]892f1d62012-11-08 18:24:3417 return prefs_.GetValue(key, value);
[email protected]f2d1f612010-12-09 15:10:1718}
19
20void ValueMapPrefStore::AddObserver(PrefStore::Observer* observer) {
21 observers_.AddObserver(observer);
22}
23
24void ValueMapPrefStore::RemoveObserver(PrefStore::Observer* observer) {
25 observers_.RemoveObserver(observer);
26}
27
[email protected]14e0ec62013-08-26 22:01:3928bool ValueMapPrefStore::HasObservers() const {
29 return observers_.might_have_observers();
[email protected]d3b05ea2012-01-24 22:57:0530}
31
raymes76de1af2015-05-06 03:22:2132void ValueMapPrefStore::SetValue(const std::string& key,
estade0bd407f2015-06-26 18:16:1833 scoped_ptr<base::Value> value,
avi9ef8bb02015-12-24 05:29:3634 uint32_t flags) {
danakj0c8d4aa2015-11-25 05:29:5835 if (prefs_.SetValue(key, std::move(value)))
[email protected]2dea5c02012-04-25 07:01:0736 FOR_EACH_OBSERVER(Observer, observers_, OnPrefValueChanged(key));
37}
38
avi9ef8bb02015-12-24 05:29:3639void ValueMapPrefStore::RemoveValue(const std::string& key, uint32_t flags) {
[email protected]2dea5c02012-04-25 07:01:0740 if (prefs_.RemoveValue(key))
41 FOR_EACH_OBSERVER(Observer, observers_, OnPrefValueChanged(key));
42}
43
[email protected]1b5837662014-06-18 20:45:2144bool ValueMapPrefStore::GetMutableValue(const std::string& key,
45 base::Value** value) {
46 return prefs_.GetValue(key, value);
47}
48
raymes76de1af2015-05-06 03:22:2149void ValueMapPrefStore::ReportValueChanged(const std::string& key,
avi9ef8bb02015-12-24 05:29:3650 uint32_t flags) {
[email protected]1b5837662014-06-18 20:45:2151 FOR_EACH_OBSERVER(Observer, observers_, OnPrefValueChanged(key));
52}
53
[email protected]023f5bb2014-07-14 17:28:1454void ValueMapPrefStore::SetValueSilently(const std::string& key,
estade0bd407f2015-06-26 18:16:1855 scoped_ptr<base::Value> value,
avi9ef8bb02015-12-24 05:29:3656 uint32_t flags) {
danakj0c8d4aa2015-11-25 05:29:5857 prefs_.SetValue(key, std::move(value));
[email protected]023f5bb2014-07-14 17:28:1458}
59
[email protected]7978ca62014-01-02 21:41:2060ValueMapPrefStore::~ValueMapPrefStore() {}
61
[email protected]2dea5c02012-04-25 07:01:0762void ValueMapPrefStore::NotifyInitializationCompleted() {
63 FOR_EACH_OBSERVER(Observer, observers_, OnInitializationCompleted(true));
64}