@JvmDefaultWithCompatibility
interface InjectionScope : Density
The receiver scope of all input injection lambdas offered in ui-test, such as performTouchInput and performMouseInput.
This scope offers several properties that allow you to get coordinates within the node you're interacting on, like the topLeft corner, its center, or some percentage of the size (percentOffset).
All positional properties are expressed in pixels. InjectionScope implements Density so you can convert between px and dp as you wish. The density used is taken from the SemanticsNode from the SemanticsNodeInteraction on which the input injection method is called.
Properties
eventPeriodMillis
val eventPeriodMillis
The default time between two successive events.
visibleSize
val visibleSize: IntSize
The size of the visible part of the node we're interacting with in px, i.e. its clipped bounds.
viewConfiguration
val viewConfiguration: ViewConfiguration
The ViewConfiguration in use by the SemanticsNode from the SemanticsNodeInteraction on which the input injection method is called.
width
val width: Int
The width of the node in px. Shorthand for visibleSize.width.
height
val height: Int
The height of the node in px. Shorthand for visibleSize.height.
left
val left: Float
The x-coordinate for the left edge of the node we're interacting with in px, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
top
val top: Float
The y-coordinate for the bottom of the node we're interacting with in px, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
centerX
val centerX: Float
The x-coordinate for the center of the node we're interacting with in px, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
centerY
val centerY: Float
The y-coordinate for the center of the node we're interacting with in px, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
right
val right: Float
The x-coordinate for the right edge of the node we're interacting with in px, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
Note that, unless width == 0, right != width. In particular, right == width - 1f, because pixels are 0-based. If width == 0, right == 0 too.
bottom
val bottom: Float
The y-coordinate for the bottom of the node we're interacting with in px, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
Note that, unless height == 0, bottom != height. In particular, bottom == height - 1f, because pixels are 0-based. If height == 0, bottom == 0 too.
topLeft
val topLeft: Offset
The top left corner of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
topCenter
val topCenter: Offset
The center of the top edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
topRight
val topRight: Offset
The top right corner of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
Note that topRight.x != width, see right.
centerLeft
val centerLeft: Offset
The center of the left edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
center
val center: Offset
The center of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
centerRight
val centerRight: Offset
The center of the right edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
Note that centerRight.x != width, see right.
bottomLeft
val bottomLeft: Offset
The bottom left corner of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
Note that bottomLeft.y != height, see bottom.
bottomCenter
val bottomCenter: Offset
The center of the bottom edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
Note that bottomCenter.y != height, see bottom.
bottomRight
val bottomRight: Offset
The bottom right corner of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.
Note that bottomRight.x != width and bottomRight.y != height, see right and bottom.
Functions
advanceEventTime
fun advanceEventTime(durationMillis: Long = eventPeriodMillis)
Adds the given durationMillis to the current event time, delaying the next event by that time.
percentOffset
fun percentOffset(
/*@FloatRange(from = -1.0, to = 1.0)*/
x: Float = 0f,
/*@FloatRange(from = -1.0, to = 1.0)*/
y: Float = 0f,
): Offset
Creates an Offset relative to the size of the node we're interacting with. x and y are fractions of the width and height, between -1 and 1.
Note that percentOffset(1f, 1f) != bottomRight, see right and bottom.
For example: percentOffset(.5f, .5f) is the same as the center; centerLeft + percentOffset(.1f, 0f) is a point 10% inward from the middle of the left edge; and bottomRight - percentOffset(.2f, .1f) is a point 20% to the left and 10% to the top of the bottom right corner.