Add withSkippedAd method to AdPlaybackState. Currently it is only possible to skip entire ad groups but not individual ads within a given ad group.
This commit is contained in:
parent
a1f89bec0d
commit
8342b1dae4
@ -368,6 +368,14 @@ public final class AdPlaybackState {
|
|||||||
return new AdPlaybackState(adGroupTimesUs, adGroups, adResumePositionUs, contentDurationUs);
|
return new AdPlaybackState(adGroupTimesUs, adGroups, adResumePositionUs, contentDurationUs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Returns an instance with the specified ad marked as skipped. */
|
||||||
|
@CheckResult
|
||||||
|
public AdPlaybackState withSkippedAd(int adGroupIndex, int adIndexInAdGroup) {
|
||||||
|
AdGroup[] adGroups = Arrays.copyOf(this.adGroups, this.adGroups.length);
|
||||||
|
adGroups[adGroupIndex] = adGroups[adGroupIndex].withAdState(AD_STATE_SKIPPED, adIndexInAdGroup);
|
||||||
|
return new AdPlaybackState(adGroupTimesUs, adGroups, adResumePositionUs, contentDurationUs);
|
||||||
|
}
|
||||||
|
|
||||||
/** Returns an instance with the specified ad marked as having a load error. */
|
/** Returns an instance with the specified ad marked as having a load error. */
|
||||||
@CheckResult
|
@CheckResult
|
||||||
public AdPlaybackState withAdLoadError(int adGroupIndex, int adIndexInAdGroup) {
|
public AdPlaybackState withAdLoadError(int adGroupIndex, int adIndexInAdGroup) {
|
||||||
|
@ -89,6 +89,19 @@ public final class AdPlaybackStateTest {
|
|||||||
assertThat(state.adGroups[0].states[2]).isEqualTo(AdPlaybackState.AD_STATE_AVAILABLE);
|
assertThat(state.adGroups[0].states[2]).isEqualTo(AdPlaybackState.AD_STATE_AVAILABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetFirstAdIndexToPlaySkipsSkippedAd() {
|
||||||
|
state = state.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 3);
|
||||||
|
state = state.withAdUri(/* adGroupIndex= */ 0, /* adIndexInAdGroup= */ 0, TEST_URI);
|
||||||
|
state = state.withAdUri(/* adGroupIndex= */ 0, /* adIndexInAdGroup= */ 2, TEST_URI);
|
||||||
|
|
||||||
|
state = state.withSkippedAd(/* adGroupIndex= */ 0, /* adIndexInAdGroup= */ 0);
|
||||||
|
|
||||||
|
assertThat(state.adGroups[0].getFirstAdIndexToPlay()).isEqualTo(1);
|
||||||
|
assertThat(state.adGroups[0].states[1]).isEqualTo(AdPlaybackState.AD_STATE_UNAVAILABLE);
|
||||||
|
assertThat(state.adGroups[0].states[2]).isEqualTo(AdPlaybackState.AD_STATE_AVAILABLE);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetFirstAdIndexToPlaySkipsErrorAds() {
|
public void testGetFirstAdIndexToPlaySkipsErrorAds() {
|
||||||
state = state.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 3);
|
state = state.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 3);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user