190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file.
490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "android_webview/browser/aw_pref_store.h"
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/values.h"
990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)AwPrefStore::AwPrefStore() {}
1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)AwPrefStore::~AwPrefStore() {}
1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool AwPrefStore::GetValue(const std::string& key,
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                           const base::Value** value) const {
1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return prefs_.GetValue(key, value);
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool AwPrefStore::GetMutableValue(const std::string& key,
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                  base::Value** value) {
2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return prefs_.GetValue(key, value);
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void AwPrefStore::AddObserver(PrefStore::Observer* observer) {
2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  observers_.AddObserver(observer);
2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void AwPrefStore::RemoveObserver(PrefStore::Observer* observer) {
2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  observers_.RemoveObserver(observer);
3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
32424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)bool AwPrefStore::HasObservers() const {
33424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  return observers_.might_have_observers();
3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool AwPrefStore::IsInitializationComplete() const {
3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return true;
3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void AwPrefStore::SetValue(const std::string& key, base::Value* value) {
4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  DCHECK(value);
4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  if (prefs_.SetValue(key, value))
4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      ReportValueChanged(key);
4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void AwPrefStore::SetValueSilently(const std::string& key, base::Value* value) {
4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  prefs_.SetValue(key, value);
4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void AwPrefStore::RemoveValue(const std::string& key) {
5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  if (prefs_.RemoveValue(key))
5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    ReportValueChanged(key);
5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool AwPrefStore::ReadOnly() const {
5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return false;
5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)PersistentPrefStore::PrefReadError AwPrefStore::GetReadError() const {
6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return PersistentPrefStore::PREF_READ_ERROR_NONE;
6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)PersistentPrefStore::PrefReadError AwPrefStore::ReadPrefs() {
6490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return PersistentPrefStore::PREF_READ_ERROR_NONE;
6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
6690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
6790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void AwPrefStore::ReadPrefsAsync(ReadErrorDelegate* error_delegate_raw) {
6890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
7090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void AwPrefStore::ReportValueChanged(const std::string& key) {
7190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  FOR_EACH_OBSERVER(Observer, observers_, OnPrefValueChanged(key));
7290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
73