Add ad event listeners in the Looper event of the ad manager callback

#minor-release

PiperOrigin-RevId: 509189206
This commit is contained in:
bachinger 2023-02-13 12:26:04 +00:00 committed by christosts
parent 15f0865d62
commit e98670e2f9

View File

@ -557,11 +557,10 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
StreamManagerLoadable streamManagerLoadable = StreamManagerLoadable streamManagerLoadable =
new StreamManagerLoadable( new StreamManagerLoadable(
sdkAdsLoader, sdkAdsLoader,
adsLoader.configuration, /* imaServerSideAdInsertionMediaSource= */ this,
streamRequest, streamRequest,
streamPlayer, streamPlayer,
applicationAdErrorListener, applicationAdErrorListener);
loadVideoTimeoutMs);
loader.startLoading( loader.startLoading(
streamManagerLoadable, streamManagerLoadable,
new StreamManagerLoadableCallback(), new StreamManagerLoadableCallback(),
@ -636,7 +635,6 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
} }
this.streamManager.removeAdEventListener(componentListener); this.streamManager.removeAdEventListener(componentListener);
this.streamManager.destroy(); this.streamManager.destroy();
this.streamManager = null;
} }
this.streamManager = streamManager; this.streamManager = streamManager;
if (streamManager != null) { if (streamManager != null) {
@ -647,6 +645,12 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
if (applicationAdErrorListener != null) { if (applicationAdErrorListener != null) {
streamManager.addAdErrorListener(applicationAdErrorListener); streamManager.addAdErrorListener(applicationAdErrorListener);
} }
AdsRenderingSettings adsRenderingSettings =
ImaSdkFactory.getInstance().createAdsRenderingSettings();
adsRenderingSettings.setLoadVideoTimeout(loadVideoTimeoutMs);
adsRenderingSettings.setFocusSkipButtonWhenAvailable(
adsLoader.configuration.focusSkipButtonWhenAvailable);
streamManager.init(adsRenderingSettings);
} }
} }
@ -913,7 +917,6 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
@Override @Override
public void onLoadCompleted( public void onLoadCompleted(
StreamManagerLoadable loadable, long elapsedRealtimeMs, long loadDurationMs) { StreamManagerLoadable loadable, long elapsedRealtimeMs, long loadDurationMs) {
mainHandler.post(() -> setStreamManager(checkNotNull(loadable.getStreamManager())));
setContentUri(checkNotNull(loadable.getContentUri())); setContentUri(checkNotNull(loadable.getContentUri()));
} }
@ -944,14 +947,12 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
implements Loadable, AdsLoadedListener, AdErrorListener { implements Loadable, AdsLoadedListener, AdErrorListener {
private final com.google.ads.interactivemedia.v3.api.AdsLoader adsLoader; private final com.google.ads.interactivemedia.v3.api.AdsLoader adsLoader;
private final ServerSideAdInsertionConfiguration serverSideAdInsertionConfiguration; private final ImaServerSideAdInsertionMediaSource imaServerSideAdInsertionMediaSource;
private final StreamRequest request; private final StreamRequest request;
private final StreamPlayer streamPlayer; private final StreamPlayer streamPlayer;
@Nullable private final AdErrorListener adErrorListener; @Nullable private final AdErrorListener adErrorListener;
private final int loadVideoTimeoutMs;
private final ConditionVariable conditionVariable; private final ConditionVariable conditionVariable;
@Nullable private volatile StreamManager streamManager;
@Nullable private volatile Uri contentUri; @Nullable private volatile Uri contentUri;
private volatile boolean cancelled; private volatile boolean cancelled;
private volatile boolean error; private volatile boolean error;
@ -961,17 +962,15 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
/** Creates an instance. */ /** Creates an instance. */
private StreamManagerLoadable( private StreamManagerLoadable(
com.google.ads.interactivemedia.v3.api.AdsLoader adsLoader, com.google.ads.interactivemedia.v3.api.AdsLoader adsLoader,
ServerSideAdInsertionConfiguration serverSideAdInsertionConfiguration, ImaServerSideAdInsertionMediaSource imaServerSideAdInsertionMediaSource,
StreamRequest request, StreamRequest request,
StreamPlayer streamPlayer, StreamPlayer streamPlayer,
@Nullable AdErrorListener adErrorListener, @Nullable AdErrorListener adErrorListener) {
int loadVideoTimeoutMs) {
this.adsLoader = adsLoader; this.adsLoader = adsLoader;
this.serverSideAdInsertionConfiguration = serverSideAdInsertionConfiguration; this.imaServerSideAdInsertionMediaSource = imaServerSideAdInsertionMediaSource;
this.request = request; this.request = request;
this.streamPlayer = streamPlayer; this.streamPlayer = streamPlayer;
this.adErrorListener = adErrorListener; this.adErrorListener = adErrorListener;
this.loadVideoTimeoutMs = loadVideoTimeoutMs;
conditionVariable = new ConditionVariable(); conditionVariable = new ConditionVariable();
errorCode = -1; errorCode = -1;
} }
@ -982,12 +981,6 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
return contentUri; return contentUri;
} }
/** Returns the stream manager or null if not yet loaded. */
@Nullable
public StreamManager getStreamManager() {
return streamManager;
}
// Implement Loadable. // Implement Loadable.
@Override @Override
@ -1041,14 +1034,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
conditionVariable.open(); conditionVariable.open();
return; return;
} }
AdsRenderingSettings adsRenderingSettings = imaServerSideAdInsertionMediaSource.setStreamManager(streamManager);
ImaSdkFactory.getInstance().createAdsRenderingSettings();
adsRenderingSettings.setLoadVideoTimeout(loadVideoTimeoutMs);
adsRenderingSettings.setFocusSkipButtonWhenAvailable(
serverSideAdInsertionConfiguration.focusSkipButtonWhenAvailable);
// After initialization completed the streamUri will be reported to the streamPlayer.
streamManager.init(adsRenderingSettings);
this.streamManager = streamManager;
} }
// AdErrorEvent.AdErrorListener implementation. // AdErrorEvent.AdErrorListener implementation.