summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Manjeet Rulhania <mrulhania@google.com> 2025-02-28 06:35:01 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-02-28 06:35:01 -0800
commitecb5f4ab1f81043274e2db4953d4705253f5164f (patch)
treed9ff0ad93b3c089ad0cad5f0ef590cec8c859a41
parent0661d93f1a229934ac8da7b7516f73479ece21b2 (diff)
parent9446bac763eaa0855629605d5e2b9fb34bd144e7 (diff)
Merge "Await permission requests activity state before proceeding" into main
-rw-r--r--tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt44
1 files changed, 29 insertions, 15 deletions
diff --git a/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt
index f52e32344..51f12bed3 100644
--- a/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt
+++ b/tests/cts/permissionui/src/android/permissionui/cts/BaseUsePermissionTest.kt
@@ -36,6 +36,7 @@ import android.os.Build
import android.os.Process
import android.provider.DeviceConfig
import android.provider.Settings
+import android.server.wm.WindowManagerStateHelper
import android.text.Spanned
import android.text.style.ClickableSpan
import android.util.Log
@@ -247,6 +248,8 @@ abstract class BaseUsePermissionTest : BasePermissionTest() {
DENIED_WITH_PREJUDICE
}
+ private val windowManagerStateHelper = WindowManagerStateHelper()
+
private val platformResources = context.createPackageContext("android", 0).resources
private val permissionToLabelResNameMap =
mapOf(
@@ -674,21 +677,20 @@ abstract class BaseUsePermissionTest : BasePermissionTest() {
crossinline block: () -> Unit,
): Instrumentation.ActivityResult {
// Request the permissions
- lateinit var future: CompletableFuture<Instrumentation.ActivityResult>
- doAndWaitForWindowTransition {
- future =
- startActivityForFuture(
- Intent().apply {
- component =
- ComponentName(
- APP_PACKAGE_NAME,
- "$APP_PACKAGE_NAME.RequestPermissionsActivity"
- )
- putExtra("$APP_PACKAGE_NAME.PERMISSIONS", permissions)
- putExtra("$APP_PACKAGE_NAME.ASK_TWICE", askTwice)
- }
- )
- }
+ val future =
+ startActivityForFuture(
+ Intent().apply {
+ component =
+ ComponentName(
+ APP_PACKAGE_NAME,
+ "$APP_PACKAGE_NAME.RequestPermissionsActivity"
+ )
+ putExtra("$APP_PACKAGE_NAME.PERMISSIONS", permissions)
+ putExtra("$APP_PACKAGE_NAME.ASK_TWICE", askTwice)
+ }
+ )
+
+ waitForPermissionRequestActivity()
// Notification permission prompt is shown first, so get it out of the way
clickNotificationPermissionRequestAllowButtonIfAvailable()
@@ -701,6 +703,18 @@ abstract class BaseUsePermissionTest : BasePermissionTest() {
return future.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
}
+ /**
+ * This method waits for permission controller activity to be in a valid state, the timeout
+ * is 5 seconds.
+ */
+ fun waitForPermissionRequestActivity() {
+ val requestPermissionIntent = Intent(PackageManager.ACTION_REQUEST_PERMISSIONS)
+ val componentName =
+ requestPermissionIntent.resolveActivity(context.packageManager)
+ ?: throw RuntimeException("Permission request is not handled by any activity.")
+ windowManagerStateHelper.waitForValidState(componentName)
+ }
+
protected inline fun requestAppPermissionsAndAssertResult(
permissions: Array<out String?>,
permissionAndExpectedGrantResults: Array<out Pair<String?, Boolean>>,