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,
1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                                const 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,
2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                                       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)
3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)size_t AwPrefStore::NumberOfObservers() const {
3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return observers_.size();
3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool AwPrefStore::IsInitializationComplete() const {
3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return true;
3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void AwPrefStore::SetValue(const std::string& key, 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)
4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void AwPrefStore::SetValueSilently(const std::string& key, 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)void AwPrefStore::MarkNeedsEmptyValue(const std::string& key) {
5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool AwPrefStore::ReadOnly() const {
5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return false;
6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)PersistentPrefStore::PrefReadError AwPrefStore::GetReadError() const {
6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return PersistentPrefStore::PREF_READ_ERROR_NONE;
6490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
6690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)PersistentPrefStore::PrefReadError AwPrefStore::ReadPrefs() {
6790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return PersistentPrefStore::PREF_READ_ERROR_NONE;
6890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
7090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void AwPrefStore::ReadPrefsAsync(ReadErrorDelegate* error_delegate_raw) {
7190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
7290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
7390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void AwPrefStore::ReportValueChanged(const std::string& key) {
7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  FOR_EACH_OBSERVER(Observer, observers_, OnPrefValueChanged(key));
7590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
76