From 8692fcd08cf4267d2fdf37f9576219dd1f2972b3 Mon Sep 17 00:00:00 2001 From: Will Date: Thu, 17 Feb 2022 17:09:16 -0800 Subject: [PATCH] Fix a bug with jittering dream overlay. The first jitter causes all the dream overlay views to jump noticeably. The issues was that the first jitter happens after the views have appeared on screen. The solution is to jitter immediately so that the views are already in their initial jitter position before they become visible. Test: atest DreamOverlayContainerViewControllerTest Bug: 220182090 Change-Id: Ia62a5cf8d314a8617eaa522b51be99f61aef8b99 --- packages/SystemUI/res/values/config.xml | 3 ++ .../DreamOverlayContainerViewController.java | 33 +++++++++++++++---- .../dreams/dagger/DreamOverlayModule.java | 8 +++++ ...eamOverlayContainerViewControllerTest.java | 11 ++++--- 4 files changed, 44 insertions(+), 11 deletions(-) diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 73ef37ca02ed6..2de8324a506ad 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -695,4 +695,7 @@ 500 + + + 240000 diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java index 7450103721829..3d3e4a4928712 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java @@ -19,6 +19,7 @@ package com.android.systemui.dreams; import static com.android.systemui.doze.util.BurnInHelperKt.getBurnInOffset; import android.os.Handler; +import android.util.MathUtils; import android.view.View; import android.view.ViewGroup; @@ -56,9 +57,15 @@ 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 8ce10b808f32e..d0e10fba11c5b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayContainerViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayContainerViewControllerTest.java @@ -18,7 +18,6 @@ package com.android.systemui.dreams; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -49,6 +48,7 @@ public class DreamOverlayContainerViewControllerTest extends SysuiTestCase { private static final int DREAM_OVERLAY_NOTIFICATIONS_DRAG_AREA_HEIGHT = 100; private static final int MAX_BURN_IN_OFFSET = 20; private static final long BURN_IN_PROTECTION_UPDATE_INTERVAL = 10; + private static final long MILLIS_UNTIL_FULL_JITTER = 240 * 1000; @Mock Resources mResources; @@ -100,7 +100,8 @@ public class DreamOverlayContainerViewControllerTest extends SysuiTestCase { mDreamOverlayStatusBarViewController, mHandler, MAX_BURN_IN_OFFSET, - BURN_IN_PROTECTION_UPDATE_INTERVAL); + BURN_IN_PROTECTION_UPDATE_INTERVAL, + MILLIS_UNTIL_FULL_JITTER); } @Test @@ -129,14 +130,14 @@ public class DreamOverlayContainerViewControllerTest extends SysuiTestCase { } @Test - public void testBurnInProtectionUpdatesPeriodically() { + public void testBurnInProtectionOffsetsStartAtZero() { ArgumentCaptor runnableCaptor = ArgumentCaptor.forClass(Runnable.class); mController.onViewAttached(); verify(mHandler).postDelayed( runnableCaptor.capture(), eq(BURN_IN_PROTECTION_UPDATE_INTERVAL)); runnableCaptor.getValue().run(); - verify(mDreamOverlayContainerView).setTranslationX(anyFloat()); - verify(mDreamOverlayContainerView).setTranslationY(anyFloat()); + verify(mDreamOverlayContainerView).setTranslationX(0.f); + verify(mDreamOverlayContainerView).setTranslationY(0.f); } @Test