Add OverviewDesktop test to verify carousel behavior on swipe up

This CL updates a test to verify the behaviour while swiping up from a fullscreen app to Overview and checking if that TaskView is between DesktopTasks (right side) and Grid Tasks (left side).
The test adds the following validations:
- Launches adjacent task while DesktopTask is at the center of the screen
- Swipe up from a fullscreen app to Overview to validate whether the task is between other tasks and desktop tasks.
- Fling back to DesktopTask to dismiss the adjacent focused task

Fix: 353948167
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Test: TaplTestsOverviewDesktop
Change-Id: Iaa15d4061c3b6ba8fc0d03416b4721cdf3f047c3
This commit is contained in:
Jordan Silva
2024-11-05 17:00:46 +00:00
parent 20cde49b4c
commit f048c99de4
3 changed files with 53 additions and 21 deletions
@@ -104,28 +104,36 @@ class TaplTestsOverviewDesktop : AbstractLauncherUiTest<QuickstepLauncher?>() {
@Test
@PortraitLandscape
fun dismissFocusedTask_thenDesktopTask_thenFocusedTaskIsCentered() {
fun dismissTasks_whenDesktopTask_IsInTheCenter() {
// Create extra activity to be DesktopTaskView
startTestActivity(TEST_ACTIVITY_EXTRA)
mLauncher.goHome().switchToOverview()
val desktop = moveTaskToDesktop(TEST_ACTIVITY_EXTRA)
var overview = desktop.switchToOverview()
val overview = desktop.switchToOverview()
// Open focused task and go back to Overview to validate whether it has adjacent tasks in
// its both sides (grid task on left and desktop tasks at its right side)
val focusedTaskOpened = overview.getTestActivityTask(TEST_ACTIVITY_2).open()
// Dismiss focused task
val focusedTask1 = overview.getTestActivityTask(TEST_ACTIVITY_2)
assertTaskContentDescription(focusedTask1, TEST_ACTIVITY_2)
focusedTask1.dismiss()
// Dismiss DesktopTaskView
// Fling to desktop task and dismiss the focused task to check repositioning of
// grid tasks.
overview = focusedTaskOpened.switchToOverview().apply { flingBackward() }
val desktopTask = overview.currentTask
assertWithMessage("The current task is not a Desktop.").that(desktopTask.isDesktop).isTrue()
// Get focused task (previously opened task) then dismiss this task
val focusedTaskInOverview = overview.getTestActivityTask(TEST_ACTIVITY_2)
assertTaskContentDescription(focusedTaskInOverview, TEST_ACTIVITY_2)
focusedTaskInOverview.dismiss()
// Dismiss DesktopTask to validate whether the new focused task will take its position
desktopTask.dismiss()
// Dismiss focused task
val focusedTask2 = overview.currentTask
assertTaskContentDescription(focusedTask2, TEST_ACTIVITY_1)
focusedTask2.dismiss()
// Dismiss last focused task
val lastFocusedTask = overview.currentTask
assertTaskContentDescription(lastFocusedTask, TEST_ACTIVITY_1)
lastFocusedTask.dismiss()
assertWithMessage("Still have tasks after dismissing all the tasks")
.that(mLauncher.workspace.switchToOverview().hasTasks())
@@ -29,6 +29,7 @@ import androidx.test.uiautomator.UiObject2;
import com.android.launcher3.tapl.LauncherInstrumentation.NavigationModel;
import com.android.launcher3.tapl.LauncherInstrumentation.TrackpadGestureType;
import com.android.launcher3.tapl.OverviewTask.TaskViewType;
import com.android.launcher3.testing.shared.TestProtocol;
import java.util.List;
@@ -121,12 +122,31 @@ public abstract class Background extends LauncherInstrumentation.VisibleContaine
if (mLauncher.isTablet()) {
List<UiObject2> tasks = mLauncher.getDevice().findObjects(
TASK_SELECTOR);
final int centerX = mLauncher.getDevice().getDisplayWidth() / 2;
mLauncher.assertTrue(
"Task(s) found to the right of the swiped task",
tasks.stream().allMatch(t ->
t.getVisibleBounds().right < centerX
|| t.getVisibleBounds().centerX() == centerX));
UiObject2 centerTask = tasks.stream()
.filter(t -> t.getVisibleCenter().x == centerX)
.findFirst()
.orElse(null);
if (centerTask != null) {
mLauncher.assertTrue(
"Task(s) found to the right of the swiped task",
tasks.stream()
.filter(t -> t != centerTask
&& OverviewTask.getType(t)
!= TaskViewType.DESKTOP)
.allMatch(t -> t.getVisibleBounds().right
< centerTask.getVisibleBounds().left));
mLauncher.assertTrue(
"DesktopTask(s) found to the left of the swiped task",
tasks.stream()
.filter(t -> t != centerTask
&& OverviewTask.getType(t)
== TaskViewType.DESKTOP)
.allMatch(t -> t.getVisibleBounds().left
> centerTask.getVisibleBounds().right));
}
}
}
@@ -57,7 +57,7 @@ public final class OverviewTask {
mLauncher.assertNotNull("task must not be null", task);
mTask = task;
mOverview = overview;
mType = getType();
mType = getType(task);
verifyActiveContainer();
}
@@ -304,8 +304,12 @@ public final class OverviewTask {
return containsContentDescription(expected, DEFAULT);
}
private TaskViewType getType() {
String resourceName = mTask.getResourceName();
/**
* Returns the TaskView type of the task. It will return whether the task is a single TaskView,
* a GroupedTaskView or a DesktopTaskView.
*/
static TaskViewType getType(UiObject2 task) {
String resourceName = task.getResourceName();
if (resourceName.endsWith("task_view_grouped")) {
return TaskViewType.GROUPED;
} else if (resourceName.endsWith("task_view_desktop")) {
@@ -345,7 +349,7 @@ public final class OverviewTask {
}
}
private enum TaskViewType {
enum TaskViewType {
SINGLE,
GROUPED,
DESKTOP