Index: chrome/browser/resources/options/browser_options.js |
diff --git a/chrome/browser/resources/options/browser_options.js b/chrome/browser/resources/options/browser_options.js |
index 514c0284bc9f9760c5467a0337d7996df92d22ff..b2ee96895b39ff1eb6b237766269ed6f7012191a 100644 |
--- a/chrome/browser/resources/options/browser_options.js |
+++ b/chrome/browser/resources/options/browser_options.js |
@@ -38,6 +38,18 @@ options.ExtensionData; |
*/ |
options.Profile; |
+/** |
+ * Device policy SystemTimezoneAutomaticDetection values. |
+ * @enum {number} |
+ * @const |
+ */ |
+options.AutomaticTimezoneDetectionType = { |
+ USERS_DECIDE: 0, |
+ DISABLED: 1, |
+ IP_ONLY: 2, |
+ SEND_WIFI_ACCESS_POINTS: 3, |
+}; |
+ |
cr.define('options', function() { |
var OptionsPage = options.OptionsPage; |
var Page = cr.ui.pageManager.Page; |
@@ -118,6 +130,18 @@ cr.define('options', function() { |
systemTimezoneIsManaged_: false, |
/** |
+ * True if system timezone detection is managed by policy. |
+ * @private {boolean} |
+ */ |
+ systemTimezoneAutomaticDetectionIsManaged_: false, |
+ |
+ /** |
+ * This is the value of SystemTimezoneAutomaticDetection policy. |
+ * @private {number} |
+ */ |
+ systemTimezoneAutomaticDetectionValue_: 0, |
+ |
+ /** |
* Cached bluetooth adapter state. |
* @private {?chrome.bluetooth.AdapterState} |
*/ |
@@ -1681,17 +1705,37 @@ cr.define('options', function() { |
* @private |
*/ |
updateTimezoneSectionState_: function() { |
+ var self = this; |
+ $('resolve-timezone-by-geolocation') |
+ .onclick = function(event) { |
+ self.resolveTimezoneByGeolocation_ = event.currentTarget.checked; |
+ }; |
if (this.systemTimezoneIsManaged_) { |
- $('resolve-timezone-by-geolocation-selection').disabled = true; |
- $('resolve-timezone-by-geolocation').onclick = function(event) {}; |
+ $('resolve-timezone-by-geolocation').disabled = true; |
+ $('resolve-timezone-by-geolocation').checked = false; |
+ } else if (this.systemTimezoneAutomaticDetectionIsManaged_) { |
+ if (this.systemTimezoneAutomaticDetectionValue_ == |
+ options.AutomaticTimezoneDetectionType.USERS_DECIDE) { |
+ $('resolve-timezone-by-geolocation').disabled = false; |
+ $('resolve-timezone-by-geolocation') |
+ .checked = this.resolveTimezoneByGeolocation_; |
+ $('timezone-value-select') |
+ .disabled = this.resolveTimezoneByGeolocation_; |
+ } else { |
+ $('resolve-timezone-by-geolocation').disabled = true; |
+ $('resolve-timezone-by-geolocation') |
+ .checked = |
+ (this.systemTimezoneAutomaticDetectionValue_ != |
+ options.AutomaticTimezoneDetectionType.DISABLED); |
+ $('timezone-value-select').disabled = true; |
+ } |
} else { |
this.enableElementIfPossible_( |
- getRequiredElement('resolve-timezone-by-geolocation-selection')); |
- $('resolve-timezone-by-geolocation').onclick = function(event) { |
- $('timezone-value-select').disabled = event.currentTarget.checked; |
- }; |
+ getRequiredElement('resolve-timezone-by-geolocation')); |
$('timezone-value-select').disabled = |
this.resolveTimezoneByGeolocation_; |
+ $('resolve-timezone-by-geolocation') |
+ .checked = this.resolveTimezoneByGeolocation_; |
} |
}, |
@@ -1707,6 +1751,20 @@ cr.define('options', function() { |
}, |
/** |
+ * This is called from chromium code when system timezone detection |
+ * "managed" state is changed. Enables or disables dependent settings. |
+ * @param {boolean} managed Is true when system timezone autodetection is |
+ * managed by enterprise policy. False otherwize. |
+ * @param {options.AutomaticTimezoneDetectionType} value Current value of |
+ * SystemTimezoneAutomaticDetection device policy. |
+ */ |
+ setSystemTimezoneAutomaticDetectionManaged_: function(managed, value) { |
+ this.systemTimezoneAutomaticDetectionIsManaged_ = managed; |
+ this.systemTimezoneAutomaticDetectionValue_ = value; |
+ this.updateTimezoneSectionState_(); |
+ }, |
+ |
+ /** |
* This is Preferences event listener, which is called when |
* kResolveTimezoneByGeolocation preference is changed. |
* Enables or disables dependent settings. |
@@ -2255,6 +2313,7 @@ cr.define('options', function() { |
'setProfilesInfo', |
'setSpokenFeedbackCheckboxState', |
'setSystemTimezoneManaged', |
+ 'setSystemTimezoneAutomaticDetectionManaged', |
'setThemesResetButtonEnabled', |
'setVirtualKeyboardCheckboxState', |
'setupPageZoomSelector', |