InjectionScope

Interface

Common
@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

Common
val eventPeriodMillis

The default time between two successive events.

Common
val visibleSize: IntSize

The size of the visible part of the node we're interacting with in px, i.e. its clipped bounds.

Common
val viewConfiguration: ViewConfiguration

The ViewConfiguration in use by the SemanticsNode from the SemanticsNodeInteraction on which the input injection method is called.

Common
val width: Int

The width of the node in px. Shorthand for visibleSize.width.

Common
val height: Int

The height of the node in px. Shorthand for visibleSize.height.

Common
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.

Common
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.

Common
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.

Common
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.

Common
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.

Common
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.

Common
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.

Common
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.

Common
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.

Common
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.

Common
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.

Common
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.

Common
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.

Common
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.

Common
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.