From ba7ca590afe9d99d93e6b81b0185b4b349476091 Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Tue, 15 Aug 2017 17:48:05 +0200 Subject: [PATCH] FingerprintController: Make sure to reset the fingerprint mode when going to sleep Fixes an issue where the fingerprint controller could be stuck indefinitely, causing the status bar to be in the SHADE state instead of the KEYGUARD state. Now reset when going to sleep. Also adds logging. May also fix a second bug where the scrims were stuck in a bad state. Change-Id: I55d456c5d157f92758267f684de2bd216ef07d94 Fixes: 64598807 Bug: 64594986 Test: mp sysuig; unlock with fingerprint; verify transition still works --- .../phone/FingerprintUnlockController.java | 13 +++++++++++++ .../statusbar/phone/ScrimController.java | 19 +++++++++++++++++++ .../systemui/statusbar/phone/StatusBar.java | 8 ++++++++ 3 files changed, 40 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java index cb96dea08ae0e..316d229e4f1a7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java @@ -32,6 +32,8 @@ import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.keyguard.WakefulnessLifecycle; +import java.io.PrintWriter; + /** * Controller which coordinates all the fingerprint unlocking actions with the UI. */ @@ -264,6 +266,7 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback { @Override public void onStartedGoingToSleep(int why) { + resetMode(); mPendingAuthenticatedUserId = -1; } @@ -346,6 +349,10 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback { } public void finishKeyguardFadingAway() { + resetMode(); + } + + private void resetMode() { mMode = MODE_NONE; mStatusBarWindowManager.setForceDozeBrightness(false); if (mStatusBar.getNavigationBarView() != null) { @@ -375,4 +382,10 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback { public boolean hasScreenTurnedOnSinceAuthenticating() { return mHasScreenTurnedOnSinceAuthenticating; } + + public void dump(PrintWriter pw) { + pw.println(" FingerprintUnlockController:"); + pw.print(" mMode="); pw.println(mMode); + pw.print(" mWakeLock="); pw.println(mWakeLock); + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java index 1d6448094132c..702afa3a38b19 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -48,6 +48,7 @@ import com.android.systemui.statusbar.ScrimView; import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener; import com.android.systemui.statusbar.stack.ViewState; +import java.io.PrintWriter; import java.util.function.Consumer; /** @@ -768,4 +769,22 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, scheduleUpdate(); } } + + public void dump(PrintWriter pw) { + pw.println(" ScrimController:"); + + pw.print(" frontScrim:"); pw.print(" viewAlpha="); pw.print(mScrimInFront.getViewAlpha()); + pw.print(" alpha="); pw.print(mCurrentInFrontAlpha); + pw.print(" dozeAlpha="); pw.print(mDozeInFrontAlpha); + pw.print(" tint=0x"); pw.println(Integer.toHexString(mScrimInFront.getTint())); + + pw.print(" backScrim:"); pw.print(" viewAlpha="); pw.print(mScrimBehind.getViewAlpha()); + pw.print(" alpha="); pw.print(mCurrentBehindAlpha); + pw.print(" dozeAlpha="); pw.print(mDozeBehindAlpha); + pw.print(" tint=0x"); pw.println(Integer.toHexString(mScrimBehind.getTint())); + + pw.print(" mBouncerShowing="); pw.println(mBouncerShowing); + pw.print(" mTracking="); pw.println(mTracking); + pw.print(" mForceHideScrims="); pw.println(mForceHideScrims); + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 0df3321e255df..4fb5754ab1beb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -3535,6 +3535,14 @@ public class StatusBar extends SystemUI implements DemoMode, DozeLog.dump(pw); + if (mFingerprintUnlockController != null) { + mFingerprintUnlockController.dump(pw); + } + + if (mScrimController != null) { + mScrimController.dump(pw); + } + if (DUMPTRUCK) { synchronized (mNotificationData) { mNotificationData.dump(pw, " ");