overlay_persistent_pref_store.cc revision 72a454cd3513ac24fbdd0e0cb9ad70b86a99b801
1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
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 "chrome/browser/prefs/overlay_persistent_pref_store.h"
6
7OverlayPersistentPrefStore::OverlayPersistentPrefStore(
8    PersistentPrefStore* underlay)
9    : underlay_(underlay) {
10  underlay_->AddObserver(this);
11}
12OverlayPersistentPrefStore::~OverlayPersistentPrefStore() {
13  underlay_->RemoveObserver(this);
14}
15
16void OverlayPersistentPrefStore::AddObserver(PrefStore::Observer* observer) {
17  observers_.AddObserver(observer);
18}
19
20void OverlayPersistentPrefStore::RemoveObserver(PrefStore::Observer* observer) {
21  observers_.RemoveObserver(observer);
22}
23
24bool OverlayPersistentPrefStore::IsInitializationComplete() const {
25  return underlay_->IsInitializationComplete();
26}
27
28PrefStore::ReadResult OverlayPersistentPrefStore::GetValue(
29    const std::string& key, Value** result) const {
30  if (overlay_.GetValue(key, result))
31    return READ_OK;
32  return underlay_->GetValue(key, result);
33}
34
35void OverlayPersistentPrefStore::SetValue(const std::string& key,
36                                          Value* value) {
37  if (overlay_.SetValue(key, value))
38    FOR_EACH_OBSERVER(PrefStore::Observer, observers_, OnPrefValueChanged(key));
39}
40
41void OverlayPersistentPrefStore::SetValueSilently(const std::string& key,
42                                                  Value* value) {
43  overlay_.SetValue(key, value);
44}
45
46void OverlayPersistentPrefStore::RemoveValue(const std::string& key) {
47  if (overlay_.RemoveValue(key))
48    FOR_EACH_OBSERVER(PrefStore::Observer, observers_, OnPrefValueChanged(key));
49}
50
51bool OverlayPersistentPrefStore::ReadOnly() const {
52  return false;
53}
54
55PersistentPrefStore::PrefReadError OverlayPersistentPrefStore::ReadPrefs() {
56  // We do not read intentionally.
57  return PersistentPrefStore::PREF_READ_ERROR_NONE;
58}
59
60bool OverlayPersistentPrefStore::WritePrefs() {
61  // We do not write intentionally.
62  return true;
63}
64
65void OverlayPersistentPrefStore::ScheduleWritePrefs() {
66  // We do not write intentionally.
67}
68
69void OverlayPersistentPrefStore::OnPrefValueChanged(const std::string& key) {
70  if (!overlay_.GetValue(key, NULL))
71    FOR_EACH_OBSERVER(PrefStore::Observer, observers_, OnPrefValueChanged(key));
72}
73
74void OverlayPersistentPrefStore::OnInitializationCompleted() {
75  FOR_EACH_OBSERVER(PrefStore::Observer, observers_,
76                    OnInitializationCompleted());
77}
78