TestScreenManager


public class TestScreenManager extends ScreenManager


The ScreenManager that is used for testing.

This class will track the following usages of the ScreenManager throughout your test:

Summary

Public methods

@NonNull List<Screen>

Returns all the Screens pushed via push, and pushForResult.

@NonNull List<Screen>

Returns all the Screens removed via pop, popTo, and remove.

boolean

Returns true if the Screen stack has any screens in it.

void
pop()

Pops the top Screen from the stack.

void
popTo(@NonNull String marker)

Removes screens from the top of the stack until a Screen which has the given marker is found, or the root has been reached.

void

Removes all screens from the stack until the root has been reached.

void
push(@NonNull Screen screen)

Pushes the screen to the stack.

void
pushForResult(
    @NonNull Screen screen,
    @NonNull OnScreenResultListener onScreenResultListener
)

Pushes a Screen, for which you would like a result from, onto the stack.

void

Removes the screen from the stack.

void

Resets the values tracked by this TestScreenManager and the Screen stack.

Inherited methods

From androidx.car.app.ScreenManager
@NonNull Collection<Screen>

Returns the copy of the current screen stack as a type Collection

int

Returns the current stack size.

@NonNull Screen

Returns the Screen that is at the top of the stack.

Public methods

getScreensPushed

Added in 1.1.0
public @NonNull List<ScreengetScreensPushed()

Returns all the Screens pushed via push, and pushForResult.

The screens are stored in the order in which they were pushed, where the first screen in the list is the first screen that was pushed.

The screens will be stored until reset is called.

getScreensRemoved

Added in 1.1.0
public @NonNull List<ScreengetScreensRemoved()

Returns all the Screens removed via pop, popTo, and remove.

The screens are stored in the order in which they were removed, where the first screen in the list, is the first screen that was removed.

The screens will be stored until reset is called.

hasScreens

Added in 1.1.0
public boolean hasScreens()

Returns true if the Screen stack has any screens in it.

pop

public void pop()

Pops the top Screen from the stack.

If the top Screen is the only Screen in the stack, it will not be removed.

If the app's lifecycle is already in the DESTROYED state, this operation is a no-op.

Throws
java.lang.IllegalStateException

if the current thread is not the main thread

popTo

public void popTo(@NonNull String marker)

Removes screens from the top of the stack until a Screen which has the given marker is found, or the root has been reached.

The root Screen will not be popped.

If the app's lifecycle is already in the DESTROYED state, this operation is a no-op.

Throws
java.lang.NullPointerException

if marker is null

java.lang.IllegalStateException

if the current thread is not the main thread

See also
setMarker

popToRoot

public void popToRoot()

Removes all screens from the stack until the root has been reached.

If the app's lifecycle is already in the DESTROYED state, this operation is a no-op.

Throws
java.lang.IllegalStateException

if the current thread is not the main thread

push

public void push(@NonNull Screen screen)

Pushes the screen to the stack.

If the screen pushed is already in the stack it will be moved to the top of the stack.

If the app's lifecycle is already in the DESTROYED state, this operation is a no-op.

Throws
java.lang.NullPointerException

if screen is null

java.lang.IllegalStateException

if the current thread is not the main thread

pushForResult

public void pushForResult(
    @NonNull Screen screen,
    @NonNull OnScreenResultListener onScreenResultListener
)

Pushes a Screen, for which you would like a result from, onto the stack.

When the given screen finishes, the onScreenResultCallback will receive a callback to onScreenResult with the result that the pushed screen set via setResult.

If the app's lifecycle is already in the DESTROYED state, this operation is a no-op.

Parameters
@NonNull Screen screen

the Screen to push on top of the stack

@NonNull OnScreenResultListener onScreenResultListener

the listener that will be executed with the result pushed by the screen through setResult. This callback will be executed on the main thread

Throws
java.lang.NullPointerException

if either the screen or the onScreenResultCallback are null

java.lang.IllegalStateException

if the current thread is not the main thread

remove

public void remove(@NonNull Screen screen)

Removes the screen from the stack.

If the screen is the only Screen in the stack, it will not be removed.

If the app's lifecycle is already in the DESTROYED state, this operation is a no-op.

Throws
java.lang.NullPointerException

if screen is null

java.lang.IllegalStateException

if the current thread is not the main thread

reset

Added in 1.1.0
public void reset()

Resets the values tracked by this TestScreenManager and the Screen stack.