From 336be7f7a499eec1acd90ab04d3e47d2789c8168 Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Mon, 19 May 2014 17:11:18 +0200 Subject: [PATCH] Improve trust handling on dimsissing keyguard The check for whether the device is in trusted mode happened at the wrong time previously. Now it is checked when trying to dismiss the keyguard. Bug: 15072996 Change-Id: I81a3793ba1cf25468d3c923b2075f4c987b79e53 --- .../com/android/keyguard/KeyguardSecurityContainer.java | 7 ++++++- .../src/com/android/keyguard/KeyguardSecurityModel.java | 2 -- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java index 8425c48b416ac..94edc075cb940 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -42,6 +42,8 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe private boolean mIsBouncing; private SecurityCallback mSecurityCallback; + private final KeyguardUpdateMonitor mUpdateMonitor; + // Used to notify the container when something interesting happens. public interface SecurityCallback { public boolean dismiss(boolean authenticated); @@ -62,6 +64,7 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe super(context, attrs, defStyle); mSecurityModel = new KeyguardSecurityModel(context); mLockPatternUtils = new LockPatternUtils(context); + mUpdateMonitor = KeyguardUpdateMonitor.getInstance(mContext); } public void setSecurityCallback(SecurityCallback callback) { @@ -303,7 +306,9 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe boolean showNextSecurityScreenOrFinish(boolean authenticated) { if (DEBUG) Log.d(TAG, "showNextSecurityScreenOrFinish(" + authenticated + ")"); boolean finish = false; - if (SecurityMode.None == mCurrentSecuritySelection) { + if (mUpdateMonitor.getUserHasTrust(mLockPatternUtils.getCurrentUser())) { + finish = true; + } else if (SecurityMode.None == mCurrentSecuritySelection) { SecurityMode securityMode = mSecurityModel.getSecurityMode(); // Allow an alternate, such as biometric unlock securityMode = mSecurityModel.getAlternateFor(securityMode); diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityModel.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityModel.java index 2d492db93e0b6..5ef41c9d8b2e4 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityModel.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityModel.java @@ -83,8 +83,6 @@ public class KeyguardSecurityModel { } else if (simState == IccCardConstants.State.PUK_REQUIRED && mLockPatternUtils.isPukUnlockScreenEnable()) { mode = SecurityMode.SimPuk; - } else if (updateMonitor.getUserHasTrust(mLockPatternUtils.getCurrentUser())) { - mode = SecurityMode.None; } else { final int security = mLockPatternUtils.getKeyguardStoredPasswordQuality(); switch (security) {