From 9a868a7d7f2ee888999d5d3a107f078d50be8e65 Mon Sep 17 00:00:00 2001 From: Darrell Shi Date: Thu, 20 Oct 2022 18:02:44 +0000 Subject: [PATCH] Add dream overlay open animation. After dream content has fully animated in, dream overlay starts fading in in a duration of 500ms. Bug: 222507937 Test: start dream on device and observe overlay animate in correctly Change-Id: Ic648b42c5cb23b6e8e40d32be4185a399d3d44f8 --- .../DreamOverlayContainerViewController.java | 15 +++++++++++- .../DreamOverlayStatusBarViewController.java | 18 +++++++++++++- .../dreams/dagger/DreamOverlayModule.java | 24 +++++++++++++++++++ ...eamOverlayContainerViewControllerTest.java | 13 +++++++++- ...eamOverlayStatusBarViewControllerTest.java | 17 +++++++++++-- 5 files changed, 82 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java index 733a80dd7f69f..af9967a18dccb 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java @@ -76,6 +76,9 @@ public class DreamOverlayContainerViewController extends ViewController lifecycleRegistryLazy) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayContainerViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayContainerViewControllerTest.java index c5a7de410eb0f..9e9c56734a4da 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayContainerViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayContainerViewControllerTest.java @@ -19,6 +19,7 @@ package com.android.systemui.dreams; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; @@ -28,6 +29,7 @@ import android.content.res.Resources; import android.os.Handler; import android.testing.AndroidTestingRunner; import android.view.ViewGroup; +import android.view.ViewPropertyAnimator; import android.view.ViewRootImpl; import android.view.ViewTreeObserver; @@ -92,6 +94,9 @@ public class DreamOverlayContainerViewControllerTest extends SysuiTestCase { @Mock BouncerCallbackInteractor mBouncerCallbackInteractor; + @Mock + ViewPropertyAnimator mViewPropertyAnimator; + DreamOverlayContainerViewController mController; @Before @@ -100,8 +105,12 @@ public class DreamOverlayContainerViewControllerTest extends SysuiTestCase { when(mDreamOverlayContainerView.getResources()).thenReturn(mResources); when(mDreamOverlayContainerView.getViewTreeObserver()).thenReturn(mViewTreeObserver); + when(mDreamOverlayContainerView.animate()).thenReturn(mViewPropertyAnimator); when(mStatusBarKeyguardViewManager.getBouncer()).thenReturn(mBouncer); when(mDreamOverlayContainerView.getViewRootImpl()).thenReturn(mViewRoot); + when(mViewPropertyAnimator.alpha(anyFloat())).thenReturn(mViewPropertyAnimator); + when(mViewPropertyAnimator.setStartDelay(anyLong())).thenReturn(mViewPropertyAnimator); + when(mViewPropertyAnimator.setDuration(anyLong())).thenReturn(mViewPropertyAnimator); mController = new DreamOverlayContainerViewController( mDreamOverlayContainerView, @@ -115,7 +124,9 @@ public class DreamOverlayContainerViewControllerTest extends SysuiTestCase { MAX_BURN_IN_OFFSET, BURN_IN_PROTECTION_UPDATE_INTERVAL, MILLIS_UNTIL_FULL_JITTER, - mBouncerCallbackInteractor); + mBouncerCallbackInteractor, + 100 /*openAnimationDuration*/, + 100 /*openAnimationDelay*/); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java index aa021781296a2..240e6b6d12796 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java @@ -20,7 +20,9 @@ import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN; import static android.app.StatusBarManager.WINDOW_STATE_SHOWING; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.never; @@ -38,6 +40,7 @@ import android.net.NetworkRequest; import android.provider.Settings; import android.testing.AndroidTestingRunner; import android.view.View; +import android.view.ViewPropertyAnimator; import androidx.test.filters.SmallTest; @@ -104,6 +107,8 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase { View mStatusBarItemView; @Mock DreamOverlayStateController mDreamOverlayStateController; + @Mock + ViewPropertyAnimator mViewPropertyAnimator; private final Executor mMainExecutor = Runnable::run; @@ -115,6 +120,10 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase { when(mResources.getString(R.string.dream_overlay_status_bar_notification_indicator)) .thenReturn(NOTIFICATION_INDICATOR_FORMATTER_STRING); + when(mView.animate()).thenReturn(mViewPropertyAnimator); + when(mViewPropertyAnimator.alpha(anyFloat())).thenReturn(mViewPropertyAnimator); + when(mViewPropertyAnimator.setStartDelay(anyLong())).thenReturn(mViewPropertyAnimator); + when(mViewPropertyAnimator.setDuration(anyLong())).thenReturn(mViewPropertyAnimator); mController = new DreamOverlayStatusBarViewController( mView, @@ -130,7 +139,9 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase { mZenModeController, mStatusBarWindowStateController, mDreamOverlayStatusBarItemsProvider, - mDreamOverlayStateController); + mDreamOverlayStateController, + 100 /*openAnimationDuration*/, + 100 /*openAnimationDelay*/); } @Test @@ -272,7 +283,9 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase { mZenModeController, mStatusBarWindowStateController, mDreamOverlayStatusBarItemsProvider, - mDreamOverlayStateController); + mDreamOverlayStateController, + 100 /*openAnimationDuration*/, + 100 /*openAnimationDelay*/); controller.onViewAttached(); verify(mView, never()).showIcon( eq(DreamOverlayStatusBarView.STATUS_ICON_NOTIFICATIONS), eq(true), any());