diff options
author | 2025-03-17 21:04:09 -0700 | |
---|---|---|
committer | 2025-03-17 21:04:09 -0700 | |
commit | 8f03bda5e1e45faa4c76a6f43da3fe7d91ab6283 (patch) | |
tree | a93cdaeda408842404962614862214382f19b85c | |
parent | e94c273794af1b165da86f6034d978a125e26379 (diff) | |
parent | ff37c941512c0fad21dc1dbae19ee181151dfbc6 (diff) |
Merge "Fix up TrampolineActivityTest and make activity closing more robust" into main
-rw-r--r-- | tests/functional/com/android/documentsui/TrampolineActivityTest.kt | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/tests/functional/com/android/documentsui/TrampolineActivityTest.kt b/tests/functional/com/android/documentsui/TrampolineActivityTest.kt index 6bf0975ad..10b31d1eb 100644 --- a/tests/functional/com/android/documentsui/TrampolineActivityTest.kt +++ b/tests/functional/com/android/documentsui/TrampolineActivityTest.kt @@ -15,10 +15,8 @@ */ package com.android.documentsui -import android.app.Instrumentation import android.content.Intent import android.content.Intent.ACTION_GET_CONTENT -import android.content.IntentFilter import android.os.Build.VERSION_CODES import android.platform.test.annotations.RequiresFlagsEnabled import android.platform.test.flag.junit.CheckFlagsRule @@ -34,7 +32,6 @@ import com.android.documentsui.flags.Flags.FLAG_REDIRECT_GET_CONTENT_RO import com.android.documentsui.picker.TrampolineActivity import java.util.Optional import java.util.regex.Pattern -import org.junit.After import org.junit.Assert.assertNotNull import org.junit.Before import org.junit.BeforeClass @@ -56,25 +53,28 @@ class TrampolineActivityTest() { const val UI_TIMEOUT = 5000L val PHOTOPICKER_PACKAGE_REGEX: Pattern = Pattern.compile(".*(photopicker|media\\.module).*") val DOCUMENTSUI_PACKAGE_REGEX: Pattern = Pattern.compile(".*documentsui.*") + val STACK_LIST_REGEX: Pattern = Pattern.compile( + "taskId=(?<taskId>[0-9]+):(.+?)(photopicker|media\\.module|documentsui)", + Pattern.MULTILINE + ) private lateinit var device: UiDevice - private lateinit var monitor: Instrumentation.ActivityMonitor + fun removePhotopickerAndDocumentsUITasks() { + // Get the current list of tasks that are visible. + val result = device.executeShellCommand("am stack list") + + // Identify any that are from DocumentsUI or Photopicker and close them. + val matcher = STACK_LIST_REGEX.matcher(result) + while (matcher.find()) { + device.executeShellCommand("am stack remove ${matcher.group("taskId")}") + } + } @BeforeClass @JvmStatic fun setUp() { device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) - - // Monitor to wait for the activity that starts with the `ACTION_GET_CONTENT` intent. - val intentFilter = IntentFilter().apply { addAction(ACTION_GET_CONTENT) } - monitor = - Instrumentation.ActivityMonitor( - intentFilter, - null, // Expected result from startActivityForResult. - true, // Whether to block until activity started or not. - ) - InstrumentationRegistry.getInstrumentation().addMonitor(monitor) } } @@ -157,24 +157,20 @@ class TrampolineActivityTest() { @Before fun setUp() { + removePhotopickerAndDocumentsUITasks() + val context = InstrumentationRegistry.getInstrumentation().targetContext val intent = Intent(ACTION_GET_CONTENT) intent.setClass(context, TrampolineActivity::class.java) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) intent.setType(testData.mimeType) if (testData.extraMimeTypes.isPresent) { - testData.extraMimeTypes.get() - .forEach { intent.putExtra(Intent.EXTRA_MIME_TYPES, it) } + intent.putExtra(Intent.EXTRA_MIME_TYPES, testData.extraMimeTypes.get()) } context.startActivity(intent) } - @After - fun tearDown() { - monitor.waitForActivityWithTimeout(UI_TIMEOUT)?.finish() - } - @Test fun testCorrectAppIsLaunched() { val bySelector = when (testData.expectedApp) { @@ -208,6 +204,11 @@ class TrampolineActivityTest() { @get:Rule val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule() + @Before + fun setUp() { + removePhotopickerAndDocumentsUITasks() + } + @Test fun testReferredGetContentFromPhotopickerShouldNotRedirectBack() { val context = InstrumentationRegistry.getInstrumentation().targetContext |