172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// Use of this source code is governed by a BSD-style license that can be 321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// found in the LICENSE file. 421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/prefs/testing_pref_store.h" 621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "base/values.h" 821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTestingPrefStore::TestingPrefStore() 1021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen : read_only_(true), 1121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen prefs_written_(false), 1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen init_complete_(false) {} 1372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTestingPrefStore::~TestingPrefStore() {} 1521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 1621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenPrefStore::ReadResult TestingPrefStore::GetValue(const std::string& key, 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const Value** value) const { 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return prefs_.GetValue(key, value) ? READ_OK : READ_NO_VALUE; 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenPrefStore::ReadResult TestingPrefStore::GetMutableValue(const std::string& key, 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen Value** value) { 2321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return prefs_.GetValue(key, value) ? READ_OK : READ_NO_VALUE; 2421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 2521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 2621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid TestingPrefStore::AddObserver(PrefStore::Observer* observer) { 2721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen observers_.AddObserver(observer); 2821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 2921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 3021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid TestingPrefStore::RemoveObserver(PrefStore::Observer* observer) { 3121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen observers_.RemoveObserver(observer); 3221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 3321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenbool TestingPrefStore::IsInitializationComplete() const { 3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen return init_complete_; 3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 3772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid TestingPrefStore::SetValue(const std::string& key, Value* value) { 3921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen if (prefs_.SetValue(key, value)) 4021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen NotifyPrefValueChanged(key); 4121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 4221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 4321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid TestingPrefStore::SetValueSilently(const std::string& key, Value* value) { 4421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen prefs_.SetValue(key, value); 4521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 4621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 4721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid TestingPrefStore::RemoveValue(const std::string& key) { 4821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen if (prefs_.RemoveValue(key)) 4921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen NotifyPrefValueChanged(key); 5021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 5121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 5272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenbool TestingPrefStore::ReadOnly() const { 5372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen return read_only_; 5472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 5572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 5621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenPersistentPrefStore::PrefReadError TestingPrefStore::ReadPrefs() { 5721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen prefs_.Clear(); 5821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return PersistentPrefStore::PREF_READ_ERROR_NONE; 5921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 6021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 6121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenbool TestingPrefStore::WritePrefs() { 6221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen prefs_written_ = true; 6321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return prefs_written_; 6421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 6521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 6621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid TestingPrefStore::SetInitializationCompleted() { 6721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen init_complete_ = true; 6821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen NotifyInitializationCompleted(); 6921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 7021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 7121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid TestingPrefStore::NotifyPrefValueChanged(const std::string& key) { 7221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen FOR_EACH_OBSERVER(Observer, observers_, OnPrefValueChanged(key)); 7321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 7421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 7521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid TestingPrefStore::NotifyInitializationCompleted() { 7621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen FOR_EACH_OBSERVER(Observer, observers_, OnInitializationCompleted()); 7721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 7821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 79dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenvoid TestingPrefStore::ReportValueChanged(const std::string& key) { 80dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FOR_EACH_OBSERVER(Observer, observers_, OnPrefValueChanged(key)); 81dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 82dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 8321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid TestingPrefStore::SetString(const std::string& key, 8421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen const std::string& value) { 8521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen SetValue(key, Value::CreateStringValue(value)); 8621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 8721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 8821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid TestingPrefStore::SetInteger(const std::string& key, int value) { 8921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen SetValue(key, Value::CreateIntegerValue(value)); 9021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 9121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 9221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid TestingPrefStore::SetBoolean(const std::string& key, bool value) { 9321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen SetValue(key, Value::CreateBooleanValue(value)); 9421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 9521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 9621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenbool TestingPrefStore::GetString(const std::string& key, 9721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen std::string* value) const { 98ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const Value* stored_value; 9921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen if (!prefs_.GetValue(key, &stored_value) || !stored_value) 10021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return false; 10121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 10221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return stored_value->GetAsString(value); 10321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 10421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 10521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenbool TestingPrefStore::GetInteger(const std::string& key, int* value) const { 106ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const Value* stored_value; 10721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen if (!prefs_.GetValue(key, &stored_value) || !stored_value) 10821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return false; 10921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 11021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return stored_value->GetAsInteger(value); 11121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 11221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 11321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenbool TestingPrefStore::GetBoolean(const std::string& key, bool* value) const { 114ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const Value* stored_value; 11521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen if (!prefs_.GetValue(key, &stored_value) || !stored_value) 11621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return false; 11721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 11821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return stored_value->GetAsBoolean(value); 11921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 12072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 12172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid TestingPrefStore::set_read_only(bool read_only) { 12272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen read_only_ = read_only; 12372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 12472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 12572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid TestingPrefStore::set_prefs_written(bool status) { 12672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen prefs_written_ = status; 12772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 12872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 12972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenbool TestingPrefStore::get_prefs_written() { 13072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen return prefs_written_; 13172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 132