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