From f0b39f5c93294594025019b56b31568aab0ed803 Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Fri, 2 Jun 2023 17:21:22 +0800 Subject: [PATCH] Reduce dependency of real device for wm unit test By default the test copy the display info from the environment. Such as the display size can be close to square or mDefaultFixedToUserRotation is true for FEATURE_AUTOMOTIVE, which may not match the assumption of some tests. Though ideally the unit test should mock those attributes to have consistent precondition, so far there are not too many cases hence make the affected tests more independent. Bug: 272527315 Bug: 267795360 Test: atest ActivityRecordTests#testIsSnapshotCompatible WallpaperControllerTests.testWallpaperSizeWithFixedTransform Change-Id: I3373a3f7093e9ace1edf185a9d124e262f27f1f0 --- .../src/com/android/server/wm/ActivityRecordTests.java | 3 ++- .../src/com/android/server/wm/SizeCompatTests.java | 8 -------- .../com/android/server/wm/WallpaperControllerTests.java | 4 ++++ .../src/com/android/server/wm/WindowTestsBase.java | 9 +++++++++ 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java index cb984f814f1a8..3ff433e546d8e 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -1996,7 +1996,8 @@ public class ActivityRecordTests extends WindowTestsBase { assertTrue(activity.isSnapshotCompatible(snapshot)); - setRotatedScreenOrientationSilently(activity); + doReturn(task.getWindowConfiguration().getRotation() + 1).when(mDisplayContent) + .rotationForActivityInDifferentOrientation(activity); assertFalse(activity.isSnapshotCompatible(snapshot)); } diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java index 2dd34eb5ac4d7..e74ad3364b63f 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java @@ -4654,14 +4654,6 @@ public class SizeCompatTests extends WindowTestsBase { return c; } - private static void resizeDisplay(DisplayContent displayContent, int width, int height) { - displayContent.updateBaseDisplayMetrics(width, height, displayContent.mBaseDisplayDensity, - displayContent.mBaseDisplayPhysicalXDpi, displayContent.mBaseDisplayPhysicalYDpi); - final Configuration c = new Configuration(); - displayContent.computeScreenConfiguration(c); - displayContent.onRequestedOverrideConfigurationChanged(c); - } - private static void setNeverConstrainDisplayApisFlag(@Nullable String value, boolean makeDefault) { DeviceConfig.setProperty(NAMESPACE_CONSTRAIN_DISPLAY_APIS, diff --git a/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java index 01ddcca993004..f3d8114b9e942 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java @@ -127,6 +127,10 @@ public class WallpaperControllerTests extends WindowTestsBase { public void testWallpaperSizeWithFixedTransform() { // No wallpaper final DisplayContent dc = mDisplayContent; + if (dc.mBaseDisplayHeight == dc.mBaseDisplayWidth) { + // Make sure the size is different when changing orientation. + resizeDisplay(dc, 500, 1000); + } // No wallpaper WSA Surface final WindowState wallpaperWindow = createWallpaperWindow(dc); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java index 863523f826b2e..fefad0df5289a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java @@ -71,6 +71,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; +import android.content.res.Configuration; import android.graphics.Insets; import android.graphics.Rect; import android.hardware.HardwareBuffer; @@ -945,6 +946,14 @@ class WindowTestsBase extends SystemServiceTestsBase { dc.setRotationAnimation(null); } + static void resizeDisplay(DisplayContent displayContent, int width, int height) { + displayContent.updateBaseDisplayMetrics(width, height, displayContent.mBaseDisplayDensity, + displayContent.mBaseDisplayPhysicalXDpi, displayContent.mBaseDisplayPhysicalYDpi); + final Configuration c = new Configuration(); + displayContent.computeScreenConfiguration(c); + displayContent.onRequestedOverrideConfigurationChanged(c); + } + // The window definition for UseTestDisplay#addWindows. The test can declare to add only // necessary windows, that avoids adding unnecessary overhead of unused windows. static final int W_NOTIFICATION_SHADE = TYPE_NOTIFICATION_SHADE;