Fix maximum time to lock

Changes
* Restore previous timeout behaviour. This
  behaviour was modified in Android S and
  was previously working on Android R.
* If the selected timeout is less than
  the max timeout set by the admin, select
  the largest possible timeout.
* If there are no possible timeouts for the
  user, disable the preference.

Manual testing steps
* Download CtsVerifier and CtsEmptyDeviceOwner apks
* Set device owner
* Run Policy transparency test > set max time to lock
* Set max time to lock and verify correct value is
  shown in Settings. Compare behaviour with Android R.

Bug: 184104507
Test: manual testing
      atest com.android.settings.display.ScreenTimeoutSettingsTest
Change-Id: I8d0e66ccce14cca244bcd380fd225a31df0b8999
This commit is contained in:
Alex Johnston
2021-04-07 12:16:03 +00:00
parent cdd73e7fec
commit e9717d265e
2 changed files with 72 additions and 20 deletions

View File

@@ -145,6 +145,16 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
screen.addPreference(pref);
}
final long selectedTimeout = Long.parseLong(defaultKey);
final long maxTimeout = getMaxScreenTimeout(getContext());
if (!candidateList.isEmpty() && (selectedTimeout > maxTimeout)) {
// The selected time out value is longer than the max timeout allowed by the admin.
// Select the largest value from the list by default.
final RadioButtonPreference preferenceWithLargestTimeout =
(RadioButtonPreference) screen.getPreference(candidateList.size() - 1);
preferenceWithLargestTimeout.setChecked(true);
}
if (isScreenAttentionAvailable(getContext())) {
mAdaptiveSleepPermissionController.addToScreen(screen);
mAdaptiveSleepController.addToScreen(screen);