diff --git a/core/java/android/window/flags/windowing_frontend.aconfig b/core/java/android/window/flags/windowing_frontend.aconfig index 7cfd35b075473ff17995b5829d4e42e65647e1e6..79b3b4f686b40383a26626edc4a3fdb0ca520efc 100644 --- a/core/java/android/window/flags/windowing_frontend.aconfig +++ b/core/java/android/window/flags/windowing_frontend.aconfig @@ -7,6 +7,14 @@ flag { bug: "232195501" } +flag { + name: "defer_display_updates" + namespace: "window_manager" + description: "Feature flag for deferring DisplayManager updates to WindowManager if Shell transition is running" + bug: "259220649" + is_fixed_read_only: true +} + flag { name: "close_to_square_config_includes_status_bar" namespace: "windowing_frontend" diff --git a/services/tests/wmtests/Android.bp b/services/tests/wmtests/Android.bp index af39b2f027eecdfd2de9bff6df1c5262ced56643..1b8d746f271fa8ebe223fd0d15a435f9d4da3db0 100644 --- a/services/tests/wmtests/Android.bp +++ b/services/tests/wmtests/Android.bp @@ -60,6 +60,7 @@ android_test { "truth", "testables", "hamcrest-library", + "flag-junit", "platform-compat-test-rules", "CtsSurfaceValidatorLib", "service-sdksandbox.impl", diff --git a/services/tests/wmtests/src/com/android/server/wm/SystemServiceTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/SystemServiceTestsBase.java index 486486869d05580916d43ff412e92b74a89acbd5..3cb4a1d7b7ec7d302960dd3405b40ddeffea0379 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SystemServiceTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/SystemServiceTestsBase.java @@ -19,6 +19,7 @@ package com.android.server.wm; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import android.os.Handler; +import android.platform.test.flag.junit.SetFlagsRule; import android.testing.DexmakerShareClassLoaderRule; import org.junit.Rule; @@ -27,11 +28,16 @@ import java.util.concurrent.Callable; /** The base class which provides the common rule for test classes under wm package. */ class SystemServiceTestsBase { - @Rule + @Rule(order = 0) public final DexmakerShareClassLoaderRule mDexmakerShareClassLoaderRule = new DexmakerShareClassLoaderRule(); - @Rule - public final SystemServicesTestRule mSystemServicesTestRule = new SystemServicesTestRule(); + + @Rule(order = 1) + public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); + + @Rule(order = 2) + public final SystemServicesTestRule mSystemServicesTestRule = new SystemServicesTestRule( + this::onBeforeSystemServicesCreated); @WindowTestRunner.MethodWrapperRule public final WindowManagerGlobalLockRule mLockRule = @@ -64,6 +70,11 @@ class SystemServiceTestsBase { return mLockRule.waitForLocked(callable); } + /** + * Called before system services are created + */ + protected void onBeforeSystemServicesCreated() {} + /** * Make the system booted, so that {@link ActivityStack#resumeTopActivityInnerLocked} can really * be executed to update activity state and configuration when resuming the current top. diff --git a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java index 7634d9f601d4da1526662f0564eef03dd4b7b4fe..2597465337ecff3535f838e02371c441fa9c86e2 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java +++ b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java @@ -134,11 +134,20 @@ public class SystemServicesTestRule implements TestRule { private WindowState.PowerManagerWrapper mPowerManagerWrapper; private InputManagerService mImService; private InputChannel mInputChannel; + private Runnable mOnBeforeServicesCreated; /** * Spied {@link SurfaceControl.Transaction} class than can be used to verify calls. */ SurfaceControl.Transaction mTransaction; + public SystemServicesTestRule(Runnable onBeforeServicesCreated) { + mOnBeforeServicesCreated = onBeforeServicesCreated; + } + + public SystemServicesTestRule() { + this(/* onBeforeServicesCreated= */ null); + } + @Override public Statement apply(Statement base, Description description) { return new Statement() { @@ -168,6 +177,10 @@ public class SystemServicesTestRule implements TestRule { } private void setUp() { + if (mOnBeforeServicesCreated != null) { + mOnBeforeServicesCreated.run(); + } + // Use stubOnly() to reduce memory usage if it doesn't need verification. final MockSettings spyStubOnly = withSettings().stubOnly() .defaultAnswer(CALLS_REAL_METHODS);