Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ba7ca590 authored by Adrian Roos's avatar Adrian Roos
Browse files

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
parent 4efa8bdb
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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);
    }
}
+19 −0
Original line number Diff line number Diff line
@@ -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);
    }
}
+8 −0
Original line number Diff line number Diff line
@@ -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, "  ");