InjectionScope
@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
val eventPeriodMillis
The default time between two successive events.
val visibleSize: IntSize
The size of the visible part of the node we're interacting with in px, i.e. its clipped bounds.
val viewConfiguration: ViewConfiguration
The ViewConfiguration in use by the
SemanticsNode from the
SemanticsNodeInteraction on which the input injection method is called.
val width: Int
The width of the node in px. Shorthand for visibleSize.width.
val height: Int
The height of the node in px. Shorthand for visibleSize.height.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
fun advanceEventTime(durationMillis: Long = eventPeriodMillis)
Adds the given durationMillis to the current event time, delaying the next event by that
time.
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.
