Commit 561949a2 by tonihei Committed by Oliver Woodman

Remove AnalyticsCollector.Factory.

This factory was only needed in the past when we didn't have
AnalyticsCollector.setPlayer. Code becomes easier to use without this factory.

PiperOrigin-RevId: 261081860
parent 526cc72e
......@@ -25,6 +25,8 @@
management in playlists.
* Improve text selection logic to always prefer the better language matches
over other selection parameters.
* Remove `AnalyticsCollector.Factory`. Instances can be created directly and
the `Player` set later using `AnalyticsCollector.setPlayer`.
### 2.10.4 ###
......
......@@ -244,7 +244,7 @@ public final class ExoPlayerFactory {
loadControl,
drmSessionManager,
bandwidthMeter,
new AnalyticsCollector.Factory(),
new AnalyticsCollector(Clock.DEFAULT),
Util.getLooper());
}
......@@ -257,8 +257,8 @@ public final class ExoPlayerFactory {
* @param loadControl The {@link LoadControl} that will be used by the instance.
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
* will not be used for DRM protected playbacks.
* @param analyticsCollectorFactory A factory for creating the {@link AnalyticsCollector} that
* will collect and forward all player events.
* @param analyticsCollector The {@link AnalyticsCollector} that will collect and forward all
* player events.
*/
public static SimpleExoPlayer newSimpleInstance(
Context context,
......@@ -266,14 +266,14 @@ public final class ExoPlayerFactory {
TrackSelector trackSelector,
LoadControl loadControl,
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
AnalyticsCollector.Factory analyticsCollectorFactory) {
AnalyticsCollector analyticsCollector) {
return newSimpleInstance(
context,
renderersFactory,
trackSelector,
loadControl,
drmSessionManager,
analyticsCollectorFactory,
analyticsCollector,
Util.getLooper());
}
......@@ -302,7 +302,7 @@ public final class ExoPlayerFactory {
trackSelector,
loadControl,
drmSessionManager,
new AnalyticsCollector.Factory(),
new AnalyticsCollector(Clock.DEFAULT),
looper);
}
......@@ -315,8 +315,8 @@ public final class ExoPlayerFactory {
* @param loadControl The {@link LoadControl} that will be used by the instance.
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
* will not be used for DRM protected playbacks.
* @param analyticsCollectorFactory A factory for creating the {@link AnalyticsCollector} that
* will collect and forward all player events.
* @param analyticsCollector The {@link AnalyticsCollector} that will collect and forward all
* player events.
* @param looper The {@link Looper} which must be used for all calls to the player and which is
* used to call listeners on.
*/
......@@ -326,7 +326,7 @@ public final class ExoPlayerFactory {
TrackSelector trackSelector,
LoadControl loadControl,
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
AnalyticsCollector.Factory analyticsCollectorFactory,
AnalyticsCollector analyticsCollector,
Looper looper) {
return newSimpleInstance(
context,
......@@ -335,7 +335,7 @@ public final class ExoPlayerFactory {
loadControl,
drmSessionManager,
getDefaultBandwidthMeter(context),
analyticsCollectorFactory,
analyticsCollector,
looper);
}
......@@ -348,8 +348,8 @@ public final class ExoPlayerFactory {
* @param loadControl The {@link LoadControl} that will be used by the instance.
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
* will not be used for DRM protected playbacks.
* @param analyticsCollectorFactory A factory for creating the {@link AnalyticsCollector} that
* will collect and forward all player events.
* @param analyticsCollector The {@link AnalyticsCollector} that will collect and forward all
* player events.
* @param looper The {@link Looper} which must be used for all calls to the player and which is
* used to call listeners on.
*/
......@@ -360,7 +360,7 @@ public final class ExoPlayerFactory {
LoadControl loadControl,
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
BandwidthMeter bandwidthMeter,
AnalyticsCollector.Factory analyticsCollectorFactory,
AnalyticsCollector analyticsCollector,
Looper looper) {
return new SimpleExoPlayer(
context,
......@@ -369,7 +369,7 @@ public final class ExoPlayerFactory {
loadControl,
drmSessionManager,
bandwidthMeter,
analyticsCollectorFactory,
analyticsCollector,
looper);
}
......
......@@ -144,7 +144,7 @@ public class SimpleExoPlayer extends BasePlayer
loadControl,
drmSessionManager,
bandwidthMeter,
new AnalyticsCollector.Factory(),
new AnalyticsCollector(Clock.DEFAULT),
looper);
}
......@@ -156,8 +156,8 @@ public class SimpleExoPlayer extends BasePlayer
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
* will not be used for DRM protected playbacks.
* @param bandwidthMeter The {@link BandwidthMeter} that will be used by the instance.
* @param analyticsCollectorFactory A factory for creating the {@link AnalyticsCollector} that
* will collect and forward all player events.
* @param analyticsCollector The {@link AnalyticsCollector} that will collect and forward all
* player events.
* @param looper The {@link Looper} which must be used for all calls to the player and which is
* used to call listeners on.
*/
......@@ -168,7 +168,7 @@ public class SimpleExoPlayer extends BasePlayer
LoadControl loadControl,
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
BandwidthMeter bandwidthMeter,
AnalyticsCollector.Factory analyticsCollectorFactory,
AnalyticsCollector analyticsCollector,
Looper looper) {
this(
context,
......@@ -177,7 +177,7 @@ public class SimpleExoPlayer extends BasePlayer
loadControl,
drmSessionManager,
bandwidthMeter,
analyticsCollectorFactory,
analyticsCollector,
Clock.DEFAULT,
looper);
}
......@@ -190,8 +190,8 @@ public class SimpleExoPlayer extends BasePlayer
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
* will not be used for DRM protected playbacks.
* @param bandwidthMeter The {@link BandwidthMeter} that will be used by the instance.
* @param analyticsCollectorFactory A factory for creating the {@link AnalyticsCollector} that
* will collect and forward all player events.
* @param analyticsCollector The {@link AnalyticsCollector} that will collect and forward all
* player events.
* @param clock The {@link Clock} that will be used by the instance. Should always be {@link
* Clock#DEFAULT}, unless the player is being used from a test.
* @param looper The {@link Looper} which must be used for all calls to the player and which is
......@@ -204,10 +204,11 @@ public class SimpleExoPlayer extends BasePlayer
LoadControl loadControl,
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
BandwidthMeter bandwidthMeter,
AnalyticsCollector.Factory analyticsCollectorFactory,
AnalyticsCollector analyticsCollector,
Clock clock,
Looper looper) {
this.bandwidthMeter = bandwidthMeter;
this.analyticsCollector = analyticsCollector;
componentListener = new ComponentListener();
videoListeners = new CopyOnWriteArraySet<>();
audioListeners = new CopyOnWriteArraySet<>();
......@@ -235,7 +236,7 @@ public class SimpleExoPlayer extends BasePlayer
// Build the player and associated objects.
player =
new ExoPlayerImpl(renderers, trackSelector, loadControl, bandwidthMeter, clock, looper);
analyticsCollector = analyticsCollectorFactory.createAnalyticsCollector(player, clock);
analyticsCollector.setPlayer(player);
addListener(analyticsCollector);
addListener(componentListener);
videoDebugListeners.add(analyticsCollector);
......
......@@ -67,23 +67,6 @@ public class AnalyticsCollector
VideoListener,
AudioListener {
/** Factory for an analytics collector. */
public static class Factory {
/**
* Creates an analytics collector for the specified player.
*
* @param player The {@link Player} for which data will be collected. Can be null, if the player
* is set by calling {@link AnalyticsCollector#setPlayer(Player)} before using the analytics
* collector.
* @param clock A {@link Clock} used to generate timestamps.
* @return An analytics collector.
*/
public AnalyticsCollector createAnalyticsCollector(@Nullable Player player, Clock clock) {
return new AnalyticsCollector(player, clock);
}
}
private final CopyOnWriteArraySet<AnalyticsListener> listeners;
private final Clock clock;
private final Window window;
......@@ -92,17 +75,11 @@ public class AnalyticsCollector
private @MonotonicNonNull Player player;
/**
* Creates an analytics collector for the specified player.
* Creates an analytics collector.
*
* @param player The {@link Player} for which data will be collected. Can be null, if the player
* is set by calling {@link AnalyticsCollector#setPlayer(Player)} before using the analytics
* collector.
* @param clock A {@link Clock} used to generate timestamps.
*/
protected AnalyticsCollector(@Nullable Player player, Clock clock) {
if (player != null) {
this.player = player;
}
public AnalyticsCollector(Clock clock) {
this.clock = Assertions.checkNotNull(clock);
listeners = new CopyOnWriteArraySet<>();
mediaPeriodQueueTracker = new MediaPeriodQueueTracker();
......
......@@ -622,7 +622,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
loadControl,
/* drmSessionManager= */ null,
bandwidthMeter,
new AnalyticsCollector.Factory(),
new AnalyticsCollector(clock),
clock,
Looper.myLooper());
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment