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