Index: chrome/test/data/webui/settings/date_time_page_tests.js |
diff --git a/chrome/test/data/webui/settings/date_time_page_tests.js b/chrome/test/data/webui/settings/date_time_page_tests.js |
index 7a48d13e35637b5028a409a64ec03292b7bd2ba9..5eadd97fbb38fda666302982ff76ec5566acc02c 100644 |
--- a/chrome/test/data/webui/settings/date_time_page_tests.js |
+++ b/chrome/test/data/webui/settings/date_time_page_tests.js |
@@ -27,10 +27,39 @@ |
type: chrome.settingsPrivate.PrefType.BOOLEAN, |
value: true, |
}, |
+ timezone: { |
+ key: 'settings.timezone', |
+ type: chrome.settingsPrivate.PrefType.STRING, |
+ value: 'Westeros/Kings_Landing', |
+ }, |
}, |
}; |
} |
+ function updatePrefsWithPolicy(prefs, managed, valueFromPolicy) { |
+ var prefsCopy = JSON.parse(JSON.stringify(prefs)); |
+ if (managed) { |
+ prefsCopy.settings.resolve_timezone_by_geolocation.controlledBy = |
+ 'USER_POLICY'; |
+ prefsCopy.settings.resolve_timezone_by_geolocation.enforcement = |
+ 'ENFORCED'; |
+ prefsCopy.settings.resolve_timezone_by_geolocation.value = |
+ valueFromPolicy; |
+ prefsCopy.settings.timezone.controlledBy = 'USER_POLICY'; |
+ prefsCopy.settings.timezone.enforcement = 'ENFORCED'; |
+ } else { |
+ prefsCopy.settings.resolve_timezone_by_geolocation.controlledBy = |
+ undefined; |
+ prefsCopy.settings.resolve_timezone_by_geolocation.enforcement = |
+ undefined; |
+ // Auto-resolve defaults to true. |
+ prefsCopy.settings.resolve_timezone_by_geolocation.value = true; |
+ prefsCopy.settings.timezone.controlledBy = undefined; |
+ prefsCopy.settings.timezone.enforcement = undefined; |
+ } |
+ return prefsCopy; |
+ } |
+ |
/** |
* Sets up fakes and creates the date time element. |
* @param {!Object} prefs |
@@ -57,10 +86,13 @@ |
loadTimeData.data = data; |
var dateTime = document.createElement('settings-date-time-page'); |
- dateTime.prefs = prefs; |
+ dateTime.prefs = |
+ updatePrefsWithPolicy(prefs, hasPolicy, opt_autoDetectPolicyValue); |
CrSettingsPrefs.setInitialized(); |
document.body.appendChild(dateTime); |
+ cr.webUIListenerCallback( |
+ 'time-zone-auto-detect-policy', hasPolicy, opt_autoDetectPolicyValue); |
return dateTime; |
} |
@@ -110,14 +142,19 @@ |
PolymerTest.clearBody(); |
}); |
- function verifyAutoDetectSetting(autoDetect) { |
- assertEquals(autoDetect, dateTime.$$('settings-dropdown-menu').disabled); |
- assertEquals(autoDetect, dateTime.$.timeZoneAutoDetect.checked); |
+ function verifyAutoDetectSetting(autoDetect, managed) { |
+ assertEquals( |
+ managed || autoDetect, dateTime.$.userTimeZoneSelector.hidden); |
+ if (!managed) |
+ assertEquals(autoDetect, dateTime.$.timeZoneAutoDetect.checked); |
} |
function verifyPolicy(policy) { |
Polymer.dom.flush(); |
- var indicator = dateTime.$$('cr-policy-indicator'); |
+ var indicator = |
+ dateTime.$.timeZoneAutoDetect.$$('cr-policy-pref-indicator'); |
+ if (indicator && indicator.style.display == 'none') |
+ indicator = null; |
if (policy) { |
assertTrue(!!indicator); |
@@ -127,7 +164,7 @@ |
assertFalse(!!indicator); |
} |
- assertEquals(policy, dateTime.$.timeZoneAutoDetect.disabled); |
+ assertEquals(policy, dateTime.$.timeZoneAutoDetect.$.control.disabled); |
} |
function verifyTimeZonesPopulated(populated) { |
@@ -138,6 +175,14 @@ |
assertEquals(1, dropdown.menuOptions.length); |
} |
+ function updatePolicy(dateTime, managed, valueFromPolicy) { |
+ dateTime.prefs = |
+ updatePrefsWithPolicy(dateTime.prefs, managed, valueFromPolicy); |
+ cr.webUIListenerCallback( |
+ 'time-zone-auto-detect-policy', managed, valueFromPolicy); |
+ Polymer.dom.flush(); |
+ } |
+ |
test('auto-detect on', function(done) { |
var prefs = getFakePrefs(); |
dateTime = initializeDateTime(prefs, false); |
@@ -145,13 +190,13 @@ |
assertTrue(dateTimePageReadyCalled); |
assertFalse(getTimeZonesCalled); |
- verifyAutoDetectSetting(true); |
+ verifyAutoDetectSetting(true, false); |
verifyTimeZonesPopulated(false); |
verifyPolicy(false); |
// Disable auto-detect. |
- MockInteractions.tap(dateTime.$.timeZoneAutoDetect); |
- verifyAutoDetectSetting(false); |
+ MockInteractions.tap(dateTime.$.timeZoneAutoDetect.$.control); |
+ verifyAutoDetectSetting(false, false); |
assertTrue(getTimeZonesCalled); |
setTimeout(function() { |
@@ -161,22 +206,21 @@ |
}); |
test('auto-detect off', function(done) { |
- var prefs = getFakePrefs(); |
- prefs.settings.resolve_timezone_by_geolocation.value = false; |
- dateTime = initializeDateTime(prefs, false); |
- cr.webUIListenerCallback('time-zone-auto-detect-policy', false); |
+ dateTime = initializeDateTime(getFakePrefs(), false); |
+ dateTime.set( |
+ 'prefs.settings.resolve_timezone_by_geolocation.value', false); |
assertTrue(dateTimePageReadyCalled); |
assertTrue(getTimeZonesCalled); |
- verifyAutoDetectSetting(false); |
+ verifyAutoDetectSetting(false, false); |
verifyPolicy(false); |
setTimeout(function() { |
verifyTimeZonesPopulated(true); |
// Enable auto-detect. |
- MockInteractions.tap(dateTime.$.timeZoneAutoDetect); |
+ MockInteractions.tap(dateTime.$.timeZoneAutoDetect.$.control); |
verifyAutoDetectSetting(true); |
done(); |
}); |
@@ -184,25 +228,25 @@ |
test('auto-detect forced on', function(done) { |
var prefs = getFakePrefs(); |
- prefs.settings.resolve_timezone_by_geolocation.value = false; |
dateTime = initializeDateTime(prefs, true, true); |
- cr.webUIListenerCallback('time-zone-auto-detect-policy', true, true); |
+ dateTime.set( |
+ 'prefs.settings.resolve_timezone_by_geolocation.value', false); |
assertTrue(dateTimePageReadyCalled); |
assertFalse(getTimeZonesCalled); |
- verifyAutoDetectSetting(true); |
+ verifyAutoDetectSetting(true, true); |
verifyTimeZonesPopulated(false); |
verifyPolicy(true); |
// Cannot disable auto-detect. |
- MockInteractions.tap(dateTime.$.timeZoneAutoDetect); |
- verifyAutoDetectSetting(true); |
+ MockInteractions.tap(dateTime.$.timeZoneAutoDetect.$.control); |
+ verifyAutoDetectSetting(true, true); |
assertFalse(getTimeZonesCalled); |
// Update the policy: force auto-detect off. |
- cr.webUIListenerCallback('time-zone-auto-detect-policy', true, false); |
- verifyAutoDetectSetting(false); |
+ updatePolicy(dateTime, true, false); |
+ verifyAutoDetectSetting(false, true); |
verifyPolicy(true); |
assertTrue(getTimeZonesCalled); |
@@ -215,32 +259,30 @@ |
test('auto-detect forced off', function(done) { |
var prefs = getFakePrefs(); |
dateTime = initializeDateTime(prefs, true, false); |
- cr.webUIListenerCallback('time-zone-auto-detect-policy', true, false); |
assertTrue(dateTimePageReadyCalled); |
assertTrue(getTimeZonesCalled); |
- verifyAutoDetectSetting(false); |
+ verifyAutoDetectSetting(false, true); |
verifyPolicy(true); |
setTimeout(function() { |
verifyTimeZonesPopulated(true); |
// Remove the policy so user's preference takes effect. |
- cr.webUIListenerCallback('time-zone-auto-detect-policy', false); |
- verifyAutoDetectSetting(true); |
+ updatePolicy(dateTime, false); |
+ verifyAutoDetectSetting(true, false); |
verifyPolicy(false); |
// User can disable auto-detect. |
- MockInteractions.tap(dateTime.$.timeZoneAutoDetect); |
- verifyAutoDetectSetting(false); |
+ MockInteractions.tap(dateTime.$.timeZoneAutoDetect.$.control); |
+ verifyAutoDetectSetting(false, false); |
done(); |
}); |
}); |
test('set date and time button', function() { |
dateTime = initializeDateTime(getFakePrefs(), false); |
- cr.webUIListenerCallback('time-zone-auto-detect-policy', false); |
var showSetDateTimeUICalled = false; |
registerMessageCallback('showSetDateTimeUI', null, function() { |