mirror of
https://github.com/samsonjs/media.git
synced 2026-04-18 13:25:47 +00:00
Add DefaultMediaSourceFactory.{set,clear}LocalAdInsertionConfig
Deprecate the setAdsLoaderProvider and setAdViewProvider methods these replace. PiperOrigin-RevId: 448251423
This commit is contained in:
parent
de33eee6ec
commit
25279ad477
3 changed files with 70 additions and 4 deletions
|
|
@ -314,8 +314,8 @@ public class PlayerActivity extends AppCompatActivity
|
|||
serverSideAdsLoader, new DefaultMediaSourceFactory(dataSourceFactory));
|
||||
return new DefaultMediaSourceFactory(dataSourceFactory)
|
||||
.setDrmSessionManagerProvider(drmSessionManagerProvider)
|
||||
.setAdsLoaderProvider(this::getClientSideAdsLoader)
|
||||
.setAdViewProvider(playerView)
|
||||
.setLocalAdInsertionComponents(
|
||||
this::getClientSideAdsLoader, /* adViewProvider= */ playerView)
|
||||
.setServerSideAdInsertionMediaSourceFactory(imaServerSideAdInsertionMediaSourceFactory);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -193,9 +193,16 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
|||
* Sets the {@link AdsLoader.Provider} that provides {@link AdsLoader} instances for media items
|
||||
* that have {@link MediaItem.LocalConfiguration#adsConfiguration ads configurations}.
|
||||
*
|
||||
* <p>This will override or clear the {@link AdsLoader.Provider} set by {@link
|
||||
* #setLocalAdInsertionComponents(AdsLoader.Provider, AdViewProvider)}.
|
||||
*
|
||||
* @param adsLoaderProvider A provider for {@link AdsLoader} instances.
|
||||
* @return This factory, for convenience.
|
||||
* @deprecated Use {@link #setLocalAdInsertionComponents(AdsLoader.Provider, AdViewProvider)}
|
||||
* instead.
|
||||
*/
|
||||
@UnstableApi
|
||||
@Deprecated
|
||||
public DefaultMediaSourceFactory setAdsLoaderProvider(
|
||||
@Nullable AdsLoader.Provider adsLoaderProvider) {
|
||||
this.adsLoaderProvider = adsLoaderProvider;
|
||||
|
|
@ -205,14 +212,54 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
|||
/**
|
||||
* Sets the {@link AdViewProvider} that provides information about views for the ad playback UI.
|
||||
*
|
||||
* @param adViewProvider A provider for {@link AdsLoader} instances.
|
||||
* <p>This will override or clear the {@link AdViewProvider} set by {@link
|
||||
* #setLocalAdInsertionComponents(AdsLoader.Provider, AdViewProvider)}.
|
||||
*
|
||||
* @param adViewProvider A provider for information about views for the ad playback UI.
|
||||
* @return This factory, for convenience.
|
||||
* @deprecated Use {@link #setLocalAdInsertionComponents(AdsLoader.Provider, AdViewProvider)}
|
||||
* instead.
|
||||
*/
|
||||
@UnstableApi
|
||||
@Deprecated
|
||||
public DefaultMediaSourceFactory setAdViewProvider(@Nullable AdViewProvider adViewProvider) {
|
||||
this.adViewProvider = adViewProvider;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the components required for local ad insertion for media items that have {@link
|
||||
* MediaItem.LocalConfiguration#adsConfiguration ads configurations}
|
||||
*
|
||||
* <p>This will override the values set by {@link #setAdsLoaderProvider(AdsLoader.Provider)} and
|
||||
* {@link #setAdViewProvider(AdViewProvider)}.
|
||||
*
|
||||
* @param adsLoaderProvider A provider for {@link AdsLoader} instances.
|
||||
* @param adViewProvider A provider for information about views for the ad playback UI.
|
||||
* @return This factory, for convenience.
|
||||
*/
|
||||
public DefaultMediaSourceFactory setLocalAdInsertionComponents(
|
||||
AdsLoader.Provider adsLoaderProvider, AdViewProvider adViewProvider) {
|
||||
this.adsLoaderProvider = checkNotNull(adsLoaderProvider);
|
||||
this.adViewProvider = checkNotNull(adViewProvider);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear any values set via {@link #setLocalAdInsertionComponents(AdsLoader.Provider,
|
||||
* AdViewProvider)}.
|
||||
*
|
||||
* <p>This will also clear any values set by {@link #setAdsLoaderProvider(AdsLoader.Provider)} and
|
||||
* {@link #setAdViewProvider(AdViewProvider)}.
|
||||
*
|
||||
* @return This factory, for convenience.
|
||||
*/
|
||||
public DefaultMediaSourceFactory clearLocalAdInsertionComponents() {
|
||||
this.adsLoaderProvider = null;
|
||||
this.adViewProvider = null;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the {@link MediaSource.Factory} used to handle {@link MediaItem} instances containing a
|
||||
* {@link Uri} identified as resolving to content with server side ad insertion (SSAI).
|
||||
|
|
|
|||
|
|
@ -191,8 +191,9 @@ public final class DefaultMediaSourceFactoryTest {
|
|||
assertThat(supportedTypes).asList().containsExactly(C.CONTENT_TYPE_OTHER);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation") // Testing deprecated setters.
|
||||
@Test
|
||||
public void createMediaSource_withAdsConfiguration_callsAdsLoader() {
|
||||
public void createMediaSource_withDeprecatedAdsConfiguration_callsAdsLoader() {
|
||||
Uri adTagUri = Uri.parse(URI_MEDIA);
|
||||
MediaItem mediaItem =
|
||||
new MediaItem.Builder()
|
||||
|
|
@ -209,6 +210,24 @@ public final class DefaultMediaSourceFactoryTest {
|
|||
assertThat(mediaSource).isInstanceOf(AdsMediaSource.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createMediaSource_withAdsConfiguration_callsAdsLoader() {
|
||||
Uri adTagUri = Uri.parse(URI_MEDIA);
|
||||
MediaItem mediaItem =
|
||||
new MediaItem.Builder()
|
||||
.setUri(URI_MEDIA)
|
||||
.setAdsConfiguration(new MediaItem.AdsConfiguration.Builder(adTagUri).build())
|
||||
.build();
|
||||
DefaultMediaSourceFactory defaultMediaSourceFactory =
|
||||
new DefaultMediaSourceFactory((Context) ApplicationProvider.getApplicationContext())
|
||||
.setLocalAdInsertionComponents(
|
||||
ignoredAdsConfiguration -> mock(AdsLoader.class), mock(AdViewProvider.class));
|
||||
|
||||
MediaSource mediaSource = defaultMediaSourceFactory.createMediaSource(mediaItem);
|
||||
|
||||
assertThat(mediaSource).isInstanceOf(AdsMediaSource.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createMediaSource_withAdsConfiguration_adProvidersNotSet_playsWithoutAdNoException() {
|
||||
MediaItem mediaItem =
|
||||
|
|
|
|||
Loading…
Reference in a new issue