Merge "TAPL: Verifying activity start/stop events" into ub-launcher3-master

This commit is contained in:
Vadim Tryshev 2020-02-28 19:22:32 +00:00 committed by Android (Google) Code Review
commit 64a932ed2a
12 changed files with 50 additions and 13 deletions

View File

@ -36,7 +36,7 @@ public abstract class DelegateInputConsumer implements InputConsumer {
protected void setActive(MotionEvent ev) {
mState = STATE_ACTIVE;
TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "pilferPointers");
TestLogging.recordEvent(TestProtocol.SEQUENCE_PILFER, "pilferPointers");
mInputMonitor.pilferPointers();
// Send cancel event

View File

@ -204,7 +204,7 @@ public class DeviceLockedInputConsumer implements InputConsumer,
private void startRecentsTransition() {
mThresholdCrossed = true;
TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "pilferPointers");
TestLogging.recordEvent(TestProtocol.SEQUENCE_PILFER, "pilferPointers");
mInputMonitorCompat.pilferPointers();
Intent intent = new Intent(Intent.ACTION_MAIN)

View File

@ -309,7 +309,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
if (mInteractionHandler == null) {
return;
}
TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "pilferPointers");
TestLogging.recordEvent(TestProtocol.SEQUENCE_PILFER, "pilferPointers");
mInputMonitorCompat.pilferPointers();
mActivityInterface.closeOverlay();

View File

@ -108,7 +108,7 @@ public class OverviewInputConsumer<T extends BaseDraggingActivity>
ActiveGestureLog.INSTANCE.addLog("startQuickstep");
}
if (mInputMonitor != null) {
TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "pilferPointers");
TestLogging.recordEvent(TestProtocol.SEQUENCE_PILFER, "pilferPointers");
mInputMonitor.pilferPointers();
}
}

View File

@ -65,7 +65,7 @@ public class OverviewWithoutFocusInputConsumer implements InputConsumer {
private void onInterceptTouch() {
if (mInputMonitor != null) {
TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "pilferPointers");
TestLogging.recordEvent(TestProtocol.SEQUENCE_PILFER, "pilferPointers");
mInputMonitor.pilferPointers();
}
}

View File

@ -88,7 +88,6 @@ public class AppPredictionsUITests extends AbstractQuickStepTest {
*/
@Test
public void testPredictionExistsInAllApps() {
mDevice.pressHome();
mLauncher.pressHome().switchToAllApps();
// Dispatch an update

View File

@ -941,6 +941,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
// Workaround for b/78520668, explicitly trim memory once UI is hidden
onTrimMemory(TRIM_MEMORY_UI_HIDDEN);
TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "Activity.onStop");
}
@Override
@ -954,6 +955,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
mAppWidgetHost.setListenIfResumed(true);
TraceHelper.INSTANCE.endSection(traceToken);
TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "Activity.onStart");
}
private void handleDeferredResume() {

View File

@ -35,6 +35,7 @@ public final class TestProtocol {
public static final String TAPL_EVENTS_TAG = "TaplEvents";
public static final String SEQUENCE_MAIN = "Main";
public static final String SEQUENCE_TIS = "TIS";
public static final String SEQUENCE_PILFER = "Pilfer";
public static String stateOrdinalToString(int ordinal) {
switch (ordinal) {

View File

@ -72,6 +72,7 @@ public class Background extends LauncherInstrumentation.VisibleContainer {
}
protected void goToOverviewUnchecked() {
final boolean launcherWasVisible = mLauncher.isLauncherVisible();
switch (mLauncher.getNavigationModel()) {
case ZERO_BUTTON: {
final int centerX = mLauncher.getDevice().getDisplayWidth() / 2;
@ -137,6 +138,10 @@ public class Background extends LauncherInstrumentation.VisibleContainer {
OVERVIEW_STATE_ORDINAL);
break;
}
if (!launcherWasVisible) {
mLauncher.expectEvent(
TestProtocol.SEQUENCE_MAIN, LauncherInstrumentation.EVENT_START_ACTIVITY);
}
}
/**
@ -157,6 +162,7 @@ public class Background extends LauncherInstrumentation.VisibleContainer {
}
protected void quickSwitchToPreviousApp(int expectedState) {
final boolean launcherWasVisible = mLauncher.isLauncherVisible();
boolean transposeInLandscape = false;
switch (mLauncher.getNavigationModel()) {
case TWO_BUTTON:
@ -180,15 +186,17 @@ public class Background extends LauncherInstrumentation.VisibleContainer {
endX = startX;
endY = 0;
}
final boolean launcherIsVisible =
mLauncher.hasLauncherObject(By.textStartsWith(""));
final boolean isZeroButton = mLauncher.getNavigationModel()
== LauncherInstrumentation.NavigationModel.ZERO_BUTTON;
if (!launcherWasVisible) {
mLauncher.expectEvent(
TestProtocol.SEQUENCE_MAIN,
LauncherInstrumentation.EVENT_START_ACTIVITY);
}
mLauncher.swipeToState(startX, startY, endX, endY, 20, expectedState,
launcherIsVisible && isZeroButton
launcherWasVisible && isZeroButton
? LauncherInstrumentation.GestureScope.INSIDE_TO_OUTSIDE
: LauncherInstrumentation.GestureScope.OUTSIDE
);
: LauncherInstrumentation.GestureScope.OUTSIDE);
break;
}
@ -196,6 +204,11 @@ public class Background extends LauncherInstrumentation.VisibleContainer {
// Double press the recents button.
UiObject2 recentsButton = mLauncher.waitForSystemUiObject("recent_apps");
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, SQUARE_BUTTON_EVENT);
if (!launcherWasVisible) {
mLauncher.expectEvent(
TestProtocol.SEQUENCE_MAIN,
LauncherInstrumentation.EVENT_START_ACTIVITY);
}
mLauncher.runToState(() -> recentsButton.click(), OVERVIEW_STATE_ORDINAL);
mLauncher.getOverview();
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, SQUARE_BUTTON_EVENT);
@ -203,6 +216,8 @@ public class Background extends LauncherInstrumentation.VisibleContainer {
break;
}
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, TASK_START_EVENT);
mLauncher.expectEvent(
TestProtocol.SEQUENCE_MAIN, LauncherInstrumentation.EVENT_STOP_ACTIVITY);
}
protected String getSwipeHeightRequestName() {

View File

@ -25,6 +25,8 @@ import androidx.test.uiautomator.BySelector;
import androidx.test.uiautomator.UiObject2;
import androidx.test.uiautomator.Until;
import com.android.launcher3.testing.TestProtocol;
/**
* Ancestor for AppIcon and AppMenuItem.
*/
@ -62,6 +64,8 @@ abstract class Launchable {
event -> event.getEventType() == TYPE_WINDOW_STATE_CHANGED,
() -> "Launching an app didn't open a new window: " + mObject.getText());
expectActivityStartEvents();
mLauncher.expectEvent(
TestProtocol.SEQUENCE_MAIN, LauncherInstrumentation.EVENT_STOP_ACTIVITY);
mLauncher.assertTrue(
"App didn't start: " + selector,

View File

@ -97,6 +97,8 @@ public final class LauncherInstrumentation {
private static final Pattern EVENT_TOUCH_UP = getTouchEventPattern("ACTION_UP");
private static final Pattern EVENT_TOUCH_CANCEL = getTouchEventPattern("ACTION_CANCEL");
private static final Pattern EVENT_PILFER_POINTERS = Pattern.compile("pilferPointers");
static final Pattern EVENT_START_ACTIVITY = Pattern.compile("Activity\\.onStart");
static final Pattern EVENT_STOP_ACTIVITY = Pattern.compile("Activity\\.onStop");
static final Pattern EVENT_TOUCH_DOWN_TIS = getTouchEventPatternTIS("ACTION_DOWN");
static final Pattern EVENT_TOUCH_UP_TIS = getTouchEventPatternTIS("ACTION_UP");
@ -633,6 +635,7 @@ public final class LauncherInstrumentation {
// otherwise waitForIdle may return immediately in case when there was a big enough
// pause in accessibility events prior to pressing Home.
final String action;
final boolean launcherWasVisible = isLauncherVisible();
if (getNavigationModel() == NavigationModel.ZERO_BUTTON) {
checkForAnomaly();
@ -661,12 +664,18 @@ public final class LauncherInstrumentation {
displaySize.x / 2, displaySize.y - 1,
displaySize.x / 2, 0,
ZERO_BUTTON_STEPS_FROM_BACKGROUND_TO_HOME, NORMAL_STATE_ORDINAL,
hasLauncherObject(By.textStartsWith(""))
launcherWasVisible
? GestureScope.INSIDE_TO_OUTSIDE
: GestureScope.OUTSIDE);
}
if (!launcherWasVisible) {
expectEvent(TestProtocol.SEQUENCE_MAIN, EVENT_START_ACTIVITY);
}
}
} else {
if (!launcherWasVisible) {
expectEvent(TestProtocol.SEQUENCE_MAIN, EVENT_START_ACTIVITY);
}
log("Hierarchy before clicking home:");
dumpViewHierarchy();
log(action = "clicking home button from " + getVisibleStateMessage());
@ -677,6 +686,7 @@ public final class LauncherInstrumentation {
expectEvent(TestProtocol.SEQUENCE_TIS, EVENT_TOUCH_DOWN_TIS);
expectEvent(TestProtocol.SEQUENCE_TIS, EVENT_TOUCH_UP_TIS);
}
runToState(
waitForSystemUiObject("home")::click,
NORMAL_STATE_ORDINAL,
@ -693,6 +703,10 @@ public final class LauncherInstrumentation {
}
}
boolean isLauncherVisible() {
return hasLauncherObject(By.textStartsWith(""));
}
/**
* Gets the Workspace object if the current state is "active home", i.e. workspace. Fails if the
* launcher is not in that state.
@ -1111,7 +1125,7 @@ public final class LauncherInstrumentation {
break;
case MotionEvent.ACTION_UP:
if (gestureScope != GestureScope.INSIDE) {
expectEvent(TestProtocol.SEQUENCE_MAIN, EVENT_PILFER_POINTERS);
expectEvent(TestProtocol.SEQUENCE_PILFER, EVENT_PILFER_POINTERS);
}
if (gestureScope != GestureScope.OUTSIDE) {
expectEvent(TestProtocol.SEQUENCE_MAIN, gestureScope == GestureScope.INSIDE

View File

@ -79,6 +79,8 @@ public final class OverviewTask {
() -> "Launching task didn't open a new window: "
+ mTask.getParent().getContentDescription());
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, TASK_START_EVENT);
mLauncher.expectEvent(
TestProtocol.SEQUENCE_MAIN, LauncherInstrumentation.EVENT_STOP_ACTIVITY);
}
return new Background(mLauncher);
}