Further status logic tweaks

Change the SettingsUI logic slightly: All other things being equal, pick
the "worst" location dependency status to show. Some renaming and
annotations for clarity.

Also fixes the mocking behavior in the tests around resources, which
were accidentally using the real strings and therefore dependent on real
resource string values. Tests are made more explicit.

Bug: 266921482
Test: atest tests/robotests/src/com/android/settings/datetime/LocationProviderStatusPreferenceControllerTest.java
Change-Id: Ifd96c543dad692884be23bf94e3f1294eed291d5
This commit is contained in:
Neil Fuller
2023-01-26 15:08:06 +00:00
parent fc4f2ce81d
commit 37996acd7c
2 changed files with 80 additions and 62 deletions

View File

@@ -21,6 +21,7 @@ import static android.app.time.DetectorStatusTypes.DETECTOR_STATUS_RUNNING;
import static android.app.time.LocationTimeZoneAlgorithmStatus.PROVIDER_STATUS_IS_CERTAIN;
import static android.app.time.LocationTimeZoneAlgorithmStatus.PROVIDER_STATUS_IS_UNCERTAIN;
import static android.service.timezone.TimeZoneProviderStatus.DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS;
import static android.service.timezone.TimeZoneProviderStatus.DEPENDENCY_STATUS_DEGRADED_BY_SETTINGS;
import static android.service.timezone.TimeZoneProviderStatus.DEPENDENCY_STATUS_OK;
import static com.google.common.truth.Truth.assertThat;
@@ -72,44 +73,9 @@ public class LocationProviderStatusPreferenceControllerTest {
when(mContext.getString(
R.string.location_time_zone_detection_status_summary_blocked_by_settings))
.thenReturn("BBS");
}
@Test
public void testCapabilityStatus() {
LocationProviderStatusPreferenceController controller =
new LocationProviderStatusPreferenceController(mContext, "LPSPC");
TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig(false,
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK,
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
assertThat(controller.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
capabilitiesAndConfig = createCapabilitiesAndConfig(true,
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK,
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
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, DEPENDENCY_STATUS_OK);
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
assertThat(controller.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
capabilitiesAndConfig = createCapabilitiesAndConfig(true,
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS,
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
assertThat(controller.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
when(mContext.getString(
R.string.location_time_zone_detection_status_summary_degraded_by_settings))
.thenReturn("DBS");
}
@Test
@@ -138,6 +104,41 @@ public class LocationProviderStatusPreferenceControllerTest {
PROVIDER_STATUS_IS_UNCERTAIN, DEPENDENCY_STATUS_BLOCKED_BY_SETTINGS);
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
assertThat(controller.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
// Test whether reportable statuses that can still result in the LTZP being "certain" are
// reported.
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_DEGRADED_BY_SETTINGS,
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_OK);
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
assertThat(controller.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_DEGRADED_BY_SETTINGS,
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_DEGRADED_BY_SETTINGS);
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
assertThat(controller.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
capabilitiesAndConfig = createCapabilitiesAndConfig(false,
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_DEGRADED_BY_SETTINGS,
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_CERTAIN, DEPENDENCY_STATUS_OK,
PROVIDER_STATUS_IS_CERTAIN, DEPENDENCY_STATUS_DEGRADED_BY_SETTINGS);
when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig);
assertThat(controller.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.AVAILABLE_UNSEARCHABLE);
}