Fail tests which leave unfinished transitions behind
If a test starts a transition without finishing it, it will
cause subsequent tests to fail (sometimes passing itself still).
To help identify which tests cause this, add a check to teardown.
Bug: 183993924
Test: any subclass
Change-Id: Ib240a0c073c2e4eee4241735f0d91331702a6594
diff --git a/tests/framework/base/windowmanager/util/src/android/server/wm/ActivityManagerTestBase.java b/tests/framework/base/windowmanager/util/src/android/server/wm/ActivityManagerTestBase.java
index c2ac37c..e5b46b8 100644
--- a/tests/framework/base/windowmanager/util/src/android/server/wm/ActivityManagerTestBase.java
+++ b/tests/framework/base/windowmanager/util/src/android/server/wm/ActivityManagerTestBase.java
@@ -104,6 +104,7 @@
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -229,6 +230,9 @@
private static final int UI_MODE_TYPE_MASK = 0x0f;
private static final int UI_MODE_TYPE_VR_HEADSET = 0x07;
+ private static final boolean ENABLE_SHELL_TRANSITIONS =
+ SystemProperties.getBoolean("persist.debug.shell_transit", false);
+
private static Boolean sHasHomeScreen = null;
private static Boolean sSupportsSystemDecorsOnSecondaryDisplays = null;
private static Boolean sSupportsInsecureLockScreen = null;
@@ -615,6 +619,12 @@
if (mWaitForRotationOnTearDown) {
mWmState.waitForDisplayUnfrozen();
}
+
+ if (ENABLE_SHELL_TRANSITIONS) {
+ if (!mWmState.waitForAppTransitionIdleOnDisplay(DEFAULT_DISPLAY)) {
+ fail("Shell Transition left unfinished!");
+ }
+ }
}
/**