Enable testTapjackGrantDialog_partialOverlay on automotive
Automotive now supports preventing clicks while there's
a partial overlay.
Bug: 192088266
Test: atest CtsPermission3TestCases:android.permission3.cts.PermissionTapjackingTest on gcar_emu_x86_64-userdebug
Change-Id: I7156c7d8f272dd6780245bb138329e545c68b8cb
diff --git a/tests/tests/permission3/UsePermissionAppWithOverlay/src/android/permission3/cts/usepermission/OverlayActivity.kt b/tests/tests/permission3/UsePermissionAppWithOverlay/src/android/permission3/cts/usepermission/OverlayActivity.kt
index 2f0b9fc5..6dbd472 100644
--- a/tests/tests/permission3/UsePermissionAppWithOverlay/src/android/permission3/cts/usepermission/OverlayActivity.kt
+++ b/tests/tests/permission3/UsePermissionAppWithOverlay/src/android/permission3/cts/usepermission/OverlayActivity.kt
@@ -18,14 +18,15 @@
params.flags = (WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS or
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE or
- WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
+ WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON or
+ WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN)
if (!intent.getBooleanExtra(EXTRA_FULL_OVERLAY, true)) {
params.gravity = Gravity.LEFT or Gravity.TOP
- val left = intent.getIntExtra(DIALOG_LEFT, params.x)
- val top = intent.getIntExtra(DIALOG_TOP, params.y)
- val right = intent.getIntExtra(DIALOG_RIGHT, params.x + params.width)
- val bottom = intent.getIntExtra(MESSAGE_BOTTOM, top + 1)
+ val left = intent.getIntExtra(OVERLAY_LEFT, params.x)
+ val top = intent.getIntExtra(OVERLAY_TOP, params.y)
+ val right = intent.getIntExtra(OVERLAY_RIGHT, params.x + params.width)
+ val bottom = intent.getIntExtra(OVERLAY_BOTTOM, top + 1)
params.x = left
params.y = top
params.width = right - left
@@ -46,9 +47,9 @@
companion object {
const val EXTRA_FULL_OVERLAY = "android.permission3.cts.usepermission.extra.FULL_OVERLAY"
- const val DIALOG_LEFT = "android.permission3.cts.usepermission.extra.DIALOG_LEFT"
- const val DIALOG_TOP = "android.permission3.cts.usepermission.extra.DIALOG_TOP"
- const val DIALOG_RIGHT = "android.permission3.cts.usepermission.extra.DIALOG_RIGHT"
- const val MESSAGE_BOTTOM = "android.permission3.cts.usepermission.extra.MESSAGE_BOTTOM"
+ const val OVERLAY_LEFT = "android.permission3.cts.usepermission.extra.OVERLAY_LEFT"
+ const val OVERLAY_TOP = "android.permission3.cts.usepermission.extra.OVERLAY_TOP"
+ const val OVERLAY_RIGHT = "android.permission3.cts.usepermission.extra.OVERLAY_RIGHT"
+ const val OVERLAY_BOTTOM = "android.permission3.cts.usepermission.extra.OVERLAY_BOTTOM"
}
-}
\ No newline at end of file
+}
diff --git a/tests/tests/permission3/src/android/permission3/cts/BasePermissionTest.kt b/tests/tests/permission3/src/android/permission3/cts/BasePermissionTest.kt
index 546dfb9..5e28a26 100644
--- a/tests/tests/permission3/src/android/permission3/cts/BasePermissionTest.kt
+++ b/tests/tests/permission3/src/android/permission3/cts/BasePermissionTest.kt
@@ -27,6 +27,7 @@
import android.support.test.uiautomator.BySelector
import android.support.test.uiautomator.UiDevice
import android.support.test.uiautomator.UiObject2
+import android.text.Html
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.rule.ActivityTestRule
import com.android.compatibility.common.util.DisableAnimationRule
@@ -99,11 +100,14 @@
pressHome()
}
- protected fun getPermissionControllerString(res: String): Pattern =
- Pattern.compile(Pattern.quote(mPermissionControllerResources.getString(
- mPermissionControllerResources.getIdentifier(
- res, "string", "com.android.permissioncontroller"))),
- Pattern.CASE_INSENSITIVE or Pattern.UNICODE_CASE)
+ protected fun getPermissionControllerString(res: String, vararg formatArgs: Any): Pattern {
+ val textWithHtml = mPermissionControllerResources.getString(
+ mPermissionControllerResources.getIdentifier(
+ res, "string", "com.android.permissioncontroller"), *formatArgs)
+ val textWithoutHtml = Html.fromHtml(textWithHtml, 0).toString()
+ return Pattern.compile(Pattern.quote(textWithoutHtml),
+ Pattern.CASE_INSENSITIVE or Pattern.UNICODE_CASE)
+ }
protected fun installPackage(
apkPath: String,
diff --git a/tests/tests/permission3/src/android/permission3/cts/BaseUsePermissionTest.kt b/tests/tests/permission3/src/android/permission3/cts/BaseUsePermissionTest.kt
index e137f55..66b91c0 100644
--- a/tests/tests/permission3/src/android/permission3/cts/BaseUsePermissionTest.kt
+++ b/tests/tests/permission3/src/android/permission3/cts/BaseUsePermissionTest.kt
@@ -28,10 +28,8 @@
import android.support.test.uiautomator.BySelector
import android.support.test.uiautomator.UiScrollable
import android.support.test.uiautomator.UiSelector
-import android.support.test.uiautomator.StaleObjectException
import android.text.Spanned
import android.text.style.ClickableSpan
-import android.util.Log
import android.view.View
import com.android.compatibility.common.util.SystemUtil.eventually
import org.junit.After
@@ -88,6 +86,8 @@
const val DENY_AND_DONT_ASK_AGAIN_BUTTON_TEXT =
"grant_dialog_button_deny_and_dont_ask_again"
const val NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON_TEXT = "grant_dialog_button_no_upgrade"
+
+ const val REQUEST_LOCATION_MESSAGE = "permgrouprequest_location"
}
enum class PermissionState {
diff --git a/tests/tests/permission3/src/android/permission3/cts/PermissionTapjackingTest.kt b/tests/tests/permission3/src/android/permission3/cts/PermissionTapjackingTest.kt
index 8ef2d19..39c04c2 100644
--- a/tests/tests/permission3/src/android/permission3/cts/PermissionTapjackingTest.kt
+++ b/tests/tests/permission3/src/android/permission3/cts/PermissionTapjackingTest.kt
@@ -59,26 +59,23 @@
fun testTapjackGrantDialog_partialOverlay() {
// PermissionController for television uses a floating window.
assumeFalse(isTv)
- // Automotive doesn't support detecting partial overlays yet: b/192088266
- assumeFalse(isAutomotive)
assertAppHasPermission(ACCESS_FINE_LOCATION, false)
requestAppPermissionsForNoResult(ACCESS_FINE_LOCATION) {}
val buttonCenter = waitFindObject(By.text(
getPermissionControllerString(ALLOW_FOREGROUND_BUTTON_TEXT))).visibleCenter
- val dialogBounds = waitFindObject(By.res(
- "com.android.permissioncontroller", "grant_dialog")).visibleBounds
- val messageBottom = waitFindObject(By.res(
- "com.android.permissioncontroller", "permission_message")).visibleBounds.bottom
+ val messageBounds = waitFindObject(By.text(
+ getPermissionControllerString(REQUEST_LOCATION_MESSAGE, APP_PACKAGE_NAME)))
+ .visibleBounds
// Wait for overlay to hide the dialog
context.sendBroadcast(Intent(ACTION_SHOW_OVERLAY)
.putExtra(EXTRA_FULL_OVERLAY, false)
- .putExtra(DIALOG_LEFT, dialogBounds.left)
- .putExtra(DIALOG_TOP, dialogBounds.top)
- .putExtra(DIALOG_RIGHT, dialogBounds.right)
- .putExtra(MESSAGE_BOTTOM, messageBottom))
+ .putExtra(OVERLAY_LEFT, messageBounds.left)
+ .putExtra(OVERLAY_TOP, messageBounds.top)
+ .putExtra(OVERLAY_RIGHT, messageBounds.right)
+ .putExtra(OVERLAY_BOTTOM, messageBounds.bottom))
waitFindObject(By.res("android.permission3.cts.usepermission:id/overlay"))
tryClicking(buttonCenter)
@@ -101,19 +98,16 @@
// Permission should not be granted
assertAppHasPermission(ACCESS_FINE_LOCATION, false)
- // On Automotive the dialog gets closed by the tapjacking activity popping up
- if (!isAutomotive) {
- // Verify that clicking the dialog without the overlay still works
- context.sendBroadcast(Intent(ACTION_HIDE_OVERLAY))
- SystemUtil.eventually({
- if (packageManager.checkPermission(ACCESS_FINE_LOCATION, APP_PACKAGE_NAME) ==
- PackageManager.PERMISSION_DENIED) {
- uiDevice.click(buttonCenter.x, buttonCenter.y)
- Thread.sleep(100)
- }
- assertAppHasPermission(ACCESS_FINE_LOCATION, true)
- }, 10000)
- }
+ // Verify that clicking the dialog without the overlay still works
+ context.sendBroadcast(Intent(ACTION_HIDE_OVERLAY))
+ SystemUtil.eventually({
+ if (packageManager.checkPermission(ACCESS_FINE_LOCATION, APP_PACKAGE_NAME) ==
+ PackageManager.PERMISSION_DENIED) {
+ uiDevice.click(buttonCenter.x, buttonCenter.y)
+ Thread.sleep(100)
+ }
+ assertAppHasPermission(ACCESS_FINE_LOCATION, true)
+ }, 10000)
}
companion object {
@@ -122,9 +116,9 @@
const val EXTRA_FULL_OVERLAY = "android.permission3.cts.usepermission.extra.FULL_OVERLAY"
- const val DIALOG_LEFT = "android.permission3.cts.usepermission.extra.DIALOG_LEFT"
- const val DIALOG_TOP = "android.permission3.cts.usepermission.extra.DIALOG_TOP"
- const val DIALOG_RIGHT = "android.permission3.cts.usepermission.extra.DIALOG_RIGHT"
- const val MESSAGE_BOTTOM = "android.permission3.cts.usepermission.extra.MESSAGE_BOTTOM"
+ const val OVERLAY_LEFT = "android.permission3.cts.usepermission.extra.OVERLAY_LEFT"
+ const val OVERLAY_TOP = "android.permission3.cts.usepermission.extra.OVERLAY_TOP"
+ const val OVERLAY_RIGHT = "android.permission3.cts.usepermission.extra.OVERLAY_RIGHT"
+ const val OVERLAY_BOTTOM = "android.permission3.cts.usepermission.extra.OVERLAY_BOTTOM"
}
}