Enable new time zone picker
- Change the UI test due to UI changes
Bug: 73952488
Test: m RunSettingsRoboTest
Test: atest SettingsUITests:ZonePickerSettingsTest
Change-Id: I6d5716347e9debf429b757f1edd4118e86b70fab
(cherry picked from commit 335c0621d2
)
This commit is contained in:
@@ -19,11 +19,11 @@ package com.android.settings.datetime;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
|
|
||||||
import android.util.FeatureFlagUtils;
|
import android.util.FeatureFlagUtils;
|
||||||
|
|
||||||
import com.android.settings.core.FeatureFlags;
|
import com.android.settings.core.FeatureFlags;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.datetime.timezone.ZonePicker;
|
import com.android.settings.datetime.timezone.TimeZoneSettings;
|
||||||
import com.android.settingslib.RestrictedPreference;
|
import com.android.settingslib.RestrictedPreference;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
import com.android.settingslib.datetime.ZoneGetter;
|
import com.android.settingslib.datetime.ZoneGetter;
|
||||||
@@ -51,7 +51,7 @@ public class TimeZonePreferenceController extends AbstractPreferenceController
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mZonePickerV2) {
|
if (mZonePickerV2) {
|
||||||
preference.setFragment(ZonePicker.class.getName());
|
preference.setFragment(TimeZoneSettings.class.getName());
|
||||||
}
|
}
|
||||||
preference.setSummary(getTimeZoneOffsetAndName());
|
preference.setSummary(getTimeZoneOffsetAndName());
|
||||||
if( !((RestrictedPreference) preference).isDisabledByAdmin()) {
|
if( !((RestrictedPreference) preference).isDisabledByAdmin()) {
|
||||||
|
@@ -32,8 +32,6 @@ import android.support.test.uiautomator.UiSelector;
|
|||||||
import android.support.test.uiautomator.Until;
|
import android.support.test.uiautomator.Until;
|
||||||
import android.system.helpers.SettingsHelper;
|
import android.system.helpers.SettingsHelper;
|
||||||
import android.system.helpers.SettingsHelper.SettingsType;
|
import android.system.helpers.SettingsHelper.SettingsType;
|
||||||
import android.widget.ListView;
|
|
||||||
import android.widget.Spinner;
|
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -102,16 +100,16 @@ public class ZonePickerSettingsTest {
|
|||||||
// Test 2 time zones with no DST
|
// Test 2 time zones with no DST
|
||||||
@Test
|
@Test
|
||||||
public void testSelectReykjavik() throws Exception {
|
public void testSelectReykjavik() throws Exception {
|
||||||
testSelectTimeZone("Iceland", "Reykjavik", "GMT+00:00", "Atlantic/Reykjavik");
|
testSelectTimeZone("Iceland", "Reykjavik", "GMT+00:00", "Atlantic/Reykjavik", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSelectPhoenix() throws Exception {
|
public void testSelectPhoenix() throws Exception {
|
||||||
testSelectTimeZone("United States", "Phoenix", "GMT-07:00", "America/Phoenix");
|
testSelectTimeZone("United States", "Phoenix", "GMT-07:00", "America/Phoenix", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void testSelectTimeZone(String region, String timezone, String expectedTimeZoneOffset,
|
private void testSelectTimeZone(String region, String timezone, String expectedTimeZoneOffset,
|
||||||
String expectedTimeZoneId) throws Exception {
|
String expectedTimeZoneId, boolean assumeOneTimeZoneInRegion) throws Exception {
|
||||||
mHelper.setIntSetting(SettingsType.GLOBAL, Settings.Global.AUTO_TIME_ZONE, 0);
|
mHelper.setIntSetting(SettingsType.GLOBAL, Settings.Global.AUTO_TIME_ZONE, 0);
|
||||||
|
|
||||||
SettingsHelper.launchSettingsPage(
|
SettingsHelper.launchSettingsPage(
|
||||||
@@ -121,16 +119,21 @@ public class ZonePickerSettingsTest {
|
|||||||
assertTrue(selectTimeZone.isEnabled());
|
assertTrue(selectTimeZone.isEnabled());
|
||||||
selectTimeZone.click();
|
selectTimeZone.click();
|
||||||
|
|
||||||
// Select region in the dropdown list
|
wait(By.text("Region")).click();
|
||||||
selectScrollableItem(selectDropDownInSpinner(By.clazz(Spinner.class)),
|
// Speed-up the test by searching with the first 2 characters of the region name
|
||||||
new UiSelector().textContains(region))
|
wait(By.res("android", "search_src_text")).setText(region.substring(0, 2));
|
||||||
|
// Select region in the list
|
||||||
|
selectItemInList(new UiSelector().textContains(region))
|
||||||
.click();
|
.click();
|
||||||
|
|
||||||
// Select time zone
|
// Only select time zone explicitly if there are more than one time zones in a region
|
||||||
selectScrollableItem(selectTimeZoneList(),
|
if (!assumeOneTimeZoneInRegion) {
|
||||||
new UiSelector().textContains(timezone))
|
wait(By.text("Time Zone"));
|
||||||
.click();
|
selectItemInList(new UiSelector().textContains(timezone))
|
||||||
|
.click();
|
||||||
|
}
|
||||||
|
|
||||||
|
mDevice.pressBack();
|
||||||
// The select button should include the GMT offset in the summary
|
// The select button should include the GMT offset in the summary
|
||||||
BySelector summarySelector = By.res("android:id/summary");
|
BySelector summarySelector = By.res("android:id/summary");
|
||||||
UiObject2 selectedTimeZone = selectTimeZone.findObject(summarySelector);
|
UiObject2 selectedTimeZone = selectTimeZone.findObject(summarySelector);
|
||||||
@@ -162,21 +165,10 @@ public class ZonePickerSettingsTest {
|
|||||||
assertEquals(expectedTimeZoneId, TimeZone.getDefault().getID());
|
assertEquals(expectedTimeZoneId, TimeZone.getDefault().getID());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private UiObject selectItemInList(UiSelector childSelector) throws UiObjectNotFoundException {
|
||||||
* Perform click on {@link Spinner} and return the pop-up dropdown list.
|
UiScrollable recyclerView = new UiScrollable(
|
||||||
* @return UiScrollable representing the pop-up dropdown after clicking on the spinner
|
new UiSelector().resourceId(SETTINGS_PACKAGE + ":id/recycler_view"));
|
||||||
*/
|
return selectScrollableItem(recyclerView, childSelector);
|
||||||
private UiScrollable selectDropDownInSpinner(BySelector spinnerSelector)
|
|
||||||
throws UiObjectNotFoundException {
|
|
||||||
UiObject2 spinner = wait(spinnerSelector);
|
|
||||||
spinner.click();
|
|
||||||
|
|
||||||
UiSelector dropDownSelector = new UiSelector().className(ListView.class);
|
|
||||||
return new UiScrollable(dropDownSelector);
|
|
||||||
}
|
|
||||||
|
|
||||||
private UiScrollable selectTimeZoneList() {
|
|
||||||
return new UiScrollable(new UiSelector().resourceId(SETTINGS_PACKAGE + ":id/tz_list"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user