From f8f2f16f69fc6743000f824a1bc0e607416ab917 Mon Sep 17 00:00:00 2001 From: Beverly Date: Tue, 25 Feb 2020 13:47:45 -0500 Subject: [PATCH] Don't use main handler in ImageWallpaperTest ImageWallpaperTest was creating an Engine that was run on the main thread. Instead, pass a mocked handler to the Engine so that the main thread isn't unnecessarily doing work in a test which may cause other tests to fail. Test: atest SystemUITests Bug: 149204632 Change-Id: Ifc5f52bc33cd661c2b7818ccf7e8dafedd60d6c9 --- .../com/android/systemui/ImageWallpaper.java | 20 +++++++++++++++---- .../android/systemui/ImageWallpaperTest.java | 6 +++++- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java index 4473b010cbda1..dbcdead8de9f5 100644 --- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java +++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java @@ -20,7 +20,9 @@ import android.app.ActivityManager; import android.content.Context; import android.content.res.Configuration; import android.graphics.Rect; +import android.os.Handler; import android.os.HandlerThread; +import android.os.SystemClock; import android.os.Trace; import android.service.wallpaper.WallpaperService; import android.util.Log; @@ -94,18 +96,28 @@ public class ImageWallpaper extends WallpaperService { private EglHelper mEglHelper; private StatusBarStateController mController; private final Runnable mFinishRenderingTask = this::finishRendering; - private final boolean mNeedTransition; private boolean mShouldStopTransition; - @VisibleForTesting - final boolean mIsHighEndGfx; - private final boolean mDisplayNeedsBlanking; private final DisplayInfo mDisplayInfo = new DisplayInfo(); private final Object mMonitor = new Object(); + @VisibleForTesting + boolean mIsHighEndGfx; + private boolean mDisplayNeedsBlanking; + private boolean mNeedTransition; private boolean mNeedRedraw; // This variable can only be accessed in synchronized block. private boolean mWaitingForRendering; GLEngine(Context context, DozeParameters dozeParameters) { + init(dozeParameters); + } + + @VisibleForTesting + GLEngine(DozeParameters dozeParameters, Handler handler) { + super(SystemClock::elapsedRealtime, handler); + init(dozeParameters); + } + + private void init(DozeParameters dozeParameters) { mIsHighEndGfx = ActivityManager.isHighEndGfx(); mDisplayNeedsBlanking = dozeParameters.getDisplayNeedsBlanking(); mNeedTransition = mIsHighEndGfx && !mDisplayNeedsBlanking; diff --git a/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java b/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java index 689eed9e2a61a..678cfd23e3a5e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java @@ -34,6 +34,7 @@ import android.graphics.Bitmap; import android.graphics.ColorSpace; import android.graphics.Rect; import android.hardware.display.DisplayManagerGlobal; +import android.os.Handler; import android.test.suitebuilder.annotation.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; @@ -72,6 +73,8 @@ public class ImageWallpaperTest extends SysuiTestCase { private Bitmap mWallpaperBitmap; @Mock private DozeParameters mDozeParam; + @Mock + private Handler mHandler; private CountDownLatch mEventCountdown; @@ -104,7 +107,7 @@ public class ImageWallpaperTest extends SysuiTestCase { return new ImageWallpaper(mDozeParam) { @Override public Engine onCreateEngine() { - return new GLEngine(mMockContext, mDozeParam) { + return new GLEngine(mDozeParam, mHandler) { @Override public Context getDisplayContext() { return mMockContext; @@ -196,5 +199,6 @@ public class ImageWallpaperTest extends SysuiTestCase { when(mSurfaceHolder.getSurfaceFrame()).thenReturn(frame); assertThat(engineSpy.checkIfShouldStopTransition()).isEqualTo(assertion); + // destroy } }