diff options
| author | 2023-03-20 21:02:02 +0000 | |
|---|---|---|
| committer | 2023-03-20 21:02:02 +0000 | |
| commit | 8df7edf0e3c0eeea75f9f1a1a000991c073e5ef7 (patch) | |
| tree | fad51a13d9c692500127071e4a5025e33ea5d9db | |
| parent | 517df64d212c846d808369e473cad3fa91f19c79 (diff) | |
| parent | aa80b254617c74298f8cb3f38592354f64e02f86 (diff) | |
Merge "Fix NPE in Stepped Clock Animation" into tm-qpr-dev
3 files changed, 24 insertions, 8 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java index b85b2b8314ed..ba217804c96e 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java @@ -22,6 +22,7 @@ import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static com.android.keyguard.KeyguardClockSwitch.LARGE; import static com.android.keyguard.KeyguardClockSwitch.SMALL; +import android.annotation.Nullable; import android.database.ContentObserver; import android.os.UserHandle; import android.provider.Settings; @@ -458,6 +459,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS mView.setClock(clock, mStatusBarStateController.getState()); } + @Nullable private ClockController getClock() { return mClockEventController.getClock(); } @@ -510,8 +512,10 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS } /** Gets the animations for the current clock. */ + @Nullable public ClockAnimations getClockAnimations() { - return getClock().getAnimations(); + ClockController clock = getClock(); + return clock == null ? null : clock.getAnimations(); } } diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java index dceb06f9c869..c4784d6211bb 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java @@ -158,6 +158,7 @@ import com.android.systemui.model.SysUiState; import com.android.systemui.navigationbar.NavigationBarController; import com.android.systemui.navigationbar.NavigationBarView; import com.android.systemui.navigationbar.NavigationModeController; +import com.android.systemui.plugins.ClockAnimations; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.FalsingManager.FalsingTapListener; import com.android.systemui.plugins.qs.QS; @@ -1574,10 +1575,9 @@ public final class NotificationPanelViewController implements Dumpable { transition.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); transition.setDuration(StackStateAnimator.ANIMATION_DURATION_STANDARD); - boolean customClockAnimation = - mKeyguardStatusViewController.getClockAnimations() != null - && mKeyguardStatusViewController.getClockAnimations() - .getHasCustomPositionUpdatedAnimation(); + ClockAnimations clockAnims = mKeyguardStatusViewController.getClockAnimations(); + boolean customClockAnimation = clockAnims != null + && clockAnims.getHasCustomPositionUpdatedAnimation(); if (mFeatureFlags.isEnabled(Flags.STEP_CLOCK_ANIMATION) && customClockAnimation) { // Find the clock, so we can exclude it from this transition. @@ -5033,9 +5033,14 @@ public final class NotificationPanelViewController implements Dumpable { Rect from = (Rect) startValues.values.get(PROP_BOUNDS); Rect to = (Rect) endValues.values.get(PROP_BOUNDS); - anim.addUpdateListener( - animation -> mController.getClockAnimations().onPositionUpdated( - from, to, animation.getAnimatedFraction())); + anim.addUpdateListener(animation -> { + ClockAnimations clockAnims = mController.getClockAnimations(); + if (clockAnims == null) { + return; + } + + clockAnims.onPositionUpdated(from, to, animation.getAnimatedFraction()); + }); return anim; } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java index a5f90f8441b2..b15ac39dc57d 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java @@ -17,6 +17,7 @@ package com.android.keyguard; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; @@ -365,6 +366,12 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase { assertEquals(View.VISIBLE, mFakeWeatherView.getVisibility()); } + @Test + public void testGetClockAnimations_nullClock_returnsNull() { + when(mClockEventController.getClock()).thenReturn(null); + assertNull(mController.getClockAnimations()); + } + private void verifyAttachment(VerificationMode times) { verify(mClockRegistry, times).registerClockChangeListener( any(ClockRegistry.ClockChangeListener.class)); |