mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 03:08:19 +00:00
Merge "Revert "Create TAPL test suite for splitscreen"" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
19c0877745
@@ -147,8 +147,6 @@ import com.android.launcher3.logging.StatsLogManager;
|
||||
import com.android.launcher3.statehandlers.DepthController;
|
||||
import com.android.launcher3.statemanager.BaseState;
|
||||
import com.android.launcher3.statemanager.StatefulActivity;
|
||||
import com.android.launcher3.testing.TestLogging;
|
||||
import com.android.launcher3.testing.shared.TestProtocol;
|
||||
import com.android.launcher3.touch.OverScroll;
|
||||
import com.android.launcher3.touch.PagedOrientationHandler;
|
||||
import com.android.launcher3.util.DynamicResource;
|
||||
@@ -4493,7 +4491,6 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
||||
* Attempts to initiate split with an existing taskView, if one exists
|
||||
*/
|
||||
public void initiateSplitSelect(SplitSelectSource splitSelectSource) {
|
||||
TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "enterSplitSelect");
|
||||
mSplitSelectSource = splitSelectSource;
|
||||
mSplitHiddenTaskView = getTaskViewByTaskId(splitSelectSource.alreadyRunningTaskId);
|
||||
mSplitHiddenTaskViewIndex = indexOfChild(mSplitHiddenTaskView);
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 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.quickstep;
|
||||
|
||||
import android.content.Intent;
|
||||
|
||||
import com.android.launcher3.ui.TaplTestsLauncher3;
|
||||
import com.android.launcher3.util.rule.TestStabilityRule;
|
||||
import com.android.quickstep.TaskbarModeSwitchRule.TaskbarModeSwitch;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Assume;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
public class TaplTestsSplitscreen extends AbstractQuickStepTest {
|
||||
private static final String CALCULATOR_APP_NAME = "Calculator";
|
||||
private static final String CALCULATOR_APP_PACKAGE =
|
||||
resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR);
|
||||
|
||||
@Override
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
super.setUp();
|
||||
TaplTestsLauncher3.initialize(this);
|
||||
|
||||
mLauncher.getWorkspace()
|
||||
.deleteAppIcon(mLauncher.getWorkspace().getHotseatAppIcon(0))
|
||||
.switchToAllApps()
|
||||
.getAppIcon(CALCULATOR_APP_NAME)
|
||||
.dragToHotseat(0);
|
||||
|
||||
startAppFast(CALCULATOR_APP_PACKAGE);
|
||||
mLauncher.enableBlockTimeout(true);
|
||||
mLauncher.showTaskbarIfHidden();
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
mLauncher.enableBlockTimeout(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
// TODO (b/270201357): When this test is proven stable, remove this TestStabilityRule and
|
||||
// introduce into presubmit as well.
|
||||
@TestStabilityRule.Stability(
|
||||
flavors = TestStabilityRule.LOCAL | TestStabilityRule.PLATFORM_POSTSUBMIT)
|
||||
@PortraitLandscape
|
||||
@TaskbarModeSwitch
|
||||
public void testSplitAppFromHomeWithItself() throws Exception {
|
||||
Assume.assumeTrue(mLauncher.isTablet());
|
||||
|
||||
mLauncher.goHome()
|
||||
.switchToAllApps()
|
||||
.getAppIcon(CALCULATOR_APP_NAME)
|
||||
.openMenu()
|
||||
.getSplitScreenMenuItem()
|
||||
.click();
|
||||
|
||||
mLauncher.getLaunchedAppState()
|
||||
.getTaskbar()
|
||||
.getAppIcon(CALCULATOR_APP_NAME)
|
||||
.launchIntoSplitScreen();
|
||||
}
|
||||
}
|
||||
@@ -54,14 +54,5 @@ public abstract class AppIconMenu {
|
||||
return createMenuItem(menuItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a menu item that matches the text "Split screen". Fails if it doesn't exist.
|
||||
*/
|
||||
public SplitScreenMenuItem getSplitScreenMenuItem() {
|
||||
final UiObject2 menuItem = mLauncher.waitForObjectInContainer(mDeepShortcutsContainer,
|
||||
AppIcon.getAppIconSelector("Split screen", mLauncher));
|
||||
return new SplitScreenMenuItem(mLauncher, menuItem);
|
||||
}
|
||||
|
||||
protected abstract AppIconMenuItem createMenuItem(UiObject2 menuItem);
|
||||
}
|
||||
|
||||
@@ -76,27 +76,6 @@ public abstract class Launchable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clicks a launcher object to initiate splitscreen, where the selected app will be one of two
|
||||
* apps running on the screen. Should be called when Launcher is in a "split staging" state
|
||||
* and is waiting for the user's selection of a second app. Expects a SPLIT_START_EVENT to be
|
||||
* fired when the click is executed.
|
||||
*/
|
||||
public LaunchedAppState launchIntoSplitScreen() {
|
||||
try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
|
||||
"want to launch split tasks from " + launchableType())) {
|
||||
LauncherInstrumentation.log("Launchable.launch before click "
|
||||
+ mObject.getVisibleCenter() + " in " + mLauncher.getVisibleBounds(mObject));
|
||||
|
||||
mLauncher.clickLauncherObject(mObject);
|
||||
|
||||
try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("clicked")) {
|
||||
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, OverviewTask.SPLIT_START_EVENT);
|
||||
return new LaunchedAppState(mLauncher);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected LaunchedAppState assertAppLaunched(BySelector selector) {
|
||||
mLauncher.assertTrue(
|
||||
"App didn't start: (" + selector + ")",
|
||||
|
||||
@@ -37,9 +37,10 @@ import java.util.stream.Collectors;
|
||||
public final class OverviewTask {
|
||||
private static final String SYSTEMUI_PACKAGE = "com.android.systemui";
|
||||
|
||||
static final Pattern TASK_START_EVENT = Pattern.compile("startActivityFromRecentsAsync");
|
||||
static final Pattern SPLIT_SELECT_EVENT = Pattern.compile("enterSplitSelect");
|
||||
static final Pattern SPLIT_START_EVENT = Pattern.compile("launchSplitTasks");
|
||||
static final Pattern TASK_START_EVENT =
|
||||
Pattern.compile("startActivityFromRecentsAsync");
|
||||
static final Pattern SPLIT_START_EVENT =
|
||||
Pattern.compile("launchSplitTasks");
|
||||
private final LauncherInstrumentation mLauncher;
|
||||
private final UiObject2 mTask;
|
||||
private final BaseOverview mOverview;
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 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.test.uiautomator.UiObject2;
|
||||
|
||||
import com.android.launcher3.testing.shared.TestProtocol;
|
||||
|
||||
/**
|
||||
* A class representing the "Split screen" menu item in the app long-press menu. Used for TAPL
|
||||
* testing in a similar way as other menu items {@link AppIconMenuItem}, but unlike AppIconMenuItem,
|
||||
* the split screen command does not trigger an app launch. Instead, it causes Launcher to shift to
|
||||
* a different state (OverviewSplitSelect).
|
||||
*/
|
||||
public final class SplitScreenMenuItem {
|
||||
private final LauncherInstrumentation mLauncher;
|
||||
private final UiObject2 mObject;
|
||||
|
||||
SplitScreenMenuItem(LauncherInstrumentation launcher, UiObject2 object) {
|
||||
mLauncher = launcher;
|
||||
mObject = object;
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes a click command on this menu item. Expects a SPLIT_SELECT_EVENT to be fired.
|
||||
*/
|
||||
public void click() {
|
||||
try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
|
||||
"want to enter split select from app long-press menu")) {
|
||||
LauncherInstrumentation.log("clicking on split screen menu item "
|
||||
+ mObject.getVisibleCenter() + " in " + mLauncher.getVisibleBounds(mObject));
|
||||
|
||||
mLauncher.clickLauncherObject(mObject);
|
||||
|
||||
try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("clicked")) {
|
||||
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, OverviewTask.SPLIT_SELECT_EVENT);
|
||||
mLauncher.waitForLauncherObject("split_placeholder");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user