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) { |