Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f8f2f16f authored by Beverly's avatar Beverly Committed by Beverly Tai
Browse files

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
parent 969e1e27
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -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;
+5 −1
Original line number Diff line number Diff line
@@ -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
    }
}