Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1cfea912 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Add TimeZoneProviderStatus' nullness check." into main

parents b4a93db4 4532d361
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -56,12 +56,17 @@ public class ZoneInfoDbTimeZoneProviderEventPreProcessor
        // enables immediate failover to a secondary provider, one that might provide valid IDs for
        // the same location, which should provide better behavior than just ignoring the event.
        if (hasInvalidZones(event)) {
            TimeZoneProviderStatus providerStatus = new TimeZoneProviderStatus.Builder(
                    event.getTimeZoneProviderStatus())
            TimeZoneProviderStatus providerStatus = event.getTimeZoneProviderStatus();
            TimeZoneProviderStatus.Builder providerStatusBuilder;
            if (providerStatus != null) {
                providerStatusBuilder = new TimeZoneProviderStatus.Builder(providerStatus);
            } else {
                providerStatusBuilder = new TimeZoneProviderStatus.Builder();
            }
            return TimeZoneProviderEvent.createUncertainEvent(event.getCreationElapsedMillis(),
                    providerStatusBuilder
                            .setTimeZoneResolutionOperationStatus(OPERATION_STATUS_FAILED)
                    .build();
            return TimeZoneProviderEvent.createUncertainEvent(
                    event.getCreationElapsedMillis(), providerStatus);
                            .build());
        }

        return event;
+38 −13
Original line number Diff line number Diff line
@@ -39,13 +39,23 @@ public class ZoneInfoDbTimeZoneProviderEventPreProcessorTest {

    private static final long ARBITRARY_TIME_MILLIS = 11223344;

    private final List<String> mNonExistingTimeZones = Arrays.asList(
            "SystemV/HST10", "Atlantic/Atlantis", "EUROPE/LONDON", "Etc/GMT-5:30");
    private final ZoneInfoDbTimeZoneProviderEventPreProcessor mPreProcessor =
            new ZoneInfoDbTimeZoneProviderEventPreProcessor();

    private static final TimeZoneProviderStatus ARBITRARY_TIME_ZONE_PROVIDER_STATUS =
            new TimeZoneProviderStatus.Builder()
                    .setConnectivityDependencyStatus(DEPENDENCY_STATUS_OK)
                    .setLocationDetectionDependencyStatus(DEPENDENCY_STATUS_OK)
                    .setTimeZoneResolutionOperationStatus(OPERATION_STATUS_OK)
                    .build();

    @Test
    public void timeZoneIdsFromZoneInfoDbAreValid() {
        for (String timeZone : TimeZone.getAvailableIDs()) {
            TimeZoneProviderEvent event = timeZoneProviderEvent(timeZone);
            TimeZoneProviderEvent event = timeZoneProviderEvent(timeZone,
                    ARBITRARY_TIME_ZONE_PROVIDER_STATUS);
            assertWithMessage("Time zone %s should be supported", timeZone)
                    .that(mPreProcessor.preProcess(event)).isEqualTo(event);
        }
@@ -53,11 +63,9 @@ public class ZoneInfoDbTimeZoneProviderEventPreProcessorTest {

    @Test
    public void eventWithNonExistingZones_areMappedToUncertainEvent() {
        List<String> nonExistingTimeZones = Arrays.asList(
                "SystemV/HST10", "Atlantic/Atlantis", "EUROPE/LONDON", "Etc/GMT-5:30");

        for (String timeZone : nonExistingTimeZones) {
            TimeZoneProviderEvent event = timeZoneProviderEvent(timeZone);
        for (String timeZone : mNonExistingTimeZones) {
            TimeZoneProviderEvent event = timeZoneProviderEvent(timeZone,
                    ARBITRARY_TIME_ZONE_PROVIDER_STATUS);

            TimeZoneProviderStatus expectedProviderStatus =
                    new TimeZoneProviderStatus.Builder(event.getTimeZoneProviderStatus())
@@ -73,14 +81,31 @@ public class ZoneInfoDbTimeZoneProviderEventPreProcessorTest {
        }
    }

    private static TimeZoneProviderEvent timeZoneProviderEvent(String... timeZoneIds) {
        TimeZoneProviderStatus providerStatus = new TimeZoneProviderStatus.Builder()
                .setLocationDetectionDependencyStatus(DEPENDENCY_STATUS_OK)
                .setConnectivityDependencyStatus(DEPENDENCY_STATUS_OK)
                .setTimeZoneResolutionOperationStatus(OPERATION_STATUS_OK)
    @Test
    public void eventWithNullProviderStatus_areMappedToUncertainEvent() {
        for (String timeZone : mNonExistingTimeZones) {
            TimeZoneProviderEvent eventWithNullStatus = timeZoneProviderEvent(timeZone,
                    /* providerStatus= */ null);

            TimeZoneProviderStatus expectedProviderStatus =
                    new TimeZoneProviderStatus.Builder()
                            .setTimeZoneResolutionOperationStatus(OPERATION_STATUS_FAILED)
                            .build();

            TimeZoneProviderEvent expectedResultEvent =
                    TimeZoneProviderEvent.createUncertainEvent(
                            eventWithNullStatus.getCreationElapsedMillis(),
                            expectedProviderStatus);
            assertWithMessage(timeZone + " with null time zone provider status")
                    .that(mPreProcessor.preProcess(eventWithNullStatus))
                    .isEqualTo(expectedResultEvent);
        }
    }

    private static TimeZoneProviderEvent timeZoneProviderEvent(String timeZoneId,
            TimeZoneProviderStatus providerStatus) {
        TimeZoneProviderSuggestion suggestion = new TimeZoneProviderSuggestion.Builder()
                .setTimeZoneIds(Arrays.asList(timeZoneIds))
                .setTimeZoneIds(Arrays.asList(timeZoneId))
                .setElapsedRealtimeMillis(ARBITRARY_TIME_MILLIS)
                .build();
        return TimeZoneProviderEvent.createSuggestionEvent(