Merge "Headless: fix locking work profile with separate challenge on power button" into udc-dev

This commit is contained in:
Rubin Xu
2023-04-21 09:12:26 +00:00
committed by Android (Google) Code Review
3 changed files with 15 additions and 14 deletions

View File

@@ -1610,8 +1610,9 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
}
private void doKeyguardLaterForChildProfilesLocked() {
UserManager um = UserManager.get(mContext);
for (int profileId : um.getEnabledProfileIds(UserHandle.myUserId())) {
for (UserInfo profile : mUserTracker.getUserProfiles()) {
if (!profile.isEnabled()) continue;
final int profileId = profile.id;
if (mLockPatternUtils.isSeparateProfileChallengeEnabled(profileId)) {
long userTimeout = getLockTimeout(profileId);
if (userTimeout == 0) {
@@ -1634,8 +1635,9 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
}
private void doKeyguardForChildProfilesLocked() {
UserManager um = UserManager.get(mContext);
for (int profileId : um.getEnabledProfileIds(UserHandle.myUserId())) {
for (UserInfo profile : mUserTracker.getUserProfiles()) {
if (!profile.isEnabled()) continue;
final int profileId = profile.id;
if (mLockPatternUtils.isSeparateProfileChallengeEnabled(profileId)) {
lockProfile(profileId);
}

View File

@@ -5865,8 +5865,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
// would allow bypassing of the maximum time to lock.
mInjector.settingsGlobalPutInt(Settings.Global.STAY_ON_WHILE_PLUGGED_IN, 0);
}
getPowerManagerInternal().setMaximumScreenOffTimeoutFromDeviceAdmin(
UserHandle.USER_SYSTEM, timeMs);
getPowerManagerInternal().setMaximumScreenOffTimeoutFromDeviceAdmin(parentId, timeMs);
});
}

View File

@@ -3267,31 +3267,31 @@ public class DevicePolicyManagerTest extends DpmTestBase {
reset(getServices().settings);
dpm.setMaximumTimeToLock(admin1, 0);
verifyScreenTimeoutCall(null, UserHandle.USER_SYSTEM);
verifyScreenTimeoutCall(null, CALLER_USER_HANDLE);
verifyStayOnWhilePluggedCleared(false);
reset(getServices().powerManagerInternal);
reset(getServices().settings);
dpm.setMaximumTimeToLock(admin1, 1);
verifyScreenTimeoutCall(1L, UserHandle.USER_SYSTEM);
verifyScreenTimeoutCall(1L, CALLER_USER_HANDLE);
verifyStayOnWhilePluggedCleared(true);
reset(getServices().powerManagerInternal);
reset(getServices().settings);
dpm.setMaximumTimeToLock(admin2, 10);
verifyScreenTimeoutCall(null, UserHandle.USER_SYSTEM);
verifyScreenTimeoutCall(null, CALLER_USER_HANDLE);
verifyStayOnWhilePluggedCleared(false);
reset(getServices().powerManagerInternal);
reset(getServices().settings);
dpm.setMaximumTimeToLock(admin1, 5);
verifyScreenTimeoutCall(5L, UserHandle.USER_SYSTEM);
verifyScreenTimeoutCall(5L, CALLER_USER_HANDLE);
verifyStayOnWhilePluggedCleared(true);
reset(getServices().powerManagerInternal);
reset(getServices().settings);
dpm.setMaximumTimeToLock(admin2, 4);
verifyScreenTimeoutCall(4L, UserHandle.USER_SYSTEM);
verifyScreenTimeoutCall(4L, CALLER_USER_HANDLE);
verifyStayOnWhilePluggedCleared(true);
reset(getServices().powerManagerInternal);
reset(getServices().settings);
@@ -3301,20 +3301,20 @@ public class DevicePolicyManagerTest extends DpmTestBase {
reset(getServices().settings);
dpm.setMaximumTimeToLock(admin2, Long.MAX_VALUE);
verifyScreenTimeoutCall(Long.MAX_VALUE, UserHandle.USER_SYSTEM);
verifyScreenTimeoutCall(Long.MAX_VALUE, CALLER_USER_HANDLE);
verifyStayOnWhilePluggedCleared(true);
reset(getServices().powerManagerInternal);
reset(getServices().settings);
dpm.setMaximumTimeToLock(admin2, 10);
verifyScreenTimeoutCall(10L, UserHandle.USER_SYSTEM);
verifyScreenTimeoutCall(10L, CALLER_USER_HANDLE);
verifyStayOnWhilePluggedCleared(true);
reset(getServices().powerManagerInternal);
reset(getServices().settings);
// There's no restriction; should be set to MAX.
dpm.setMaximumTimeToLock(admin2, 0);
verifyScreenTimeoutCall(Long.MAX_VALUE, UserHandle.USER_SYSTEM);
verifyScreenTimeoutCall(Long.MAX_VALUE, CALLER_USER_HANDLE);
verifyStayOnWhilePluggedCleared(false);
}