diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java | 8 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/shade/SplitShadeTransitionAdapterTest.kt | 74 |
2 files changed, 80 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java index b71c14bcc5a2..6ab7bfd68999 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java @@ -5015,9 +5015,13 @@ public final class NotificationPanelViewController implements Dumpable { captureValues(transitionValues); } + @Nullable @Override - public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, - TransitionValues endValues) { + public Animator createAnimator(ViewGroup sceneRoot, @Nullable TransitionValues startValues, + @Nullable TransitionValues endValues) { + if (startValues == null || endValues == null) { + return null; + } ValueAnimator anim = ValueAnimator.ofFloat(0, 1); Rect from = (Rect) startValues.values.get(PROP_BOUNDS); diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/SplitShadeTransitionAdapterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/SplitShadeTransitionAdapterTest.kt new file mode 100644 index 000000000000..64fec5bfd4ed --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/SplitShadeTransitionAdapterTest.kt @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.systemui.shade + +import android.animation.Animator +import android.testing.AndroidTestingRunner +import android.transition.TransitionValues +import androidx.test.filters.SmallTest +import com.android.keyguard.KeyguardStatusViewController +import com.android.systemui.SysuiTestCase +import com.android.systemui.shade.NotificationPanelViewController.SplitShadeTransitionAdapter +import com.google.common.truth.Truth.assertThat +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mock +import org.mockito.MockitoAnnotations + +@SmallTest +@RunWith(AndroidTestingRunner::class) +class SplitShadeTransitionAdapterTest : SysuiTestCase() { + + @Mock private lateinit var keyguardStatusViewController: KeyguardStatusViewController + + private lateinit var adapter: SplitShadeTransitionAdapter + + @Before + fun setUp() { + MockitoAnnotations.initMocks(this) + adapter = SplitShadeTransitionAdapter(keyguardStatusViewController) + } + + @Test + fun createAnimator_nullStartValues_returnsNull() { + val animator = adapter.createAnimator(startValues = null, endValues = TransitionValues()) + + assertThat(animator).isNull() + } + + @Test + fun createAnimator_nullEndValues_returnsNull() { + val animator = adapter.createAnimator(startValues = TransitionValues(), endValues = null) + + assertThat(animator).isNull() + } + + @Test + fun createAnimator_nonNullStartAndEndValues_returnsAnimator() { + val animator = + adapter.createAnimator(startValues = TransitionValues(), endValues = TransitionValues()) + + assertThat(animator).isNotNull() + } +} + +private fun SplitShadeTransitionAdapter.createAnimator( + startValues: TransitionValues?, + endValues: TransitionValues? +): Animator? { + return createAnimator(/* sceneRoot= */ null, startValues, endValues) +} |