Index: chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc |
diff --git a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc |
index e5132152220a8449e93fba00675a1f9809d025a2..25378b5329687c5f26918df9608358b5564cce45 100644 |
--- a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc |
+++ b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc |
@@ -6,19 +6,28 @@ |
#include "base/bind.h" |
#include "base/bind_helpers.h" |
+#include "base/command_line.h" |
#include "base/memory/weak_ptr.h" |
+#include "base/prefs/pref_registry_simple.h" |
+#include "base/prefs/pref_service.h" |
+#include "base/strings/string_number_conversions.h" |
#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/values.h" |
#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" |
bartfab (slow)
2014/02/13 19:51:53
Nit: Not used.
rkc
2014/02/13 23:22:01
Done.
|
#include "chrome/browser/chromeos/base/locale_util.h" |
+#include "chrome/browser/chromeos/idle_detector.h" |
#include "chrome/browser/chromeos/input_method/input_method_util.h" |
#include "chrome/browser/chromeos/login/input_events_blocker.h" |
+#include "chrome/browser/chromeos/login/login_display_host_impl.h" |
#include "chrome/browser/chromeos/login/screens/core_oobe_actor.h" |
#include "chrome/browser/chromeos/system/input_device_settings.h" |
#include "chrome/browser/chromeos/system/timezone_util.h" |
#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" |
#include "chrome/browser/ui/webui/options/chromeos/cros_language_options_handler.h" |
+#include "chrome/common/pref_names.h" |
+#include "chromeos/chromeos_switches.h" |
#include "chromeos/ime/input_method_manager.h" |
#include "grit/chromium_strings.h" |
#include "grit/generated_resources.h" |
@@ -39,6 +48,9 @@ const char kJsApiNetworkOnTimezoneChanged[] = "networkOnTimezoneChanged"; |
const char kUSlayout[] = "xkb:us::eng"; |
+const int64 kDerelectDetectionTimeoutSeconds = 8 * 60 * 60; // 8 hours. |
bartfab (slow)
2014/02/13 19:51:53
Why is this an int64? int would have been entirely
rkc
2014/02/13 23:22:01
To keep the type consistent with what base::Time::
bartfab (slow)
2014/02/17 15:53:46
1) C++ will implicitly up-cast an |int| to an |int
|
+const int64 kDerelectIdleTimeoutSeconds = 5 * 60; // 5 minutes. |
bartfab (slow)
2014/02/13 19:51:53
Why is this an int64? int would have been entirely
rkc
2014/02/13 23:22:01
Done.
|
+ |
} // namespace |
namespace chromeos { |
@@ -50,9 +62,11 @@ NetworkScreenHandler::NetworkScreenHandler(CoreOobeActor* core_oobe_actor) |
screen_(NULL), |
core_oobe_actor_(core_oobe_actor), |
is_continue_enabled_(false), |
+ is_derelict_(false), |
show_on_init_(false), |
weak_ptr_factory_(this) { |
DCHECK(core_oobe_actor_); |
+ SetupTimeouts(); |
} |
NetworkScreenHandler::~NetworkScreenHandler() { |
@@ -76,6 +90,7 @@ void NetworkScreenHandler::Show() { |
} |
ShowScreen(OobeUI::kScreenOobeNetwork, NULL); |
+ StartIdleDetection(); |
} |
void NetworkScreenHandler::Hide() { |
@@ -159,9 +174,16 @@ void NetworkScreenHandler::RegisterMessages() { |
&NetworkScreenHandler::HandleOnTimezoneChanged); |
} |
+ |
+// static |
+void NetworkScreenHandler::RegisterPrefs(PrefRegistrySimple* registry) { |
+ registry->RegisterBooleanPref(prefs::kDerelictMachine, false); |
+} |
+ |
// NetworkScreenHandler, private: ---------------------------------------------- |
void NetworkScreenHandler::HandleOnExit() { |
+ detector_.reset(); |
ClearErrors(); |
if (screen_) |
screen_->OnContinuePressed(); |
@@ -237,6 +259,58 @@ void NetworkScreenHandler::OnSystemTimezoneChanged() { |
CallJS("setTimezone", current_timezone_id); |
} |
+void NetworkScreenHandler::StartIdleDetection() { |
+ if (!detector_.get()) { |
+ detector_.reset( |
+ new IdleDetector(base::Closure(), |
+ base::Bind(&NetworkScreenHandler::OnIdle, |
+ weak_ptr_factory_.GetWeakPtr()))); |
+ } |
+ |
+ detector_->Start( |
+ is_derelict_ ? derelict_idle_timeout_ : derelict_detection_timeout_); |
+} |
+ |
+void NetworkScreenHandler::OnIdle() { |
+ if (is_derelict_) { |
+ LoginDisplayHost* host = LoginDisplayHostImpl::default_host(); |
bartfab (slow)
2014/02/13 19:51:53
Nit: #include "chrome/browser/chromeos/login/login
rkc
2014/02/13 23:22:01
Done.
|
+ host->StartDemoAppLaunch(); |
+ } else { |
+ is_derelict_ = true; |
+ PrefService* prefs = g_browser_process->local_state(); |
+ prefs->SetBoolean(prefs::kDerelictMachine, true); |
+ |
+ StartIdleDetection(); |
+ } |
+} |
+ |
+void NetworkScreenHandler::SetupTimeouts() { |
+ CommandLine* cmdline = CommandLine::ForCurrentProcess(); |
+ DCHECK(cmdline); |
bartfab (slow)
2014/02/13 19:51:53
Nit: #include "base/logging.h"
rkc
2014/02/13 23:22:01
Done.
|
+ |
+ PrefService* prefs = g_browser_process->local_state(); |
+ is_derelict_ = prefs->GetBoolean(prefs::kDerelictMachine); |
+ |
+ int64 derelict_detection_timeout; |
+ if (!cmdline->HasSwitch(switches::kDerelictDetectionTimeout) || |
+ !base::StringToInt64( |
+ cmdline->GetSwitchValueASCII(switches::kDerelictDetectionTimeout), |
+ &derelict_detection_timeout)) { |
+ derelict_detection_timeout = kDerelectDetectionTimeoutSeconds; |
+ } |
+ derelict_detection_timeout_ = |
+ base::TimeDelta::FromSeconds(derelict_detection_timeout); |
+ |
+ int64 derelict_idle_timeout; |
+ if (!cmdline->HasSwitch(switches::kDerelictIdleTimeout) || |
+ !base::StringToInt64( |
+ cmdline->GetSwitchValueASCII(switches::kDerelictIdleTimeout), |
+ &derelict_idle_timeout)) { |
+ derelict_idle_timeout = kDerelectIdleTimeoutSeconds; |
+ } |
+ derelict_idle_timeout_ = base::TimeDelta::FromSeconds(derelict_idle_timeout); |
+} |
+ |
// static |
base::ListValue* NetworkScreenHandler::GetLanguageList() { |
const std::string app_locale = g_browser_process->GetApplicationLocale(); |