Update TestLauncherActivity to send TAPL launcher stopped message
This removes the need for a workaround in LauncherInstrumentation.executeAndWaitForLauncherStop for FallbackRecentsTests with recents window enabled Flag: com.android.launcher3.enable_fallback_overview_in_window Bug: 377678992 Test: FallbackRecentsTest Change-Id: I1b974cb2bfff4c14e99abb96c35dcdff04ed0be7
This commit is contained in:
committed by
Schneider Victor-tulias
parent
66923a912c
commit
9705f8fefa
@@ -137,6 +137,7 @@ public class FallbackRecentsTest {
|
||||
getLauncherCommand(mOtherLauncherActivity));
|
||||
updateHandler.mChangeCounter
|
||||
.await(DEFAULT_BROADCAST_TIMEOUT_SECS, TimeUnit.SECONDS);
|
||||
mLauncher.setTestLauncherPackage(mOtherLauncherActivity.packageName);
|
||||
try {
|
||||
base.evaluate();
|
||||
} finally {
|
||||
@@ -144,6 +145,7 @@ public class FallbackRecentsTest {
|
||||
TestCommandReceiver.callCommand(TestCommandReceiver.DISABLE_TEST_LAUNCHER);
|
||||
UiDevice.getInstance(getInstrumentation()).executeShellCommand(
|
||||
getLauncherCommand(getLauncherInMyProcess()));
|
||||
mLauncher.setTestLauncherPackage(null);
|
||||
pressHomeAndWaitForOverviewClose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,8 +20,12 @@ import static android.content.Intent.CATEGORY_LAUNCHER;
|
||||
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
|
||||
import static android.content.Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED;
|
||||
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.LAUNCHER_ACTIVITY_STOPPED_MESSAGE;
|
||||
|
||||
import android.app.LauncherActivity;
|
||||
import android.content.Intent;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
|
||||
public class TestLauncherActivity extends LauncherActivity {
|
||||
|
||||
@@ -31,4 +35,18 @@ public class TestLauncherActivity extends LauncherActivity {
|
||||
.addCategory(CATEGORY_LAUNCHER)
|
||||
.addFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
final AccessibilityManager accessibilityManager =
|
||||
getSystemService(AccessibilityManager.class);
|
||||
if (accessibilityManager == null || !accessibilityManager.isEnabled()) return;
|
||||
|
||||
final AccessibilityEvent e = AccessibilityEvent.obtain(
|
||||
AccessibilityEvent.TYPE_ANNOUNCEMENT);
|
||||
e.setClassName(LAUNCHER_ACTIVITY_STOPPED_MESSAGE);
|
||||
e.setPackageName(getApplicationContext().getPackageName());
|
||||
accessibilityManager.sendAccessibilityEvent(e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,7 +263,7 @@ public abstract class Background extends LauncherInstrumentation.VisibleContaine
|
||||
endY = startY;
|
||||
}
|
||||
|
||||
mLauncher.executeAndWaitForLauncherHidden(
|
||||
mLauncher.executeAndWaitForLauncherStop(
|
||||
() -> mLauncher.linearGesture(
|
||||
startX, startY, endX, endY, 20, false,
|
||||
LauncherInstrumentation.GestureScope.EXPECT_PILFER),
|
||||
@@ -276,7 +276,7 @@ public abstract class Background extends LauncherInstrumentation.VisibleContaine
|
||||
"clicking Recents button for the first time");
|
||||
mLauncher.getOverview();
|
||||
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, SQUARE_BUTTON_EVENT);
|
||||
mLauncher.executeAndWaitForLauncherHidden(
|
||||
mLauncher.executeAndWaitForLauncherStop(
|
||||
() -> recentsButton.click(),
|
||||
"clicking Recents button for the second time");
|
||||
}
|
||||
|
||||
@@ -167,8 +167,10 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer {
|
||||
final Runnable clickClearAll = () -> mLauncher.clickLauncherObject(
|
||||
mLauncher.waitForObjectInContainer(verifyActiveContainer(),
|
||||
clearAllSelector));
|
||||
if (mLauncher.is3PLauncher()) {
|
||||
mLauncher.executeAndWaitForLauncherHidden(
|
||||
// When the recents window is enabled, there is no RecentsActivity to send
|
||||
// LAUNCHER_ACTIVITY_STOPPED_MESSAGE in the 3P launcher case.
|
||||
if (mLauncher.is3PLauncher() && !mLauncher.isRecentsWindowEnabled()) {
|
||||
mLauncher.executeAndWaitForLauncherStop(
|
||||
clickClearAll,
|
||||
"clicking 'Clear All'");
|
||||
} else {
|
||||
@@ -512,7 +514,7 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer {
|
||||
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, EVENT_ENTER_UP);
|
||||
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, TASK_START_EVENT);
|
||||
|
||||
mLauncher.executeAndWaitForLauncherHidden(
|
||||
mLauncher.executeAndWaitForLauncherStop(
|
||||
() -> mLauncher.assertTrue(
|
||||
"Failed to press enter",
|
||||
mLauncher.getDevice().pressKeyCode(KeyEvent.KEYCODE_ENTER)),
|
||||
|
||||
@@ -224,7 +224,7 @@ public final class KeyboardQuickSwitch {
|
||||
if (expectedPackageName == null || !mIsHomeState) {
|
||||
mLauncher.unpressKeyCode(KeyEvent.KEYCODE_ALT_LEFT, 0);
|
||||
} else {
|
||||
mLauncher.executeAndWaitForLauncherHidden(
|
||||
mLauncher.executeAndWaitForLauncherStop(
|
||||
() -> mLauncher.unpressKeyCode(KeyEvent.KEYCODE_ALT_LEFT, 0),
|
||||
"unpressing left alt");
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ public abstract class Launchable {
|
||||
+ mLauncher.getVisibleBounds(mObject));
|
||||
|
||||
if (launcherStopsAfterLaunch()) {
|
||||
mLauncher.executeAndWaitForLauncherHidden(
|
||||
mLauncher.executeAndWaitForLauncherStop(
|
||||
() -> mLauncher.clickLauncherObject(mObject),
|
||||
"clicking the launchable");
|
||||
} else {
|
||||
@@ -96,7 +96,7 @@ public abstract class Launchable {
|
||||
+ mObject.getVisibleCenter() + " in " + mLauncher.getVisibleBounds(
|
||||
mObject));
|
||||
|
||||
mLauncher.executeAndWaitForLauncherHidden(
|
||||
mLauncher.executeAndWaitForLauncherStop(
|
||||
() -> mLauncher.clickLauncherObject(mObject),
|
||||
"clicking the launchable");
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@ public final class LaunchedAppState extends Background {
|
||||
int endX = startX;
|
||||
int endY = startY - taskbarFromNavThreshold;
|
||||
|
||||
mLauncher.executeAndWaitForLauncherHidden(
|
||||
mLauncher.executeAndWaitForLauncherStop(
|
||||
() -> mLauncher.linearGesture(startX, startY, endX, endY, 10,
|
||||
/* slowDown= */ true,
|
||||
LauncherInstrumentation.GestureScope.EXPECT_PILFER),
|
||||
|
||||
@@ -121,6 +121,7 @@ public final class LauncherInstrumentation {
|
||||
private static final Pattern EVENT_ON_BACK_INVOKED = Pattern.compile("onBackInvoked");
|
||||
|
||||
private final String mLauncherPackage;
|
||||
@Nullable private String mTestLauncherPackage;
|
||||
private Boolean mIsLauncher3;
|
||||
private long mTestStartTime = -1;
|
||||
|
||||
@@ -1121,13 +1122,37 @@ public final class LauncherInstrumentation {
|
||||
getBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD);
|
||||
}
|
||||
|
||||
Parcelable executeAndWaitForLauncherEvent(Runnable command,
|
||||
UiAutomation.AccessibilityEventFilter eventFilter, Supplier<String> message,
|
||||
Parcelable executeAndWaitForLauncherEvent(
|
||||
Runnable command,
|
||||
UiAutomation.AccessibilityEventFilter eventFilter,
|
||||
Supplier<String> message,
|
||||
String actionName) {
|
||||
return executeAndWaitForLauncherEvent(command, eventFilter, message, actionName, null);
|
||||
}
|
||||
|
||||
private Parcelable executeAndWaitForLauncherEvent(
|
||||
Runnable command,
|
||||
UiAutomation.AccessibilityEventFilter eventFilter,
|
||||
Supplier<String> message,
|
||||
String actionName,
|
||||
@Nullable String launcherPackageOverride) {
|
||||
log("executeAndWaitForLauncherEvent: launcherPackageOverride=" + launcherPackageOverride);
|
||||
return executeAndWaitForEvent(
|
||||
command,
|
||||
e -> mLauncherPackage.equals(e.getPackageName()) && eventFilter.accept(e),
|
||||
message, actionName);
|
||||
e -> {
|
||||
CharSequence eventPackageName = e.getPackageName();
|
||||
return (launcherPackageOverride != null
|
||||
? launcherPackageOverride.equals(eventPackageName)
|
||||
: mLauncherPackage.equals(eventPackageName))
|
||||
&& eventFilter.accept(e);
|
||||
},
|
||||
message,
|
||||
actionName);
|
||||
}
|
||||
|
||||
public void setTestLauncherPackage(@Nullable String testLauncherPackage) {
|
||||
log("Setting mTestLauncherPackage=" + testLauncherPackage);
|
||||
mTestLauncherPackage = testLauncherPackage;
|
||||
}
|
||||
|
||||
Parcelable executeAndWaitForEvent(Runnable command,
|
||||
@@ -1149,20 +1174,14 @@ public final class LauncherInstrumentation {
|
||||
}
|
||||
}
|
||||
|
||||
void executeAndWaitForLauncherHidden(Runnable command, String actionName) {
|
||||
// Since LAUNCHER_ACTIVITY_STOPPED_MESSAGE is only ever sent from Launcher.onStop or
|
||||
// RecentsActivity.onStop, we never receive this signal on 3P launchers with recents
|
||||
// window enabled. So, instead we should wait for the recent window's state manager to
|
||||
// report the normal state.
|
||||
if (is3PLauncher() && isRecentsWindowEnabled()) {
|
||||
runToState(command, NORMAL_STATE_ORDINAL, actionName);
|
||||
} else {
|
||||
executeAndWaitForLauncherEvent(
|
||||
() -> command.run(),
|
||||
event -> TestProtocol.LAUNCHER_ACTIVITY_STOPPED_MESSAGE
|
||||
.equals(event.getClassName().toString()),
|
||||
() -> "Launcher activity didn't stop", actionName);
|
||||
}
|
||||
void executeAndWaitForLauncherStop(Runnable command, String actionName) {
|
||||
executeAndWaitForLauncherEvent(
|
||||
command,
|
||||
event -> TestProtocol.LAUNCHER_ACTIVITY_STOPPED_MESSAGE
|
||||
.equals(event.getClassName().toString()),
|
||||
() -> "Launcher activity didn't stop",
|
||||
actionName,
|
||||
isRecentsWindowEnabled() ? mTestLauncherPackage : null);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -245,7 +245,7 @@ public final class OverviewTask {
|
||||
public LaunchedAppState open() {
|
||||
try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
|
||||
verifyActiveContainer();
|
||||
mLauncher.executeAndWaitForLauncherHidden(
|
||||
mLauncher.executeAndWaitForLauncherStop(
|
||||
() -> mLauncher.clickLauncherObject(mTask),
|
||||
"clicking an overview task");
|
||||
if (mOverview.getContainerType()
|
||||
|
||||
@@ -103,7 +103,7 @@ public class OverviewTaskMenu {
|
||||
try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
|
||||
LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
|
||||
"before tapping the app info menu item")) {
|
||||
mLauncher.executeAndWaitForLauncherHidden(
|
||||
mLauncher.executeAndWaitForLauncherStop(
|
||||
() -> mLauncher.clickLauncherObject(
|
||||
mLauncher.findObjectInContainer(mMenu, By.text("App info"))),
|
||||
"tapped app info menu item");
|
||||
@@ -144,7 +144,7 @@ public class OverviewTaskMenu {
|
||||
try (LauncherInstrumentation.Closable ignored = mLauncher.eventsCheck();
|
||||
LauncherInstrumentation.Closable ignored1 = mLauncher.addContextLayer(
|
||||
"before tapping the desktop menu item")) {
|
||||
mLauncher.executeAndWaitForLauncherHidden(
|
||||
mLauncher.executeAndWaitForLauncherStop(
|
||||
() -> mLauncher.clickLauncherObject(
|
||||
mLauncher.findObjectInContainer(mMenu, By.text("Desktop"))),
|
||||
"tapped desktop menu item");
|
||||
|
||||
@@ -555,7 +555,7 @@ public final class Workspace extends Home {
|
||||
private static void dropDraggedIcon(LauncherInstrumentation launcher, Point dest, long downTime,
|
||||
@Nullable Runnable expectedEvents, boolean startsActivity) {
|
||||
if (startsActivity) {
|
||||
launcher.executeAndWaitForLauncherHidden(
|
||||
launcher.executeAndWaitForLauncherStop(
|
||||
() -> sendUp(launcher, dest, downTime),
|
||||
"sending UP event");
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user