diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java index 5ec59abafe133..7b781cef67178 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 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 a5f90f8441b2f..b15ac39dc57dc 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));