Index: chrome/browser/chromeos/preferences.cc |
diff --git a/chrome/browser/chromeos/preferences.cc b/chrome/browser/chromeos/preferences.cc |
index c52e7baaadb93f8aabffa809bb27fb010f040401..4d835bf04baf1aaa6812891240a1625831a2e7cb 100644 |
--- a/chrome/browser/chromeos/preferences.cc |
+++ b/chrome/browser/chromeos/preferences.cc |
@@ -87,6 +87,8 @@ void Preferences::RegisterPrefs(PrefRegistrySimple* registry) { |
registry->RegisterBooleanPref(prefs::kAccessibilityVirtualKeyboardEnabled, |
false); |
registry->RegisterStringPref(prefs::kLogoutStartedLast, std::string()); |
+ registry->RegisterBooleanPref(prefs::kResolveDeviceTimezoneByGeolocation, |
+ true); |
} |
// static |
@@ -315,6 +317,10 @@ void Preferences::RegisterProfilePrefs( |
false, |
user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
+ registry->RegisterBooleanPref( |
+ prefs::kResolveTimezoneByGeolocation, true, |
+ user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
+ |
input_method::InputMethodSyncer::RegisterProfilePrefs(registry); |
} |
@@ -355,6 +361,9 @@ void Preferences::InitUserPrefs(PrefServiceSyncable* prefs) { |
prefs::kLanguageXkbAutoRepeatInterval, prefs, callback); |
wake_on_wifi_ssid_.Init(prefs::kWakeOnWifiSsid, prefs, callback); |
+ |
+ pref_change_registrar_.Init(prefs); |
+ pref_change_registrar_.Add(prefs::kResolveTimezoneByGeolocation, callback); |
} |
void Preferences::Init(Profile* profile, const user_manager::User* user) { |
@@ -609,6 +618,23 @@ void Preferences::ApplyPreferences(ApplyReason reason, |
WakeOnWifiManager::Get()->OnPreferenceChanged( |
static_cast<WakeOnWifiManager::WakeOnWifiFeature>(features)); |
} |
+ |
+ if (pref_name == prefs::kResolveTimezoneByGeolocation && |
+ reason != REASON_ACTIVE_USER_CHANGED) { |
+ const bool value = g_browser_process->local_state()->GetBoolean( |
+ prefs::kResolveTimezoneByGeolocation); |
+ if (user_is_owner) { |
+ g_browser_process->local_state()->SetBoolean( |
+ prefs::kResolveDeviceTimezoneByGeolocation, value); |
+ } |
+ if (user_is_primary_) { |
+ if (value) { |
+ g_browser_process->platform_part()->timezone_resolver()->Start(); |
+ } else { |
+ g_browser_process->platform_part()->timezone_resolver()->Stop(); |
+ } |
+ } |
+ } |
} |
void Preferences::OnIsSyncingChanged() { |