From 8624015554c37c48d8611be2af7141750275e335 Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 12 Jan 2022 16:54:35 -0800 Subject: [PATCH] Periodically jitter dream overlay to prevent burn-in. Test: atest DreamOverlayContainerViewControllerTest Bug: 213907279 Change-Id: Id43d8697c5ef032b07c6f5854445cb16f6c820b7 --- packages/SystemUI/res/values/config.xml | 2 + .../DreamOverlayContainerViewController.java | 36 +++++++++++++- .../dreams/dagger/DreamOverlayModule.java | 20 ++++++++ ...eamOverlayContainerViewControllerTest.java | 49 ++++++++++++++++++- 4 files changed, 104 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 9c35fea6438d5..65f22b805d4e5 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -738,4 +738,6 @@ + + 500 diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java index 572bb4467c979..5b46079c87cca 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayContainerViewController.java @@ -16,8 +16,11 @@ package com.android.systemui.dreams; +import static com.android.systemui.doze.util.BurnInHelperKt.getBurnInOffset; + import android.graphics.Rect; import android.graphics.Region; +import android.os.Handler; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; @@ -26,6 +29,7 @@ import androidx.constraintlayout.widget.ConstraintLayout; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.R; +import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dreams.dagger.DreamOverlayComponent; import com.android.systemui.dreams.dagger.DreamOverlayModule; import com.android.systemui.util.ViewController; @@ -47,6 +51,15 @@ public class DreamOverlayContainerViewController extends ViewController 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()); + } + + @Test + public void testBurnInProtectionReschedulesUpdate() { + ArgumentCaptor runnableCaptor = ArgumentCaptor.forClass(Runnable.class); + mController.onViewAttached(); + verify(mHandler).postDelayed( + runnableCaptor.capture(), eq(BURN_IN_PROTECTION_UPDATE_INTERVAL)); + runnableCaptor.getValue().run(); + verify(mHandler).postDelayed(runnableCaptor.getValue(), BURN_IN_PROTECTION_UPDATE_INTERVAL); + } }