Don't verify insets for floating windowing mode

After [1], WindowMetrics APIs report all insets regardless of
windowing mode, while View#getWindowInsets won't have any
inset if it is a floating window.

This CL changes to don't verify insets if the Activity's
windowing mode is floating.

[1]: Iae264b567c161bdf4f3d0248c5f81de92fd47828

Test: atest WindowMetricsOnActivityTests
fixes: 229824513
Change-Id: I4e910b82fa4550f78b464a7c2c351e99fc4e2762
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/WindowMetricsActivityTests.java b/tests/framework/base/windowmanager/src/android/server/wm/WindowMetricsActivityTests.java
index fe7ded2..8870dfa 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/WindowMetricsActivityTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/WindowMetricsActivityTests.java
@@ -17,9 +17,9 @@
 package android.server.wm;
 
 import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
 import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
 import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
+import static android.app.WindowConfiguration.isFloating;
 import static android.server.wm.WindowManagerState.STATE_PAUSED;
 import static android.server.wm.WindowMetricsTestHelper.assertBoundsMatchDisplay;
 import static android.server.wm.WindowMetricsTestHelper.getBoundsExcludingNavigationBarAndCutout;
@@ -46,6 +46,7 @@
 import androidx.test.filters.FlakyTest;
 
 import org.junit.Test;
+
 import java.util.function.Supplier;
 
 /**
@@ -62,8 +63,8 @@
 
     @Test
     public void testMetricsMatchesLayoutOnActivityOnCreate() {
-        final MetricsActivity activity = startActivityInWindowingMode(MetricsActivity.class,
-                WINDOWING_MODE_FULLSCREEN);
+        final MetricsActivity activity = startActivityInWindowingModeFullScreen(
+                MetricsActivity.class);
         final OnLayoutChangeListener listener = activity.mListener;
 
         listener.waitForLayout();
@@ -75,8 +76,8 @@
 
     @Test
     public void testMetricsMatchesDisplayAreaOnActivity() {
-        final MetricsActivity activity = startActivityInWindowingMode(MetricsActivity.class,
-                WINDOWING_MODE_FULLSCREEN);
+        final MetricsActivity activity = startActivityInWindowingModeFullScreen(
+                MetricsActivity.class);
 
         assertMetricsValidity(activity);
     }
@@ -86,8 +87,8 @@
     public void testMetricsMatchesActivityBoundsOnNonresizableActivity() {
         assumeTrue("Skipping test: no rotation support", supportsRotation());
 
-        final MinAspectRatioActivity activity = startActivityInWindowingMode(
-                MinAspectRatioActivity.class, WINDOWING_MODE_FULLSCREEN);
+        final MinAspectRatioActivity activity = startActivityInWindowingModeFullScreen(
+                MinAspectRatioActivity.class);
         mWmState.computeState(activity.getComponentName());
 
         assertMetricsValidityForNonresizableActivity(activity);
@@ -97,8 +98,8 @@
     public void testMetricsMatchesLayoutOnPipActivity() {
         assumeTrue(supportsPip());
 
-        final MetricsActivity activity = startActivityInWindowingMode(MetricsActivity.class,
-                WINDOWING_MODE_FULLSCREEN);
+        final MetricsActivity activity = startActivityInWindowingModeFullScreen(
+                MetricsActivity.class);
 
         assertMetricsMatchesLayout(activity);
 
@@ -112,8 +113,8 @@
     public void testMetricsMatchesDisplayAreaOnPipActivity() {
         assumeTrue(supportsPip());
 
-        final MetricsActivity activity = startActivityInWindowingMode(MetricsActivity.class,
-                WINDOWING_MODE_FULLSCREEN);
+        final MetricsActivity activity = startActivityInWindowingModeFullScreen(
+                MetricsActivity.class);
 
         assertMetricsValidity(activity);
 
@@ -154,8 +155,8 @@
     public void testMetricsMatchesLayoutOnSplitActivity() {
         assumeTrue(supportsSplitScreenMultiWindow());
 
-        final MetricsActivity activity = startActivityInWindowingMode(MetricsActivity.class,
-                WINDOWING_MODE_FULLSCREEN);
+        final MetricsActivity activity = startActivityInWindowingModeFullScreen(
+                MetricsActivity.class);
 
         assertMetricsMatchesLayout(activity);
 
@@ -163,8 +164,8 @@
         putActivityInPrimarySplit(activity.getComponentName());
 
         mWmState.computeState(activity.getComponentName());
-        assertTrue(mWmState.getActivity(activity.getComponentName()).getWindowingMode()
-                == WINDOWING_MODE_MULTI_WINDOW);
+        assertEquals(WINDOWING_MODE_MULTI_WINDOW,
+                mWmState.getActivity(activity.getComponentName()).getWindowingMode());
 
         assertMetricsMatchesLayout(activity);
     }
@@ -173,8 +174,8 @@
     public void testMetricsMatchesDisplayAreaOnSplitActivity() {
         assumeTrue(supportsSplitScreenMultiWindow());
 
-        final MetricsActivity activity = startActivityInWindowingMode(MetricsActivity.class,
-                WINDOWING_MODE_FULLSCREEN);
+        final MetricsActivity activity = startActivityInWindowingModeFullScreen(
+                MetricsActivity.class);
 
         assertMetricsValidity(activity);
 
@@ -192,8 +193,8 @@
     public void testMetricsMatchesLayoutOnFreeformActivity() {
         assumeTrue(supportsFreeform());
 
-        final MetricsActivity activity = startActivityInWindowingMode(MetricsActivity.class,
-                WINDOWING_MODE_FULLSCREEN);
+        final MetricsActivity activity = startActivityInWindowingModeFullScreen(
+                MetricsActivity.class);
 
         assertMetricsMatchesLayout(activity);
 
@@ -225,8 +226,8 @@
     public void testMetricsMatchesDisplayAreaOnFreeformActivity() {
         assumeTrue(supportsFreeform());
 
-        final MetricsActivity activity = startActivityInWindowingMode(MetricsActivity.class,
-                WINDOWING_MODE_FULLSCREEN);
+        final MetricsActivity activity = startActivityInWindowingModeFullScreen(
+                MetricsActivity.class);
 
         assertMetricsValidity(activity);
 
@@ -267,13 +268,14 @@
                 () -> currentMetrics.get().getBounds().equals(listener.getLayoutBounds()))
                 .setRetryIntervalMs(500).setRetryLimit(10)
                 .setOnFailure(unused -> fail("WindowMetrics must match layout metrics. Layout"
-                        + "bounds is" + listener.getLayoutBounds() + ", while current window"
+                        + "bounds is " + listener.getLayoutBounds() + ", while current window"
                         + "metrics is " + currentMetrics.get().getBounds())));
 
-        final boolean isFreeForm = activity.getResources().getConfiguration().windowConfiguration
-                .getWindowingMode() == WINDOWING_MODE_FREEFORM;
+        final int windowingMode = activity.getResources().getConfiguration().windowConfiguration
+                .getWindowingMode();
         WindowMetricsTestHelper.assertMetricsMatchesLayout(currentMetrics.get(), maxMetrics.get(),
-                listener.getLayoutBounds(), listener.getLayoutInsets(), isFreeForm);
+                listener.getLayoutBounds(), listener.getLayoutInsets(),
+                windowingMode == WINDOWING_MODE_FREEFORM, isFloating(windowingMode));
     }
 
     /**
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 eb99a02..430b2c5 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/WindowMetricsTestHelper.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/WindowMetricsTestHelper.java
@@ -44,22 +44,27 @@
     public static void assertMetricsMatchesLayout(WindowMetrics currentMetrics,
             WindowMetrics maxMetrics, Rect layoutBounds, WindowInsets layoutInsets) {
         assertMetricsMatchesLayout(currentMetrics, maxMetrics, layoutBounds, layoutInsets,
-                false /* isFreeformActivity */);
+                false /* isFreeform */, false /* isFloating */);
     }
 
     public static void assertMetricsMatchesLayout(WindowMetrics currentMetrics,
             WindowMetrics maxMetrics, Rect layoutBounds, WindowInsets layoutInsets,
-            boolean isFreeformActivity) {
+            boolean isFreeform, boolean isFloating) {
         assertEquals(layoutBounds, currentMetrics.getBounds());
         // Freeform activities doesn't guarantee max window metrics bounds is larger than current
         // window metrics bounds. The bounds of a freeform activity is unlimited except that
         // it must be contained in display bounds.
-        if (!isFreeformActivity) {
+        if (!isFreeform) {
             assertTrue(maxMetrics.getBounds().width()
                     >= currentMetrics.getBounds().width());
             assertTrue(maxMetrics.getBounds().height()
                     >= currentMetrics.getBounds().height());
         }
+        // Don't verify insets for floating Activity since a floating window won't have any insets,
+        // while WindowMetrics reports insets regardless of windowing mode.
+        if (isFloating) {
+            return;
+        }
         final int insetsType = statusBars() | navigationBars() | displayCutout();
         assertEquals(layoutInsets.getInsets(insetsType),
                 currentMetrics.getWindowInsets().getInsets(insetsType));