Tweak status display logic and tests
The existing logic and tests looks incorrect. Tests have been tidied up to reflect real cases. For example, it's not really possible for the provider to report being "blocked", but for it to report it is "certain" at the same time. Bug: 266921482 Test: atest tests/robotests/src/com/android/settings/datetime/LocationProviderStatusPreferenceControllerTest.java Change-Id: I1a0faa44ed7dd09828ff758db9e40f5d5e010ab0
This commit is contained in:
@@ -15,6 +15,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.settings.datetime;
|
package com.android.settings.datetime;
|
||||||
|
|
||||||
|
import static android.service.timezone.TimeZoneProviderStatus.DEPENDENCY_STATUS_OK;
|
||||||
|
|
||||||
import android.app.time.DetectorStatusTypes;
|
import android.app.time.DetectorStatusTypes;
|
||||||
import android.app.time.LocationTimeZoneAlgorithmStatus;
|
import android.app.time.LocationTimeZoneAlgorithmStatus;
|
||||||
import android.app.time.TelephonyTimeZoneAlgorithmStatus;
|
import android.app.time.TelephonyTimeZoneAlgorithmStatus;
|
||||||
@@ -95,22 +97,16 @@ public class LocationProviderStatusPreferenceController
|
|||||||
.getLocationTimeZoneAlgorithmStatus();
|
.getLocationTimeZoneAlgorithmStatus();
|
||||||
TimeZoneProviderStatus primary = status.getPrimaryProviderReportedStatus();
|
TimeZoneProviderStatus primary = status.getPrimaryProviderReportedStatus();
|
||||||
TimeZoneProviderStatus secondary = status.getSecondaryProviderReportedStatus();
|
TimeZoneProviderStatus secondary = status.getSecondaryProviderReportedStatus();
|
||||||
if (primary == null && secondary == null) {
|
if (primary != null && secondary != null) {
|
||||||
return null;
|
if (primary.getLocationDetectionDependencyStatus() == DEPENDENCY_STATUS_OK) {
|
||||||
}
|
return secondary;
|
||||||
|
}
|
||||||
if (primary == null) {
|
|
||||||
return secondary;
|
|
||||||
} else if (secondary == null) {
|
|
||||||
return primary;
|
return primary;
|
||||||
}
|
} else if (primary != null) {
|
||||||
|
return primary;
|
||||||
if (status.getPrimaryProviderStatus()
|
} else {
|
||||||
!= LocationTimeZoneAlgorithmStatus.PROVIDER_STATUS_IS_CERTAIN) {
|
|
||||||
return secondary;
|
return secondary;
|
||||||
}
|
}
|
||||||
|
|
||||||
return primary;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -80,21 +80,23 @@ public class LocationProviderStatusPreferenceControllerTest {
|
|||||||
new LocationProviderStatusPreferenceController(mContext, "LPSPC");
|
new LocationProviderStatusPreferenceController(mContext, "LPSPC");
|
||||||
|
|
||||||
TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
DEPENDENCY_STATUS_OK, DEPENDENCY_STATUS_OK);
|
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK,
|
||||||
|
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
||||||
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
||||||
|
|
||||||
capabilitiesAndConfig = createCapabilitiesAndConfig(true, DEPENDENCY_STATUS_OK,
|
capabilitiesAndConfig = createCapabilitiesAndConfig(true,
|
||||||
DEPENDENCY_STATUS_OK);
|
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK,
|
||||||
|
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
||||||
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
||||||
|
|
||||||
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS,
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
|
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
@@ -102,7 +104,7 @@ public class LocationProviderStatusPreferenceControllerTest {
|
|||||||
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
||||||
|
|
||||||
capabilitiesAndConfig = createCapabilitiesAndConfig(true,
|
capabilitiesAndConfig = createCapabilitiesAndConfig(true,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS,
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
|
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
@@ -124,28 +126,20 @@ public class LocationProviderStatusPreferenceControllerTest {
|
|||||||
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
||||||
|
|
||||||
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS,
|
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_OK);
|
||||||
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
||||||
|
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
||||||
|
|
||||||
|
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
|
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK,
|
||||||
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS);
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
||||||
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
||||||
|
|
||||||
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK,
|
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS);
|
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
|
||||||
|
|
||||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
|
||||||
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
|
||||||
|
|
||||||
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK,
|
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS);
|
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
|
||||||
|
|
||||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
|
||||||
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -154,7 +148,7 @@ public class LocationProviderStatusPreferenceControllerTest {
|
|||||||
new LocationProviderStatusPreferenceController(mContext, "LPSPC");
|
new LocationProviderStatusPreferenceController(mContext, "LPSPC");
|
||||||
|
|
||||||
TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK,
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_OK,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
|
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
@@ -162,7 +156,15 @@ public class LocationProviderStatusPreferenceControllerTest {
|
|||||||
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
||||||
|
|
||||||
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS,
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_OK,
|
||||||
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS);
|
||||||
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
||||||
|
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
||||||
|
|
||||||
|
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
|
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
@@ -170,20 +172,20 @@ public class LocationProviderStatusPreferenceControllerTest {
|
|||||||
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
||||||
|
|
||||||
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_OK,
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS);
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_OK);
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
||||||
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
||||||
|
|
||||||
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_OK,
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS);
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
||||||
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -200,35 +202,36 @@ public class LocationProviderStatusPreferenceControllerTest {
|
|||||||
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
||||||
|
|
||||||
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS,
|
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, null);
|
PROVIDER_STATUS_IS_UNCERTAIN, null);
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
|
||||||
|
|
||||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
|
||||||
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
|
||||||
|
|
||||||
capabilitiesAndConfig = createCapabilitiesAndConfig(false, DEPENDENCY_STATUS_OK, null);
|
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
||||||
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
||||||
|
|
||||||
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, null,
|
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK,
|
||||||
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS);
|
PROVIDER_STATUS_IS_CERTAIN, null);
|
||||||
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
||||||
|
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
|
||||||
|
|
||||||
|
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS,
|
||||||
|
PROVIDER_STATUS_IS_CERTAIN, null);
|
||||||
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
|
|
||||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
||||||
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
||||||
}
|
|
||||||
|
|
||||||
private static TimeZoneCapabilitiesAndConfig createCapabilitiesAndConfig(
|
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
|
||||||
boolean userCanConfigureGeoDetection,
|
PROVIDER_STATUS_IS_CERTAIN, null,
|
||||||
@Nullable @DependencyStatus Integer primaryProviderLocationStatus,
|
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS);
|
||||||
@Nullable @DependencyStatus Integer secondaryProviderLocationStatus) {
|
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
|
||||||
return createCapabilitiesAndConfig(userCanConfigureGeoDetection,
|
|
||||||
PROVIDER_STATUS_IS_CERTAIN, primaryProviderLocationStatus,
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(
|
||||||
PROVIDER_STATUS_IS_CERTAIN, secondaryProviderLocationStatus);
|
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static TimeZoneCapabilitiesAndConfig createCapabilitiesAndConfig(
|
private static TimeZoneCapabilitiesAndConfig createCapabilitiesAndConfig(
|
||||||
|
Reference in New Issue
Block a user