# Action

# Action

Artifact:[androidx.media3:media3-test-utils](https://developer.android.com/jetpack/androidx/releases/media3)  
[View Source](https://cs.android.com/search?q=file:androidx/media3/test/utils/Action.java+class:androidx.media3.test.utils.Action)

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/media3/test/utils/Action "View this page in Java")

<br />

```
@UnstableApi
abstract class Action
```

<br />

Known direct subclasses  
[Action.AddMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.AddMediaItems),[Action.ClearMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.ClearMediaItems),[Action.ClearVideoSurface](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.ClearVideoSurface),[Action.ExecuteRunnable](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.ExecuteRunnable),[Action.MoveMediaItem](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.MoveMediaItem),[Action.PlayUntilPosition](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.PlayUntilPosition),[Action.Prepare](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.Prepare),[Action.RemoveMediaItem](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.RemoveMediaItem),[Action.RemoveMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.RemoveMediaItems),[Action.Seek](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.Seek),[Action.SendMessages](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SendMessages),[Action.SetAudioAttributes](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetAudioAttributes),[Action.SetMediaItemsResetPosition](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetMediaItemsResetPosition),[Action.SetMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetMediaItems),[Action.SetPlayWhenReady](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetPlayWhenReady),[Action.SetPlaybackParameters](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetPlaybackParameters),[Action.SetRendererDisabled](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetRendererDisabled),[Action.SetRepeatMode](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetRepeatMode),[Action.SetShuffleModeEnabled](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetShuffleModeEnabled),[Action.SetShuffleOrder](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetShuffleOrder),[Action.SetVideoSurface](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetVideoSurface),[Action.Stop](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.Stop),[Action.ThrowPlaybackException](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.ThrowPlaybackException),[Action.WaitForIsLoading](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForIsLoading),[Action.WaitForMessage](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForMessage),[Action.WaitForPendingPlayerCommands](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForPendingPlayerCommands),[Action.WaitForPlayWhenReady](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForPlayWhenReady),[Action.WaitForPlaybackState](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForPlaybackState),[Action.WaitForPositionDiscontinuity](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForPositionDiscontinuity),[Action.WaitForTimelineChanged](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForTimelineChanged)  

|------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Action.AddMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.AddMediaItems)                               | Calls[addMediaSources](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer#addMediaSources(java.util.List<androidx.media3.exoplayer.source.MediaSource>)).                                                                                                                                                                    |
| [Action.ClearMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.ClearMediaItems)                           | Calls[clearMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#clearMediaItems())}.                                                                                                                                                                                                                                     |
| [Action.ClearVideoSurface](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.ClearVideoSurface)                       | Calls[clearVideoSurface](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#clearVideoSurface()).                                                                                                                                                                                                                                  |
| [Action.ExecuteRunnable](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.ExecuteRunnable)                           | Calls`Runnable.run()`.                                                                                                                                                                                                                                                                                                                                       |
| [Action.MoveMediaItem](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.MoveMediaItem)                               | Calls[moveMediaItem](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#moveMediaItem(int,int)).                                                                                                                                                                                                                                   |
| [Action.PlayUntilPosition](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.PlayUntilPosition)                       | Schedules a play action to be executed, waits until the player reaches the specified position, and pauses the player again.                                                                                                                                                                                                                                  |
| [Action.Prepare](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.Prepare)                                           | Calls[prepare](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#prepare()).                                                                                                                                                                                                                                                      |
| [Action.RemoveMediaItem](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.RemoveMediaItem)                           | Calls[removeMediaItem](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#removeMediaItem(int)).                                                                                                                                                                                                                                   |
| [Action.RemoveMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.RemoveMediaItems)                         | Calls[removeMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#removeMediaItems(int,int)).                                                                                                                                                                                                                             |
| [Action.Seek](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.Seek)                                                 | Calls[seekTo](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#seekTo(long))or[seekTo](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#seekTo(int,long)).                                                                                                                                           |
| [Action.SendMessages](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SendMessages)                                 | Calls[createMessage](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target))and[send](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/PlayerMessage#send()).                                                                              |
| [Action.SetAudioAttributes](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetAudioAttributes)                     | Calls[setAudioAttributes](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setAudioAttributes(androidx.media3.common.AudioAttributes,boolean)).                                                                                                                                                                                  |
| [Action.SetMediaItemsResetPosition](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetMediaItemsResetPosition)     | Calls[setMediaSources](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer#setMediaSources(java.util.List<androidx.media3.exoplayer.source.MediaSource>,boolean)).                                                                                                                                                            |
| [Action.SetMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetMediaItems)                               | Calls[setMediaSources](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer#setMediaSources(java.util.List<androidx.media3.exoplayer.source.MediaSource>,int,long)).                                                                                                                                                           |
| [Action.SetPlayWhenReady](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetPlayWhenReady)                         | Calls[setPlayWhenReady](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setPlayWhenReady(boolean)).                                                                                                                                                                                                                             |
| [Action.SetPlaybackParameters](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetPlaybackParameters)               | Calls[setPlaybackParameters](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setPlaybackParameters(androidx.media3.common.PlaybackParameters)).                                                                                                                                                                                 |
| [Action.SetRendererDisabled](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetRendererDisabled)                   | Updates the[Parameters](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.Parameters)of a[DefaultTrackSelector](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/DefaultTrackSelector)to specify whether the renderer at a given index should be disabled. |
| [Action.SetRepeatMode](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetRepeatMode)                               | Calls[setRepeatMode](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setRepeatMode(int)).                                                                                                                                                                                                                                       |
| [Action.SetShuffleModeEnabled](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetShuffleModeEnabled)               | Calls[setShuffleModeEnabled](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setShuffleModeEnabled(boolean)).                                                                                                                                                                                                                   |
| [Action.SetShuffleOrder](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetShuffleOrder)                           | Calls[setShuffleOrder](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer#setShuffleOrder(androidx.media3.exoplayer.source.ShuffleOrder)).                                                                                                                                                                                   |
| [Action.SetVideoSurface](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetVideoSurface)                           | Calls[setVideoSurface](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setVideoSurface(android.view.Surface)).                                                                                                                                                                                                                  |
| [Action.Stop](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.Stop)                                                 | Calls[stop](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#stop()).                                                                                                                                                                                                                                                            |
| [Action.ThrowPlaybackException](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.ThrowPlaybackException)             | Throws a playback exception on the playback thread.                                                                                                                                                                                                                                                                                                          |
| [Action.WaitForIsLoading](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForIsLoading)                         | Waits for a specified loading state, returning either immediately or after a call to[onIsLoadingChanged](https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Listener#onIsLoadingChanged(boolean)).                                                                                                                                 |
| [Action.WaitForMessage](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForMessage)                             | Waits for a player message to arrive.                                                                                                                                                                                                                                                                                                                        |
| [Action.WaitForPendingPlayerCommands](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForPendingPlayerCommands) | Waits until the player acknowledged all pending player commands.                                                                                                                                                                                                                                                                                             |
| [Action.WaitForPlayWhenReady](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForPlayWhenReady)                 | Waits for a specified playWhenReady value, returning either immediately or after a call to[onPlayWhenReadyChanged](https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Listener#onPlayWhenReadyChanged(boolean,int)).                                                                                                               |
| [Action.WaitForPlaybackState](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForPlaybackState)                 | Waits for a specified playback state, returning either immediately or after a call to[onPlaybackStateChanged](https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Listener#onPlaybackStateChanged(int)).                                                                                                                            |
| [Action.WaitForPositionDiscontinuity](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForPositionDiscontinuity) | Waits for[onPositionDiscontinuity](https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Listener#onPositionDiscontinuity(androidx.media3.common.Player.PositionInfo,androidx.media3.common.Player.PositionInfo,int)).                                                                                                                |
| [Action.WaitForTimelineChanged](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForTimelineChanged)             | Waits for[onTimelineChanged](https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Listener#onTimelineChanged(androidx.media3.common.Timeline,int)).                                                                                                                                                                                  |

*** ** * ** ***

Base class for actions to perform during playback tests.

## Summary

|                                                                                                                                                                                                                                                                                            ### Nested types                                                                                                                                                                                                                                                                                            |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `class `[Action.AddMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.AddMediaItems)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[addMediaSources](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer#addMediaSources(java.util.List<androidx.media3.exoplayer.source.MediaSource>)).                                                                                                                                                                                |
| `class `[Action.ClearMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.ClearMediaItems)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[clearMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#clearMediaItems())}.                                                                                                                                                                                                                                             |
| `class `[Action.ClearVideoSurface](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.ClearVideoSurface)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[clearVideoSurface](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#clearVideoSurface()).                                                                                                                                                                                                                                      |
| `class `[Action.ExecuteRunnable](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.ExecuteRunnable)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls`Runnable.run()`.                                                                                                                                                                                                                                                                                                                                               |
| `class `[Action.MoveMediaItem](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.MoveMediaItem)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[moveMediaItem](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#moveMediaItem(int,int)).                                                                                                                                                                                                                                               |
| `class `[Action.PlayUntilPosition](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.PlayUntilPosition)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Schedules a play action to be executed, waits until the player reaches the specified position, and pauses the player again.                                                                                                                                                                                                                                      |
| `class `[Action.Prepare](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.Prepare)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[prepare](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#prepare()).                                                                                                                                                                                                                                                                              |
| `class `[Action.RemoveMediaItem](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.RemoveMediaItem)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[removeMediaItem](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#removeMediaItem(int)).                                                                                                                                                                                                                                           |
| `class `[Action.RemoveMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.RemoveMediaItems)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[removeMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#removeMediaItems(int,int)).                                                                                                                                                                                                                                   |
| `class `[Action.Seek](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.Seek)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[seekTo](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#seekTo(long))or[seekTo](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#seekTo(int,long)).                                                                                                                                                                         |
| `class `[Action.SendMessages](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SendMessages)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[createMessage](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target))and[send](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/PlayerMessage#send()).                                                                                            |
| `class `[Action.SetAudioAttributes](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetAudioAttributes)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[setAudioAttributes](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setAudioAttributes(androidx.media3.common.AudioAttributes,boolean)).                                                                                                                                                                                    |
| `class `[Action.SetMediaItems](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetMediaItems)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[setMediaSources](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer#setMediaSources(java.util.List<androidx.media3.exoplayer.source.MediaSource>,int,long)).                                                                                                                                                                       |
| `class `[Action.SetMediaItemsResetPosition](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetMediaItemsResetPosition)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[setMediaSources](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer#setMediaSources(java.util.List<androidx.media3.exoplayer.source.MediaSource>,boolean)).                                                                                                                                              |
| `class `[Action.SetPlayWhenReady](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetPlayWhenReady)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[setPlayWhenReady](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setPlayWhenReady(boolean)).                                                                                                                                                                                                                                   |
| `class `[Action.SetPlaybackParameters](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetPlaybackParameters)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[setPlaybackParameters](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setPlaybackParameters(androidx.media3.common.PlaybackParameters)).                                                                                                                                                                             |
| `class `[Action.SetRendererDisabled](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetRendererDisabled)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Updates the[Parameters](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.Parameters)of a[DefaultTrackSelector](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/DefaultTrackSelector)to specify whether the renderer at a given index should be disabled. |
| `class `[Action.SetRepeatMode](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetRepeatMode)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[setRepeatMode](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setRepeatMode(int)).                                                                                                                                                                                                                                                   |
| `class `[Action.SetShuffleModeEnabled](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetShuffleModeEnabled)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[setShuffleModeEnabled](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setShuffleModeEnabled(boolean)).                                                                                                                                                                                                               |
| `class `[Action.SetShuffleOrder](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetShuffleOrder)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[setShuffleOrder](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer#setShuffleOrder(androidx.media3.exoplayer.source.ShuffleOrder)).                                                                                                                                                                                           |
| `class `[Action.SetVideoSurface](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.SetVideoSurface)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[setVideoSurface](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setVideoSurface(android.view.Surface)).                                                                                                                                                                                                                          |
| `class `[Action.Stop](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.Stop)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Calls[stop](https://developer.android.com/reference/kotlin/androidx/media3/common/Player#stop()).                                                                                                                                                                                                                                                                                          |
| `class `[Action.ThrowPlaybackException](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.ThrowPlaybackException)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Throws a playback exception on the playback thread.                                                                                                                                                                                                                                                                                                    |
| `class `[Action.WaitForIsLoading](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForIsLoading)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Waits for a specified loading state, returning either immediately or after a call to[onIsLoadingChanged](https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Listener#onIsLoadingChanged(boolean)).                                                                                                                                       |
| `class `[Action.WaitForMessage](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForMessage)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Waits for a player message to arrive.                                                                                                                                                                                                                                                                                                                                  |
| `class `[Action.WaitForPendingPlayerCommands](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForPendingPlayerCommands)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Waits until the player acknowledged all pending player commands.                                                                                                                                                                                                                                                                           |
| `class `[Action.WaitForPlayWhenReady](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForPlayWhenReady)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Waits for a specified playWhenReady value, returning either immediately or after a call to[onPlayWhenReadyChanged](https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Listener#onPlayWhenReadyChanged(boolean,int)).                                                                                                             |
| `class `[Action.WaitForPlaybackState](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForPlaybackState)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Waits for a specified playback state, returning either immediately or after a call to[onPlaybackStateChanged](https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Listener#onPlaybackStateChanged(int)).                                                                                                                          |
| `class `[Action.WaitForPositionDiscontinuity](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForPositionDiscontinuity)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Waits for[onPositionDiscontinuity](https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Listener#onPositionDiscontinuity(androidx.media3.common.Player.PositionInfo,androidx.media3.common.Player.PositionInfo,int)).                                                                                              |
| `class `[Action.WaitForTimelineChanged](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action.WaitForTimelineChanged)` : `[Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action) Waits for[onTimelineChanged](https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Listener#onTimelineChanged(androidx.media3.common.Timeline,int)).                                                                                                                                                                            |

|                                                                                                                                                                                                      ### Public constructors                                                                                                                                                                                                      |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Action](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action#Action(java.lang.String,java.lang.String))`(tag: @`[Size](https://developer.android.com/reference/kotlin/androidx/annotation/Size)`(max = 23) `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`!, description: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`?)` |

|                                 ### Protected functions                                  |
|------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `abstract `[Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | [doActionImpl](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action#doActionImpl(androidx.media3.exoplayer.ExoPlayer,androidx.media3.exoplayer.trackselection.DefaultTrackSelector,android.view.Surface))`(` ` player: `[ExoPlayer](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer)`!,` ` trackSelector: `[DefaultTrackSelector](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/DefaultTrackSelector)`!,` ` surface: `[Surface](https://developer.android.com/reference/android/view/Surface.html)`?` `)` Called by[doActionAndScheduleNextImpl](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action#doActionAndScheduleNextImpl(androidx.media3.exoplayer.ExoPlayer,androidx.media3.exoplayer.trackselection.DefaultTrackSelector,android.view.Surface,androidx.media3.common.util.HandlerWrapper,androidx.media3.test.utils.ActionSchedule.ActionNode))to perform the action. |

## Public constructors

### Action

```
Action(tag: @Size(max = 23) String!, description: String?)
```  

|                                                                                        Parameters                                                                                        |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
| `tag: @`[Size](https://developer.android.com/reference/kotlin/androidx/annotation/Size)`(max = 23) `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`!` | A tag to use for logging.                                                                  |
| `description: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`?`                                                                                      | A description to be logged when the action is executed, or null if no logging is required. |

## Protected functions

### doActionImpl

```
protected abstract fun doActionImpl(
    player: ExoPlayer!,
    trackSelector: DefaultTrackSelector!,
    surface: Surface?
): Unit
```

Called by[doActionAndScheduleNextImpl](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/Action#doActionAndScheduleNextImpl(androidx.media3.exoplayer.ExoPlayer,androidx.media3.exoplayer.trackselection.DefaultTrackSelector,android.view.Surface,androidx.media3.common.util.HandlerWrapper,androidx.media3.test.utils.ActionSchedule.ActionNode))to perform the action.  

|                                                                        Parameters                                                                        |
|----------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|
| `player: `[ExoPlayer](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer)`!`                                             | The player to which the action should be applied.                          |
| `trackSelector: `[DefaultTrackSelector](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/DefaultTrackSelector)`!` | The track selector to which the action should be applied.                  |
| `surface: `[Surface](https://developer.android.com/reference/android/view/Surface.html)`?`                                                               | The surface to use when applying actions, or`null`if no surface is needed. |