diff options
| author | 2022-11-18 14:49:38 +0000 | |
|---|---|---|
| committer | 2022-11-18 14:49:38 +0000 | |
| commit | 48022ec97a3d7777246cb395926d4de0a9a0bb9b (patch) | |
| tree | 481f4fb0f7f49dd888614bdfae894f6424819e1f | |
| parent | 7e817177af0e659ba0ab758177f6ec0a2f0a0f0e (diff) | |
| parent | 3ac250891af3914967f6d82c846cceff8123f704 (diff) | |
Merge "Fix NPE before CentralSurfaces is registered" into tm-qpr-dev am: eaa63dbd88 am: 3ac250891a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20499568
Change-Id: I4d21747e6d2174e3fa855f0a422c7316d5f44ec9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2 files changed, 44 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index a9c04fdd22a3..793cb7e6a28b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -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); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java index 0ae3a10c5834..bf5186b6324d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java @@ -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); + } } |