summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author vignesh ramanathan <vigneshrsastra@google.com> 2025-01-06 20:37:41 +0000
committer Vignesh Ramanathan <vigneshrsastra@google.com> 2025-01-07 12:27:43 -0800
commit25028ae6f6a301e02b8e18a1fdfed276f6901673 (patch)
tree0f518313b788d6e405b983d40edab8fbc0213d17
parent5540e78b839f74fab9a1a5c346e55addb48cd91d (diff)
Fix for tap jacking cts test
In wear, the visible center of the button to tap is calculated and then overlay is applied. This makes the screen scroll a bit and the visible center is no longer in the same place. BUG: b/387705174 Relnote: "N/A" Test: Test change. Flag: TEST_ONLY LOW_COVERAGE_REASON=TEST_ONLY Change-Id: I427261cc2f149155ffad346f07da0145d45b5eb7
-rw-r--r--tests/cts/permissionui/src/android/permissionui/cts/PermissionTapjackingTest.kt44
1 files changed, 28 insertions, 16 deletions
diff --git a/tests/cts/permissionui/src/android/permissionui/cts/PermissionTapjackingTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTapjackingTest.kt
index baebfe06f..56072d521 100644
--- a/tests/cts/permissionui/src/android/permissionui/cts/PermissionTapjackingTest.kt
+++ b/tests/cts/permissionui/src/android/permissionui/cts/PermissionTapjackingTest.kt
@@ -52,14 +52,17 @@ class PermissionTapjackingTest : BaseUsePermissionTest() {
requestAppPermissionsForNoResult(ACCESS_FINE_LOCATION) {}
val buttonCenter =
- waitFindObject(By.text(getPermissionControllerString(ALLOW_FOREGROUND_BUTTON_TEXT))
- .displayId(displayId))
+ waitFindObject(
+ By.text(getPermissionControllerString(ALLOW_FOREGROUND_BUTTON_TEXT))
+ .displayId(displayId)
+ )
.visibleCenter
// Wait for overlay to hide the dialog
context.sendBroadcast(Intent(ACTION_SHOW_OVERLAY).putExtra(EXTRA_FULL_OVERLAY, true))
waitFindObject(
- By.res("android.permissionui.cts.usepermission:id/overlay").displayId(displayId))
+ By.res("android.permissionui.cts.usepermission:id/overlay").displayId(displayId)
+ )
tryClicking(buttonCenter)
}
@@ -76,18 +79,19 @@ class PermissionTapjackingTest : BaseUsePermissionTest() {
assertAppHasPermission(ACCESS_FINE_LOCATION, false)
requestAppPermissionsForNoResult(ACCESS_FINE_LOCATION) {}
- val foregroundButtonCenter =
- waitFindObject(By.text(getPermissionControllerString(ALLOW_FOREGROUND_BUTTON_TEXT))
- .displayId(displayId))
- .visibleCenter
val oneTimeButton =
- waitFindObjectOrNull(By.text(getPermissionControllerString(ALLOW_ONE_TIME_BUTTON_TEXT))
- .displayId(displayId))
+ waitFindObjectOrNull(
+ By.text(getPermissionControllerString(ALLOW_ONE_TIME_BUTTON_TEXT))
+ .displayId(displayId)
+ )
+
// If one-time button is not available, fallback to deny button
val overlayButtonBounds =
oneTimeButton?.visibleBounds
- ?: waitFindObject(By.text(getPermissionControllerString(DENY_BUTTON_TEXT))
- .displayId(displayId))
+ ?: waitFindObject(
+ By.text(getPermissionControllerString(DENY_BUTTON_TEXT))
+ .displayId(displayId)
+ )
.visibleBounds
// Wait for overlay to hide the dialog
@@ -100,7 +104,15 @@ class PermissionTapjackingTest : BaseUsePermissionTest() {
.putExtra(OVERLAY_BOTTOM, overlayButtonBounds.bottom)
)
waitFindObject(
- By.res("android.permissionui.cts.usepermission:id/overlay").displayId(displayId))
+ By.res("android.permissionui.cts.usepermission:id/overlay").displayId(displayId)
+ )
+
+ val foregroundButtonCenter =
+ waitFindObject(
+ By.text(getPermissionControllerString(ALLOW_FOREGROUND_BUTTON_TEXT))
+ .displayId(displayId)
+ )
+ .visibleCenter
tryClicking(foregroundButtonCenter)
}
@@ -119,7 +131,7 @@ class PermissionTapjackingTest : BaseUsePermissionTest() {
}
assertAppHasPermission(ACCESS_FINE_LOCATION, true)
},
- 10000
+ 10000,
)
} catch (e: RuntimeException) {
// expected
@@ -140,15 +152,15 @@ class PermissionTapjackingTest : BaseUsePermissionTest() {
}
assertAppHasPermission(ACCESS_FINE_LOCATION, true)
},
- 10000
+ 10000,
)
}
private fun click(buttonCenter: Point) {
val downTime = SystemClock.uptimeMillis()
- val x= buttonCenter.x.toFloat()
+ val x = buttonCenter.x.toFloat()
val y = buttonCenter.y.toFloat()
- var event = MotionEvent.obtain(downTime, downTime, MotionEvent.ACTION_DOWN,x , y, 0)
+ var event = MotionEvent.obtain(downTime, downTime, MotionEvent.ACTION_DOWN, x, y, 0)
event.displayId = displayId
uiAutomation.injectInputEvent(event, true)