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

Commit fea5c4af authored by Felipe Leme's avatar Felipe Leme
Browse files

DO NOT MERGE - Fix StatusBar.updateIsKeyguard() when suspending to RAM.

That method was throwing a NPE on automotive because it's called before start()

Test: check logcat while running 'adb shell dumpsys car_service suspend'
Fixes: 146144370
Change-Id: Id863acac44f75b06c8cd1a0f0bcd6f23f8ab6fd9
(cherry picked from commit 20e362a92b8376b590d5df615265050dd6838c91)
parent 248a7396
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -3055,10 +3055,21 @@ public class StatusBar extends SystemUI implements DemoMode,
        return mState == StatusBarState.FULLSCREEN_USER_SWITCHER;
    }

    private boolean isAutomotive() {
        return mContext != null
                && mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
    }

    private boolean updateIsKeyguard() {
        boolean wakeAndUnlocking = mBiometricUnlockController.getMode()
                == BiometricUnlockController.MODE_WAKE_AND_UNLOCK;

        if (mScreenLifecycle == null && isAutomotive()) {
            // TODO(b/146144370): workaround to avoid NPE when device goes into STR (Suspend to RAM)
            Log.w(TAG, "updateIsKeyguard(): mScreenLifeCycle not set yet");
            mScreenLifecycle = Dependency.get(ScreenLifecycle.class);
        }

        // For dozing, keyguard needs to be shown whenever the device is non-interactive. Otherwise
        // there's no surface we can show to the user. Note that the device goes fully interactive
        // late in the transition, so we also allow the device to start dozing once the screen has