 Chromium Code Reviews
 Chromium Code Reviews Issue 9701084:
  Integrate Kiosk Mode with enterprise policies.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 9701084:
  Integrate Kiosk Mode with enterprise policies.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| Index: chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.cc | 
| diff --git a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.cc b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.cc | 
| index 1ae86619d9270dcea434ed1fc455c4fb5b63c18e..039e5a8d95be3a47cc6e4d4dff7419857e964bde 100644 | 
| --- a/chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.cc | 
| +++ b/chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.cc | 
| @@ -4,10 +4,14 @@ | 
| #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_helper.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" | 
| @@ -15,9 +19,11 @@ | 
| namespace { | 
| -const int64 kScreensaverIdleTimeout = 60; | 
| -const int64 kLoginIdleTimeout = 100; | 
| -const int64 kLoginIdleCountdownTimeout = 20; | 
| +const int kMaxIdleLogoutTimeout = 100000; // ms = 100s. | 
| +const int kMinIdleLogoutTimeout = 25000; // ms = 25s. | 
| 
Mattias Nissler (ping if slow)
2012/03/16 09:56:46
Where do this values come from? They seem overly r
 
rkc
2012/03/19 23:59:48
Done.
 | 
| + | 
| +const int kMaxIdleLogoutWarningTimeout = 20000; // ms = 20s. | 
| +const int kMinIdleLogoutWarningTimeout = 5000; // ms = 5s. | 
| 
Mattias Nissler (ping if slow)
2012/03/16 09:56:46
same here
 
rkc
2012/03/19 23:59:48
Done.
 | 
| } // namespace | 
| @@ -47,6 +53,41 @@ KioskModeHelper* KioskModeHelper::Get() { | 
| } | 
| void KioskModeHelper::Initialize(const base::Closure& notify_initialized) { | 
| + chromeos::CrosSettings* cros_settings = chromeos::CrosSettings::Get(); | 
| + if (!cros_settings->GetTrusted( | 
| + kIdleLogoutTimeout, | 
| + base::Bind(&KioskModeHelper::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, idle_logout_warning_timeout = 0; | 
| 
Mattias Nissler (ping if slow)
2012/03/16 09:56:46
nit: It's relatively uncommon to have declarations
 
rkc
2012/03/19 23:59:48
Done.
 | 
| + cros_settings->GetInteger(kScreenSaverTimeout, &screensaver_timeout); | 
| + cros_settings->GetInteger(kIdleLogoutTimeout, &idle_logout_timeout); | 
| + cros_settings->GetInteger(kIdleLogoutWarningDuration, | 
| + &idle_logout_warning_timeout); | 
| + | 
| + screensaver_timeout_ = base::TimeDelta::FromMilliseconds( | 
| + screensaver_timeout); | 
| + | 
| + // Restrict idle timeouts to safe values to prevent them from being turned off | 
| + // or otherwise misused. | 
| + idle_logout_timeout_ = base::TimeDelta::FromMilliseconds( | 
| + std::min(idle_logout_timeout, kMaxIdleLogoutTimeout)); | 
| + idle_logout_timeout_ = base::TimeDelta::FromMilliseconds( | 
| + std::max(idle_logout_timeout, kMinIdleLogoutTimeout)); | 
| 
Mattias Nissler (ping if slow)
2012/03/16 09:56:46
There's a bug here, as you clobber the value assig
 
rkc
2012/03/19 23:59:48
Done and added unit tests to test this and other s
 | 
| + | 
| + idle_logout_warning_timeout_ = base::TimeDelta::FromMilliseconds( | 
| + std::min(idle_logout_warning_timeout, kMaxIdleLogoutWarningTimeout)); | 
| + idle_logout_warning_timeout_ = base::TimeDelta::FromMilliseconds( | 
| + std::max(idle_logout_warning_timeout, kMinIdleLogoutWarningTimeout)); | 
| 
Mattias Nissler (ping if slow)
2012/03/16 09:56:46
ditto.
 
rkc
2012/03/19 23:59:48
Done.
 | 
| + | 
| is_initialized_ = true; | 
| notify_initialized.Run(); | 
| } | 
| @@ -59,24 +100,24 @@ std::string KioskModeHelper::GetScreensaverPath() const { | 
| GetSwitchValueASCII(switches::kKioskModeScreensaverPath); | 
| } | 
| -int64 KioskModeHelper::GetScreensaverTimeout() const { | 
| +base::TimeDelta KioskModeHelper::GetScreensaverTimeout() const { | 
| if (!is_initialized_) | 
| - return -1; | 
| + return base::TimeDelta::FromSeconds(-1); | 
| 
Mattias Nissler (ping if slow)
2012/03/16 09:56:46
This seems like a pretty arbitrary value, since it
 
rkc
2012/03/19 23:59:48
I specifically wanted a negative value so 0 could
 | 
| - return kScreensaverIdleTimeout; | 
| + return screensaver_timeout_; | 
| } | 
| -int64 KioskModeHelper::GetIdleLogoutTimeout() const { | 
| +base::TimeDelta KioskModeHelper::GetIdleLogoutTimeout() const { | 
| if (!is_initialized_) | 
| - return -1; | 
| + return base::TimeDelta::FromSeconds(-1); | 
| - return kLoginIdleTimeout; | 
| + return idle_logout_timeout_; | 
| } | 
| 
Mattias Nissler (ping if slow)
2012/03/16 09:56:46
insert blank line.
 
rkc
2012/03/19 23:59:48
Done.
 | 
| -int64 KioskModeHelper::GetIdleLogoutWarningTimeout() const { | 
| +base::TimeDelta KioskModeHelper::GetIdleLogoutWarningTimeout() const { | 
| if (!is_initialized_) | 
| - return -1; | 
| + return base::TimeDelta::FromSeconds(-1); | 
| - return kLoginIdleCountdownTimeout; | 
| + return idle_logout_warning_timeout_; | 
| } | 
| KioskModeHelper::KioskModeHelper() : is_initialized_(false) { |