Add test action to wait for an isLoading change.
This allows to wait until loading started or finished. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=215704424
This commit is contained in:
parent
9ca6544311
commit
711f9f8b6a
@ -686,6 +686,56 @@ public abstract class Action {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Waits for a specified loading state, returning either immediately or after a call to {@link
|
||||||
|
* Player.EventListener#onLoadingChanged(boolean)}.
|
||||||
|
*/
|
||||||
|
public static final class WaitForIsLoading extends Action {
|
||||||
|
|
||||||
|
private final boolean targetIsLoading;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param tag A tag to use for logging.
|
||||||
|
* @param targetIsLoading The loading state to wait for.
|
||||||
|
*/
|
||||||
|
public WaitForIsLoading(String tag, boolean targetIsLoading) {
|
||||||
|
super(tag, "WaitForIsLoading");
|
||||||
|
this.targetIsLoading = targetIsLoading;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doActionAndScheduleNextImpl(
|
||||||
|
final SimpleExoPlayer player,
|
||||||
|
final DefaultTrackSelector trackSelector,
|
||||||
|
final Surface surface,
|
||||||
|
final HandlerWrapper handler,
|
||||||
|
final ActionNode nextAction) {
|
||||||
|
if (nextAction == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (targetIsLoading == player.isLoading()) {
|
||||||
|
nextAction.schedule(player, trackSelector, surface, handler);
|
||||||
|
} else {
|
||||||
|
player.addListener(
|
||||||
|
new Player.EventListener() {
|
||||||
|
@Override
|
||||||
|
public void onLoadingChanged(boolean isLoading) {
|
||||||
|
if (targetIsLoading == isLoading) {
|
||||||
|
player.removeListener(this);
|
||||||
|
nextAction.schedule(player, trackSelector, surface, handler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doActionImpl(
|
||||||
|
SimpleExoPlayer player, DefaultTrackSelector trackSelector, Surface surface) {
|
||||||
|
// Not triggered.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Waits for {@link Player.EventListener#onSeekProcessed()}.
|
* Waits for {@link Player.EventListener#onSeekProcessed()}.
|
||||||
*/
|
*/
|
||||||
|
@ -41,6 +41,7 @@ import com.google.android.exoplayer2.testutil.Action.SetShuffleModeEnabled;
|
|||||||
import com.google.android.exoplayer2.testutil.Action.SetVideoSurface;
|
import com.google.android.exoplayer2.testutil.Action.SetVideoSurface;
|
||||||
import com.google.android.exoplayer2.testutil.Action.Stop;
|
import com.google.android.exoplayer2.testutil.Action.Stop;
|
||||||
import com.google.android.exoplayer2.testutil.Action.ThrowPlaybackException;
|
import com.google.android.exoplayer2.testutil.Action.ThrowPlaybackException;
|
||||||
|
import com.google.android.exoplayer2.testutil.Action.WaitForIsLoading;
|
||||||
import com.google.android.exoplayer2.testutil.Action.WaitForPlaybackState;
|
import com.google.android.exoplayer2.testutil.Action.WaitForPlaybackState;
|
||||||
import com.google.android.exoplayer2.testutil.Action.WaitForPositionDiscontinuity;
|
import com.google.android.exoplayer2.testutil.Action.WaitForPositionDiscontinuity;
|
||||||
import com.google.android.exoplayer2.testutil.Action.WaitForSeekProcessed;
|
import com.google.android.exoplayer2.testutil.Action.WaitForSeekProcessed;
|
||||||
@ -414,6 +415,16 @@ public final class ActionSchedule {
|
|||||||
return apply(new WaitForPlaybackState(tag, targetPlaybackState));
|
return apply(new WaitForPlaybackState(tag, targetPlaybackState));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Schedules a delay until {@code player.isLoading()} changes to the specified value.
|
||||||
|
*
|
||||||
|
* @param targetIsLoading The target value of {@code player.isLoading()}.
|
||||||
|
* @return The builder, for convenience.
|
||||||
|
*/
|
||||||
|
public Builder waitForIsLoading(boolean targetIsLoading) {
|
||||||
|
return apply(new WaitForIsLoading(tag, targetIsLoading));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Schedules a {@link Runnable} to be executed.
|
* Schedules a {@link Runnable} to be executed.
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user