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

Commit 6dd9a627 authored by Yunfan Chen's avatar Yunfan Chen
Browse files

Fix flaky testForAllWinddow

It was flaky because the exiting window may be removed before the
assertion. Prevent it from removal can fix it.

During the setup, while window get created, there are
WindowSurfacePlacer traversal being posted to mAnimationHandler. This
could happen while we run the test. During the traversal, all exiting
window will be removed if possible, and the test window will get
removed.

Wait until the traversal finished can fix the issue.

Bug: 77772044
Bug: 74078662
Bug: 124088319
Test: atest DisplayContentTests#testForAllWindows
Change-Id: I7f14605d3bd4a548755b7e88b0294168ab46ec7b
parent 753f4ce4
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -61,7 +61,6 @@ import android.os.SystemClock;
import android.platform.test.annotations.Presubmit;
import android.util.DisplayMetrics;
import android.view.DisplayCutout;
import android.view.DisplayInfo;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.Surface;
@@ -87,18 +86,22 @@ import java.util.List;
 * Tests for the {@link DisplayContent} class.
 *
 * Build/Install/Run:
 *  atest FrameworksServicesTests:DisplayContentTests
 *  atest WmTests:DisplayContentTests
 */
@SmallTest
@Presubmit
public class DisplayContentTests extends WindowTestsBase {

    @Test
    @FlakyTest(bugId = 77772044)
    @FlakyTest(detail = "Promote to presubmit when shown to be stable.")
    public void testForAllWindows() {
        final WindowState exitingAppWindow = createWindow(null, TYPE_BASE_APPLICATION,
                mDisplayContent, "exiting app");
        final AppWindowToken exitingAppToken = exitingAppWindow.mAppToken;
        // Wait until everything in animation handler get executed to prevent the exiting window
        // from being removed during WindowSurfacePlacer Traversal.
        waitUntilHandlersIdle();

        exitingAppToken.mIsExiting = true;
        exitingAppToken.getTask().mStack.mExitingAppTokens.add(exitingAppToken);