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"
     }
 }