Index: chrome/browser/chromeos/login/ui/login_display_host_impl.cc |
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc |
index e79f4083a75a81564e13d229be76230a00c193ca..0f64d5ffe65041649a575db0dfb5f24c5c25b9b1 100644 |
--- a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc |
+++ b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc |
@@ -50,6 +50,7 @@ |
#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
#include "chrome/browser/chromeos/policy/enrollment_config.h" |
#include "chrome/browser/chromeos/system/input_device_settings.h" |
+#include "chrome/browser/chromeos/system/timezone_util.h" |
#include "chrome/browser/chromeos/ui/focus_ring_controller.h" |
#include "chrome/browser/lifetime/application_lifetime.h" |
#include "chrome/browser/profiles/profile_manager.h" |
@@ -65,6 +66,7 @@ |
#include "chromeos/dbus/session_manager_client.h" |
#include "chromeos/login/login_state.h" |
#include "chromeos/settings/timezone_settings.h" |
+#include "chromeos/timezone/timezone_resolver.h" |
#include "components/session_manager/core/session_manager.h" |
#include "components/user_manager/user_manager.h" |
#include "content/public/browser/notification_service.h" |
@@ -1087,6 +1089,29 @@ void LoginDisplayHostImpl::OnLoginPromptVisible() { |
TryToPlayStartupSound(); |
} |
+void LoginDisplayHostImpl::StartTimeZoneResolve() { |
+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ chromeos::switches::kEnableTimeZoneTrackingOption)) { |
+ return; |
+ } |
+ |
+ if (!g_browser_process->local_state()->GetBoolean( |
+ prefs::kResolveDeviceTimezoneByGeolocation)) { |
+ return; |
+ } |
+ |
+ if (system::HasSystemTimezonePolicy()) |
+ return; |
+ |
+ // Do not start resolver if we are inside active user session. |
+ // If user preferences permit, it will be started on preferences |
+ // initialization. |
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kLoginUser)) |
+ return; |
+ |
+ g_browser_process->platform_part()->GetTimezoneResolver()->Start(); |
+} |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// external |
@@ -1125,7 +1150,7 @@ void ShowLoginWizard(const std::string& first_screen_name) { |
? session_manager::SESSION_STATE_LOGIN_PRIMARY |
: session_manager::SESSION_STATE_OOBE); |
- LoginDisplayHost* display_host = new LoginDisplayHostImpl(screen_bounds); |
+ LoginDisplayHostImpl* display_host = new LoginDisplayHostImpl(screen_bounds); |
bool show_app_launch_splash_screen = |
(first_screen_name == WizardController::kAppLaunchSplashScreenName); |
@@ -1152,9 +1177,11 @@ void ShowLoginWizard(const std::string& first_screen_name) { |
if (StartupUtils::IsEulaAccepted()) { |
DelayNetworkCall( |
+ base::TimeDelta::FromMilliseconds(kDefaultNetworkRetryDelayMS), |
ServicesCustomizationDocument::GetInstance() |
- ->EnsureCustomizationAppliedClosure(), |
- base::TimeDelta::FromMilliseconds(kDefaultNetworkRetryDelayMS)); |
+ ->EnsureCustomizationAppliedClosure()); |
+ |
+ display_host->StartTimeZoneResolve(); |
} |
bool show_login_screen = |