Revert "Revert "Add testSplitFromOverview test (for phones)""

This reverts commit 24df4bffd8.

Reason for revert: resubmit

Change-Id: Iebc66cbce6885e06fe7691c548c1ffe950e936df
This commit is contained in:
Tracy Zhou
2022-08-10 21:01:15 +00:00
parent f2d61702cd
commit 6a4a229c27
6 changed files with 128 additions and 9 deletions

View File

@@ -179,6 +179,21 @@ public class TaplTestsQuickstep extends AbstractQuickStepTest {
actionsView.clickAndDismissScreenshot();
}
@Test
@PortraitLandscape
public void testSplitFromOverview() {
assumeTrue(!mLauncher.isTablet());
startTestActivity(2);
startTestActivity(3);
mLauncher.goHome().switchToOverview().getCurrentTask()
.tapMenu()
.tapSplitMenuItem()
.getTestActivityTask(2)
.open();
}
@Test
@PortraitLandscape
public void testSplitFromOverviewForTablet() {

View File

@@ -247,8 +247,16 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer {
return mLauncher.hasLauncherObject(mLauncher.getOverviewObjectSelector("clear_all"));
}
protected boolean isActionsViewVisible() {
OverviewTask task = mLauncher.isTablet() ? getFocusedTaskForTablet() : getCurrentTask();
if (task == null) {
return false;
}
return !task.isTaskSplit();
}
private void verifyActionsViewVisibility() {
if (!hasTasks()) {
if (!hasTasks() || !isActionsViewVisible()) {
return;
}
try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
@@ -265,13 +273,11 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer {
* Returns if focused task is currently snapped task in tablet grid overview.
*/
private boolean isOverviewSnappedToFocusedTaskForTablet() {
UiObject2 focusedTask = getFocusedTaskForTablet();
OverviewTask focusedTask = getFocusedTaskForTablet();
if (focusedTask == null) {
return false;
}
return Math.abs(
focusedTask.getVisibleBounds().exactCenterX() - mLauncher.getExactScreenCenterX())
< 1;
return Math.abs(focusedTask.getExactCenterX() - mLauncher.getExactScreenCenterX()) < 1;
}
/**
@@ -279,7 +285,7 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer {
*
* @throws IllegalStateException if not run on a tablet device.
*/
UiObject2 getFocusedTaskForTablet() {
OverviewTask getFocusedTaskForTablet() {
if (!mLauncher.isTablet()) {
throw new IllegalStateException("Must be run on tablet device.");
}
@@ -290,9 +296,9 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer {
int focusedTaskHeight = mLauncher.getFocusedTaskHeightForTablet();
for (UiObject2 task : taskViews) {
if (task.getVisibleBounds().height() == focusedTaskHeight) {
return task;
return new OverviewTask(mLauncher, task, this);
}
}
return null;
}
}
}

View File

@@ -169,6 +169,7 @@ public final class LauncherInstrumentation {
private static final String WIDGETS_RES_ID = "primary_widgets_list_view";
private static final String CONTEXT_MENU_RES_ID = "popup_container";
private static final String TASKBAR_RES_ID = "taskbar_view";
private static final String SPLIT_PLACEHOLDER_RES_ID = "split_placeholder";
public static final int WAIT_TIME_MS = 30000;
private static final String SYSTEMUI_PACKAGE = "com.android.systemui";
private static final String ANDROID_PACKAGE = "android";
@@ -724,6 +725,7 @@ public final class LauncherInstrumentation {
waitUntilLauncherObjectGone(OVERVIEW_RES_ID);
waitUntilLauncherObjectGone(WIDGETS_RES_ID);
waitUntilLauncherObjectGone(TASKBAR_RES_ID);
waitUntilLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
return waitForLauncherObject(WORKSPACE_RES_ID);
}
@@ -732,6 +734,7 @@ public final class LauncherInstrumentation {
waitUntilLauncherObjectGone(APPS_RES_ID);
waitUntilLauncherObjectGone(OVERVIEW_RES_ID);
waitUntilLauncherObjectGone(TASKBAR_RES_ID);
waitUntilLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
return waitForLauncherObject(WIDGETS_RES_ID);
}
@@ -741,16 +744,26 @@ public final class LauncherInstrumentation {
waitUntilLauncherObjectGone(OVERVIEW_RES_ID);
waitUntilLauncherObjectGone(WIDGETS_RES_ID);
waitUntilLauncherObjectGone(TASKBAR_RES_ID);
waitUntilLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
return waitForLauncherObject(APPS_RES_ID);
}
case OVERVIEW:
case OVERVIEW: {
waitUntilLauncherObjectGone(APPS_RES_ID);
waitUntilLauncherObjectGone(WORKSPACE_RES_ID);
waitUntilLauncherObjectGone(WIDGETS_RES_ID);
waitUntilLauncherObjectGone(TASKBAR_RES_ID);
waitUntilLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
return waitForLauncherObject(OVERVIEW_RES_ID);
}
case SPLIT_SCREEN_SELECT: {
waitUntilLauncherObjectGone(APPS_RES_ID);
waitUntilLauncherObjectGone(WORKSPACE_RES_ID);
waitUntilLauncherObjectGone(WIDGETS_RES_ID);
waitUntilLauncherObjectGone(TASKBAR_RES_ID);
waitForLauncherObject(SPLIT_PLACEHOLDER_RES_ID);
return waitForLauncherObject(OVERVIEW_RES_ID);
}
case FALLBACK_OVERVIEW: {
@@ -758,6 +771,7 @@ public final class LauncherInstrumentation {
waitUntilLauncherObjectGone(WORKSPACE_RES_ID);
waitUntilLauncherObjectGone(WIDGETS_RES_ID);
waitUntilLauncherObjectGone(TASKBAR_RES_ID);
waitUntilLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
return waitForFallbackLauncherObject(OVERVIEW_RES_ID);
}
@@ -766,6 +780,7 @@ public final class LauncherInstrumentation {
waitUntilLauncherObjectGone(APPS_RES_ID);
waitUntilLauncherObjectGone(OVERVIEW_RES_ID);
waitUntilLauncherObjectGone(WIDGETS_RES_ID);
waitUntilLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
if (isTablet() && !isFallbackOverview()) {
waitForLauncherObject(TASKBAR_RES_ID);

View File

@@ -20,6 +20,7 @@ import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_STATE_CH
import android.graphics.Rect;
import androidx.annotation.NonNull;
import androidx.test.uiautomator.By;
import androidx.test.uiautomator.BySelector;
import androidx.test.uiautomator.UiObject2;
@@ -67,6 +68,10 @@ public final class OverviewTask {
return mTask.getVisibleCenter().x;
}
float getExactCenterX() {
return mTask.getVisibleBounds().exactCenterX();
}
/**
* Dismisses the task by swiping up.
*/
@@ -159,4 +164,24 @@ public final class OverviewTask {
}
}
}
/** Taps the task menu. */
@NonNull
public OverviewTaskMenu tapMenu() {
try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
"want to tap the task menu")) {
mLauncher.clickLauncherObject(
mLauncher.waitForObjectInContainer(mTask.getParent(), "icon"));
try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
"tapped the task menu")) {
return new OverviewTaskMenu(mLauncher);
}
}
}
boolean isTaskSplit() {
return mTask.hasObject(By.res("bottomright_snapshot"));
}
}

View File

@@ -0,0 +1,52 @@
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.launcher3.tapl;
import androidx.annotation.NonNull;
import androidx.test.uiautomator.By;
import androidx.test.uiautomator.UiObject2;
/** Represents the menu of an overview task. */
public class OverviewTaskMenu {
private final LauncherInstrumentation mLauncher;
private final UiObject2 mMenu;
OverviewTaskMenu(LauncherInstrumentation launcher) {
mLauncher = launcher;
mMenu = mLauncher.waitForLauncherObject("menu_option_layout");
mLauncher.assertTrue("The overview task menus is not visible",
!mMenu.getVisibleBounds().isEmpty());
}
/** Taps the split menu item from the overview task menu. */
@NonNull
public SplitScreenSelect tapSplitMenuItem() {
try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
"tap split menu item")) {
mLauncher.clickLauncherObject(
mLauncher.findObjectInContainer(mMenu, By.textStartsWith("Split")));
try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
"tapped split menu item")) {
return new SplitScreenSelect(mLauncher);
}
}
}
}

View File

@@ -32,4 +32,10 @@ public class SplitScreenSelect extends Overview {
protected ContainerType getContainerType() {
return ContainerType.SPLIT_SCREEN_SELECT;
}
@Override
protected boolean isActionsViewVisible() {
// We don't show overview actions in split select state.
return false;
}
}