15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/settings/cros_settings.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/chromeos/settings/device_settings_provider.h"
114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chromeos/settings/cros_settings_names.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)StubCrosSettingsProvider::StubCrosSettingsProvider(
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const NotifyObserversCallback& notify_cb)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : CrosSettingsProvider(notify_cb) {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetDefaults();
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)StubCrosSettingsProvider::StubCrosSettingsProvider()
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  : CrosSettingsProvider(CrosSettingsProvider::NotifyObserversCallback()) {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetDefaults();
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)StubCrosSettingsProvider::~StubCrosSettingsProvider() {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const base::Value* StubCrosSettingsProvider::Get(
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& path) const {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(HandlesSetting(path));
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const base::Value* value;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (values_.GetValue(path, &value))
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return value;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CrosSettingsProvider::TrustedStatus
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    StubCrosSettingsProvider::PrepareTrustedValues(const base::Closure& cb) {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // We don't have a trusted store so all values are available immediately.
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return TRUSTED;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool StubCrosSettingsProvider::HandlesSetting(const std::string& path) const {
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return DeviceSettingsProvider::IsDeviceSetting(path);
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StubCrosSettingsProvider::DoSet(const std::string& path,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     const base::Value& value) {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  values_.SetValue(path, value.DeepCopy());
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NotifyObservers(path);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StubCrosSettingsProvider::SetDefaults() {
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  values_.SetBoolean(kAccountsPrefAllowGuest, true);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  values_.SetBoolean(kAccountsPrefAllowNewUser, true);
5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  values_.SetBoolean(kAccountsPrefSupervisedUsersEnabled, true);
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  values_.SetBoolean(kAccountsPrefShowUserNamesOnSignIn, true);
59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  values_.SetValue(kAccountsPrefDeviceLocalAccounts, new base::ListValue);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // |kDeviceOwner| will be set to the logged-in user by |UserManager|.
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chromeos
64