| Index: chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.cc
|
| diff --git a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.cc b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..54e2c0677eb1038c8b16d820cdf621d42d5f11ec
|
| --- /dev/null
|
| +++ b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.cc
|
| @@ -0,0 +1,125 @@
|
| +// 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/kiosk_mode/kiosk_mode_settings.h"
|
| +
|
| +#include <algorithm>
|
| +
|
| +#include "base/bind.h"
|
| +#include "base/command_line.h"
|
| +#include "base/lazy_instance.h"
|
| +#include "chrome/browser/browser_process.h"
|
| +#include "chrome/browser/chromeos/cros_settings.h"
|
| +#include "chrome/browser/chromeos/cros_settings_names.h"
|
| +#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h"
|
| +#include "chrome/browser/policy/cloud_policy_constants.h"
|
| +#include "chrome/browser/policy/browser_policy_connector.h"
|
| +#include "chrome/common/chrome_switches.h"
|
| +
|
| +namespace chromeos {
|
| +
|
| +static base::LazyInstance<KioskModeSettings> g_kiosk_mode_settings =
|
| + LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +bool KioskModeSettings::IsKioskModeEnabled() {
|
| + if (g_browser_process) {
|
| + policy::BrowserPolicyConnector* bpc =
|
| + g_browser_process->browser_policy_connector();
|
| + if (bpc && policy::DEVICE_MODE_KIOSK == bpc->GetDeviceMode())
|
| + return true;
|
| + }
|
| + // In case we've force-enabled kiosk mode.
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableKioskMode))
|
| + return true;
|
| +
|
| + return false;
|
| +}
|
| +
|
| +// static
|
| +KioskModeSettings* KioskModeSettings::Get() {
|
| + return g_kiosk_mode_settings.Pointer();
|
| +}
|
| +
|
| +void KioskModeSettings::Initialize(const base::Closure& notify_initialized) {
|
| + CrosSettings* cros_settings = CrosSettings::Get();
|
| + if (!cros_settings->PrepareTrustedValues(
|
| + base::Bind(&KioskModeSettings::Initialize,
|
| + base::Unretained(this),
|
| + notify_initialized))) {
|
| + return;
|
| + }
|
| +
|
| + // Ignored till we land the code to pull the screensaver path from the app
|
| + // packs with the screensaver id.
|
| + cros_settings->GetString(kScreenSaverExtensionId, &screensaver_id_);
|
| +
|
| + int screensaver_timeout = 0;
|
| + int idle_logout_timeout = 0;
|
| + int idle_logout_warning_duration = 0;
|
| + cros_settings->GetInteger(kScreenSaverTimeout, &screensaver_timeout);
|
| + cros_settings->GetInteger(kIdleLogoutTimeout, &idle_logout_timeout);
|
| + cros_settings->GetInteger(kIdleLogoutWarningDuration,
|
| + &idle_logout_warning_duration);
|
| +
|
| + // Restrict idle timeouts to safe values to prevent them from being turned off
|
| + // or otherwise misused.
|
| + idle_logout_timeout = std::min(idle_logout_timeout, kMaxIdleLogoutTimeout);
|
| + idle_logout_timeout = std::max(idle_logout_timeout, kMinIdleLogoutTimeout);
|
| +
|
| + idle_logout_warning_duration =
|
| + std::min(idle_logout_warning_duration, kMaxIdleLogoutWarningDuration);
|
| + idle_logout_warning_duration =
|
| + std::max(idle_logout_warning_duration, kMinIdleLogoutWarningDuration);
|
| +
|
| + screensaver_timeout_ = base::TimeDelta::FromMilliseconds(
|
| + screensaver_timeout);
|
| + idle_logout_timeout_ =
|
| + base::TimeDelta::FromMilliseconds(idle_logout_timeout);
|
| + idle_logout_warning_duration_ =
|
| + base::TimeDelta::FromMilliseconds(idle_logout_warning_duration);
|
| +
|
| + is_initialized_ = true;
|
| + notify_initialized.Run();
|
| +}
|
| +
|
| +bool KioskModeSettings::is_initialized() const {
|
| + return is_initialized_;
|
| +}
|
| +
|
| +std::string KioskModeSettings::GetScreensaverPath() const {
|
| + if (!is_initialized_)
|
| + return std::string();
|
| +
|
| + return CommandLine::ForCurrentProcess()->
|
| + GetSwitchValueASCII(switches::kKioskModeScreensaverPath);
|
| +}
|
| +
|
| +base::TimeDelta KioskModeSettings::GetScreensaverTimeout() const {
|
| + if (!is_initialized_)
|
| + return base::TimeDelta::FromSeconds(-1);
|
| +
|
| + return screensaver_timeout_;
|
| +}
|
| +
|
| +base::TimeDelta KioskModeSettings::GetIdleLogoutTimeout() const {
|
| + if (!is_initialized_)
|
| + return base::TimeDelta::FromSeconds(-1);
|
| +
|
| + return idle_logout_timeout_;
|
| +}
|
| +
|
| +base::TimeDelta KioskModeSettings::GetIdleLogoutWarningDuration() const {
|
| + if (!is_initialized_)
|
| + return base::TimeDelta::FromSeconds(-1);
|
| +
|
| + return idle_logout_warning_duration_;
|
| +}
|
| +
|
| +KioskModeSettings::KioskModeSettings() : is_initialized_(false) {
|
| +}
|
| +
|
| +KioskModeSettings::~KioskModeSettings() {
|
| +}
|
| +
|
| +} // namespace chromeos
|
|
|