Support waiting for an expected package to be launched

In addition to the window name, in the case were we don't know what the exact window that will be launched is but only the package (e.g. when we have trampolining task or activities).

Fixes: 267487691
Test: atest FlickerLibTest
Change-Id: I5546c9d2dddd328c592734880bf9a735a8a15dad
diff --git a/libraries/flicker/src/com/android/server/wm/flicker/helpers/StandardAppHelper.kt b/libraries/flicker/src/com/android/server/wm/flicker/helpers/StandardAppHelper.kt
index 19bb1a8..1896040 100644
--- a/libraries/flicker/src/com/android/server/wm/flicker/helpers/StandardAppHelper.kt
+++ b/libraries/flicker/src/com/android/server/wm/flicker/helpers/StandardAppHelper.kt
@@ -32,6 +32,7 @@
 import com.android.server.wm.traces.common.DeviceStateDump
 import com.android.server.wm.traces.common.WindowManagerConditionsFactory
 import com.android.server.wm.traces.common.component.matchers.ComponentNameMatcher
+import com.android.server.wm.traces.common.component.matchers.IComponentMatcher
 import com.android.server.wm.traces.common.component.matchers.IComponentNameMatcher
 import com.android.server.wm.traces.common.windowmanager.WindowManagerState
 import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelper
@@ -173,14 +174,14 @@
     @JvmOverloads
     open fun launchViaIntent(
         wmHelper: WindowManagerStateHelper,
-        expectedWindowName: String = "",
+        launchedAppComponentMatcherOverride: IComponentMatcher? = null,
         action: String? = null,
         stringExtras: Map<String, String> = mapOf(),
         waitConditions: Array<Condition<DeviceStateDump>> = emptyArray()
     ) =
         launchViaIntentAndWaitShown(
             wmHelper,
-            expectedWindowName,
+            launchedAppComponentMatcherOverride,
             action,
             stringExtras,
             waitConditions
@@ -192,27 +193,22 @@
      */
     protected fun launchViaIntentAndWaitShown(
         wmHelper: WindowManagerStateHelper,
-        expectedWindowName: String = "",
+        launchedAppComponentMatcherOverride: IComponentMatcher? = null,
         action: String? = null,
         stringExtras: Map<String, String> = mapOf(),
         waitConditions: Array<Condition<DeviceStateDump>> = emptyArray()
     ) {
         launchAppViaIntent(action, stringExtras)
-        doWaitShown(wmHelper, expectedWindowName, waitConditions)
+        doWaitShown(wmHelper, launchedAppComponentMatcherOverride, waitConditions)
     }
 
     private fun doWaitShown(
         wmHelper: WindowManagerStateHelper,
-        expectedWindowName: String = "",
+        launchedAppComponentMatcherOverride: IComponentMatcher? = null,
         waitConditions: Array<Condition<DeviceStateDump>> = emptyArray()
     ) {
         withPerfettoTrace("${this::class.simpleName}#doWaitShown") {
-            val expectedWindow =
-                if (expectedWindowName.isNotEmpty()) {
-                    ComponentNameMatcher("", expectedWindowName)
-                } else {
-                    componentMatcher
-                }
+            val expectedWindow = launchedAppComponentMatcherOverride ?: componentMatcher
             val builder =
                 wmHelper
                     .StateSyncBuilder()