diff options
| author | 2023-10-04 11:09:25 +0000 | |
|---|---|---|
| committer | 2023-10-20 11:09:34 +0000 | |
| commit | ff5c518865e8793622db237adb993592556e5b54 (patch) | |
| tree | bb4f509883636de9b3a1802c59bdf2dfd3c94b96 | |
| parent | 69b2fb8335f7dfa1726a16e64bee70827d4fc6ff (diff) | |
Add defer display updates trunk stable flag
Creates defer display updates flag and
prepares unit test dependencies to
override the flag in WM tests.
Bug: 259220649
Test: atest DisplayContentTests
Test: compile and run tests locally
Change-Id: I94dcea319addd837c07825a6d85c5ea8aff6f63f
4 files changed, 36 insertions, 3 deletions
diff --git a/core/java/android/window/flags/windowing_frontend.aconfig b/core/java/android/window/flags/windowing_frontend.aconfig index 7cfd35b07547..79b3b4f686b4 100644 --- a/core/java/android/window/flags/windowing_frontend.aconfig +++ b/core/java/android/window/flags/windowing_frontend.aconfig @@ -8,6 +8,14 @@ flag { } 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" description: "On close to square display, when necessary, configuration includes status bar" diff --git a/services/tests/wmtests/Android.bp b/services/tests/wmtests/Android.bp index af39b2f027ee..1b8d746f271f 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 486486869d05..3cb4a1d7b7ec 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 = @@ -65,6 +71,11 @@ class SystemServiceTestsBase { } /** + * 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 7634d9f601d4..2597465337ec 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); |