@amazon/vinyl 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +24 -6
- package/dist/index.cjs.map +2 -2
- package/dist/index.js +33 -13
- package/dist/index.js.map +3 -3
- package/dist/test/integ.es5.js +62 -62
- package/dist/test/integ.js +119 -6
- package/dist/test/integ.js.map +2 -2
- package/dist/types/current/ad/AdBreakInfo.d.ts +160 -0
- package/dist/types/current/ad/AdBreakInfo.d.ts.map +1 -0
- package/dist/types/current/ad/AdBreakInfo.js +5 -0
- package/dist/types/current/ad/AdController.d.ts +229 -0
- package/dist/types/current/ad/AdController.d.ts.map +1 -0
- package/dist/types/current/ad/AdController.js +19 -0
- package/dist/types/current/ad/AdControllerImpl.d.ts +162 -0
- package/dist/types/current/ad/AdControllerImpl.d.ts.map +1 -0
- package/dist/types/current/ad/AdControllerImpl.js +741 -0
- package/dist/types/current/ad/AdError.d.ts +6 -0
- package/dist/types/current/ad/AdError.d.ts.map +1 -0
- package/dist/types/current/ad/AdError.js +14 -0
- package/dist/types/current/ad/AdsProvider.d.ts +28 -0
- package/dist/types/current/ad/AdsProvider.d.ts.map +1 -0
- package/dist/types/current/ad/AdsProvider.js +5 -0
- package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
- package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts.map +1 -0
- package/dist/types/current/ad/defaultAdLoadOptionsResolver.js +26 -0
- package/dist/types/current/ad/discoverHlsInterstitials.d.ts +22 -0
- package/dist/types/current/ad/discoverHlsInterstitials.d.ts.map +1 -0
- package/dist/types/current/ad/discoverHlsInterstitials.js +248 -0
- package/dist/types/current/drm/DrmControllerImpl.d.ts +6 -0
- package/dist/types/current/drm/DrmControllerImpl.d.ts.map +1 -1
- package/dist/types/current/drm/DrmControllerImpl.js +23 -1
- package/dist/types/current/playback/PlaybackControllerImpl.d.ts +1 -1
- package/dist/types/current/playback/createStallDetector.d.ts +43 -0
- package/dist/types/current/playback/createStallDetector.d.ts.map +1 -0
- package/dist/types/current/playback/createStallDetector.js +101 -0
- package/dist/types/current/playback/createStallMonitor.d.ts +45 -0
- package/dist/types/current/playback/createStallMonitor.d.ts.map +1 -0
- package/dist/types/current/playback/createStallMonitor.js +99 -0
- package/dist/types/current/streaming/AudioOptions.d.ts +66 -0
- package/dist/types/current/streaming/AudioOptions.d.ts.map +1 -0
- package/dist/types/current/streaming/AudioOptions.js +19 -0
- package/dist/types/current/streaming/LoadMetric.d.ts +72 -0
- package/dist/types/current/streaming/LoadMetric.d.ts.map +1 -0
- package/dist/types/current/streaming/LoadMetric.js +5 -0
- package/dist/types/current/streaming/ManifestControllerImpl.d.ts +43 -0
- package/dist/types/current/streaming/ManifestControllerImpl.d.ts.map +1 -0
- package/dist/types/current/streaming/ManifestControllerImpl.js +104 -0
- package/dist/types/current/streaming/buffering/codecDenylist.d.ts +23 -0
- package/dist/types/current/streaming/buffering/codecDenylist.d.ts.map +1 -0
- package/dist/types/current/streaming/buffering/codecDenylist.js +62 -0
- package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts +30 -0
- package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts.map +1 -0
- package/dist/types/current/streaming/createAllowedContentTypesValue.js +43 -0
- package/dist/types/current/streaming/createTimelineContentTypesValue.d.ts +21 -0
- package/dist/types/current/streaming/createTimelineContentTypesValue.d.ts.map +1 -0
- package/dist/types/current/streaming/createTimelineContentTypesValue.js +25 -0
- package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts.map +1 -0
- package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.js +75 -0
- package/dist/types/current/text/HtmlTextTrackRenderer.d.ts +60 -0
- package/dist/types/current/text/HtmlTextTrackRenderer.d.ts.map +1 -0
- package/dist/types/current/text/HtmlTextTrackRenderer.js +231 -0
- package/dist/types/current/text/SidecarTextTrackController.d.ts +103 -0
- package/dist/types/current/text/SidecarTextTrackController.d.ts.map +1 -0
- package/dist/types/current/text/SidecarTextTrackController.js +250 -0
- package/dist/types/current/text/SidecarTextTrackLoader.d.ts +65 -0
- package/dist/types/current/text/SidecarTextTrackLoader.d.ts.map +1 -0
- package/dist/types/current/text/SidecarTextTrackLoader.js +150 -0
- package/dist/types/current/text/TextTrack.d.ts +179 -0
- package/dist/types/current/text/TextTrack.d.ts.map +1 -0
- package/dist/types/current/text/TextTrack.js +29 -0
- package/dist/types/current/text/TextTrackRenderer.d.ts +24 -0
- package/dist/types/current/text/TextTrackRenderer.d.ts.map +1 -0
- package/dist/types/current/text/TextTrackRenderer.js +5 -0
- package/dist/types/current/text/VttCueStyle.d.ts +41 -0
- package/dist/types/current/text/VttCueStyle.d.ts.map +1 -0
- package/dist/types/current/text/VttCueStyle.js +45 -0
- package/dist/types/current/text/discoverDashTextTracks.d.ts +24 -0
- package/dist/types/current/text/discoverDashTextTracks.d.ts.map +1 -0
- package/dist/types/current/text/discoverDashTextTracks.js +110 -0
- package/dist/types/current/text/discoverHlsTextTracks.d.ts +19 -0
- package/dist/types/current/text/discoverHlsTextTracks.d.ts.map +1 -0
- package/dist/types/current/text/discoverHlsTextTracks.js +49 -0
- package/dist/types/current/text/mediaTextTrackProvider.d.ts +34 -0
- package/dist/types/current/text/mediaTextTrackProvider.d.ts.map +1 -0
- package/dist/types/current/text/mediaTextTrackProvider.js +42 -0
- package/dist/types/current/text/parseWebVtt.d.ts +60 -0
- package/dist/types/current/text/parseWebVtt.d.ts.map +1 -0
- package/dist/types/current/text/parseWebVtt.js +249 -0
- package/dist/types/current/text/pickPreferredTextTrack.d.ts +15 -0
- package/dist/types/current/text/pickPreferredTextTrack.d.ts.map +1 -0
- package/dist/types/current/text/pickPreferredTextTrack.js +71 -0
- package/dist/types/current/track/SeekRange.d.ts +9 -0
- package/dist/types/current/track/SeekRange.d.ts.map +1 -0
- package/dist/types/current/track/SeekRange.js +5 -0
- package/dist/types/current/track/hls/HlsManifestData.d.ts +19 -0
- package/dist/types/current/track/hls/HlsManifestData.d.ts.map +1 -0
- package/dist/types/current/track/hls/HlsManifestData.js +5 -0
- package/dist/types/current/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/current/track/hls/createHlsManifestProvider.d.ts.map +1 -0
- package/dist/types/current/track/hls/createHlsManifestProvider.js +9 -0
- package/dist/types/current/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/current/track/inferLoadOptionsFromUri.d.ts.map +1 -0
- package/dist/types/current/track/inferLoadOptionsFromUri.js +55 -0
- package/dist/types/current/track/mse/MseTrack.d.ts +0 -1
- package/dist/types/current/track/mse/MseTrack.d.ts.map +1 -1
- package/dist/types/current/track/mse/MseTrack.js +4 -5
- package/dist/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/types/current/util/media/codecOverrides.d.ts +33 -0
- package/dist/types/current/util/media/codecOverrides.d.ts.map +1 -0
- package/dist/types/current/util/media/codecOverrides.js +37 -0
- package/dist/types/current/util/media/codecSupport.d.ts +6 -0
- package/dist/types/current/util/media/codecSupport.d.ts.map +1 -0
- package/dist/types/current/util/media/codecSupport.js +17 -0
- package/dist/types/current/util/media/mimeType.d.ts +8 -0
- package/dist/types/current/util/media/mimeType.d.ts.map +1 -0
- package/dist/types/current/util/media/mimeType.js +13 -0
- package/dist/types/ts3.7/ad/AdBreakInfo.d.ts +160 -0
- package/dist/types/ts3.7/ad/AdController.d.ts +243 -0
- package/dist/types/ts3.7/ad/AdControllerImpl.d.ts +162 -0
- package/dist/types/ts3.7/ad/AdError.d.ts +6 -0
- package/dist/types/ts3.7/ad/AdsProvider.d.ts +28 -0
- package/dist/types/ts3.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
- package/dist/types/ts3.7/ad/discoverHlsInterstitials.d.ts +22 -0
- package/dist/types/ts3.7/drm/DrmControllerImpl.d.ts +6 -0
- package/dist/types/ts3.7/playback/PlaybackControllerImpl.d.ts +1 -1
- package/dist/types/ts3.7/playback/createStallDetector.d.ts +43 -0
- package/dist/types/ts3.7/playback/createStallMonitor.d.ts +45 -0
- package/dist/types/ts3.7/streaming/AudioOptions.d.ts +66 -0
- package/dist/types/ts3.7/streaming/LoadMetric.d.ts +72 -0
- package/dist/types/ts3.7/streaming/ManifestControllerImpl.d.ts +40 -0
- package/dist/types/ts3.7/streaming/buffering/codecDenylist.d.ts +23 -0
- package/dist/types/ts3.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
- package/dist/types/ts3.7/streaming/createTimelineContentTypesValue.d.ts +21 -0
- package/dist/types/ts3.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/ts3.7/text/HtmlTextTrackRenderer.d.ts +60 -0
- package/dist/types/ts3.7/text/SidecarTextTrackController.d.ts +103 -0
- package/dist/types/ts3.7/text/SidecarTextTrackLoader.d.ts +65 -0
- package/dist/types/ts3.7/text/TextTrack.d.ts +183 -0
- package/dist/types/ts3.7/text/TextTrackRenderer.d.ts +24 -0
- package/dist/types/ts3.7/text/VttCueStyle.d.ts +41 -0
- package/dist/types/ts3.7/text/discoverDashTextTracks.d.ts +24 -0
- package/dist/types/ts3.7/text/discoverHlsTextTracks.d.ts +19 -0
- package/dist/types/ts3.7/text/mediaTextTrackProvider.d.ts +34 -0
- package/dist/types/ts3.7/text/parseWebVtt.d.ts +60 -0
- package/dist/types/ts3.7/text/pickPreferredTextTrack.d.ts +15 -0
- package/dist/types/ts3.7/track/SeekRange.d.ts +9 -0
- package/dist/types/ts3.7/track/hls/HlsManifestData.d.ts +19 -0
- package/dist/types/ts3.7/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/ts3.7/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/ts3.7/track/mse/MseTrack.d.ts +0 -1
- package/dist/types/ts3.7/util/media/codecOverrides.d.ts +33 -0
- package/dist/types/ts3.7/util/media/codecSupport.d.ts +6 -0
- package/dist/types/ts3.7/util/media/mimeType.d.ts +8 -0
- package/dist/types/ts4.1/ad/AdBreakInfo.d.ts +160 -0
- package/dist/types/ts4.1/ad/AdController.d.ts +243 -0
- package/dist/types/ts4.1/ad/AdControllerImpl.d.ts +162 -0
- package/dist/types/ts4.1/ad/AdError.d.ts +6 -0
- package/dist/types/ts4.1/ad/AdsProvider.d.ts +28 -0
- package/dist/types/ts4.1/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
- package/dist/types/ts4.1/ad/discoverHlsInterstitials.d.ts +22 -0
- package/dist/types/ts4.1/drm/DrmControllerImpl.d.ts +6 -0
- package/dist/types/ts4.1/playback/PlaybackControllerImpl.d.ts +1 -1
- package/dist/types/ts4.1/playback/createStallDetector.d.ts +43 -0
- package/dist/types/ts4.1/playback/createStallMonitor.d.ts +45 -0
- package/dist/types/ts4.1/streaming/AudioOptions.d.ts +66 -0
- package/dist/types/ts4.1/streaming/LoadMetric.d.ts +72 -0
- package/dist/types/ts4.1/streaming/ManifestControllerImpl.d.ts +40 -0
- package/dist/types/ts4.1/streaming/buffering/codecDenylist.d.ts +23 -0
- package/dist/types/ts4.1/streaming/createAllowedContentTypesValue.d.ts +30 -0
- package/dist/types/ts4.1/streaming/createTimelineContentTypesValue.d.ts +21 -0
- package/dist/types/ts4.1/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/ts4.1/text/HtmlTextTrackRenderer.d.ts +60 -0
- package/dist/types/ts4.1/text/SidecarTextTrackController.d.ts +104 -0
- package/dist/types/ts4.1/text/SidecarTextTrackLoader.d.ts +65 -0
- package/dist/types/ts4.1/text/TextTrack.d.ts +183 -0
- package/dist/types/ts4.1/text/TextTrackRenderer.d.ts +24 -0
- package/dist/types/ts4.1/text/VttCueStyle.d.ts +41 -0
- package/dist/types/ts4.1/text/discoverDashTextTracks.d.ts +24 -0
- package/dist/types/ts4.1/text/discoverHlsTextTracks.d.ts +19 -0
- package/dist/types/ts4.1/text/mediaTextTrackProvider.d.ts +34 -0
- package/dist/types/ts4.1/text/parseWebVtt.d.ts +60 -0
- package/dist/types/ts4.1/text/pickPreferredTextTrack.d.ts +15 -0
- package/dist/types/ts4.1/track/SeekRange.d.ts +9 -0
- package/dist/types/ts4.1/track/hls/HlsManifestData.d.ts +19 -0
- package/dist/types/ts4.1/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/ts4.1/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/ts4.1/track/mse/MseTrack.d.ts +0 -1
- package/dist/types/ts4.1/util/media/codecOverrides.d.ts +33 -0
- package/dist/types/ts4.1/util/media/codecSupport.d.ts +6 -0
- package/dist/types/ts4.1/util/media/mimeType.d.ts +8 -0
- package/dist/types/ts4.7/ad/AdBreakInfo.d.ts +160 -0
- package/dist/types/ts4.7/ad/AdController.d.ts +243 -0
- package/dist/types/ts4.7/ad/AdControllerImpl.d.ts +162 -0
- package/dist/types/ts4.7/ad/AdError.d.ts +6 -0
- package/dist/types/ts4.7/ad/AdsProvider.d.ts +28 -0
- package/dist/types/ts4.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
- package/dist/types/ts4.7/ad/discoverHlsInterstitials.d.ts +22 -0
- package/dist/types/ts4.7/drm/DrmControllerImpl.d.ts +6 -0
- package/dist/types/ts4.7/playback/PlaybackControllerImpl.d.ts +1 -1
- package/dist/types/ts4.7/playback/createStallDetector.d.ts +43 -0
- package/dist/types/ts4.7/playback/createStallMonitor.d.ts +45 -0
- package/dist/types/ts4.7/streaming/AudioOptions.d.ts +66 -0
- package/dist/types/ts4.7/streaming/LoadMetric.d.ts +72 -0
- package/dist/types/ts4.7/streaming/ManifestControllerImpl.d.ts +43 -0
- package/dist/types/ts4.7/streaming/buffering/codecDenylist.d.ts +23 -0
- package/dist/types/ts4.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
- package/dist/types/ts4.7/streaming/createTimelineContentTypesValue.d.ts +21 -0
- package/dist/types/ts4.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/ts4.7/text/HtmlTextTrackRenderer.d.ts +60 -0
- package/dist/types/ts4.7/text/SidecarTextTrackController.d.ts +103 -0
- package/dist/types/ts4.7/text/SidecarTextTrackLoader.d.ts +65 -0
- package/dist/types/ts4.7/text/TextTrack.d.ts +183 -0
- package/dist/types/ts4.7/text/TextTrackRenderer.d.ts +24 -0
- package/dist/types/ts4.7/text/VttCueStyle.d.ts +41 -0
- package/dist/types/ts4.7/text/discoverDashTextTracks.d.ts +24 -0
- package/dist/types/ts4.7/text/discoverHlsTextTracks.d.ts +19 -0
- package/dist/types/ts4.7/text/mediaTextTrackProvider.d.ts +34 -0
- package/dist/types/ts4.7/text/parseWebVtt.d.ts +60 -0
- package/dist/types/ts4.7/text/pickPreferredTextTrack.d.ts +15 -0
- package/dist/types/ts4.7/track/SeekRange.d.ts +9 -0
- package/dist/types/ts4.7/track/hls/HlsManifestData.d.ts +19 -0
- package/dist/types/ts4.7/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/ts4.7/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/ts4.7/track/mse/MseTrack.d.ts +0 -1
- package/dist/types/ts4.7/util/media/codecOverrides.d.ts +33 -0
- package/dist/types/ts4.7/util/media/codecSupport.d.ts +6 -0
- package/dist/types/ts4.7/util/media/mimeType.d.ts +8 -0
- package/dist/unit/types/current/ad/AdController.test.d.ts +2 -0
- package/dist/unit/types/current/ad/AdController.test.d.ts.map +1 -0
- package/dist/unit/types/current/ad/AdController.test.js +10 -0
- package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts +2 -0
- package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts.map +1 -0
- package/dist/unit/types/current/ad/AdControllerImpl.test.js +1654 -0
- package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts +2 -0
- package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts.map +1 -0
- package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.js +56 -0
- package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts +2 -0
- package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts.map +1 -0
- package/dist/unit/types/current/ad/discoverHlsInterstitials.test.js +757 -0
- package/dist/unit/types/current/drm/DrmControllerImpl.test.js +96 -2
- package/dist/unit/types/current/playback/createStallDetector.test.d.ts +2 -0
- package/dist/unit/types/current/playback/createStallDetector.test.d.ts.map +1 -0
- package/dist/unit/types/current/playback/createStallDetector.test.js +163 -0
- package/dist/unit/types/current/playback/createStallMonitor.test.d.ts +2 -0
- package/dist/unit/types/current/playback/createStallMonitor.test.d.ts.map +1 -0
- package/dist/unit/types/current/playback/createStallMonitor.test.js +163 -0
- package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/ManifestControllerImpl.test.js +197 -0
- package/dist/unit/types/current/streaming/MseTrack.test.js +15 -0
- package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/buffering/codecDenylist.test.js +56 -0
- package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.js +77 -0
- package/dist/unit/types/current/streaming/createTimelineContentTypesValue.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/createTimelineContentTypesValue.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/createTimelineContentTypesValue.test.js +57 -0
- package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.js +99 -0
- package/dist/unit/types/current/text/HtmlTextTrackRenderer.test.d.ts +2 -0
- package/dist/unit/types/current/text/HtmlTextTrackRenderer.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/HtmlTextTrackRenderer.test.js +231 -0
- package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts +2 -0
- package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/SidecarTextTrackController.test.js +686 -0
- package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts +2 -0
- package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/SidecarTextTrackLoader.test.js +365 -0
- package/dist/unit/types/current/text/TextTrack.test.d.ts +2 -0
- package/dist/unit/types/current/text/TextTrack.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/TextTrack.test.js +12 -0
- package/dist/unit/types/current/text/VttCueStyle.test.d.ts +2 -0
- package/dist/unit/types/current/text/VttCueStyle.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/VttCueStyle.test.js +76 -0
- package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts +2 -0
- package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/discoverDashTextTracks.test.js +216 -0
- package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts +2 -0
- package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/discoverHlsTextTracks.test.js +177 -0
- package/dist/unit/types/current/text/mediaTextTrackProvider.test.d.ts +2 -0
- package/dist/unit/types/current/text/mediaTextTrackProvider.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/mediaTextTrackProvider.test.js +86 -0
- package/dist/unit/types/current/text/parseWebVtt.test.d.ts +2 -0
- package/dist/unit/types/current/text/parseWebVtt.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/parseWebVtt.test.js +419 -0
- package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts +2 -0
- package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/pickPreferredTextTrack.test.js +78 -0
- package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts +2 -0
- package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts.map +1 -0
- package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.js +165 -0
- package/dist/unit/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/unit/types/current/util/media/codecOverrides.test.d.ts +2 -0
- package/dist/unit/types/current/util/media/codecOverrides.test.d.ts.map +1 -0
- package/dist/unit/types/current/util/media/codecOverrides.test.js +42 -0
- package/dist/unit/types/current/util/media/codecSupport.test.d.ts +2 -0
- package/dist/unit/types/current/util/media/codecSupport.test.d.ts.map +1 -0
- package/dist/unit/types/current/util/media/codecSupport.test.js +26 -0
- package/dist/unit/types/current/util/media/mimeType.test.d.ts +2 -0
- package/dist/unit/types/current/util/media/mimeType.test.d.ts.map +1 -0
- package/dist/unit/types/current/util/media/mimeType.test.js +22 -0
- package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts +2 -0
- package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts.map +1 -0
- package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.js +142 -0
- package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts +2 -0
- package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts.map +1 -0
- package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.js +188 -0
- package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts.map +1 -0
- package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.js +26 -0
- package/dist/vinylTestUtil/types/current/mock/dash/mockDashManifest.d.ts +84 -84
- package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts.map +1 -0
- package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.js +14 -0
- package/dist/vinylTestUtil/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/vinylTestUtil/types/ts3.7/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/ts3.7/mock/dash/mockDashManifest.d.ts +84 -84
- package/dist/vinylTestUtil/types/ts3.7/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/dash/mockDashManifest.d.ts +84 -84
- package/dist/vinylTestUtil/types/ts4.1/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/dash/mockDashManifest.d.ts +84 -84
- package/dist/vinylTestUtil/types/ts4.7/mock/text/MockTextTrackController.d.ts +10 -0
- package/package.json +10 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codecOverrides.test.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/util/media/codecOverrides.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { resolveCodecOverride } from '@amazon/vinyl';
|
|
6
|
+
describe('codecOverrides', () => {
|
|
7
|
+
describe('resolveCodecOverride', () => {
|
|
8
|
+
it('returns undefined when overrides are undefined', () => {
|
|
9
|
+
expect(resolveCodecOverride('video/mp4; codecs="hvc1.1"', undefined)).toBeUndefined();
|
|
10
|
+
});
|
|
11
|
+
it('returns undefined when overrides are empty', () => {
|
|
12
|
+
expect(resolveCodecOverride('video/mp4; codecs="hvc1.1"', {})).toBeUndefined();
|
|
13
|
+
});
|
|
14
|
+
it('returns undefined when no key matches', () => {
|
|
15
|
+
expect(resolveCodecOverride('video/mp4; codecs="avc1.64001f"', {
|
|
16
|
+
hvc1: 'deny',
|
|
17
|
+
})).toBeUndefined();
|
|
18
|
+
});
|
|
19
|
+
it('matches a codec by prefix', () => {
|
|
20
|
+
expect(resolveCodecOverride('video/mp4; codecs="hvc1.2.20000000.L123.B0"', { hvc1: 'deny' })).toBe('deny');
|
|
21
|
+
});
|
|
22
|
+
it('resolves an allow', () => {
|
|
23
|
+
expect(resolveCodecOverride('video/mp4; codecs="av01.0.05M.08"', {
|
|
24
|
+
av01: 'allow',
|
|
25
|
+
})).toBe('allow');
|
|
26
|
+
});
|
|
27
|
+
it('is case-insensitive on the key', () => {
|
|
28
|
+
expect(resolveCodecOverride('video/mp4; codecs="HVC1.1"', {
|
|
29
|
+
hvc1: 'deny',
|
|
30
|
+
})).toBe('deny');
|
|
31
|
+
});
|
|
32
|
+
it('deny wins over allow across multiple codecs', () => {
|
|
33
|
+
expect(resolveCodecOverride('video/mp4; codecs="hvc1.1,mp4a.40.2"', {
|
|
34
|
+
mp4a: 'allow',
|
|
35
|
+
hvc1: 'deny',
|
|
36
|
+
})).toBe('deny');
|
|
37
|
+
});
|
|
38
|
+
it('returns undefined when the mimeType has no codecs', () => {
|
|
39
|
+
expect(resolveCodecOverride('video/mp4', { hvc1: 'deny' })).toBeUndefined();
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codecSupport.test.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/util/media/codecSupport.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { extractCodecs } from '@amazon/vinyl';
|
|
6
|
+
describe('codecSupport', () => {
|
|
7
|
+
describe('extractCodecs', () => {
|
|
8
|
+
it('extracts a single codec from a mimeType', () => {
|
|
9
|
+
expect(extractCodecs('video/mp4; codecs="avc1.64001f"')).toEqual([
|
|
10
|
+
'avc1.64001f',
|
|
11
|
+
]);
|
|
12
|
+
});
|
|
13
|
+
it('extracts multiple comma-separated codecs', () => {
|
|
14
|
+
expect(extractCodecs('video/mp4; codecs="avc1.64001f,mp4a.40.2"')).toEqual(['avc1.64001f', 'mp4a.40.2']);
|
|
15
|
+
});
|
|
16
|
+
it('handles unquoted codecs', () => {
|
|
17
|
+
expect(extractCodecs('audio/mp4; codecs=ac-3')).toEqual(['ac-3']);
|
|
18
|
+
});
|
|
19
|
+
it('returns empty when no codecs parameter is present', () => {
|
|
20
|
+
expect(extractCodecs('video/mp4')).toEqual([]);
|
|
21
|
+
});
|
|
22
|
+
it('trims whitespace around codecs', () => {
|
|
23
|
+
expect(extractCodecs('video/mp4; codecs="hvc1.1 , mp4a.40.2"')).toEqual(['hvc1.1', 'mp4a.40.2']);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mimeType.test.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/util/media/mimeType.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { mimeSubtype } from '@amazon/vinyl';
|
|
6
|
+
describe('mimeSubtype', () => {
|
|
7
|
+
it('returns the subtype after the slash', () => {
|
|
8
|
+
expect(mimeSubtype('audio/mp4')).toBe('mp4');
|
|
9
|
+
expect(mimeSubtype('video/webm')).toBe('webm');
|
|
10
|
+
});
|
|
11
|
+
it('ignores codec and other parameters', () => {
|
|
12
|
+
expect(mimeSubtype('video/webm; codecs="vp9"')).toBe('webm');
|
|
13
|
+
expect(mimeSubtype('audio/mp4;codecs="mp4a.40.2"')).toBe('mp4');
|
|
14
|
+
});
|
|
15
|
+
it('lowercases and trims', () => {
|
|
16
|
+
expect(mimeSubtype(' VIDEO/MP4 ; codecs="avc1"')).toBe('mp4');
|
|
17
|
+
});
|
|
18
|
+
it('returns an empty string when there is no subtype', () => {
|
|
19
|
+
expect(mimeSubtype('video')).toBe('');
|
|
20
|
+
expect(mimeSubtype('')).toBe('');
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VinylPlayerAdBreaks.test.d.ts","sourceRoot":"","sources":["../../../../../test/unit/vinyl/VinylPlayerAdBreaks.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { AdControllerImpl, createVinylPlayer, } from '@amazon/vinyl';
|
|
6
|
+
import { externalDependencies } from '@amazon/vinyl-di';
|
|
7
|
+
import { createMockVinylDependencies, MockTrack, } from '@amazon/vinyl/vinylTestUtil';
|
|
8
|
+
import { MockHTMLAudioElement } from '@amazon/vinyl-util/browserTestUtil';
|
|
9
|
+
import { createEventSpy } from '@amazon/vinyl-util/testUtil';
|
|
10
|
+
describe('VinylPlayer ad break API', () => {
|
|
11
|
+
let adController;
|
|
12
|
+
let base;
|
|
13
|
+
let depFactories;
|
|
14
|
+
let player;
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
base = createMockVinylDependencies();
|
|
17
|
+
// Use a real ad controller so setTrackAds drives state and events that the
|
|
18
|
+
// player getters and redispatch reflect.
|
|
19
|
+
adController = new AdControllerImpl({
|
|
20
|
+
playbackController: base.playbackController,
|
|
21
|
+
});
|
|
22
|
+
depFactories = externalDependencies({ ...base, adController });
|
|
23
|
+
player = createVinylPlayer({ media: new MockHTMLAudioElement() }, depFactories);
|
|
24
|
+
});
|
|
25
|
+
afterEach(() => {
|
|
26
|
+
player.dispose();
|
|
27
|
+
});
|
|
28
|
+
function makeBreak(overrides = {}) {
|
|
29
|
+
return {
|
|
30
|
+
id: 'b1',
|
|
31
|
+
startTime: 10,
|
|
32
|
+
duration: 5,
|
|
33
|
+
placement: 'midroll',
|
|
34
|
+
restrict: {},
|
|
35
|
+
once: false,
|
|
36
|
+
resumeOffset: null,
|
|
37
|
+
playoutLimit: null,
|
|
38
|
+
resolutionTimeOffset: null,
|
|
39
|
+
skipControl: () => null,
|
|
40
|
+
ads: () => Promise.resolve([
|
|
41
|
+
{
|
|
42
|
+
id: 'a1',
|
|
43
|
+
startTime: 10,
|
|
44
|
+
duration: 5,
|
|
45
|
+
uri: 'ad.m3u8',
|
|
46
|
+
},
|
|
47
|
+
]),
|
|
48
|
+
...overrides,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function trackAds(...adBreaks) {
|
|
52
|
+
return { trackUri: 't1', adBreaks };
|
|
53
|
+
}
|
|
54
|
+
function simulateTimeUpdate(time) {
|
|
55
|
+
base.playbackController.currentTime = time;
|
|
56
|
+
base.playbackController.dispatch('timeUpdate', {
|
|
57
|
+
previous: 0,
|
|
58
|
+
current: time,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/** Waits for pending microtasks (ad resolution) to settle. */
|
|
62
|
+
async function flush() {
|
|
63
|
+
await Promise.resolve();
|
|
64
|
+
await Promise.resolve();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Activates a content parent track whose getAds() resolves the given ads
|
|
68
|
+
* and marks playback playing — the state the ad controller requires before
|
|
69
|
+
* it scans for midroll ingress. Awaits the async ad resolution.
|
|
70
|
+
*/
|
|
71
|
+
async function setContent(ads) {
|
|
72
|
+
const track = new MockTrack();
|
|
73
|
+
track.uri = ads.trackUri;
|
|
74
|
+
track.active = true;
|
|
75
|
+
track.ads = ads;
|
|
76
|
+
base.playbackController.playing = true;
|
|
77
|
+
adController.setAdsProvider(track);
|
|
78
|
+
await flush();
|
|
79
|
+
}
|
|
80
|
+
it('returns empty defaults when no ad breaks are set', () => {
|
|
81
|
+
expect(player.currentTrackAds).toBeNull();
|
|
82
|
+
expect(player.currentAdBreak).toBeNull();
|
|
83
|
+
});
|
|
84
|
+
it('returns ad breaks from the player-level ad controller', async () => {
|
|
85
|
+
await setContent(trackAds(makeBreak()));
|
|
86
|
+
expect(player.currentTrackAds?.adBreaks.map((b) => b.id)).toEqual([
|
|
87
|
+
'b1',
|
|
88
|
+
]);
|
|
89
|
+
});
|
|
90
|
+
it('redispatches currentTrackAdsChange from the ad controller', async () => {
|
|
91
|
+
const spy = createEventSpy(player, 'currentTrackAdsChange');
|
|
92
|
+
await setContent(trackAds(makeBreak()));
|
|
93
|
+
expect(spy).toHaveBeenCalled();
|
|
94
|
+
});
|
|
95
|
+
it('redispatches adBreakEntered and adBreakCompleted from the ad controller', async () => {
|
|
96
|
+
await setContent(trackAds(makeBreak({ startTime: 10, duration: 5 })));
|
|
97
|
+
const entered = createEventSpy(player, 'adBreakEntered');
|
|
98
|
+
const completed = createEventSpy(player, 'adBreakCompleted');
|
|
99
|
+
simulateTimeUpdate(11);
|
|
100
|
+
await flush();
|
|
101
|
+
expect(entered).toHaveBeenCalledTimes(1);
|
|
102
|
+
expect(entered.calls.mostRecent().args[0].adBreak.id).toBe('b1');
|
|
103
|
+
// Exit via skipAd (updateTime is blocked while an ad is active)
|
|
104
|
+
player.skipAd();
|
|
105
|
+
expect(completed).toHaveBeenCalledTimes(1);
|
|
106
|
+
expect(completed.calls.mostRecent().args[0].adBreak.id).toBe('b1');
|
|
107
|
+
});
|
|
108
|
+
it('reflects the current ad break through the player getter', async () => {
|
|
109
|
+
await setContent(trackAds(makeBreak({ startTime: 0, duration: 10 })));
|
|
110
|
+
simulateTimeUpdate(5);
|
|
111
|
+
await flush();
|
|
112
|
+
expect(player.currentAdBreak?.id).toBe('b1');
|
|
113
|
+
});
|
|
114
|
+
it('reflects the current ad through the player getter', async () => {
|
|
115
|
+
await setContent(trackAds(makeBreak({ startTime: 0, duration: 10 })));
|
|
116
|
+
expect(player.currentAd).toBeNull();
|
|
117
|
+
simulateTimeUpdate(5);
|
|
118
|
+
await flush();
|
|
119
|
+
expect(player.currentAd?.id).toBe('a1');
|
|
120
|
+
});
|
|
121
|
+
it('skipAd delegates to the ad controller', async () => {
|
|
122
|
+
await setContent(trackAds(makeBreak({ startTime: 0, duration: 10 })));
|
|
123
|
+
simulateTimeUpdate(5);
|
|
124
|
+
await flush();
|
|
125
|
+
expect(player.currentAdBreak).not.toBeNull();
|
|
126
|
+
player.skipAd();
|
|
127
|
+
expect(player.currentAdBreak).toBeNull();
|
|
128
|
+
});
|
|
129
|
+
it('skipAdBreak delegates to the ad controller', async () => {
|
|
130
|
+
await setContent(trackAds(makeBreak({ startTime: 0, duration: 10 })));
|
|
131
|
+
simulateTimeUpdate(5);
|
|
132
|
+
await flush();
|
|
133
|
+
player.skipAdBreak();
|
|
134
|
+
expect(player.currentAdBreak).toBeNull();
|
|
135
|
+
});
|
|
136
|
+
it('skipAd is a no-op without an active break', () => {
|
|
137
|
+
expect(() => player.skipAd()).not.toThrow();
|
|
138
|
+
});
|
|
139
|
+
it('skipAdBreak is a no-op without an active break', () => {
|
|
140
|
+
expect(() => player.skipAdBreak()).not.toThrow();
|
|
141
|
+
});
|
|
142
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VinylPlayerTextTracks.test.d.ts","sourceRoot":"","sources":["../../../../../test/unit/vinyl/VinylPlayerTextTracks.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { createVinylPlayer, } from '@amazon/vinyl';
|
|
6
|
+
import { externalDependencies } from '@amazon/vinyl-di';
|
|
7
|
+
import { createMockVinylDependencies, MockTextTrackController, MockTrack, } from '@amazon/vinyl/vinylTestUtil';
|
|
8
|
+
import { MockHTMLAudioElement } from '@amazon/vinyl-util/browserTestUtil';
|
|
9
|
+
import { createEventSpy } from '@amazon/vinyl-util/testUtil';
|
|
10
|
+
/**
|
|
11
|
+
* These tests cover the player's read-through getters and event redispatch
|
|
12
|
+
* across track changes. Selection itself is declarative (driven by
|
|
13
|
+
* `VinylOptions.text`), so the tests drive a {@link MockTextTrackController}'s
|
|
14
|
+
* state and events directly rather than calling any imperative select API.
|
|
15
|
+
*/
|
|
16
|
+
describe('VinylPlayer text track API', () => {
|
|
17
|
+
let deps;
|
|
18
|
+
let depFactories;
|
|
19
|
+
let player;
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
deps = createMockVinylDependencies();
|
|
22
|
+
depFactories = externalDependencies(deps);
|
|
23
|
+
player = createVinylPlayer({ media: new MockHTMLAudioElement() }, depFactories);
|
|
24
|
+
});
|
|
25
|
+
afterEach(() => {
|
|
26
|
+
player.dispose();
|
|
27
|
+
});
|
|
28
|
+
function info(overrides = {}) {
|
|
29
|
+
return {
|
|
30
|
+
id: 't1',
|
|
31
|
+
kind: 'subtitles',
|
|
32
|
+
language: 'en',
|
|
33
|
+
label: 'A',
|
|
34
|
+
default: false,
|
|
35
|
+
forced: false,
|
|
36
|
+
characteristics: [],
|
|
37
|
+
uri: 'a.vtt',
|
|
38
|
+
mimeType: 'text/vtt',
|
|
39
|
+
...overrides,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function makeTrackWithController() {
|
|
43
|
+
const track = new MockTrack();
|
|
44
|
+
const controller = new MockTextTrackController();
|
|
45
|
+
track.textTrackController = controller;
|
|
46
|
+
return { track, controller };
|
|
47
|
+
}
|
|
48
|
+
/** Sets the controller's track list and emits the change (as the real one does). */
|
|
49
|
+
function setTracks(controller, tracks) {
|
|
50
|
+
const previous = controller.textTracks;
|
|
51
|
+
controller.textTracks = tracks;
|
|
52
|
+
controller.dispatch('textTracksChange', { previous, current: tracks });
|
|
53
|
+
}
|
|
54
|
+
/** Sets the controller's active selection and emits the change. */
|
|
55
|
+
function setActive(controller, current) {
|
|
56
|
+
const previous = controller.activeTextTrack;
|
|
57
|
+
controller.activeTextTrack = current;
|
|
58
|
+
controller.dispatch('activeTextTrackChange', { previous, current });
|
|
59
|
+
}
|
|
60
|
+
function activate(track) {
|
|
61
|
+
deps.trackController.activeTrack = track;
|
|
62
|
+
deps.trackController.dispatch('trackActivated', { track });
|
|
63
|
+
}
|
|
64
|
+
it('returns empty defaults when no current track', () => {
|
|
65
|
+
expect(player.textTracks).toEqual([]);
|
|
66
|
+
expect(player.activeTextTrack).toBeNull();
|
|
67
|
+
});
|
|
68
|
+
it('returns text tracks from the current track', () => {
|
|
69
|
+
const { track, controller } = makeTrackWithController();
|
|
70
|
+
controller.textTracks = [info()];
|
|
71
|
+
activate(track);
|
|
72
|
+
expect(player.textTracks.length).toBe(1);
|
|
73
|
+
});
|
|
74
|
+
it('reflects the current track controller active selection', () => {
|
|
75
|
+
const { track, controller } = makeTrackWithController();
|
|
76
|
+
controller.textTracks = [info()];
|
|
77
|
+
activate(track);
|
|
78
|
+
setActive(controller, info());
|
|
79
|
+
expect(player.activeTextTrack?.id).toBe('t1');
|
|
80
|
+
setActive(controller, null);
|
|
81
|
+
expect(player.activeTextTrack).toBeNull();
|
|
82
|
+
});
|
|
83
|
+
it('reports null active when the current track has no controller', () => {
|
|
84
|
+
const track = new MockTrack();
|
|
85
|
+
activate(track);
|
|
86
|
+
expect(player.activeTextTrack).toBeNull();
|
|
87
|
+
});
|
|
88
|
+
it('redispatches textTracksChange events from the active controller', () => {
|
|
89
|
+
const { track, controller } = makeTrackWithController();
|
|
90
|
+
activate(track);
|
|
91
|
+
const spy = createEventSpy(player, 'textTracksChange');
|
|
92
|
+
setTracks(controller, [info({ language: null })]);
|
|
93
|
+
expect(spy).toHaveBeenCalled();
|
|
94
|
+
});
|
|
95
|
+
it('fires textTracksChange when switching to a track with a different list', () => {
|
|
96
|
+
const a = makeTrackWithController();
|
|
97
|
+
const b = makeTrackWithController();
|
|
98
|
+
setTracks(a.controller, [info({ id: 't1', language: 'en' })]);
|
|
99
|
+
setTracks(b.controller, [
|
|
100
|
+
info({ id: 't2', language: 'fr', label: 'B' }),
|
|
101
|
+
]);
|
|
102
|
+
activate(a.track);
|
|
103
|
+
const spy = createEventSpy(player, 'textTracksChange');
|
|
104
|
+
activate(b.track);
|
|
105
|
+
expect(spy).toHaveBeenCalled();
|
|
106
|
+
});
|
|
107
|
+
it('fires activeTextTrackChange when switching tracks', () => {
|
|
108
|
+
const a = makeTrackWithController();
|
|
109
|
+
const b = makeTrackWithController();
|
|
110
|
+
setTracks(a.controller, [info({ id: 't1' })]);
|
|
111
|
+
setActive(a.controller, info({ id: 't1' }));
|
|
112
|
+
activate(a.track);
|
|
113
|
+
const spy = createEventSpy(player, 'activeTextTrackChange');
|
|
114
|
+
activate(b.track);
|
|
115
|
+
expect(spy).toHaveBeenCalled();
|
|
116
|
+
});
|
|
117
|
+
it('re-announces the content caption after an ad break so it does not read as off', () => {
|
|
118
|
+
// Regression: enabling captions during an ad and then letting content
|
|
119
|
+
// resume left consumers that track state via activeTextTrackChange
|
|
120
|
+
// believing captions were off, because the outgoing ad controller emits
|
|
121
|
+
// a clearing activeTextTrackChange(null) while the content's preserved
|
|
122
|
+
// (here forced) selection is restored silently on activate().
|
|
123
|
+
const content = makeTrackWithController();
|
|
124
|
+
const contentForced = info({
|
|
125
|
+
id: 'c-forced',
|
|
126
|
+
label: 'English (Forced)',
|
|
127
|
+
default: true,
|
|
128
|
+
forced: true,
|
|
129
|
+
uri: 'c.vtt',
|
|
130
|
+
});
|
|
131
|
+
setTracks(content.controller, [contentForced]);
|
|
132
|
+
setActive(content.controller, contentForced);
|
|
133
|
+
const ad = makeTrackWithController();
|
|
134
|
+
const adCc = info({ id: 'ad-cc', label: 'English', uri: 'ad.vtt' });
|
|
135
|
+
setTracks(ad.controller, [adCc]);
|
|
136
|
+
// Content becomes current.
|
|
137
|
+
activate(content.track);
|
|
138
|
+
// Enter the ad break: the content selection is preserved (deactivate
|
|
139
|
+
// keeps the selection) rather than cleared.
|
|
140
|
+
deps.adController.currentAdBreak = { placement: 'midroll' };
|
|
141
|
+
content.controller.deactivate();
|
|
142
|
+
activate(ad.track);
|
|
143
|
+
// Viewer enables the ad's captions during the break.
|
|
144
|
+
setActive(ad.controller, adCc);
|
|
145
|
+
expect(player.activeTextTrack?.id).toBe('ad-cc');
|
|
146
|
+
// Ad ends, content resumes.
|
|
147
|
+
deps.adController.currentAdBreak = null;
|
|
148
|
+
const spy = createEventSpy(player, 'activeTextTrackChange');
|
|
149
|
+
content.controller.activate();
|
|
150
|
+
activate(content.track);
|
|
151
|
+
// The player reports the content's forced caption as active again and,
|
|
152
|
+
// crucially, the last active-change event announces it — not the ad's
|
|
153
|
+
// clearing null.
|
|
154
|
+
expect(player.activeTextTrack?.id).toBe('c-forced');
|
|
155
|
+
expect(spy).toHaveBeenCalled();
|
|
156
|
+
const lastCurrent = spy.calls.mostRecent().args[0].current;
|
|
157
|
+
expect(lastCurrent?.id).toBe('c-forced');
|
|
158
|
+
});
|
|
159
|
+
it('announces empty tracks and null active when the track is torn down', () => {
|
|
160
|
+
// Real teardown (unload) transitions to null: the player must emit the
|
|
161
|
+
// cleared list/selection so consumers see captions go away.
|
|
162
|
+
const a = makeTrackWithController();
|
|
163
|
+
const t = info({ id: 't1' });
|
|
164
|
+
setTracks(a.controller, [t]);
|
|
165
|
+
setActive(a.controller, t);
|
|
166
|
+
activate(a.track);
|
|
167
|
+
const tracksSpy = createEventSpy(player, 'textTracksChange');
|
|
168
|
+
const activeSpy = createEventSpy(player, 'activeTextTrackChange');
|
|
169
|
+
// trackDeactivated with no ad break tears the current track down to null.
|
|
170
|
+
deps.trackController.activeTrack = null;
|
|
171
|
+
deps.trackController.dispatch('trackDeactivated', { track: a.track });
|
|
172
|
+
expect(tracksSpy).toHaveBeenCalled();
|
|
173
|
+
expect(tracksSpy.calls.mostRecent().args[0].current).toEqual([]);
|
|
174
|
+
expect(activeSpy).toHaveBeenCalled();
|
|
175
|
+
expect(activeSpy.calls.mostRecent().args[0].current).toBeNull();
|
|
176
|
+
expect(player.activeTextTrack).toBeNull();
|
|
177
|
+
});
|
|
178
|
+
it('does not emit activeTextTrackChange when neither track has an active selection', () => {
|
|
179
|
+
// Both tracks are text-capable but nothing is active — the current
|
|
180
|
+
// track change should not manufacture a spurious active-change event.
|
|
181
|
+
const a = makeTrackWithController();
|
|
182
|
+
const b = makeTrackWithController();
|
|
183
|
+
activate(a.track);
|
|
184
|
+
const spy = createEventSpy(player, 'activeTextTrackChange');
|
|
185
|
+
activate(b.track);
|
|
186
|
+
expect(spy).not.toHaveBeenCalled();
|
|
187
|
+
});
|
|
188
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AdBreakInfo, AdController, AdInfo, TrackAds } from '../../../../src';
|
|
2
|
+
import { MockEventHost } from '@amazon/vinyl-util/testUtil';
|
|
3
|
+
export declare class MockAdController extends MockEventHost implements AdController {
|
|
4
|
+
currentTrackAds: TrackAds | null;
|
|
5
|
+
currentAd: AdInfo | null;
|
|
6
|
+
currentAdBreak: AdBreakInfo | null;
|
|
7
|
+
setAdsProvider: import("@amazon/vinyl-util/browserTestUtil").Spy2<(provider: import("../../../../src").AdsProvider | null) => void>;
|
|
8
|
+
failAd: import("@amazon/vinyl-util/browserTestUtil").Spy2<(error: Error) => void>;
|
|
9
|
+
skipAd: import("@amazon/vinyl-util/browserTestUtil").Spy2<() => void>;
|
|
10
|
+
skipAdBreak: import("@amazon/vinyl-util/browserTestUtil").Spy2<() => void>;
|
|
11
|
+
enterPreroll: import("@amazon/vinyl-util/browserTestUtil").Spy2<(() => Promise<AdBreakInfo | null>) & (() => any)>;
|
|
12
|
+
enterPostroll: import("@amazon/vinyl-util/browserTestUtil").Spy2<(() => Promise<AdBreakInfo | null>) & (() => any)>;
|
|
13
|
+
constructor();
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=MockAdController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockAdController.d.ts","sourceRoot":"","sources":["../../../../../../test/vinylTestUtil/mock/ad/MockAdController.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACR,WAAW,EACX,YAAY,EACZ,MAAM,EACN,QAAQ,EACX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAI3D,qBAAa,gBAAiB,SAAQ,aAAc,YAAW,YAAY;IACvE,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAO;IACvC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAC/B,cAAc,EAAE,WAAW,GAAG,IAAI,CAAO;IAEzC,cAAc,sHAA+B;IAC7C,MAAM,4EAAuB;IAC7B,MAAM,gEAAuB;IAC7B,WAAW,gEAA4B;IACvC,YAAY,uGAA6B;IACzC,aAAa,uGAA8B;;CAU9C"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { MockEventHost } from '@amazon/vinyl-util/testUtil';
|
|
6
|
+
import { createSpyFactory } from '@amazon/vinyl-util/browserTestUtil';
|
|
7
|
+
const spyFactory = createSpyFactory();
|
|
8
|
+
export class MockAdController extends MockEventHost {
|
|
9
|
+
currentTrackAds = null;
|
|
10
|
+
currentAd = null;
|
|
11
|
+
currentAdBreak = null;
|
|
12
|
+
setAdsProvider = spyFactory('setAdsProvider');
|
|
13
|
+
failAd = spyFactory('failAd');
|
|
14
|
+
skipAd = spyFactory('skipAd');
|
|
15
|
+
skipAdBreak = spyFactory('skipAdBreak');
|
|
16
|
+
enterPreroll = spyFactory('enterPreroll');
|
|
17
|
+
enterPostroll = spyFactory('enterPostroll');
|
|
18
|
+
constructor() {
|
|
19
|
+
super();
|
|
20
|
+
// enterPreroll/enterPostroll are awaited by the TrackController, so
|
|
21
|
+
// default them to resolve with "no roll" (null); tests override with
|
|
22
|
+
// resolveTo() as needed.
|
|
23
|
+
this.enterPreroll.and.resolveTo(null);
|
|
24
|
+
this.enterPostroll.and.resolveTo(null);
|
|
25
|
+
}
|
|
26
|
+
}
|