From c1470021c86d49492f1eaa2d2e0390588f0fd98d Mon Sep 17 00:00:00 2001 From: Jeremy Sim Date: Wed, 5 Jun 2024 18:19:55 -0700 Subject: [PATCH] Fix flaky test Attempts to fix a flaky test by ensuring that recents is always cleared before creating a split pair (so the split pair under test is always the same). Bug: 340935208 Test: testSaveAppPairMenuItemOrActionExistsOnSplitPair(), testSplitTaskTapBothIconMenus() Flag: TEST_ONLY Change-Id: Ibc81b90fac531f0e78e93a494ff59073ab5e52cf --- .../quickstep/views/OverviewActionsView.java | 2 +- .../quickstep/TaplOverviewIconTest.java | 2 ++ .../quickstep/TaplTestsSplitscreen.java | 18 +++----------- .../launcher3/ui/AbstractLauncherUiTest.java | 7 ++++++ .../android/launcher3/tapl/BaseOverview.java | 24 ++++++++++++++++--- 5 files changed, 34 insertions(+), 19 deletions(-) diff --git a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java index 604d072ad5..d9468c7038 100644 --- a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java +++ b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java @@ -278,7 +278,7 @@ public class OverviewActionsView extends FrameLayo boolean showSingleTaskActions = !mIsGroupedTask; boolean showGroupActions = mIsGroupedTask && mDp.isTablet && mCanSaveAppPair; Log.d(TAG, "updateActionButtonsVisibility() called: showSingleTaskActions = [" - + showSingleTaskActions + ", showGroupActions = [" + showGroupActions + "]"); + + showSingleTaskActions + "], showGroupActions = [" + showGroupActions + "]"); getActionsAlphas().get(INDEX_GROUPED_ALPHA).setValue(showSingleTaskActions ? 1 : 0); getGroupActionsAlphas().get(INDEX_GROUPED_ALPHA).setValue(showGroupActions ? 1 : 0); } diff --git a/quickstep/tests/src/com/android/quickstep/TaplOverviewIconTest.java b/quickstep/tests/src/com/android/quickstep/TaplOverviewIconTest.java index fa10b61ad4..b7fd8be311 100644 --- a/quickstep/tests/src/com/android/quickstep/TaplOverviewIconTest.java +++ b/quickstep/tests/src/com/android/quickstep/TaplOverviewIconTest.java @@ -88,6 +88,8 @@ public class TaplOverviewIconTest extends AbstractLauncherUiTest { UiDevice.getInstance(getInstrumentation()).pressHome(); mLauncher.waitForLauncherInitialized(); } + + /** Clears all recent tasks */ + protected void clearAllRecentTasks() { + if (!mLauncher.getRecentTasks().isEmpty()) { + mLauncher.goHome().switchToOverview().dismissAllTasks(); + } + } } diff --git a/tests/tapl/com/android/launcher3/tapl/BaseOverview.java b/tests/tapl/com/android/launcher3/tapl/BaseOverview.java index e10893eea5..567a8bd1c0 100644 --- a/tests/tapl/com/android/launcher3/tapl/BaseOverview.java +++ b/tests/tapl/com/android/launcher3/tapl/BaseOverview.java @@ -23,6 +23,7 @@ import static com.android.launcher3.tapl.OverviewTask.TASK_START_EVENT; import static com.android.launcher3.testing.shared.TestProtocol.NORMAL_STATE_ORDINAL; import android.graphics.Rect; +import android.util.Log; import android.view.KeyEvent; import androidx.annotation.NonNull; @@ -44,6 +45,7 @@ import java.util.stream.Collectors; * Common overview panel for both Launcher and fallback recents */ public class BaseOverview extends LauncherInstrumentation.VisibleContainer { + private static final String TAG = "BaseOverview"; protected static final String TASK_RES_ID = "task"; private static final Pattern EVENT_ALT_ESC_UP = Pattern.compile( "Key event: KeyEvent.*?action=ACTION_UP.*?keyCode=KEYCODE_ESCAPE.*?metaState=0"); @@ -384,25 +386,31 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer { protected boolean isActionsViewVisible() { if (!hasTasks() || isClearAllVisible()) { + Log.d(TAG, "Not expecting an actions bar: no tasks/'Clear all' is visible"); return false; } boolean isTablet = mLauncher.isTablet(); if (isTablet && mLauncher.isGridOnlyOverviewEnabled()) { + Log.d(TAG, "Not expecting an actions bar: device is tablet with grid-only Overview"); return false; } OverviewTask task = isTablet ? getFocusedTaskForTablet() : getCurrentTask(); if (task == null) { + Log.d(TAG, "Not expecting an actions bar: no current task"); return false; } // In tablets, if focused task is not in center, overview actions aren't visible. if (isTablet && Math.abs(task.getExactCenterX() - mLauncher.getExactScreenCenterX()) >= 1) { + Log.d(TAG, "Not expecting an actions bar: device is tablet and task is not centered"); return false; } if (task.isTaskSplit() && (!mLauncher.isAppPairsEnabled() || !isTablet)) { + Log.d(TAG, "Not expecting an actions bar: device is phone and task is split"); // Overview actions aren't visible for split screen tasks, except for save app pair // button on tablets. return false; } + Log.d(TAG, "Expecting an actions bar"); return true; } @@ -447,10 +455,20 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer { } private void verifyActionsViewVisibility() { + // If no running tasks, no need to verify actions view visibility. + if (getTasks().isEmpty()) { + return; + } + + boolean isTablet = mLauncher.isTablet(); + OverviewTask task = isTablet ? getFocusedTaskForTablet() : getCurrentTask(); + try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer( - "want to assert overview actions view visibility")) { - boolean isTablet = mLauncher.isTablet(); - OverviewTask task = isTablet ? getFocusedTaskForTablet() : getCurrentTask(); + "want to assert overview actions view visibility=" + + isActionsViewVisible() + + ", focused task is " + + (task == null ? "null" : (task.isTaskSplit() ? "split" : "not split")) + )) { if (isActionsViewVisible()) { if (task.isTaskSplit()) {