Merge "Don't verify display size for foldables temporarily" into tm-dev
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/WindowMetricsTestHelper.java b/tests/framework/base/windowmanager/src/android/server/wm/WindowMetricsTestHelper.java
index 6fbfe36..eb99a02 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/WindowMetricsTestHelper.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/WindowMetricsTestHelper.java
@@ -17,6 +17,7 @@
package android.server.wm;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.server.wm.ActivityManagerTestBase.isTablet;
import static android.view.WindowInsets.Type.displayCutout;
import static android.view.WindowInsets.Type.navigationBars;
import static android.view.WindowInsets.Type.statusBars;
@@ -119,6 +120,11 @@
* @param display the display to compare bounds against
*/
static void assertBoundsMatchDisplay(Rect maxBounds, Rect currentBounds, Display display) {
+ // TODO(b/224404595): remove the logic after we can revert ag/17076728 back.
+ if (isTablet()) {
+ return;
+ }
+
// Check window bounds
final Point displaySize = new Point();
display.getSize(displaySize);
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 b032d37..8bf60f4 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 android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.INVALID_DISPLAY;
import static android.view.Surface.ROTATION_0;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
@@ -165,6 +166,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import com.android.compatibility.common.util.AppOpsUtils;
@@ -243,6 +245,7 @@
private static Boolean sSupportsSystemDecorsOnSecondaryDisplays = null;
private static Boolean sSupportsInsecureLockScreen = null;
private static Boolean sIsAssistantOnTop = null;
+ private static Boolean sIsTablet = null;
private static boolean sIllegalTaskStateFound;
protected static final int INVALID_DEVICE_ROTATION = -1;
@@ -1064,9 +1067,20 @@
return hasDeviceFeature(FEATURE_TELEVISION);
}
- protected boolean isTablet() {
- // Larger than approx 7" tablets
- return mContext.getResources().getConfiguration().smallestScreenWidthDp >= 600;
+ public static boolean isTablet() {
+ if (sIsTablet == null) {
+ // Use WindowContext with type application overlay to prevent the metrics overridden by
+ // activity bounds. Note that process configuration may still be overridden by
+ // foreground Activity.
+ final Context appContext = ApplicationProvider.getApplicationContext();
+ final Display defaultDisplay = appContext.getSystemService(DisplayManager.class)
+ .getDisplay(DEFAULT_DISPLAY);
+ final Context windowContext = appContext.createWindowContext(defaultDisplay,
+ TYPE_APPLICATION_OVERLAY, null /* options */);
+ sIsTablet = windowContext.getResources()
+ .getConfiguration().smallestScreenWidthDp >= 600;
+ }
+ return sIsTablet;
}
protected boolean isOperatorTierDevice() {