| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/chromeos/stub_cros_settings_provider.h" |
| |
| #include "base/logging.h" |
| #include "base/values.h" |
| #include "chrome/browser/chromeos/cros_settings.h" |
| #include "chrome/browser/chromeos/cros_settings_names.h" |
| #include "chrome/browser/chromeos/login/user_manager.h" |
| |
| namespace chromeos { |
| |
| namespace { |
| |
| const char* kHandledSettings[] = { |
| kAccountsPrefAllowGuest, |
| kAccountsPrefAllowNewUser, |
| kAccountsPrefShowUserNamesOnSignIn, |
| kAccountsPrefUsers, |
| kAccountsPrefEphemeralUsersEnabled, |
| kDeviceOwner, |
| kPolicyMissingMitigationMode, |
| kReleaseChannel, |
| kReportDeviceVersionInfo, |
| kReportDeviceActivityTimes, |
| kReportDeviceBootMode, |
| kSettingProxyEverywhere, |
| kSignedDataRoamingEnabled, |
| kStatsReportingPref, |
| // Kiosk mode settings. |
| kIdleLogoutTimeout, |
| kIdleLogoutWarningDuration, |
| kScreenSaverExtensionId, |
| kScreenSaverTimeout |
| }; |
| |
| } // namespace |
| |
| StubCrosSettingsProvider::StubCrosSettingsProvider( |
| const NotifyObserversCallback& notify_cb) |
| : CrosSettingsProvider(notify_cb) { |
| SetDefaults(); |
| } |
| |
| StubCrosSettingsProvider::StubCrosSettingsProvider() |
| : CrosSettingsProvider(CrosSettingsProvider::NotifyObserversCallback()) { |
| SetDefaults(); |
| } |
| |
| StubCrosSettingsProvider::~StubCrosSettingsProvider() { |
| } |
| |
| const base::Value* StubCrosSettingsProvider::Get( |
| const std::string& path) const { |
| DCHECK(HandlesSetting(path)); |
| const base::Value* value; |
| if (values_.GetValue(path, &value)) |
| return value; |
| return NULL; |
| } |
| |
| bool StubCrosSettingsProvider::PrepareTrustedValues(const base::Closure& cb) { |
| // We don't have a trusted store so all values are available immediately. |
| return true; |
| } |
| |
| bool StubCrosSettingsProvider::HandlesSetting(const std::string& path) const { |
| const char** end = kHandledSettings + arraysize(kHandledSettings); |
| return std::find(kHandledSettings, end, path) != end; |
| } |
| |
| void StubCrosSettingsProvider::Reload() { |
| } |
| |
| void StubCrosSettingsProvider::DoSet(const std::string& path, |
| const base::Value& value) { |
| values_.SetValue(path, value.DeepCopy()); |
| NotifyObservers(path); |
| } |
| |
| void StubCrosSettingsProvider::SetDefaults() { |
| values_.SetBoolean(kAccountsPrefAllowGuest, true); |
| values_.SetBoolean(kAccountsPrefAllowNewUser, true); |
| values_.SetBoolean(kAccountsPrefShowUserNamesOnSignIn, true); |
| // |kDeviceOwner| will be set to the logged-in user by |UserManager|. |
| } |
| |
| } // namespace chromeos |