Cache summary text to avoid flickering

Bug: 231927706
Test: build, flash, run unit test, then test manually.
Change-Id: Ia0585302c5cf86cd6035315fa750c71b9df55237
This commit is contained in:
Lifu Tang
2022-05-11 14:49:19 -07:00
parent 695a47e469
commit f29a071fca
2 changed files with 26 additions and 16 deletions

View File

@@ -56,31 +56,41 @@ public class TopLevelLocationPreferenceControllerTest {
}
@Test
public void getSummary_whenLocationIsOn_shouldShowLoadingString() {
public void getSummary_whenLocationIsOn_shouldPreservePreviousText() {
final int locationAppCount = 5;
// Retrieve summary text once.
mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle());
mController.setLocationAppCount(locationAppCount);
mController.getSummary();
// Turn off location.
mLocationManager.setLocationEnabledForUser(false, android.os.Process.myUserHandle());
// Turn on location again and check if the previous summary text is still cached.
mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle());
assertThat(mController.getSummary()).isEqualTo(
mContext.getString(R.string.location_settings_loading_app_permission_stats));
mContext.getResources().getQuantityString(
R.plurals.location_settings_summary_location_on, locationAppCount,
locationAppCount));
}
@Test
public void getSummary_whenLocationAppCountIsOne_shouldShowSingularString() {
final int LOCATION_APP_COUNT = 1;
final int locationAppCount = 1;
mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle());
mController.setLocationAppCount(LOCATION_APP_COUNT);
mController.setLocationAppCount(locationAppCount);
assertThat(mController.getSummary()).isEqualTo(
mContext.getResources().getQuantityString(
R.plurals.location_settings_summary_location_on,
LOCATION_APP_COUNT, LOCATION_APP_COUNT));
locationAppCount, locationAppCount));
}
@Test
public void getSummary_whenLocationAppCountIsGreaterThanOne_shouldShowPluralString() {
final int LOCATION_APP_COUNT = 5;
final int locationAppCount = 5;
mLocationManager.setLocationEnabledForUser(true, android.os.Process.myUserHandle());
mController.setLocationAppCount(LOCATION_APP_COUNT);
mController.setLocationAppCount(locationAppCount);
assertThat(mController.getSummary()).isEqualTo(
mContext.getResources().getQuantityString(
R.plurals.location_settings_summary_location_on,
LOCATION_APP_COUNT, LOCATION_APP_COUNT));
locationAppCount, locationAppCount));
}
}