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

Commit 159c6f48 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Use Lazy BioUnlockController in DozeServiceHost.

Use Lazy BiometricUnlockController in DozeServiceHost instead of
assigning its result to a member field after initialization. It
appears as though, in some cases, the DozeServiceHost gets used
before it is initialized, meaning that the BiometricUnlockController
member field would be null.

Fixes: 152187753
Test: atest SystemUITests
Change-Id: Ic1a31ded99b1cd07e25f9da530bcf155722bbe6a
parent cd220824
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -77,7 +77,6 @@ public final class DozeServiceHost implements DozeHost {
    private final BatteryController mBatteryController;
    private final ScrimController mScrimController;
    private final Lazy<BiometricUnlockController> mBiometricUnlockControllerLazy;
    private BiometricUnlockController mBiometricUnlockController;
    private final KeyguardViewMediator mKeyguardViewMediator;
    private final Lazy<AssistManager> mAssistManagerLazy;
    private final DozeScrimController mDozeScrimController;
@@ -148,9 +147,9 @@ public final class DozeServiceHost implements DozeHost {
        mNotificationPanel = notificationPanel;
        mNotificationShadeWindowViewController = notificationShadeWindowViewController;
        mAmbientIndicationContainer = ambientIndicationContainer;
        mBiometricUnlockController = mBiometricUnlockControllerLazy.get();
    }


    @Override
    public String toString() {
        return "PSB.DozeServiceHost[mCallbacks=" + mCallbacks.size() + "]";
@@ -206,11 +205,11 @@ public final class DozeServiceHost implements DozeHost {
        boolean
                dozing =
                mDozingRequested && mStatusBarStateController.getState() == StatusBarState.KEYGUARD
                        || mBiometricUnlockController.getMode()
                        || mBiometricUnlockControllerLazy.get().getMode()
                        == BiometricUnlockController.MODE_WAKE_AND_UNLOCK_PULSING;
        // When in wake-and-unlock we may not have received a change to StatusBarState
        // but we still should not be dozing, manually set to false.
        if (mBiometricUnlockController.getMode()
        if (mBiometricUnlockControllerLazy.get().getMode()
                == BiometricUnlockController.MODE_WAKE_AND_UNLOCK) {
            dozing = false;
        }
@@ -311,7 +310,7 @@ public final class DozeServiceHost implements DozeHost {

    @Override
    public boolean isPulsingBlocked() {
        return mBiometricUnlockController.getMode()
        return mBiometricUnlockControllerLazy.get().getMode()
                == BiometricUnlockController.MODE_WAKE_AND_UNLOCK;
    }

@@ -323,7 +322,7 @@ public final class DozeServiceHost implements DozeHost {

    @Override
    public boolean isBlockingDoze() {
        if (mBiometricUnlockController.hasPendingAuthentication()) {
        if (mBiometricUnlockControllerLazy.get().hasPendingAuthentication()) {
            Log.i(StatusBar.TAG, "Blocking AOD because fingerprint has authenticated");
            return true;
        }