Added SendBroadcast as an Action.

Removed a redundant TestSimpleExoPlayer subclass.

PiperOrigin-RevId: 272681643
This commit is contained in:
samrobinson 2019-10-03 17:51:12 +01:00 committed by Oliver Woodman
parent 3d5ab29da7
commit f326f7110f
3 changed files with 42 additions and 26 deletions

View File

@ -15,9 +15,11 @@
*/ */
package com.google.android.exoplayer2.testutil; package com.google.android.exoplayer2.testutil;
import android.content.Intent;
import android.os.Handler; import android.os.Handler;
import android.view.Surface; import android.view.Surface;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.test.core.app.ApplicationProvider;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayer;
@ -210,6 +212,26 @@ public abstract class Action {
} }
/** Broadcasts an {@link Intent}. */
public static final class SendBroadcast extends Action {
private final Intent intent;
/**
* @param tag A tag to use for logging.
* @param intent The {@link Intent} to broadcast.
*/
public SendBroadcast(String tag, Intent intent) {
super(tag, "SendBroadcast: " + intent.getAction());
this.intent = intent;
}
@Override
protected void doActionImpl(
SimpleExoPlayer player, DefaultTrackSelector trackSelector, Surface surface) {
ApplicationProvider.getApplicationContext().sendBroadcast(intent);
}
}
/** /**
* Updates the {@link Parameters} of a {@link DefaultTrackSelector} to specify whether the * Updates the {@link Parameters} of a {@link DefaultTrackSelector} to specify whether the
* renderer at a given index should be disabled. * renderer at a given index should be disabled.

View File

@ -15,6 +15,7 @@
*/ */
package com.google.android.exoplayer2.testutil; package com.google.android.exoplayer2.testutil;
import android.content.Intent;
import android.os.Looper; import android.os.Looper;
import android.view.Surface; import android.view.Surface;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -32,6 +33,7 @@ import com.google.android.exoplayer2.testutil.Action.ExecuteRunnable;
import com.google.android.exoplayer2.testutil.Action.PlayUntilPosition; import com.google.android.exoplayer2.testutil.Action.PlayUntilPosition;
import com.google.android.exoplayer2.testutil.Action.PrepareSource; import com.google.android.exoplayer2.testutil.Action.PrepareSource;
import com.google.android.exoplayer2.testutil.Action.Seek; import com.google.android.exoplayer2.testutil.Action.Seek;
import com.google.android.exoplayer2.testutil.Action.SendBroadcast;
import com.google.android.exoplayer2.testutil.Action.SendMessages; import com.google.android.exoplayer2.testutil.Action.SendMessages;
import com.google.android.exoplayer2.testutil.Action.SetPlayWhenReady; import com.google.android.exoplayer2.testutil.Action.SetPlayWhenReady;
import com.google.android.exoplayer2.testutil.Action.SetPlaybackParameters; import com.google.android.exoplayer2.testutil.Action.SetPlaybackParameters;
@ -376,6 +378,16 @@ public final class ActionSchedule {
return apply(new SendMessages(tag, target, windowIndex, positionMs, deleteAfterDelivery)); return apply(new SendMessages(tag, target, windowIndex, positionMs, deleteAfterDelivery));
} }
/**
* Schedules broadcasting an {@link Intent}.
*
* @param intent An intent to broadcast.
* @return The builder, for convenience.
*/
public Builder sendBroadcast(Intent intent) {
return apply(new SendBroadcast(tag, intent));
}
/** /**
* Schedules a delay until any timeline change. * Schedules a delay until any timeline change.
* *

View File

@ -36,7 +36,6 @@ import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.source.TrackGroupArray;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.TrackSelectionArray; import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
import com.google.android.exoplayer2.trackselection.TrackSelector;
import com.google.android.exoplayer2.upstream.BandwidthMeter; import com.google.android.exoplayer2.upstream.BandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.util.Clock; import com.google.android.exoplayer2.util.Clock;
@ -413,8 +412,14 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
() -> { () -> {
try { try {
player = player =
new TestSimpleExoPlayer( new SimpleExoPlayer.Builder(context, renderersFactory)
context, renderersFactory, trackSelector, loadControl, bandwidthMeter, clock); .setTrackSelector(trackSelector)
.setLoadControl(loadControl)
.setBandwidthMeter(bandwidthMeter)
.setAnalyticsCollector(new AnalyticsCollector(clock))
.setClock(clock)
.setLooper(Looper.myLooper())
.build();
player.addListener(ExoPlayerTestRunner.this); player.addListener(ExoPlayerTestRunner.this);
if (eventListener != null) { if (eventListener != null) {
player.addListener(eventListener); player.addListener(eventListener);
@ -614,27 +619,4 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
public void onActionScheduleFinished() { public void onActionScheduleFinished() {
actionScheduleFinishedCountDownLatch.countDown(); actionScheduleFinishedCountDownLatch.countDown();
} }
/** SimpleExoPlayer implementation using a custom Clock. */
private static final class TestSimpleExoPlayer extends SimpleExoPlayer {
public TestSimpleExoPlayer(
Context context,
RenderersFactory renderersFactory,
TrackSelector trackSelector,
LoadControl loadControl,
BandwidthMeter bandwidthMeter,
Clock clock) {
super(
context,
renderersFactory,
trackSelector,
loadControl,
/* drmSessionManager= */ null,
bandwidthMeter,
new AnalyticsCollector(clock),
clock,
Looper.myLooper());
}
}
} }