@@ -1011,6 +1011,74 @@ public void handleContentTimelineChanged_livePlaylistWithoutInterstitials_hasLiv
10111011 .inOrder ();
10121012 }
10131013
1014+ @ Test
1015+ public void
1016+ handleContentTimelineChanged_livePlaylistUpdatesPreRollAndPostRoll_addPreRollIgnorePostRoll ()
1017+ throws IOException {
1018+ assertThat (
1019+ callHandleContentTimelineChangedForLiveAndCaptureAdPlaybackStates (
1020+ adsLoader ,
1021+ /* startAdsLoader= */ true ,
1022+ /* windowOffsetInFirstPeriodUs= */ 0L ,
1023+ "#EXTM3U\n "
1024+ + "#EXT-X-TARGETDURATION:6\n "
1025+ + "#EXT-X-MEDIA-SEQUENCE:0\n "
1026+ + "#EXT-X-DATERANGE:"
1027+ + "ID=\" ad0-0\" ,"
1028+ + "CLASS=\" com.apple.hls.interstitial\" ,"
1029+ + "START-DATE=\" 2020-01-02T22:00:00.000Z\" ,"
1030+ + "CUE=\" POST\" ,"
1031+ + "X-ASSET-URI=\" http://example.com/media-0-0.m3u8\" "
1032+ + "\n "
1033+ + "#EXT-X-PROGRAM-DATE-TIME:2020-01-02T21:00:00.000Z\n "
1034+ + "#EXTINF:6,\n main0.0.ts\n "
1035+ + "#EXTINF:6,\n main1.0.ts\n "
1036+ + "#EXTINF:6,\n main2.0.ts\n "
1037+ + "#EXTINF:6,\n main3.0.ts\n "
1038+ + "#EXTINF:6,\n main4.0.ts\n "
1039+ + "\n " ,
1040+ "#EXTM3U\n "
1041+ + "#EXT-X-TARGETDURATION:6\n "
1042+ + "#EXT-X-MEDIA-SEQUENCE:0\n "
1043+ + "#EXT-X-DATERANGE:"
1044+ + "ID=\" ad0-0\" ,"
1045+ + "CLASS=\" com.apple.hls.interstitial\" ,"
1046+ + "START-DATE=\" 2020-01-02T22:00:00.000Z\" ,"
1047+ + "CUE=\" POST\" ,"
1048+ + "X-ASSET-URI=\" http://example.com/media-0-0.m3u8\" "
1049+ + "\n "
1050+ + "#EXT-X-DATERANGE:"
1051+ + "ID=\" ad1-0\" ,"
1052+ + "CLASS=\" com.apple.hls.interstitial\" ,"
1053+ + "START-DATE=\" 2020-01-02T20:00:00.000Z\" ,"
1054+ + "CUE=\" PRE\" ,"
1055+ + "X-ASSET-URI=\" http://example.com/media-1-0.m3u8\" "
1056+ + "\n "
1057+ + "#EXT-X-PROGRAM-DATE-TIME:2020-01-02T21:00:06.000Z\n "
1058+ + "#EXTINF:6,\n main1.0.ts\n " // pre-roll queue point
1059+ + "#EXTINF:6,\n main2.0.ts\n "
1060+ + "#EXTINF:6,\n main3.0.ts\n "
1061+ + "#EXTINF:6,\n main4.0.ts\n "
1062+ + "#EXTINF:6,\n main5.0.ts\n "
1063+ + "\n " ))
1064+ .containsExactly (
1065+ new AdPlaybackState ("adsId" )
1066+ .withLivePostrollPlaceholderAppended (/* isServerSideInserted= */ false ),
1067+ new AdPlaybackState ("adsId" , 6_000_000L )
1068+ .withAdResumePositionUs (0 )
1069+ .withAdCount (/* adGroupIndex= */ 0 , /* adCount= */ 1 )
1070+ .withAdId (/* adGroupIndex= */ 0 , /* adIndexInAdGroup= */ 0 , "ad1-0" )
1071+ .withAvailableAdMediaItem (
1072+ /* adGroupIndex= */ 0 ,
1073+ /* adIndexInAdGroup= */ 0 ,
1074+ new MediaItem .Builder ()
1075+ .setUri ("http://example.com/media-1-0.m3u8" )
1076+ .setMimeType (MimeTypes .APPLICATION_M3U8 )
1077+ .build ())
1078+ .withLivePostrollPlaceholderAppended (/* isServerSideInserted= */ false ))
1079+ .inOrder ();
1080+ }
1081+
10141082 @ Test
10151083 public void
10161084 handleContentTimelineChanged_livePlaylistUpdateNewAdAfterPlayedAd_correctAdPlaybackStateUpdates ()
0 commit comments