Commit 4ab4bd0c authored by James Cook's avatar James Cook Committed by Commit Bot

chromeos: Always show timezone autodetect method menu in settings

When the user manually selects a timezone we keep showing the
autodetect method menu, but disable it. This makes the UI shift around
less than the old approach, which was to hide the menu.

If the user chooses a custom timezone the menu is disabled and it
shows the default (IP address) label. This means the label may switch
from the WiFi option to the IP address option if the user toggles
back and forth between the "Set automatically" and "Choose from list"
radio buttoms. Our PM Jesse is OK with this.

If policy disables automatic timezones the menu is disabled and the
label is 'Automatic time zone detection is disabled'.

Before:
- automatic: https://screenshot.googleplex.com/TsyNYwjg0HS
- manual: https://screenshot.googleplex.com/1eTPHgBqOwF
- policy: https://screenshot.googleplex.com/9ZWzTHaawra

After:
- automatic doesn't change
- manual: https://screenshot.googleplex.com/4bf2aG4FwJt
- policy: https://screenshot.googleplex.com/KqPh3q7pwQT

Bug: 997118
Test: updated browser_tests
Change-Id: Ieb5f3d4df887082e981518bddd895ecd8bbf5fd2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1769234Reviewed-by: default avatarAlexander Alekseev <alemate@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: James Cook <jamescook@chromium.org>
Cr-Commit-Position: refs/heads/master@{#691760}
parent cf1c693e
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<settings-dropdown-menu id="timeZoneResolveMethodDropdown" <settings-dropdown-menu id="timeZoneResolveMethodDropdown"
pref="{{prefs.generated.resolve_timezone_by_geolocation_method_short}}" pref="{{prefs.generated.resolve_timezone_by_geolocation_method_short}}"
label="$i18n{selectTimeZoneResolveMethod}" label="$i18n{selectTimeZoneResolveMethod}"
hidden="[[!prefs.generated.resolve_timezone_by_geolocation_on_off.value]]" disabled="[[!prefs.generated.resolve_timezone_by_geolocation_on_off.value]]"
menu-options="[[getTimeZoneResolveMethodsList_( menu-options="[[getTimeZoneResolveMethodsList_(
prefs.generated.resolve_timezone_by_geolocation_method_short)]]"> prefs.generated.resolve_timezone_by_geolocation_method_short)]]">
</settings-dropdown-menu> </settings-dropdown-menu>
......
...@@ -27,22 +27,26 @@ Polymer({ ...@@ -27,22 +27,26 @@ Polymer({
*/ */
getTimeZoneResolveMethodsList_: function() { getTimeZoneResolveMethodsList_: function() {
const result = []; const result = [];
const pref =
this.getPref('generated.resolve_timezone_by_geolocation_method_short');
// Make sure current value is in the list, even if it is not // Make sure current value is in the list, even if it is not
// user-selectable. // user-selectable.
if (this.getPref('generated.resolve_timezone_by_geolocation_method_short') if (pref.value == settings.TimeZoneAutoDetectMethod.DISABLED) {
.value == settings.TimeZoneAutoDetectMethod.DISABLED) { // If disabled by policy, show the 'Automatic timezone disabled' label.
result.push({ // Otherwise, just show the default string, since the control will be
value: settings.TimeZoneAutoDetectMethod.DISABLED, // disabled as well.
name: loadTimeData.getString('setTimeZoneAutomaticallyDisabled') const label = pref.controlledBy ?
}); loadTimeData.getString('setTimeZoneAutomaticallyDisabled') :
loadTimeData.getString('setTimeZoneAutomaticallyIpOnlyDefault');
result.push(
{value: settings.TimeZoneAutoDetectMethod.DISABLED, name: label});
} }
result.push({ result.push({
value: settings.TimeZoneAutoDetectMethod.IP_ONLY, value: settings.TimeZoneAutoDetectMethod.IP_ONLY,
name: loadTimeData.getString('setTimeZoneAutomaticallyIpOnlyDefault') name: loadTimeData.getString('setTimeZoneAutomaticallyIpOnlyDefault')
}); });
if (this.getPref('generated.resolve_timezone_by_geolocation_method_short') if (pref.value ==
.value ==
settings.TimeZoneAutoDetectMethod.SEND_WIFI_ACCESS_POINTS) { settings.TimeZoneAutoDetectMethod.SEND_WIFI_ACCESS_POINTS) {
result.push({ result.push({
value: settings.TimeZoneAutoDetectMethod.SEND_WIFI_ACCESS_POINTS, value: settings.TimeZoneAutoDetectMethod.SEND_WIFI_ACCESS_POINTS,
......
...@@ -265,12 +265,14 @@ suite('settings-date-time-page', function() { ...@@ -265,12 +265,14 @@ suite('settings-date-time-page', function() {
test('auto-detect on', function(done) { test('auto-detect on', function(done) {
const prefs = getFakePrefs(); const prefs = getFakePrefs();
dateTime = initializeDateTime(prefs, false); dateTime = initializeDateTime(prefs, false);
const resolveMethodDropdown = dateTime.$$('#timeZoneResolveMethodDropdown');
setTimeout(function() { setTimeout(function() {
checkDateTimePageReadyCalled(); checkDateTimePageReadyCalled();
assertFalse(getTimeZonesCalled); assertFalse(getTimeZonesCalled);
verifyAutoDetectSetting(true, false); verifyAutoDetectSetting(true, false);
assertFalse(resolveMethodDropdown.disabled);
verifyTimeZonesPopulated(false); verifyTimeZonesPopulated(false);
clickDisableAutoDetect(dateTime); clickDisableAutoDetect(dateTime);
...@@ -279,6 +281,7 @@ suite('settings-date-time-page', function() { ...@@ -279,6 +281,7 @@ suite('settings-date-time-page', function() {
setTimeout(function() { setTimeout(function() {
verifyAutoDetectSetting(false, false); verifyAutoDetectSetting(false, false);
assertTrue(resolveMethodDropdown.disabled);
assertTrue(getTimeZonesCalled); assertTrue(getTimeZonesCalled);
verifyTimeZonesPopulated(true); verifyTimeZonesPopulated(true);
...@@ -288,6 +291,8 @@ suite('settings-date-time-page', function() { ...@@ -288,6 +291,8 @@ suite('settings-date-time-page', function() {
test('auto-detect off', function(done) { test('auto-detect off', function(done) {
dateTime = initializeDateTime(getFakePrefs(), false); dateTime = initializeDateTime(getFakePrefs(), false);
const resolveMethodDropdown = dateTime.$$('#timeZoneResolveMethodDropdown');
setTimeout(function() { setTimeout(function() {
dateTime.set( dateTime.set(
'prefs.generated.resolve_timezone_by_geolocation_on_off.value', 'prefs.generated.resolve_timezone_by_geolocation_on_off.value',
...@@ -302,6 +307,7 @@ suite('settings-date-time-page', function() { ...@@ -302,6 +307,7 @@ suite('settings-date-time-page', function() {
assertTrue(getTimeZonesCalled); assertTrue(getTimeZonesCalled);
verifyAutoDetectSetting(false, false); verifyAutoDetectSetting(false, false);
assertTrue(resolveMethodDropdown.disabled);
verifyTimeZonesPopulated(true); verifyTimeZonesPopulated(true);
clickEnableAutoDetect(dateTime); clickEnableAutoDetect(dateTime);
...@@ -309,6 +315,7 @@ suite('settings-date-time-page', function() { ...@@ -309,6 +315,7 @@ suite('settings-date-time-page', function() {
setTimeout(function() { setTimeout(function() {
verifyAutoDetectSetting(true); verifyAutoDetectSetting(true);
assertFalse(resolveMethodDropdown.disabled);
done(); done();
}); });
}); });
...@@ -316,12 +323,14 @@ suite('settings-date-time-page', function() { ...@@ -316,12 +323,14 @@ suite('settings-date-time-page', function() {
test('auto-detect forced on', function(done) { test('auto-detect forced on', function(done) {
const prefs = getFakePrefs(); const prefs = getFakePrefs();
dateTime = initializeDateTime(prefs, true, true); dateTime = initializeDateTime(prefs, true, true);
const resolveMethodDropdown = dateTime.$$('#timeZoneResolveMethodDropdown');
setTimeout(function() { setTimeout(function() {
checkDateTimePageReadyCalled(); checkDateTimePageReadyCalled();
assertFalse(getTimeZonesCalled); assertFalse(getTimeZonesCalled);
verifyAutoDetectSetting(true, true); verifyAutoDetectSetting(true, true);
assertFalse(resolveMethodDropdown.disabled);
verifyTimeZonesPopulated(false); verifyTimeZonesPopulated(false);
// Cannot disable auto-detect. // Cannot disable auto-detect.
...@@ -330,6 +339,7 @@ suite('settings-date-time-page', function() { ...@@ -330,6 +339,7 @@ suite('settings-date-time-page', function() {
setTimeout(function() { setTimeout(function() {
verifyAutoDetectSetting(true, true); verifyAutoDetectSetting(true, true);
assertFalse(resolveMethodDropdown.disabled);
assertFalse(getTimeZonesCalled); assertFalse(getTimeZonesCalled);
// Update the policy: force auto-detect off. // Update the policy: force auto-detect off.
...@@ -337,6 +347,7 @@ suite('settings-date-time-page', function() { ...@@ -337,6 +347,7 @@ suite('settings-date-time-page', function() {
}); });
setTimeout(function() { setTimeout(function() {
verifyAutoDetectSetting(false, true); verifyAutoDetectSetting(false, true);
assertTrue(resolveMethodDropdown.disabled);
assertTrue(getTimeZonesCalled); assertTrue(getTimeZonesCalled);
verifyTimeZonesPopulated(true); verifyTimeZonesPopulated(true);
...@@ -347,12 +358,14 @@ suite('settings-date-time-page', function() { ...@@ -347,12 +358,14 @@ suite('settings-date-time-page', function() {
test('auto-detect forced off', function(done) { test('auto-detect forced off', function(done) {
const prefs = getFakePrefs(); const prefs = getFakePrefs();
dateTime = initializeDateTime(prefs, true, false); dateTime = initializeDateTime(prefs, true, false);
const resolveMethodDropdown = dateTime.$$('#timeZoneResolveMethodDropdown');
setTimeout(function() { setTimeout(function() {
checkDateTimePageReadyCalled(); checkDateTimePageReadyCalled();
assertTrue(getTimeZonesCalled); assertTrue(getTimeZonesCalled);
verifyAutoDetectSetting(false, true); verifyAutoDetectSetting(false, true);
assertTrue(resolveMethodDropdown.disabled);
verifyTimeZonesPopulated(true); verifyTimeZonesPopulated(true);
// Remove the policy so user's preference takes effect. // Remove the policy so user's preference takes effect.
...@@ -361,6 +374,7 @@ suite('settings-date-time-page', function() { ...@@ -361,6 +374,7 @@ suite('settings-date-time-page', function() {
setTimeout(function() { setTimeout(function() {
verifyAutoDetectSetting(true, false); verifyAutoDetectSetting(true, false);
assertFalse(resolveMethodDropdown.disabled);
// User can disable auto-detect. // User can disable auto-detect.
clickDisableAutoDetect(dateTime); clickDisableAutoDetect(dateTime);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment