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

Commit eaa63dbd authored by Beverly Tai's avatar Beverly Tai Committed by Android (Google) Code Review
Browse files

Merge "Fix NPE before CentralSurfaces is registered" into tm-qpr-dev

parents 437300c7 50b6ecd9
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -219,7 +219,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb

    protected LockPatternUtils mLockPatternUtils;
    protected ViewMediatorCallback mViewMediatorCallback;
    protected CentralSurfaces mCentralSurfaces;
    @Nullable protected CentralSurfaces mCentralSurfaces;
    private NotificationPanelViewController mNotificationPanelViewController;
    private BiometricUnlockController mBiometricUnlockController;
    private boolean mCentralSurfacesRegistered;
@@ -267,7 +267,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
    private final KeyguardUpdateMonitor mKeyguardUpdateManager;
    private final LatencyTracker mLatencyTracker;
    private final KeyguardSecurityModel mKeyguardSecurityModel;
    private KeyguardBypassController mBypassController;
    @Nullable private KeyguardBypassController mBypassController;
    @Nullable private AlternateBouncer mAlternateBouncer;

    private final KeyguardUpdateMonitorCallback mUpdateMonitorCallback =
@@ -744,6 +744,12 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
    }

    private void updateAlternateBouncerShowing(boolean updateScrim) {
        if (!mCentralSurfacesRegistered) {
            // if CentralSurfaces hasn't been registered yet, then the controllers below haven't
            // been initialized yet so there's no need to attempt to forward them events.
            return;
        }

        final boolean isShowingAlternateBouncer = isShowingAlternateBouncer();
        if (mKeyguardMessageAreaController != null) {
            mKeyguardMessageAreaController.setIsVisible(isShowingAlternateBouncer);
+36 −0
Original line number Diff line number Diff line
@@ -587,4 +587,40 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
        mStatusBarKeyguardViewManager.hideBouncer(false);
        verify(mPrimaryBouncerInteractor, never()).hide();
    }

    @Test
    public void hideAlternateBouncer_beforeCentralSurfacesRegistered() {
        mStatusBarKeyguardViewManager =
                new StatusBarKeyguardViewManager(
                        getContext(),
                        mViewMediatorCallback,
                        mLockPatternUtils,
                        mStatusBarStateController,
                        mock(ConfigurationController.class),
                        mKeyguardUpdateMonitor,
                        mDreamOverlayStateController,
                        mock(NavigationModeController.class),
                        mock(DockManager.class),
                        mock(NotificationShadeWindowController.class),
                        mKeyguardStateController,
                        mock(NotificationMediaManager.class),
                        mKeyguardBouncerFactory,
                        mKeyguardMessageAreaFactory,
                        Optional.of(mSysUiUnfoldComponent),
                        () -> mShadeController,
                        mLatencyTracker,
                        mKeyguardSecurityModel,
                        mFeatureFlags,
                        mPrimaryBouncerCallbackInteractor,
                        mPrimaryBouncerInteractor,
                        mBouncerView) {
                    @Override
                    public ViewRootImpl getViewRootImpl() {
                        return mViewRootImpl;
                    }
                };

        // the following call before registering centralSurfaces should NOT throw a NPE:
        mStatusBarKeyguardViewManager.hideAlternateBouncer(true);
    }
}