From f8ceabbcc1588f27a7b0532c4e52f2ea4089bafd Mon Sep 17 00:00:00 2001 From: vadimt Date: Fri, 24 Jul 2020 17:58:26 -0700 Subject: [PATCH] Misc test improvements Ignoring state events from NexusLauncher in Launcher3 tests. Improving diags for failed app launch. Change-Id: I3ffb49c598edef7b6698b48ba7b63e6163ef25b4 --- .../compat/AccessibilityManagerCompat.java | 11 ++++++---- .../android/launcher3/tapl/Background.java | 2 +- .../android/launcher3/tapl/Launchable.java | 11 ++++++---- .../tapl/LauncherInstrumentation.java | 21 +++++++++++++------ 4 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/com/android/launcher3/compat/AccessibilityManagerCompat.java b/src/com/android/launcher3/compat/AccessibilityManagerCompat.java index 1d32d1dfa2..30c3417d63 100644 --- a/src/com/android/launcher3/compat/AccessibilityManagerCompat.java +++ b/src/com/android/launcher3/compat/AccessibilityManagerCompat.java @@ -70,7 +70,8 @@ public class AccessibilityManagerCompat { final Bundle parcel = new Bundle(); parcel.putInt(TestProtocol.STATE_FIELD, stateOrdinal); - sendEventToTest(accessibilityManager, TestProtocol.SWITCHED_TO_STATE_MESSAGE, parcel); + sendEventToTest( + accessibilityManager, context, TestProtocol.SWITCHED_TO_STATE_MESSAGE, parcel); Log.d(TestProtocol.PERMANENT_DIAG_TAG, "sendStateEventToTest: " + stateOrdinal); } @@ -78,22 +79,24 @@ public class AccessibilityManagerCompat { final AccessibilityManager accessibilityManager = getAccessibilityManagerForTest(context); if (accessibilityManager == null) return; - sendEventToTest(accessibilityManager, TestProtocol.SCROLL_FINISHED_MESSAGE, null); + sendEventToTest(accessibilityManager, context, TestProtocol.SCROLL_FINISHED_MESSAGE, null); } public static void sendPauseDetectedEventToTest(Context context) { final AccessibilityManager accessibilityManager = getAccessibilityManagerForTest(context); if (accessibilityManager == null) return; - sendEventToTest(accessibilityManager, TestProtocol.PAUSE_DETECTED_MESSAGE, null); + sendEventToTest(accessibilityManager, context, TestProtocol.PAUSE_DETECTED_MESSAGE, null); } private static void sendEventToTest( - AccessibilityManager accessibilityManager, String eventTag, Bundle data) { + AccessibilityManager accessibilityManager, + Context context, String eventTag, Bundle data) { final AccessibilityEvent e = AccessibilityEvent.obtain( AccessibilityEvent.TYPE_ANNOUNCEMENT); e.setClassName(eventTag); e.setParcelableData(data); + e.setPackageName(context.getApplicationContext().getPackageName()); accessibilityManager.sendAccessibilityEvent(e); } diff --git a/tests/tapl/com/android/launcher3/tapl/Background.java b/tests/tapl/com/android/launcher3/tapl/Background.java index 0c4e5a9461..e538f60218 100644 --- a/tests/tapl/com/android/launcher3/tapl/Background.java +++ b/tests/tapl/com/android/launcher3/tapl/Background.java @@ -93,7 +93,7 @@ public class Background extends LauncherInstrumentation.VisibleContainer { mLauncher.sendPointer( downTime, downTime, MotionEvent.ACTION_DOWN, start, gestureScope); - mLauncher.executeAndWaitForEvent( + mLauncher.executeAndWaitForLauncherEvent( () -> mLauncher.movePointer( downTime, downTime, diff --git a/tests/tapl/com/android/launcher3/tapl/Launchable.java b/tests/tapl/com/android/launcher3/tapl/Launchable.java index 13ecfb8589..093c024732 100644 --- a/tests/tapl/com/android/launcher3/tapl/Launchable.java +++ b/tests/tapl/com/android/launcher3/tapl/Launchable.java @@ -56,15 +56,18 @@ abstract class Launchable { private Background launch(BySelector selector) { LauncherInstrumentation.log("Launchable.launch before click " + mObject.getVisibleCenter() + " in " + mLauncher.getVisibleBounds(mObject)); + final String label = mObject.getText(); mLauncher.executeAndWaitForEvent( - () -> mLauncher.clickLauncherObject(mObject), + () -> { + mLauncher.clickLauncherObject(mObject); + expectActivityStartEvents(); + }, event -> event.getEventType() == TYPE_WINDOW_STATE_CHANGED, - () -> "Launching an app didn't open a new window: " + mObject.getText()); - expectActivityStartEvents(); + () -> "Launching an app didn't open a new window: " + label); mLauncher.assertTrue( - "App didn't start: " + selector, + "App didn't start: " + label, mLauncher.getDevice().wait(Until.hasObject(selector), LauncherInstrumentation.WAIT_TIME_MS)); return new Background(mLauncher); diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java index c74dea9bb5..5c47faa89d 100644 --- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java +++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java @@ -103,6 +103,7 @@ public final class LauncherInstrumentation { static final Pattern EVENT_TOUCH_DOWN_TIS = getTouchEventPatternTIS("ACTION_DOWN"); static final Pattern EVENT_TOUCH_UP_TIS = getTouchEventPatternTIS("ACTION_UP"); + private final String mLauncherPackage; // Types for launcher containers that the user is interacting with. "Background" is a // pseudo-container corresponding to inactive launcher covered by another app. @@ -216,11 +217,11 @@ public final class LauncherInstrumentation { // Launcher package. As during inproc tests the tested launcher may not be selected as the // current launcher, choosing target package for inproc. For out-of-proc, use the installed // launcher package. - final String authorityPackage = testPackage.equals(targetPackage) ? - getLauncherPackageName() : - targetPackage; + mLauncherPackage = testPackage.equals(targetPackage) + ? getLauncherPackageName() + : targetPackage; - String testProviderAuthority = authorityPackage + ".TestInfo"; + String testProviderAuthority = mLauncherPackage + ".TestInfo"; mTestProviderUri = new Uri.Builder() .scheme(ContentResolver.SCHEME_CONTENT) .authority(testProviderAuthority) @@ -628,6 +629,14 @@ public final class LauncherInstrumentation { fail("Launcher didn't initialize"); } + Parcelable executeAndWaitForLauncherEvent(Runnable command, + UiAutomation.AccessibilityEventFilter eventFilter, Supplier message) { + return executeAndWaitForEvent( + command, + e -> mLauncherPackage.equals(e.getPackageName()) && eventFilter.accept(e), + message); + } + Parcelable executeAndWaitForEvent(Runnable command, UiAutomation.AccessibilityEventFilter eventFilter, Supplier message) { try { @@ -972,7 +981,7 @@ public final class LauncherInstrumentation { void runToState(Runnable command, int expectedState) { final List actualEvents = new ArrayList<>(); - executeAndWaitForEvent( + executeAndWaitForLauncherEvent( command, event -> isSwitchToStateEvent(event, expectedState, actualEvents), () -> "Failed to receive an event for the state change: expected [" @@ -1087,7 +1096,7 @@ public final class LauncherInstrumentation { return; } - executeAndWaitForEvent( + executeAndWaitForLauncherEvent( () -> linearGesture( startX, startY, endX, endY, steps, slowDown, GestureScope.INSIDE), event -> TestProtocol.SCROLL_FINISHED_MESSAGE.equals(event.getClassName()),