diff options
| -rw-r--r-- | core/tests/coretests/src/android/app/activity/ActivityThreadTest.java | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java index 4fe68cd5a27a..e5da41c7c113 100644 --- a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java +++ b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java @@ -51,6 +51,8 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Rect; import android.hardware.display.DisplayManager; +import android.hardware.display.VirtualDisplay; +import android.os.Bundle; import android.os.IBinder; import android.platform.test.annotations.Presubmit; import android.util.DisplayMetrics; @@ -66,6 +68,7 @@ import androidx.test.runner.AndroidJUnit4; import com.android.internal.content.ReferrerIntent; +import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; @@ -95,6 +98,16 @@ public class ActivityThreadTest { new ActivityTestRule<>(TestActivity.class, true /* initialTouchMode */, false /* launchActivity */); + private ArrayList<VirtualDisplay> mCreatedVirtualDisplays; + + @After + public void tearDown() { + if (mCreatedVirtualDisplays != null) { + mCreatedVirtualDisplays.forEach(VirtualDisplay::release); + mCreatedVirtualDisplays = null; + } + } + @Test public void testDoubleRelaunch() throws Exception { final Activity activity = mActivityTestRule.launchActivity(new Intent()); @@ -410,7 +423,6 @@ public class ActivityThreadTest { Context appContext = activity.getApplication(); Configuration originalAppConfig = new Configuration(appContext.getResources().getConfiguration()); - DisplayManager dm = appContext.getSystemService(DisplayManager.class); int virtualDisplayWidth; int virtualDisplayHeight; @@ -421,8 +433,8 @@ public class ActivityThreadTest { virtualDisplayWidth = 200; virtualDisplayHeight = 100; } - Display virtualDisplay = dm.createVirtualDisplay("virtual-display", - virtualDisplayWidth, virtualDisplayHeight, 200, null, 0).getDisplay(); + final Display virtualDisplay = createVirtualDisplay(appContext, + virtualDisplayWidth, virtualDisplayHeight); Context virtualDisplayContext = appContext.createDisplayContext(virtualDisplay); int originalVirtualDisplayOrientation = virtualDisplayContext.getResources() .getConfiguration().orientation; @@ -467,7 +479,6 @@ public class ActivityThreadTest { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { Configuration originalActivityConfig = new Configuration(activity.getResources().getConfiguration()); - DisplayManager dm = activity.getSystemService(DisplayManager.class); int virtualDisplayWidth; int virtualDisplayHeight; @@ -478,8 +489,8 @@ public class ActivityThreadTest { virtualDisplayWidth = 200; virtualDisplayHeight = 100; } - Display virtualDisplay = dm.createVirtualDisplay("virtual-display", - virtualDisplayWidth, virtualDisplayHeight, 200, null, 0).getDisplay(); + final Display virtualDisplay = createVirtualDisplay(activity, + virtualDisplayWidth, virtualDisplayHeight); Context virtualDisplayContext = activity.createDisplayContext(virtualDisplay); int originalVirtualDisplayOrientation = virtualDisplayContext.getResources() .getConfiguration().orientation; @@ -704,6 +715,17 @@ public class ActivityThreadTest { return config.seq; } + private Display createVirtualDisplay(Context context, int w, int h) { + final DisplayManager dm = context.getSystemService(DisplayManager.class); + final VirtualDisplay virtualDisplay = dm.createVirtualDisplay("virtual-display", w, h, + 200 /* densityDpi */, null /* surface */, 0 /* flags */); + if (mCreatedVirtualDisplays == null) { + mCreatedVirtualDisplays = new ArrayList<>(); + } + mCreatedVirtualDisplays.add(virtualDisplay); + return virtualDisplay.getDisplay(); + } + private static ActivityClientRecord getActivityClientRecord(Activity activity) { final ActivityThread thread = activity.getActivityThread(); final IBinder token = activity.getActivityToken(); @@ -796,6 +818,14 @@ public class ActivityThreadTest { volatile CountDownLatch mConfigLatch; @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + getWindow().getDecorView().setKeepScreenOn(true); + setShowWhenLocked(true); + setTurnScreenOn(true); + } + + @Override public void onConfigurationChanged(Configuration config) { super.onConfigurationChanged(config); mConfig.setTo(config); |