Add Keyguard DPM state change callback
DevicePolicyManager can change the security mode (ie: pin/pattern/password/none), so on DPM state changes, update SecurityContainer so that the Bouncer will be in the correct security mode if there are any changes while the device is already on the keyguard. Prior to this CL, the security mode would eventually be reset when the device went to sleep & woke back up; however, this issue was causing flaky & slow tests. Test: manual From home screen: adb shell locksettings set-pin "1234" From lock screen: adb shell locksettings clear --old "1234" On lock screen: adb shell wm dismiss-keyguard Observe & expect: keyguard is dismissed (previously bouncer would show) Fixes: 223440441 Change-Id: I22281dcc85d75509f1a754d57359d5f862e3d8d0
This commit is contained in:
@@ -233,6 +233,13 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
|
||||
mSecurityViewFlipperController.reloadColors();
|
||||
}
|
||||
};
|
||||
private final KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback =
|
||||
new KeyguardUpdateMonitorCallback() {
|
||||
@Override
|
||||
public void onDevicePolicyManagerStateChanged() {
|
||||
showPrimarySecurityScreen(false);
|
||||
}
|
||||
};
|
||||
|
||||
private KeyguardSecurityContainerController(KeyguardSecurityContainer view,
|
||||
AdminSecondaryLockScreenController.Factory adminSecondaryLockScreenControllerFactory,
|
||||
@@ -279,6 +286,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
|
||||
|
||||
@Override
|
||||
protected void onViewAttached() {
|
||||
mUpdateMonitor.registerCallback(mKeyguardUpdateMonitorCallback);
|
||||
mView.setSwipeListener(mSwipeListener);
|
||||
mView.addMotionEventListener(mGlobalTouchListener);
|
||||
mConfigurationController.addCallback(mConfigurationListener);
|
||||
@@ -286,6 +294,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
|
||||
|
||||
@Override
|
||||
protected void onViewDetached() {
|
||||
mUpdateMonitor.removeCallback(mKeyguardUpdateMonitorCallback);
|
||||
mConfigurationController.removeCallback(mConfigurationListener);
|
||||
mView.removeMotionEventListener(mGlobalTouchListener);
|
||||
}
|
||||
|
||||
@@ -2717,12 +2717,20 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle {@link #MSG_DPM_STATE_CHANGED}
|
||||
* Handle {@link #MSG_DPM_STATE_CHANGED} which can change primary authentication methods to
|
||||
* pin/pattern/password/none.
|
||||
*/
|
||||
private void handleDevicePolicyManagerStateChanged(int userId) {
|
||||
Assert.isMainThread();
|
||||
updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE);
|
||||
updateSecondaryLockscreenRequirement(userId);
|
||||
|
||||
for (int i = 0; i < mCallbacks.size(); i++) {
|
||||
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
||||
if (cb != null) {
|
||||
cb.onDevicePolicyManagerStateChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -299,6 +299,11 @@ public class KeyguardUpdateMonitorCallback {
|
||||
*/
|
||||
public void onSecondaryLockscreenRequirementChanged(int userId) { }
|
||||
|
||||
/**
|
||||
* Called when device policy manager state changes.
|
||||
*/
|
||||
public void onDevicePolicyManagerStateChanged() { }
|
||||
|
||||
/**
|
||||
* Called when notifying user to unlock in order to use NFC.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user