From 6be6c5820639c1f7ed60dd2a03dab80cbb1b5afb Mon Sep 17 00:00:00 2001 From: Victor Chang Date: Thu, 29 Mar 2018 18:52:09 +0100 Subject: [PATCH] Remove the feature flag and dead code for the old time zone picker Created b/77277084 to help Android variants to migrate from old time zone data source, i.e. ZoneGetter.getZonesList, to new time zone source, e.g. TimeZoneFinder. Bug: 72376227 Test: m RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.datetime Test: manual Change-Id: I332077a67cc9f9c83b298e25feea71463e1ee98b --- res/drawable-hdpi/ic_menu_3d_globe.png | Bin 3810 -> 0 bytes res/drawable-mdpi/ic_menu_3d_globe.png | Bin 2376 -> 0 bytes res/drawable-xhdpi/ic_menu_3d_globe.png | Bin 5986 -> 0 bytes res/values/strings.xml | 8 - res/xml/date_time_prefs.xml | 2 +- .../TimeZonePreferenceController.java | 8 - .../android/settings/datetime/ZonePicker.java | 306 ------------------ .../com/android/settings/ZonePickerTest.java | 71 ---- .../datetime/ZonePickerComparatorTest.java | 109 ------- .../settings/datetime/ZonePickerTest.java | 66 ---- 10 files changed, 1 insertion(+), 569 deletions(-) delete mode 100644 res/drawable-hdpi/ic_menu_3d_globe.png delete mode 100644 res/drawable-mdpi/ic_menu_3d_globe.png delete mode 100644 res/drawable-xhdpi/ic_menu_3d_globe.png delete mode 100644 src/com/android/settings/datetime/ZonePicker.java delete mode 100644 tests/robotests/src/com/android/settings/ZonePickerTest.java delete mode 100644 tests/robotests/src/com/android/settings/datetime/ZonePickerComparatorTest.java delete mode 100644 tests/robotests/src/com/android/settings/datetime/ZonePickerTest.java diff --git a/res/drawable-hdpi/ic_menu_3d_globe.png b/res/drawable-hdpi/ic_menu_3d_globe.png deleted file mode 100644 index 1b55f0913fc34fa67004af6e600eb9ed4bf4da0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3810 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 Dc754( diff --git a/res/drawable-mdpi/ic_menu_3d_globe.png b/res/drawable-mdpi/ic_menu_3d_globe.png deleted file mode 100644 index 6755d5e6f2d1516dd343d2faffaf642b4db01e78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2376 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 diff --git a/res/drawable-xhdpi/ic_menu_3d_globe.png b/res/drawable-xhdpi/ic_menu_3d_globe.png deleted file mode 100644 index 1fda0a26bf04e11a01d123a2e8eed12486543aed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5986 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 qr=xFxt&ansX#WqgXn5ESearch region Region - - Time Zone - - Time zones in %1$s Select UTC offset - - Sort alphabetically - - Sort by time zone %1$s starts on %2$s. diff --git a/res/xml/date_time_prefs.xml b/res/xml/date_time_prefs.xml index 511b39fea48..edda1ba66d9 100644 --- a/res/xml/date_time_prefs.xml +++ b/res/xml/date_time_prefs.xml @@ -56,7 +56,7 @@ settings:userRestriction="no_config_date_time" /> > sortedList = ZoneGetter.getZonesList(context); - Collections.sort(sortedList, comparator); - final SimpleAdapter adapter = new SimpleAdapter(context, - sortedList, - layoutId, - from, - to); - adapter.setViewBinder(new TimeZoneViewBinder()); - return adapter; - } - - private static class TimeZoneViewBinder implements SimpleAdapter.ViewBinder { - - /** - * Set the text to the given {@link CharSequence} as is, instead of calling toString, so - * that additional information stored in the CharSequence is, like spans added to a - * {@link android.text.SpannableString} are preserved. - */ - @Override - public boolean setViewValue(View view, Object data, String textRepresentation) { - TextView textView = (TextView) view; - textView.setText((CharSequence) data); - return true; - } - } - - /** - * Searches {@link TimeZone} from the given {@link SimpleAdapter} object, and returns - * the index for the TimeZone. - * - * @param adapter SimpleAdapter constructed by - * {@link #constructTimezoneAdapter(Context, boolean)}. - * @param tz TimeZone to be searched. - * @return Index for the given TimeZone. -1 when there's no corresponding list item. - * returned. - */ - public static int getTimeZoneIndex(SimpleAdapter adapter, TimeZone tz) { - final String defaultId = tz.getID(); - final int listSize = adapter.getCount(); - for (int i = 0; i < listSize; i++) { - // Using HashMap induces unnecessary warning. - final HashMap map = (HashMap)adapter.getItem(i); - final String id = (String)map.get(ZoneGetter.KEY_ID); - if (defaultId.equals(id)) { - // If current timezone is in this list, move focus to it - return i; - } - } - return -1; - } - - @Override - public int getMetricsCategory() { - return MetricsProto.MetricsEvent.ZONE_PICKER; - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - - final Activity activity = getActivity(); - mTimezoneSortedAdapter = constructTimezoneAdapter(activity, false); - mAlphabeticalAdapter = constructTimezoneAdapter(activity, true); - - // Sets the adapter - setSorting(true); - setHasOptionsMenu(true); - activity.setTitle(R.string.date_time_set_timezone); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mVisibilityLoggerMixin = new VisibilityLoggerMixin(getMetricsCategory(), - FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider()); - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - final View view = super.onCreateView(inflater, container, savedInstanceState); - final ListView list = view.findViewById(android.R.id.list); - prepareCustomPreferencesList(list); - return view; - } - - @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - menu.add(0, MENU_ALPHABETICAL, 0, R.string.zone_list_menu_sort_alphabetically) - .setIcon(android.R.drawable.ic_menu_sort_alphabetically); - menu.add(0, MENU_TIMEZONE, 0, R.string.zone_list_menu_sort_by_timezone) - .setIcon(R.drawable.ic_menu_3d_globe); - super.onCreateOptionsMenu(menu, inflater); - } - - @Override - public void onPrepareOptionsMenu(Menu menu) { - if (mSortedByTimezone) { - menu.findItem(MENU_TIMEZONE).setVisible(false); - menu.findItem(MENU_ALPHABETICAL).setVisible(true); - } else { - menu.findItem(MENU_TIMEZONE).setVisible(true); - menu.findItem(MENU_ALPHABETICAL).setVisible(false); - } - } - - @Override - public void onResume() { - super.onResume(); - mVisibilityLoggerMixin.onResume(); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - - case MENU_TIMEZONE: - setSorting(true); - return true; - - case MENU_ALPHABETICAL: - setSorting(false); - return true; - - default: - return false; - } - } - - static void prepareCustomPreferencesList(ListView list) { - list.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); - list.setClipToPadding(false); - list.setDivider(null); - } - - private void setSorting(boolean sortByTimezone) { - final SimpleAdapter adapter = - sortByTimezone ? mTimezoneSortedAdapter : mAlphabeticalAdapter; - setListAdapter(adapter); - mSortedByTimezone = sortByTimezone; - final int defaultIndex = getTimeZoneIndex(adapter, TimeZone.getDefault()); - if (defaultIndex >= 0) { - setSelection(defaultIndex); - } - } - - @Override - public void onListItemClick(ListView listView, View v, int position, long id) { - // Ignore extra clicks - if (!isResumed()) return; - final Map map = (Map)listView.getItemAtPosition(position); - final String tzId = (String) map.get(ZoneGetter.KEY_ID); - - // Update the system timezone value - final Activity activity = getActivity(); - final AlarmManager alarm = (AlarmManager) activity.getSystemService(Context.ALARM_SERVICE); - alarm.setTimeZone(tzId); - - getActivity().onBackPressed(); - - } - - @Override - public void onPause() { - super.onPause(); - mVisibilityLoggerMixin.onPause(); - } - - @VisibleForTesting - static class MyComparator implements Comparator> { - private final Collator mCollator; - private String mSortingKey; - private boolean mSortedByName; - - public MyComparator(String sortingKey) { - mCollator = Collator.getInstance(); - mSortingKey = sortingKey; - mSortedByName = ZoneGetter.KEY_DISPLAY_LABEL.equals(sortingKey); - } - - public void setSortingKey(String sortingKey) { - mSortingKey = sortingKey; - mSortedByName = ZoneGetter.KEY_DISPLAY_LABEL.equals(sortingKey); - } - - public int compare(Map map1, Map map2) { - Object value1 = map1.get(mSortingKey); - Object value2 = map2.get(mSortingKey); - - /* - * This should never happen, but just in-case, put non-comparable - * items at the end. - */ - if (!isComparable(value1)) { - return isComparable(value2) ? 1 : 0; - } else if (!isComparable(value2)) { - return -1; - } - - if (mSortedByName) { - return mCollator.compare(value1, value2); - } else { - return ((Comparable) value1).compareTo(value2); - } - } - - private boolean isComparable(Object value) { - return (value != null) && (value instanceof Comparable); - } - } -} diff --git a/tests/robotests/src/com/android/settings/ZonePickerTest.java b/tests/robotests/src/com/android/settings/ZonePickerTest.java deleted file mode 100644 index 7816a580c06..00000000000 --- a/tests/robotests/src/com/android/settings/ZonePickerTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.settings; - -import static com.google.common.truth.Truth.assertThat; - -import android.text.Spanned; -import android.text.style.TtsSpan; -import android.view.ViewGroup; -import android.widget.FrameLayout; -import android.widget.SimpleAdapter; -import android.widget.TextView; - -import com.android.settings.datetime.ZonePicker; -import com.android.settings.testutils.SettingsRobolectricTestRunner; -import com.android.settings.testutils.shadow.ShadowLibcoreTimeZoneNames; -import com.android.settings.testutils.shadow.ShadowTimeZoneNames; -import com.android.settings.testutils.shadow.ShadowZoneGetterData; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.Config; - -@RunWith(SettingsRobolectricTestRunner.class) -@Config(shadows = { - ShadowLibcoreTimeZoneNames.class, - ShadowLibcoreTimeZoneNames.ShadowZoneStringsCache.class, - ShadowTimeZoneNames.class, - ShadowZoneGetterData.class, -} -) -public class ZonePickerTest { - - @Test - public void testConstructTimeZoneAdapter() { - final SimpleAdapter adapter = - ZonePicker.constructTimezoneAdapter(RuntimeEnvironment.application, true); - assertThat(adapter).isNotNull(); - - ViewGroup parent = new FrameLayout(RuntimeEnvironment.application); - ViewGroup convertView = new FrameLayout(RuntimeEnvironment.application); - TextView text1 = new TextView(RuntimeEnvironment.application); - text1.setId(android.R.id.text1); - convertView.addView(text1); - TextView text2 = new TextView(RuntimeEnvironment.application); - text2.setId(android.R.id.text2); - convertView.addView(text2); - - adapter.getView(0, convertView, parent); - final CharSequence text = text2.getText(); - assertThat(text).isInstanceOf(Spanned.class); - final TtsSpan[] spans = ((Spanned) text).getSpans(0, text.length(), TtsSpan.class); - // GMT offset label should have TTS spans - assertThat(spans.length).isGreaterThan(0); - } -} diff --git a/tests/robotests/src/com/android/settings/datetime/ZonePickerComparatorTest.java b/tests/robotests/src/com/android/settings/datetime/ZonePickerComparatorTest.java deleted file mode 100644 index 5e07308bece..00000000000 --- a/tests/robotests/src/com/android/settings/datetime/ZonePickerComparatorTest.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.android.settings.datetime; - -import static com.google.common.truth.Truth.assertThat; - -import com.android.settings.testutils.SettingsRobolectricTestRunner; -import com.android.settingslib.datetime.ZoneGetter; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.TimeZone; - -@RunWith(SettingsRobolectricTestRunner.class) -public class ZonePickerComparatorTest { - - // Strings in Chinese are sorted by alphabet order of their Pinyin. - // "伦敦" -> "lundun"; "纽约" -> "niuyue"; "悉尼" -> "xini" - // "开罗" -> "kailuo"; "雅典" -> "yadian"; "上海" -> "shanghai" - private static final String[] TEST_CHINESE_NAME = - {"伦敦", "纽约", "悉尼", "开罗", "雅典", "上海"}; - private static final String[] ORDERED_CHINESE_NAME = - {"开罗", "伦敦", "纽约", "上海", "悉尼", "雅典"}; - - private static final String[] TEST_ENGLISH_NAME = - {"London", "New York", "Sydney", "Cairo", "Athens", "Shanghai"}; - private static final String[] ORDERED_ENGLISH_NAME = - {"Athens", "Cairo", "London", "New York", "Shanghai", "Sydney"}; - - private static final Locale INIT_LOCALE = Locale.getDefault(); - - private Map> mTestDataMap; - private List> mTestList; - - @Before - public void setUp() { - mTestDataMap = new HashMap<>(); - mTestDataMap.put("zh_CN", Arrays.asList(TEST_CHINESE_NAME)); - mTestDataMap.put("en_US", Arrays.asList(TEST_ENGLISH_NAME)); - } - - @After - public void tearDown() { - Locale.setDefault(INIT_LOCALE); - } - - @Test - public void testComparator_sortChineseString() { - String sortKey = ZoneGetter.KEY_DISPLAY_LABEL; - mTestList = getMockZonesList("zh_CN"); - Locale.setDefault(new Locale("zh")); - mTestList.sort(new ZonePicker.MyComparator(sortKey)); - for (int i = 0; i < mTestList.size(); i++) { - assertThat(mTestList.get(i).get(sortKey).toString()).isEqualTo(ORDERED_CHINESE_NAME[i]); - } - } - - @Test - public void testComparator_sortEnglishString() { - String sortKey = ZoneGetter.KEY_DISPLAY_LABEL; - mTestList = getMockZonesList("en_US"); - Locale.setDefault(new Locale("en")); - mTestList.sort(new ZonePicker.MyComparator(sortKey)); - for (int i = 0; i < mTestList.size(); i++) { - assertThat(mTestList.get(i).get(sortKey).toString()).isEqualTo(ORDERED_ENGLISH_NAME[i]); - } - } - - @Test - public void testComparator_sortInteger() { - String sortKey = ZoneGetter.KEY_OFFSET; - // TestList of any locale can be selected to test integer sorting. - mTestList = getMockZonesList("en_US"); - mTestList.sort(new ZonePicker.MyComparator(sortKey)); - for (int i = 0; i < mTestList.size(); i++) { - assertThat(mTestList.get(i).get(sortKey)).isEqualTo(i); - } - } - - private List> getMockZonesList(String locale) { - List> zones = new ArrayList<>(); - List testData = mTestDataMap.get(locale); - TimeZone tz = TimeZone.getDefault(); - int testSize = testData.size(); - for (int i = 0; i < testSize; i++) { - zones.add(createMockDisplayEntry(tz, "GMT+08:00", testData.get(i), testSize - i - 1)); - } - return zones; - } - - private Map createMockDisplayEntry( - TimeZone tz, CharSequence gmtOffsetText, CharSequence displayName, int offsetMillis) { - Map map = new HashMap<>(); - map.put(ZoneGetter.KEY_ID, tz.getID()); - map.put(ZoneGetter.KEY_DISPLAYNAME, displayName.toString()); - map.put(ZoneGetter.KEY_DISPLAY_LABEL, displayName); - map.put(ZoneGetter.KEY_GMT, gmtOffsetText.toString()); - map.put(ZoneGetter.KEY_OFFSET_LABEL, gmtOffsetText); - map.put(ZoneGetter.KEY_OFFSET, offsetMillis); - return map; - } -} diff --git a/tests/robotests/src/com/android/settings/datetime/ZonePickerTest.java b/tests/robotests/src/com/android/settings/datetime/ZonePickerTest.java deleted file mode 100644 index e6a9ca76d80..00000000000 --- a/tests/robotests/src/com/android/settings/datetime/ZonePickerTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.datetime; - -import static org.mockito.ArgumentMatchers.nullable; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; - -import android.app.Activity; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.ViewGroup; - -import com.android.settings.testutils.SettingsRobolectricTestRunner; -import com.android.settings.testutils.shadow.ShadowZoneGetter; -import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.Robolectric; -import org.robolectric.annotation.Config; -import org.robolectric.util.ReflectionHelpers; - -@RunWith(SettingsRobolectricTestRunner.class) -public class ZonePickerTest { - - private Activity mActivity; - private ZonePicker mZonePicker; - - @Before - public void setUp() { - mActivity = Robolectric.setupActivity(Activity.class); - mZonePicker = spy(ZonePicker.class); - ReflectionHelpers.setField(mZonePicker, "mVisibilityLoggerMixin", - mock(VisibilityLoggerMixin.class)); - } - - @Test - @Config(shadows = ShadowZoneGetter.class) - public void testLaunch() { - // Shouldn't crash - mActivity.getFragmentManager().beginTransaction().add(mZonePicker, "test_tag").commit(); - - // Should render - verify(mZonePicker).onCreateView( - nullable(LayoutInflater.class), - nullable(ViewGroup.class), - nullable(Bundle.class)); - } -}