Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e696f1c authored by Yunfan Chen's avatar Yunfan Chen
Browse files

Fix flaky WindowStateTests

The test testVisibleWithInsetsProvider was flaky because the provider
cannot control the visibility if the USE_NEW_INSETS_PROPERTY in system
property is not NEW_INSETS_MODE_FULL. In order to test the provider
visibility controlling functionality, we need to make the top bar insets
controllable.

To do so, we need to update sNewInsetsMode in ViewRootImpl for the
test.

Test: atest WindowStateTests
Bug: 74078662
Bug: 69229402
Change-Id: If6aba86e3c5a55dd0976ddda3a93f003ebaf5712
parent 2d0c0e78
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.hardware.camera2.params.OutputConfiguration.ROTATION_90;
import static android.view.InsetsState.TYPE_TOP_BAR;
import static android.view.Surface.ROTATION_0;
import static android.view.ViewRootImpl.NEW_INSETS_MODE_FULL;
import static android.view.WindowManager.LayoutParams.FIRST_SUB_WINDOW;
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
@@ -61,13 +62,15 @@ import android.util.Size;
import android.view.DisplayCutout;
import android.view.InsetsSource;
import android.view.SurfaceControl;
import android.view.ViewRootImpl;
import android.view.WindowManager;

import androidx.test.filters.FlakyTest;
import androidx.test.filters.SmallTest;

import com.android.server.wm.utils.WmDisplayCutout;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import java.util.LinkedList;
@@ -78,10 +81,23 @@ import java.util.LinkedList;
 * Build/Install/Run:
 *  atest FrameworksServicesTests:WindowStateTests
 */
@FlakyTest(bugId = 74078662)
@SmallTest
@Presubmit
public class WindowStateTests extends WindowTestsBase {
    private static int sPreviousNewInsetsMode;

    @BeforeClass
    public static void setUpOnce() {
        sPreviousNewInsetsMode = ViewRootImpl.sNewInsetsMode;
        // To let the insets provider control the insets visibility, the insets mode has to be
        // NEW_INSETS_MODE_FULL.
        ViewRootImpl.sNewInsetsMode = NEW_INSETS_MODE_FULL;
    }

    @AfterClass
    public static void tearDownOnce() {
        ViewRootImpl.sNewInsetsMode = sPreviousNewInsetsMode;
    }

    @Test
    public void testIsParentWindowHidden() {