Merge "Splitting TaplTests into a pure AOSP and QS parts" into ub-launcher3-master
This commit is contained in:
commit
8d4430a1d7
|
@ -0,0 +1,224 @@
|
|||
/*
|
||||
* Copyright (C) 2018 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 static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.RemoteException;
|
||||
|
||||
import androidx.test.filters.LargeTest;
|
||||
import androidx.test.runner.AndroidJUnit4;
|
||||
import androidx.test.uiautomator.By;
|
||||
import androidx.test.uiautomator.Until;
|
||||
|
||||
import com.android.launcher3.Launcher;
|
||||
import com.android.launcher3.LauncherState;
|
||||
import com.android.launcher3.tapl.AllApps;
|
||||
import com.android.launcher3.tapl.AllAppsFromOverview;
|
||||
import com.android.launcher3.tapl.Background;
|
||||
import com.android.launcher3.tapl.Overview;
|
||||
import com.android.launcher3.tapl.OverviewTask;
|
||||
import com.android.launcher3.tapl.TestHelpers;
|
||||
import com.android.launcher3.ui.TaplTestsLauncher3;
|
||||
import com.android.quickstep.QuickStepOnOffRule.QuickstepOnOff;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TestWatcher;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@LargeTest
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class TaplTestsQuickstep extends AbstractQuickStepTest {
|
||||
@Rule
|
||||
public TestWatcher mFailureWatcher = new TaplTestsLauncher3.FailureWatcher(mDevice);
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
super.setUp();
|
||||
|
||||
clearLauncherData();
|
||||
|
||||
mLauncher.pressHome();
|
||||
waitForState("Launcher internal state didn't switch to Home", LauncherState.NORMAL);
|
||||
waitForResumed("Launcher internal state is still Background");
|
||||
}
|
||||
|
||||
private void startTestApps() throws Exception {
|
||||
startAppFast(resolveSystemApp(Intent.CATEGORY_APP_MESSAGING));
|
||||
startAppFast(resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR));
|
||||
startAppFast(resolveSystemApp(Intent.CATEGORY_APP_CONTACTS));
|
||||
|
||||
executeOnLauncher(launcher -> assertTrue(
|
||||
"Launcher activity is the top activity; expecting another activity to be the top "
|
||||
+ "one",
|
||||
isInBackground(launcher)));
|
||||
}
|
||||
|
||||
@Test
|
||||
@PortraitLandscape
|
||||
public void testPressRecentAppsLauncherAndGetOverview() throws RemoteException {
|
||||
mDevice.pressRecentApps();
|
||||
waitForState("Launcher internal state didn't switch to Overview", LauncherState.OVERVIEW);
|
||||
|
||||
assertNotNull("getOverview() returned null", mLauncher.getOverview());
|
||||
}
|
||||
|
||||
@Test
|
||||
@QuickstepOnOff
|
||||
@PortraitLandscape
|
||||
public void testWorkspaceSwitchToAllApps() {
|
||||
assertNotNull("switchToAllApps() returned null",
|
||||
mLauncher.getWorkspace().switchToAllApps());
|
||||
assertTrue("Launcher internal state is not All Apps", isInState(LauncherState.ALL_APPS));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllAppsFromOverview() throws Exception {
|
||||
// Test opening all apps from Overview.
|
||||
assertNotNull("switchToAllApps() returned null",
|
||||
mLauncher.getWorkspace().switchToOverview().switchToAllApps());
|
||||
|
||||
TaplTestsLauncher3.runAllAppsTest(this, mLauncher.getAllAppsFromOverview());
|
||||
}
|
||||
|
||||
@Test
|
||||
@PortraitLandscape
|
||||
public void testOverview() throws Exception {
|
||||
startTestApps();
|
||||
Overview overview = mLauncher.pressHome().switchToOverview();
|
||||
assertTrue("Launcher internal state didn't switch to Overview",
|
||||
isInState(LauncherState.OVERVIEW));
|
||||
executeOnLauncher(
|
||||
launcher -> assertTrue("Don't have at least 3 tasks", getTaskCount(launcher) >= 3));
|
||||
|
||||
// Test flinging forward and backward.
|
||||
executeOnLauncher(launcher -> assertEquals("Current task in Overview is not 0",
|
||||
0, getCurrentOverviewPage(launcher)));
|
||||
|
||||
overview.flingForward();
|
||||
assertTrue("Launcher internal state is not Overview", isInState(LauncherState.OVERVIEW));
|
||||
final Integer currentTaskAfterFlingForward = getFromLauncher(
|
||||
launcher -> getCurrentOverviewPage(launcher));
|
||||
executeOnLauncher(launcher -> assertTrue("Current task in Overview is still 0",
|
||||
currentTaskAfterFlingForward > 0));
|
||||
|
||||
overview.flingBackward();
|
||||
assertTrue("Launcher internal state is not Overview", isInState(LauncherState.OVERVIEW));
|
||||
executeOnLauncher(launcher -> assertTrue("Flinging back in Overview did nothing",
|
||||
getCurrentOverviewPage(launcher) < currentTaskAfterFlingForward));
|
||||
|
||||
// Test opening a task.
|
||||
OverviewTask task = mLauncher.pressHome().switchToOverview().getCurrentTask();
|
||||
assertNotNull("overview.getCurrentTask() returned null (1)", task);
|
||||
assertNotNull("OverviewTask.open returned null", task.open());
|
||||
assertTrue("Contacts app didn't open from Overview", mDevice.wait(Until.hasObject(
|
||||
By.pkg(resolveSystemApp(Intent.CATEGORY_APP_CONTACTS)).depth(0)),
|
||||
LONG_WAIT_TIME_MS));
|
||||
executeOnLauncher(launcher -> assertTrue(
|
||||
"Launcher activity is the top activity; expecting another activity to be the top "
|
||||
+ "one",
|
||||
isInBackground(launcher)));
|
||||
|
||||
// Test dismissing a task.
|
||||
overview = mLauncher.pressHome().switchToOverview();
|
||||
assertTrue("Launcher internal state didn't switch to Overview",
|
||||
isInState(LauncherState.OVERVIEW));
|
||||
final Integer numTasks = getFromLauncher(launcher -> getTaskCount(launcher));
|
||||
task = overview.getCurrentTask();
|
||||
assertNotNull("overview.getCurrentTask() returned null (2)", task);
|
||||
task.dismiss();
|
||||
executeOnLauncher(
|
||||
launcher -> assertEquals("Dismissing a task didn't remove 1 task from Overview",
|
||||
numTasks - 1, getTaskCount(launcher)));
|
||||
|
||||
if (!TestHelpers.isInLauncherProcess() ||
|
||||
getFromLauncher(launcher -> !launcher.getDeviceProfile().isLandscape)) {
|
||||
// Test switching to all apps and back.
|
||||
final AllAppsFromOverview allApps = overview.switchToAllApps();
|
||||
assertNotNull("overview.switchToAllApps() returned null (1)", allApps);
|
||||
assertTrue("Launcher internal state is not All Apps (1)",
|
||||
isInState(LauncherState.ALL_APPS));
|
||||
|
||||
overview = allApps.switchBackToOverview();
|
||||
assertNotNull("allApps.switchBackToOverview() returned null", overview);
|
||||
assertTrue("Launcher internal state didn't switch to Overview",
|
||||
isInState(LauncherState.OVERVIEW));
|
||||
|
||||
// Test UIDevice.pressBack()
|
||||
overview.switchToAllApps();
|
||||
assertNotNull("overview.switchToAllApps() returned null (2)", allApps);
|
||||
assertTrue("Launcher internal state is not All Apps (2)",
|
||||
isInState(LauncherState.ALL_APPS));
|
||||
mDevice.pressBack();
|
||||
mLauncher.getOverview();
|
||||
}
|
||||
|
||||
// Test UIDevice.pressHome, once we are in AllApps.
|
||||
mDevice.pressHome();
|
||||
waitForState("Launcher internal state didn't switch to Home", LauncherState.NORMAL);
|
||||
}
|
||||
|
||||
private int getCurrentOverviewPage(Launcher launcher) {
|
||||
return launcher.<RecentsView>getOverviewPanel().getCurrentPage();
|
||||
}
|
||||
|
||||
private int getTaskCount(Launcher launcher) {
|
||||
return launcher.<RecentsView>getOverviewPanel().getTaskViewCount();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAppIconLaunchFromAllAppsFromOverview() throws Exception {
|
||||
final AllApps allApps =
|
||||
mLauncher.getWorkspace().switchToOverview().switchToAllApps();
|
||||
assertTrue("Launcher internal state is not All Apps", isInState(LauncherState.ALL_APPS));
|
||||
|
||||
TaplTestsLauncher3.runIconLaunchFromAllAppsTest(this, allApps);
|
||||
}
|
||||
|
||||
@Test
|
||||
@QuickstepOnOff
|
||||
@PortraitLandscape
|
||||
public void testSwitchToOverview() throws Exception {
|
||||
assertNotNull("Workspace.switchToOverview() returned null",
|
||||
mLauncher.pressHome().switchToOverview());
|
||||
assertTrue("Launcher internal state didn't switch to Overview",
|
||||
isInState(LauncherState.OVERVIEW));
|
||||
}
|
||||
|
||||
@Test
|
||||
@QuickstepOnOff
|
||||
@PortraitLandscape
|
||||
public void testBackground() throws Exception {
|
||||
startAppFast(resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR));
|
||||
final Background background = mLauncher.getBackground();
|
||||
assertNotNull("Launcher.getBackground() returned null", background);
|
||||
executeOnLauncher(launcher -> assertTrue(
|
||||
"Launcher activity is the top activity; expecting another activity to be the top "
|
||||
+ "one",
|
||||
isInBackground(launcher)));
|
||||
|
||||
assertNotNull("Background.switchToOverview() returned null", background.switchToOverview());
|
||||
assertTrue("Launcher internal state didn't switch to Overview",
|
||||
isInState(LauncherState.OVERVIEW));
|
||||
}
|
||||
}
|
|
@ -358,4 +358,17 @@ public abstract class AbstractLauncherUiTest {
|
|||
waitForLauncherCondition(
|
||||
"Launcher still active", launcher -> launcher == null, DEFAULT_UI_TIMEOUT);
|
||||
}
|
||||
|
||||
protected boolean isInBackground(Launcher launcher) {
|
||||
return !launcher.hasBeenResumed();
|
||||
}
|
||||
|
||||
protected boolean isInState(LauncherState state) {
|
||||
if (!TestHelpers.isInLauncherProcess()) return true;
|
||||
return getFromLauncher(launcher -> launcher.getStateManager().getState() == state);
|
||||
}
|
||||
|
||||
protected int getAllAppsScroll(Launcher launcher) {
|
||||
return launcher.getAppsView().getActiveRecyclerView().getCurrentScrollY();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
* Copyright (C) 2019 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.
|
||||
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.quickstep;
|
||||
package com.android.launcher3.ui;
|
||||
|
||||
import static androidx.test.InstrumentationRegistry.getInstrumentation;
|
||||
|
||||
|
@ -25,30 +25,21 @@ import static org.junit.Assert.assertNull;
|
|||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.test.filters.LargeTest;
|
||||
import androidx.test.runner.AndroidJUnit4;
|
||||
import androidx.test.uiautomator.By;
|
||||
import androidx.test.uiautomator.Until;
|
||||
import androidx.test.uiautomator.UiDevice;
|
||||
|
||||
import com.android.launcher3.Launcher;
|
||||
import com.android.launcher3.LauncherState;
|
||||
import com.android.launcher3.tapl.AllApps;
|
||||
import com.android.launcher3.tapl.AllAppsFromOverview;
|
||||
import com.android.launcher3.tapl.AppIcon;
|
||||
import com.android.launcher3.tapl.Background;
|
||||
import com.android.launcher3.tapl.Overview;
|
||||
import com.android.launcher3.tapl.OverviewTask;
|
||||
import com.android.launcher3.tapl.TestHelpers;
|
||||
import com.android.launcher3.tapl.Widgets;
|
||||
import com.android.launcher3.tapl.Workspace;
|
||||
import com.android.launcher3.views.OptionsPopupView;
|
||||
import com.android.launcher3.widget.WidgetsFullSheet;
|
||||
import com.android.launcher3.widget.WidgetsRecyclerView;
|
||||
import com.android.quickstep.QuickStepOnOffRule.QuickstepOnOff;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
|
@ -63,13 +54,18 @@ import java.io.IOException;
|
|||
|
||||
@LargeTest
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class TaplTests extends AbstractQuickStepTest {
|
||||
private static final String TAG = "TaplTests";
|
||||
public class TaplTestsLauncher3 extends AbstractLauncherUiTest {
|
||||
private static final String TAG = "TaplTestsAosp";
|
||||
|
||||
private static int sScreenshotCount = 0;
|
||||
|
||||
@Rule
|
||||
public TestWatcher mFailureWatcher = new TestWatcher() {
|
||||
public static class FailureWatcher extends TestWatcher {
|
||||
private UiDevice mDevice;
|
||||
|
||||
public FailureWatcher(UiDevice device) {
|
||||
this.mDevice = device;
|
||||
}
|
||||
|
||||
private void dumpViewHierarchy() {
|
||||
final ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
try {
|
||||
|
@ -77,10 +73,10 @@ public class TaplTests extends AbstractQuickStepTest {
|
|||
stream.flush();
|
||||
stream.close();
|
||||
for (String line : stream.toString().split("\\r?\\n")) {
|
||||
Log.e(TaplTests.TAG, line.trim());
|
||||
Log.e(TAG, line.trim());
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Log.e(TaplTests.TAG, "error dumping XML to logcat", e);
|
||||
Log.e(TAG, "error dumping XML to logcat", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,14 +85,17 @@ public class TaplTests extends AbstractQuickStepTest {
|
|||
if (mDevice == null) return;
|
||||
final String pathname = getInstrumentation().getTargetContext().
|
||||
getFilesDir().getPath() + "/TaplTestScreenshot" + sScreenshotCount++ + ".png";
|
||||
Log.e(TaplTests.TAG, "Failed test " + description.getMethodName() +
|
||||
Log.e(TAG, "Failed test " + description.getMethodName() +
|
||||
", screenshot will be saved to " + pathname +
|
||||
", track trace is below, UI object dump is further below:\n" +
|
||||
Log.getStackTraceString(e));
|
||||
dumpViewHierarchy();
|
||||
mDevice.takeScreenshot(new File(pathname));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Rule
|
||||
public TestWatcher mFailureWatcher = new FailureWatcher(mDevice);
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
|
@ -109,13 +108,8 @@ public class TaplTests extends AbstractQuickStepTest {
|
|||
waitForResumed("Launcher internal state is still Background");
|
||||
}
|
||||
|
||||
private boolean isInState(LauncherState state) {
|
||||
if (!TestHelpers.isInLauncherProcess()) return true;
|
||||
return getFromLauncher(launcher -> launcher.getStateManager().getState() == state);
|
||||
}
|
||||
|
||||
// Please don't add negative test cases for methods that fail only after a long wait.
|
||||
private void expectFail(String message, Runnable action) {
|
||||
public static void expectFail(String message, Runnable action) {
|
||||
boolean failed = false;
|
||||
try {
|
||||
action.run();
|
||||
|
@ -129,21 +123,6 @@ public class TaplTests extends AbstractQuickStepTest {
|
|||
return launcher.getWorkspace().getPageCount() > 1;
|
||||
}
|
||||
|
||||
private boolean isInBackground(Launcher launcher) {
|
||||
return !launcher.hasBeenResumed();
|
||||
}
|
||||
|
||||
private void startTestApps() throws Exception {
|
||||
startAppFast(resolveSystemApp(Intent.CATEGORY_APP_MESSAGING));
|
||||
startAppFast(resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR));
|
||||
startAppFast(resolveSystemApp(Intent.CATEGORY_APP_CONTACTS));
|
||||
|
||||
executeOnLauncher(launcher -> assertTrue(
|
||||
"Launcher activity is the top activity; expecting another activity to be the top "
|
||||
+ "one",
|
||||
isInBackground(launcher)));
|
||||
}
|
||||
|
||||
private int getCurrentWorkspacePage(Launcher launcher) {
|
||||
return launcher.getWorkspace().getCurrentPage();
|
||||
}
|
||||
|
@ -161,34 +140,30 @@ public class TaplTests extends AbstractQuickStepTest {
|
|||
OptionsPopupView.getOptionsPopup(launcher) != null));
|
||||
}
|
||||
|
||||
@Test
|
||||
@PortraitLandscape
|
||||
public void testPressRecentAppsLauncherAndGetOverview() throws RemoteException {
|
||||
mDevice.pressRecentApps();
|
||||
waitForState("Launcher internal state didn't switch to Overview", LauncherState.OVERVIEW);
|
||||
|
||||
assertNotNull("getOverview() returned null", mLauncher.getOverview());
|
||||
}
|
||||
|
||||
private void runAllAppsTest(AllApps allApps) throws Exception {
|
||||
public static void runAllAppsTest(AbstractLauncherUiTest test, AllApps allApps) {
|
||||
assertNotNull("allApps parameter is null", allApps);
|
||||
|
||||
assertTrue("Launcher internal state is not All Apps", isInState(LauncherState.ALL_APPS));
|
||||
assertTrue(
|
||||
"Launcher internal state is not All Apps", test.isInState(LauncherState.ALL_APPS));
|
||||
|
||||
// Test flinging forward and backward.
|
||||
executeOnLauncher(launcher -> assertEquals("All Apps started in already scrolled state", 0,
|
||||
getAllAppsScroll(launcher)));
|
||||
test.executeOnLauncher(launcher -> assertEquals(
|
||||
"All Apps started in already scrolled state", 0, test.getAllAppsScroll(launcher)));
|
||||
|
||||
allApps.flingForward();
|
||||
assertTrue("Launcher internal state is not All Apps", isInState(LauncherState.ALL_APPS));
|
||||
final Integer flingForwardY = getFromLauncher(launcher -> getAllAppsScroll(launcher));
|
||||
executeOnLauncher(
|
||||
assertTrue("Launcher internal state is not All Apps",
|
||||
test.isInState(LauncherState.ALL_APPS));
|
||||
final Integer flingForwardY = test.getFromLauncher(
|
||||
launcher -> test.getAllAppsScroll(launcher));
|
||||
test.executeOnLauncher(
|
||||
launcher -> assertTrue("flingForward() didn't scroll App Apps", flingForwardY > 0));
|
||||
|
||||
allApps.flingBackward();
|
||||
assertTrue("Launcher internal state is not All Apps", isInState(LauncherState.ALL_APPS));
|
||||
final Integer flingBackwardY = getFromLauncher(launcher -> getAllAppsScroll(launcher));
|
||||
executeOnLauncher(launcher -> assertTrue("flingBackward() didn't scroll App Apps",
|
||||
assertTrue(
|
||||
"Launcher internal state is not All Apps", test.isInState(LauncherState.ALL_APPS));
|
||||
final Integer flingBackwardY = test.getFromLauncher(
|
||||
launcher -> test.getAllAppsScroll(launcher));
|
||||
test.executeOnLauncher(launcher -> assertTrue("flingBackward() didn't scroll App Apps",
|
||||
flingBackwardY < flingForwardY));
|
||||
|
||||
// Test scrolling down to YouTube.
|
||||
|
@ -200,11 +175,8 @@ public class TaplTests extends AbstractQuickStepTest {
|
|||
expectFail("All apps: could find a non-existing app",
|
||||
() -> allAppsFinal.getAppIcon("NO APP"));
|
||||
|
||||
assertTrue("Launcher internal state is not All Apps", isInState(LauncherState.ALL_APPS));
|
||||
}
|
||||
|
||||
private int getAllAppsScroll(Launcher launcher) {
|
||||
return launcher.getAppsView().getActiveRecyclerView().getCurrentScrollY();
|
||||
assertTrue(
|
||||
"Launcher internal state is not All Apps", test.isInState(LauncherState.ALL_APPS));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -214,7 +186,7 @@ public class TaplTests extends AbstractQuickStepTest {
|
|||
assertNotNull("switchToAllApps() returned null",
|
||||
mLauncher.getWorkspace().switchToAllApps());
|
||||
|
||||
runAllAppsTest(mLauncher.getAllApps());
|
||||
runAllAppsTest(this, mLauncher.getAllApps());
|
||||
|
||||
// Testing pressHome.
|
||||
assertTrue("Launcher internal state is not All Apps", isInState(LauncherState.ALL_APPS));
|
||||
|
@ -224,7 +196,6 @@ public class TaplTests extends AbstractQuickStepTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@QuickstepOnOff
|
||||
@PortraitLandscape
|
||||
public void testWorkspaceSwitchToAllApps() {
|
||||
assertNotNull("switchToAllApps() returned null",
|
||||
|
@ -232,15 +203,6 @@ public class TaplTests extends AbstractQuickStepTest {
|
|||
assertTrue("Launcher internal state is not All Apps", isInState(LauncherState.ALL_APPS));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllAppsFromOverview() throws Exception {
|
||||
// Test opening all apps from Overview.
|
||||
assertNotNull("switchToAllApps() returned null",
|
||||
mLauncher.getWorkspace().switchToOverview().switchToAllApps());
|
||||
|
||||
runAllAppsTest(mLauncher.getAllAppsFromOverview());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWorkspace() throws Exception {
|
||||
final Workspace workspace = mLauncher.getWorkspace();
|
||||
|
@ -286,99 +248,14 @@ public class TaplTests extends AbstractQuickStepTest {
|
|||
isInBackground(launcher)));
|
||||
}
|
||||
|
||||
@Test
|
||||
@PortraitLandscape
|
||||
public void testOverview() throws Exception {
|
||||
startTestApps();
|
||||
Overview overview = mLauncher.pressHome().switchToOverview();
|
||||
assertTrue("Launcher internal state didn't switch to Overview",
|
||||
isInState(LauncherState.OVERVIEW));
|
||||
executeOnLauncher(
|
||||
launcher -> assertTrue("Don't have at least 3 tasks", getTaskCount(launcher) >= 3));
|
||||
|
||||
// Test flinging forward and backward.
|
||||
executeOnLauncher(launcher -> assertEquals("Current task in Overview is not 0",
|
||||
0, getCurrentOverviewPage(launcher)));
|
||||
|
||||
overview.flingForward();
|
||||
assertTrue("Launcher internal state is not Overview", isInState(LauncherState.OVERVIEW));
|
||||
final Integer currentTaskAfterFlingForward = getFromLauncher(
|
||||
launcher -> getCurrentOverviewPage(launcher));
|
||||
executeOnLauncher(launcher -> assertTrue("Current task in Overview is still 0",
|
||||
currentTaskAfterFlingForward > 0));
|
||||
|
||||
overview.flingBackward();
|
||||
assertTrue("Launcher internal state is not Overview", isInState(LauncherState.OVERVIEW));
|
||||
executeOnLauncher(launcher -> assertTrue("Flinging back in Overview did nothing",
|
||||
getCurrentOverviewPage(launcher) < currentTaskAfterFlingForward));
|
||||
|
||||
// Test opening a task.
|
||||
OverviewTask task = mLauncher.pressHome().switchToOverview().getCurrentTask();
|
||||
assertNotNull("overview.getCurrentTask() returned null (1)", task);
|
||||
assertNotNull("OverviewTask.open returned null", task.open());
|
||||
assertTrue("Contacts app didn't open from Overview", mDevice.wait(Until.hasObject(
|
||||
By.pkg(resolveSystemApp(Intent.CATEGORY_APP_CONTACTS)).depth(0)),
|
||||
LONG_WAIT_TIME_MS));
|
||||
executeOnLauncher(launcher -> assertTrue(
|
||||
"Launcher activity is the top activity; expecting another activity to be the top "
|
||||
+ "one",
|
||||
isInBackground(launcher)));
|
||||
|
||||
// Test dismissing a task.
|
||||
overview = mLauncher.pressHome().switchToOverview();
|
||||
assertTrue("Launcher internal state didn't switch to Overview",
|
||||
isInState(LauncherState.OVERVIEW));
|
||||
final Integer numTasks = getFromLauncher(launcher -> getTaskCount(launcher));
|
||||
task = overview.getCurrentTask();
|
||||
assertNotNull("overview.getCurrentTask() returned null (2)", task);
|
||||
task.dismiss();
|
||||
executeOnLauncher(
|
||||
launcher -> assertEquals("Dismissing a task didn't remove 1 task from Overview",
|
||||
numTasks - 1, getTaskCount(launcher)));
|
||||
|
||||
if (!TestHelpers.isInLauncherProcess() ||
|
||||
getFromLauncher(launcher -> !launcher.getDeviceProfile().isLandscape)) {
|
||||
// Test switching to all apps and back.
|
||||
final AllAppsFromOverview allApps = overview.switchToAllApps();
|
||||
assertNotNull("overview.switchToAllApps() returned null (1)", allApps);
|
||||
assertTrue("Launcher internal state is not All Apps (1)",
|
||||
isInState(LauncherState.ALL_APPS));
|
||||
|
||||
overview = allApps.switchBackToOverview();
|
||||
assertNotNull("allApps.switchBackToOverview() returned null", overview);
|
||||
assertTrue("Launcher internal state didn't switch to Overview",
|
||||
isInState(LauncherState.OVERVIEW));
|
||||
|
||||
// Test UIDevice.pressBack()
|
||||
overview.switchToAllApps();
|
||||
assertNotNull("overview.switchToAllApps() returned null (2)", allApps);
|
||||
assertTrue("Launcher internal state is not All Apps (2)",
|
||||
isInState(LauncherState.ALL_APPS));
|
||||
mDevice.pressBack();
|
||||
mLauncher.getOverview();
|
||||
}
|
||||
|
||||
// Test UIDevice.pressHome, once we are in AllApps.
|
||||
mDevice.pressHome();
|
||||
waitForState("Launcher internal state didn't switch to Home", LauncherState.NORMAL);
|
||||
}
|
||||
|
||||
private int getCurrentOverviewPage(Launcher launcher) {
|
||||
return launcher.<RecentsView>getOverviewPanel().getCurrentPage();
|
||||
}
|
||||
|
||||
private int getTaskCount(Launcher launcher) {
|
||||
return launcher.<RecentsView>getOverviewPanel().getTaskViewCount();
|
||||
}
|
||||
|
||||
private void runIconLaunchFromAllAppsTest(AllApps allApps) throws Exception {
|
||||
public static void runIconLaunchFromAllAppsTest(AbstractLauncherUiTest test, AllApps allApps) {
|
||||
final AppIcon app = allApps.getAppIcon("Calculator");
|
||||
assertNotNull("AppIcon.launch returned null", app.launch(
|
||||
resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR)));
|
||||
executeOnLauncher(launcher -> assertTrue(
|
||||
test.resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR)));
|
||||
test.executeOnLauncher(launcher -> assertTrue(
|
||||
"Launcher activity is the top activity; expecting another activity to be the top "
|
||||
+ "one",
|
||||
isInBackground(launcher)));
|
||||
test.isInBackground(launcher)));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -387,16 +264,7 @@ public class TaplTests extends AbstractQuickStepTest {
|
|||
final AllApps allApps = mLauncher.getWorkspace().switchToAllApps();
|
||||
assertTrue("Launcher internal state is not All Apps", isInState(LauncherState.ALL_APPS));
|
||||
|
||||
runIconLaunchFromAllAppsTest(allApps);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAppIconLaunchFromAllAppsFromOverview() throws Exception {
|
||||
final AllApps allApps =
|
||||
mLauncher.getWorkspace().switchToOverview().switchToAllApps();
|
||||
assertTrue("Launcher internal state is not All Apps", isInState(LauncherState.ALL_APPS));
|
||||
|
||||
runIconLaunchFromAllAppsTest(allApps);
|
||||
runIconLaunchFromAllAppsTest(this, allApps);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -432,31 +300,4 @@ public class TaplTests extends AbstractQuickStepTest {
|
|||
private int getWidgetsScroll(Launcher launcher) {
|
||||
return getWidgetsView(launcher).getCurrentScrollY();
|
||||
}
|
||||
|
||||
@Test
|
||||
@QuickstepOnOff
|
||||
@PortraitLandscape
|
||||
public void testSwitchToOverview() throws Exception {
|
||||
assertNotNull("Workspace.switchToOverview() returned null",
|
||||
mLauncher.pressHome().switchToOverview());
|
||||
assertTrue("Launcher internal state didn't switch to Overview",
|
||||
isInState(LauncherState.OVERVIEW));
|
||||
}
|
||||
|
||||
@Test
|
||||
@QuickstepOnOff
|
||||
@PortraitLandscape
|
||||
public void testBackground() throws Exception {
|
||||
startAppFast(resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR));
|
||||
final Background background = mLauncher.getBackground();
|
||||
assertNotNull("Launcher.getBackground() returned null", background);
|
||||
executeOnLauncher(launcher -> assertTrue(
|
||||
"Launcher activity is the top activity; expecting another activity to be the top "
|
||||
+ "one",
|
||||
isInBackground(launcher)));
|
||||
|
||||
assertNotNull("Background.switchToOverview() returned null", background.switchToOverview());
|
||||
assertTrue("Launcher internal state didn't switch to Overview",
|
||||
isInState(LauncherState.OVERVIEW));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue