From babab5cd6aa2ef4551c249aa861f5583b8ddde6f Mon Sep 17 00:00:00 2001 From: Neil Fuller Date: Mon, 19 Aug 2019 20:27:45 +0100 Subject: [PATCH] Simplify APIs exposed for time zone lookups The libcore.timezone APIs may form the basis for some new SystemApis. Before starting that process the API surface is being rationalized to establish the core use cases. Test: Treehugger Bug: 139091367 Change-Id: Ib615976fae76ceb98873a33e1e995542e691c9d0 --- .../settingslib/datetime/ZoneGetter.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java index 99d48d3957b6c..aac7fc3c927a4 100644 --- a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java +++ b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java @@ -34,11 +34,14 @@ import androidx.core.text.TextDirectionHeuristicsCompat; import com.android.settingslib.R; +import libcore.timezone.CountryTimeZones; +import libcore.timezone.CountryTimeZones.TimeZoneMapping; import libcore.timezone.TimeZoneFinder; import org.xmlpull.v1.XmlPullParserException; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -387,7 +390,21 @@ public class ZoneGetter { @VisibleForTesting public List lookupTimeZoneIdsByCountry(String country) { - return TimeZoneFinder.getInstance().lookupTimeZoneIdsByCountry(country); + final CountryTimeZones countryTimeZones = + TimeZoneFinder.getInstance().lookupCountryTimeZones(country); + if (countryTimeZones == null) { + return null; + } + final List mappings = countryTimeZones.getTimeZoneMappings(); + return extractTimeZoneIds(mappings); + } + + private static List extractTimeZoneIds(List timeZoneMappings) { + final List zoneIds = new ArrayList<>(timeZoneMappings.size()); + for (TimeZoneMapping timeZoneMapping : timeZoneMappings) { + zoneIds.add(timeZoneMapping.timeZoneId); + } + return Collections.unmodifiableList(zoneIds); } } }