summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nick Chameyev <nickchameyev@google.com> 2023-10-04 11:09:25 +0000
committer Nick Chameyev <nickchameyev@google.com> 2023-10-20 11:09:34 +0000
commitff5c518865e8793622db237adb993592556e5b54 (patch)
treebb4f509883636de9b3a1802c59bdf2dfd3c94b96
parent69b2fb8335f7dfa1726a16e64bee70827d4fc6ff (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
-rw-r--r--core/java/android/window/flags/windowing_frontend.aconfig8
-rw-r--r--services/tests/wmtests/Android.bp1
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/SystemServiceTestsBase.java17
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java13
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);