Index: chrome/browser/prefs/overlay_persistent_pref_store.cc |
diff --git a/chrome/browser/prefs/overlay_persistent_pref_store.cc b/chrome/browser/prefs/overlay_persistent_pref_store.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..16c082af8612ea0440f9ea49e019b3063c30a27d |
--- /dev/null |
+++ b/chrome/browser/prefs/overlay_persistent_pref_store.cc |
@@ -0,0 +1,77 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/prefs/overlay_persistent_pref_store.h" |
+ |
+OverlayPersistentPrefStore::OverlayPersistentPrefStore( |
+ PersistentPrefStore* underlay) |
+ : underlay_(underlay) { |
+ underlay_->AddObserver(this); |
+} |
+OverlayPersistentPrefStore::~OverlayPersistentPrefStore() { |
+ underlay_->RemoveObserver(this); |
+} |
+ |
+void OverlayPersistentPrefStore::AddObserver(PrefStore::Observer* observer) { |
+ observers_.AddObserver(observer); |
+} |
+ |
+void OverlayPersistentPrefStore::RemoveObserver(PrefStore::Observer* observer) { |
+ observers_.RemoveObserver(observer); |
+} |
+ |
+bool OverlayPersistentPrefStore::IsInitializationComplete() const { |
+ return underlay_->IsInitializationComplete(); |
+} |
+ |
+PrefStore::ReadResult OverlayPersistentPrefStore::GetValue( |
+ const std::string& key, Value** result) const { |
+ if (overlay_.GetValue(key, result)) |
+ return READ_OK; |
+ return underlay_->GetValue(key, result); |
+} |
+ |
+void OverlayPersistentPrefStore::SetValue(const std::string& key, |
+ Value* value) { |
+ if (overlay_.SetValue(key, value)) |
+ FOR_EACH_OBSERVER(PrefStore::Observer, observers_, OnPrefValueChanged(key)); |
+} |
+ |
+void OverlayPersistentPrefStore::SetValueSilently(const std::string& key, |
+ Value* value) { |
+ overlay_.SetValue(key, value); |
+} |
+ |
+void OverlayPersistentPrefStore::RemoveValue(const std::string& key) { |
+ if (overlay_.RemoveValue(key)) |
+ FOR_EACH_OBSERVER(PrefStore::Observer, observers_, OnPrefValueChanged(key)); |
+} |
+ |
+bool OverlayPersistentPrefStore::ReadOnly() const { |
+ return false; |
+} |
+ |
+PersistentPrefStore::PrefReadError OverlayPersistentPrefStore::ReadPrefs() { |
+ // We do not read intentionally. |
+ return PersistentPrefStore::PREF_READ_ERROR_NONE; |
+} |
+ |
+bool OverlayPersistentPrefStore::WritePrefs() { |
+ // We do not write intentionally. |
+ return true; |
+} |
+ |
+void OverlayPersistentPrefStore::ScheduleWritePrefs() { |
+ // We do not write intentionally. |
+} |
+ |
+void OverlayPersistentPrefStore::OnPrefValueChanged(const std::string& key) { |
+ if (!overlay_.GetValue(key, NULL)) |
+ FOR_EACH_OBSERVER(PrefStore::Observer, observers_, OnPrefValueChanged(key)); |
+} |
+ |
+void OverlayPersistentPrefStore::OnInitializationCompleted() { |
+ FOR_EACH_OBSERVER(PrefStore::Observer, observers_, |
+ OnInitializationCompleted()); |
+} |