summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java14
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java8
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java4
3 files changed, 19 insertions, 7 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 5f4b372d734b..47763170d1ea 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -1219,7 +1219,7 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
doKeyguardLaterLocked(timeout);
mLockLater = true;
} else if (!mLockPatternUtils.isLockScreenDisabled(currentUser)) {
- mPendingLock = true;
+ setPendingLock(true);
}
if (mPendingLock) {
@@ -1263,7 +1263,7 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
mContext.getSystemService(PowerManager.class).wakeUp(SystemClock.uptimeMillis(),
PowerManager.WAKE_REASON_CAMERA_LAUNCH,
"com.android.systemui:CAMERA_GESTURE_PREVENT_LOCK");
- mPendingLock = false;
+ setPendingLock(false);
mPendingReset = false;
}
@@ -1333,7 +1333,7 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
}
doKeyguardLocked(null);
- mPendingLock = false;
+ setPendingLock(false);
}
}
@@ -2134,6 +2134,7 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
Log.i(TAG, "Device is going to sleep, aborting keyguardDone");
return;
}
+ setPendingLock(false); // user may have authenticated during the screen off animation
if (mExitSecureCallback != null) {
try {
mExitSecureCallback.onKeyguardExitResult(true /* authenciated */);
@@ -2264,7 +2265,7 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
mHiding = false;
mKeyguardExitAnimationRunner = null;
mWakeAndUnlocking = false;
- mPendingLock = false;
+ setPendingLock(false);
setShowingLocked(true);
mKeyguardViewControllerLazy.get().show(options);
resetKeyguardDonePendingLocked();
@@ -3040,6 +3041,11 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
}
}
+ private void setPendingLock(boolean hasPendingLock) {
+ mPendingLock = hasPendingLock;
+ Trace.traceCounter(Trace.TRACE_TAG_APP, "pendingLock", mPendingLock ? 1 : 0);
+ }
+
public void addStateMonitorCallback(IKeyguardStateCallback callback) {
synchronized (this) {
mKeyguardStateCallbacks.add(callback);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
index 159d33b5a143..f95093ef8ba4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
@@ -265,6 +265,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
}
private KeyguardUnlockAnimationController mKeyguardUnlockAnimationController;
+ private final ScreenOffAnimationController mScreenOffAnimationController;
@Inject
public BiometricUnlockController(DozeScrimController dozeScrimController,
@@ -284,7 +285,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
StatusBarStateController statusBarStateController,
KeyguardUnlockAnimationController keyguardUnlockAnimationController,
SessionTracker sessionTracker,
- LatencyTracker latencyTracker) {
+ LatencyTracker latencyTracker,
+ ScreenOffAnimationController screenOffAnimationController) {
mPowerManager = powerManager;
mShadeController = shadeController;
mUpdateMonitor = keyguardUpdateMonitor;
@@ -310,6 +312,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
mStatusBarStateController = statusBarStateController;
mKeyguardUnlockAnimationController = keyguardUnlockAnimationController;
mSessionTracker = sessionTracker;
+ mScreenOffAnimationController = screenOffAnimationController;
dumpManager.registerDumpable(getClass().getName(), this);
}
@@ -554,7 +557,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
boolean deviceDreaming = mUpdateMonitor.isDreaming();
if (!mUpdateMonitor.isDeviceInteractive()) {
- if (!mKeyguardViewController.isShowing()) {
+ if (!mKeyguardViewController.isShowing()
+ && !mScreenOffAnimationController.isKeyguardShowDelayed()) {
return MODE_ONLY_WAKE;
} else if (mDozeScrimController.isPulsing() && unlockingAllowed) {
return MODE_WAKE_AND_UNLOCK_PULSING;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java
index fb8c339e73c8..d6a2f0f22e5a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java
@@ -113,6 +113,8 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase {
private SessionTracker mSessionTracker;
@Mock
private LatencyTracker mLatencyTracker;
+ @Mock
+ private ScreenOffAnimationController mScreenOffAnimationController;
private BiometricUnlockController mBiometricUnlockController;
@Before
@@ -134,7 +136,7 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase {
mMetricsLogger, mDumpManager, mPowerManager,
mNotificationMediaManager, mWakefulnessLifecycle, mScreenLifecycle,
mAuthController, mStatusBarStateController, mKeyguardUnlockAnimationController,
- mSessionTracker, mLatencyTracker);
+ mSessionTracker, mLatencyTracker, mScreenOffAnimationController);
mBiometricUnlockController.setKeyguardViewController(mStatusBarKeyguardViewManager);
mBiometricUnlockController.setBiometricModeListener(mBiometricModeListener);
}