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