1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h"
6
7#include "base/logging.h"
8#include "base/values.h"
9#include "chrome/browser/chromeos/settings/cros_settings.h"
10#include "chrome/browser/chromeos/settings/device_settings_provider.h"
11#include "chromeos/settings/cros_settings_names.h"
12
13namespace chromeos {
14
15StubCrosSettingsProvider::StubCrosSettingsProvider(
16    const NotifyObserversCallback& notify_cb)
17    : CrosSettingsProvider(notify_cb) {
18  SetDefaults();
19}
20
21StubCrosSettingsProvider::StubCrosSettingsProvider()
22  : CrosSettingsProvider(CrosSettingsProvider::NotifyObserversCallback()) {
23  SetDefaults();
24}
25
26StubCrosSettingsProvider::~StubCrosSettingsProvider() {
27}
28
29const base::Value* StubCrosSettingsProvider::Get(
30    const std::string& path) const {
31  DCHECK(HandlesSetting(path));
32  const base::Value* value;
33  if (values_.GetValue(path, &value))
34    return value;
35  return NULL;
36}
37
38CrosSettingsProvider::TrustedStatus
39    StubCrosSettingsProvider::PrepareTrustedValues(const base::Closure& cb) {
40  // We don't have a trusted store so all values are available immediately.
41  return TRUSTED;
42}
43
44bool StubCrosSettingsProvider::HandlesSetting(const std::string& path) const {
45  return DeviceSettingsProvider::IsDeviceSetting(path);
46}
47
48void StubCrosSettingsProvider::DoSet(const std::string& path,
49                                     const base::Value& value) {
50  values_.SetValue(path, value.DeepCopy());
51  NotifyObservers(path);
52}
53
54void StubCrosSettingsProvider::SetDefaults() {
55  values_.SetBoolean(kAccountsPrefAllowGuest, true);
56  values_.SetBoolean(kAccountsPrefAllowNewUser, true);
57  values_.SetBoolean(kAccountsPrefSupervisedUsersEnabled, true);
58  values_.SetBoolean(kAccountsPrefShowUserNamesOnSignIn, true);
59  values_.SetValue(kAccountsPrefDeviceLocalAccounts, new base::ListValue);
60  // |kDeviceOwner| will be set to the logged-in user by |UserManager|.
61}
62
63}  // namespace chromeos
64