shaka-player 4.6.3 → 4.7.0

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.
Files changed (608) hide show
  1. package/README.md +1 -0
  2. package/dist/controls.css +1 -1
  3. package/dist/controls.css.map +1 -1
  4. package/dist/deps.js +13 -9
  5. package/dist/locales.js +33 -33
  6. package/dist/shaka-player.compiled.d.ts +47 -4
  7. package/dist/shaka-player.compiled.debug.d.ts +47 -4
  8. package/dist/shaka-player.compiled.debug.externs.js +50 -2
  9. package/dist/shaka-player.compiled.debug.js +408 -376
  10. package/dist/shaka-player.compiled.debug.map +4 -4
  11. package/dist/shaka-player.compiled.externs.js +50 -2
  12. package/dist/shaka-player.compiled.js +1134 -1118
  13. package/dist/shaka-player.compiled.map +4 -4
  14. package/dist/shaka-player.ui.d.ts +69 -5
  15. package/dist/shaka-player.ui.debug.d.ts +69 -5
  16. package/dist/shaka-player.ui.debug.externs.js +82 -2
  17. package/dist/shaka-player.ui.debug.js +457 -420
  18. package/dist/shaka-player.ui.debug.map +4 -4
  19. package/dist/shaka-player.ui.externs.js +82 -2
  20. package/dist/shaka-player.ui.js +1305 -1289
  21. package/dist/shaka-player.ui.map +4 -4
  22. package/externs/mediasession.js +7 -0
  23. package/externs/shaka/abr_manager.js +8 -0
  24. package/externs/shaka/manifest.js +3 -3
  25. package/externs/shaka/player.js +59 -4
  26. package/lib/abr/simple_abr_manager.js +41 -15
  27. package/lib/ads/client_side_ad_manager.js +4 -0
  28. package/lib/ads/media_tailor_ad_manager.js +5 -0
  29. package/lib/ads/server_side_ad_manager.js +4 -0
  30. package/lib/cea/cea708_service.js +1 -1
  31. package/lib/cea/cea708_window.js +95 -7
  32. package/lib/dash/dash_parser.js +55 -11
  33. package/lib/hls/hls_parser.js +17 -5
  34. package/lib/media/adaptation_set_criteria.js +76 -10
  35. package/lib/media/drm_engine.js +0 -3
  36. package/lib/media/media_source_engine.js +42 -18
  37. package/lib/media/segment_reference.js +12 -0
  38. package/lib/media/streaming_engine.js +58 -5
  39. package/lib/media/video_wrapper.js +4 -3
  40. package/lib/player.js +95 -11
  41. package/lib/text/simple_text_displayer.js +8 -7
  42. package/lib/text/text_utils.js +39 -13
  43. package/lib/text/ui_text_displayer.js +20 -11
  44. package/lib/text/web_vtt_generator.js +1 -1
  45. package/lib/util/cmsd_manager.js +269 -0
  46. package/lib/util/content_steering_manager.js +5 -1
  47. package/lib/util/mime_utils.js +6 -2
  48. package/lib/util/periods.js +108 -39
  49. package/lib/util/player_configuration.js +19 -5
  50. package/lib/util/stream_utils.js +82 -13
  51. package/package.json +1 -1
  52. package/ui/audio_language_selection.js +3 -0
  53. package/ui/controls.js +60 -0
  54. package/ui/externs/ui.js +12 -1
  55. package/ui/hidden_fast_forward_button.js +32 -0
  56. package/ui/hidden_rewind_button.js +32 -0
  57. package/ui/hidden_seek_button.js +121 -0
  58. package/ui/less/buttons.less +50 -0
  59. package/ui/less/containers.less +18 -0
  60. package/ui/resolution_selection.js +2 -0
  61. package/ui/ui.js +2 -0
  62. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -75
  63. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -26
  64. package/.github/ISSUE_TEMPLATE/question.md +0 -26
  65. package/.github/config.yml +0 -1
  66. package/.github/workflows/appspot.yaml +0 -39
  67. package/.github/workflows/build-and-test.yaml +0 -222
  68. package/.github/workflows/compute-incremental-coverage.py +0 -265
  69. package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +0 -56
  70. package/.github/workflows/custom-actions/set-commit-status/action.yaml +0 -37
  71. package/.github/workflows/deflake.yaml +0 -31
  72. package/.github/workflows/demo-version-index.yaml +0 -43
  73. package/.github/workflows/nightly-demo.yaml +0 -42
  74. package/.github/workflows/release-please.yaml +0 -193
  75. package/.github/workflows/report-incremental-coverage.yaml +0 -39
  76. package/.github/workflows/safari-homedir-launcher.sh +0 -18
  77. package/.github/workflows/selenium-lab-tests.yaml +0 -370
  78. package/.github/workflows/shaka-bot-commands/command-help.sh +0 -27
  79. package/.github/workflows/shaka-bot-commands/command-test.sh +0 -56
  80. package/.github/workflows/shaka-bot-commands/lib.sh +0 -83
  81. package/.github/workflows/shaka-bot-commands/main.sh +0 -51
  82. package/.github/workflows/sync-labels.yaml +0 -33
  83. package/.github/workflows/talk-to-shaka-bot.yaml +0 -29
  84. package/.github/workflows/update-issues.yaml +0 -31
  85. package/.github/workflows/update-screenshots.yaml +0 -142
  86. package/.github/workflows/validate-pr-title.yaml +0 -27
  87. package/CHANGELOG.md +0 -5764
  88. package/CODE_OF_CONDUCT.md +0 -93
  89. package/CONTRIBUTING.md +0 -76
  90. package/demo/TengwarTelcontar.woff2 +0 -0
  91. package/demo/app_logo_144.png +0 -0
  92. package/demo/app_logo_192.png +0 -0
  93. package/demo/app_logo_256.png +0 -0
  94. package/demo/app_logo_384.png +0 -0
  95. package/demo/app_logo_512.png +0 -0
  96. package/demo/app_manifest.json +0 -29
  97. package/demo/asset_card.js +0 -410
  98. package/demo/autoTemplate.txt +0 -61
  99. package/demo/cast_receiver/idle1.jpg +0 -0
  100. package/demo/cast_receiver/idle2.jpg +0 -0
  101. package/demo/cast_receiver/idle3.jpg +0 -0
  102. package/demo/cast_receiver/index.html +0 -75
  103. package/demo/cast_receiver/receiver_app.css +0 -111
  104. package/demo/cast_receiver/receiver_app.js +0 -158
  105. package/demo/close_button.js +0 -60
  106. package/demo/common/asset.js +0 -511
  107. package/demo/common/assets.js +0 -1635
  108. package/demo/config.js +0 -859
  109. package/demo/custom.js +0 -907
  110. package/demo/customWarning.txt +0 -8
  111. package/demo/demo.less +0 -591
  112. package/demo/demo_uncompiled.js +0 -11
  113. package/demo/demo_utils.js +0 -113
  114. package/demo/favicon.ico +0 -0
  115. package/demo/front.js +0 -156
  116. package/demo/icons/README.md +0 -4
  117. package/demo/icons/baseline-audiotrack-24px.svg +0 -1
  118. package/demo/icons/baseline-closed_caption-24px.svg +0 -1
  119. package/demo/icons/baseline-fast_forward-24px.svg +0 -1
  120. package/demo/icons/baseline-language-24px.svg +0 -1
  121. package/demo/icons/baseline-live_tv-24px.svg +0 -1
  122. package/demo/icons/baseline-subtitles-24px.svg +0 -1
  123. package/demo/icons/baseline-surround_sound-24px.svg +0 -1
  124. package/demo/icons/custom_ad.svg +0 -1
  125. package/demo/icons/custom_box_with_text.svg +0 -1
  126. package/demo/icons/custom_clear_key.svg +0 -1
  127. package/demo/icons/custom_high_definition.svg +0 -1
  128. package/demo/icons/custom_playready.svg +0 -1
  129. package/demo/icons/custom_ultra_high_definition.svg +0 -1
  130. package/demo/icons/custom_widevine.svg +0 -1
  131. package/demo/index.html +0 -173
  132. package/demo/input.js +0 -270
  133. package/demo/input_container.js +0 -218
  134. package/demo/load.js +0 -156
  135. package/demo/main.js +0 -1854
  136. package/demo/search.js +0 -452
  137. package/demo/service_worker.js +0 -355
  138. package/demo/shaka_logo_trans.png +0 -0
  139. package/demo/tooltip.js +0 -29
  140. package/demo/visualizer.js +0 -335
  141. package/demo/visualizer_button.js +0 -84
  142. package/dist/demo.compiled.debug.js +0 -340
  143. package/dist/demo.compiled.debug.map +0 -8
  144. package/dist/demo.compiled.js +0 -340
  145. package/dist/demo.compiled.map +0 -8
  146. package/dist/demo.css +0 -6
  147. package/dist/demo.css.map +0 -1
  148. package/dist/receiver.compiled.debug.js +0 -187
  149. package/dist/receiver.compiled.debug.map +0 -8
  150. package/dist/receiver.compiled.js +0 -187
  151. package/dist/receiver.compiled.map +0 -8
  152. package/docs/announcement-list-join-group.png +0 -0
  153. package/docs/api-mainpage.md +0 -28
  154. package/docs/design/REDESIGN.md +0 -283
  155. package/docs/design/architecture.md +0 -13
  156. package/docs/design/bg-fetch-after.gv +0 -29
  157. package/docs/design/bg-fetch-after.gv.png +0 -0
  158. package/docs/design/bg-fetch-before.gv +0 -18
  159. package/docs/design/bg-fetch-before.gv.png +0 -0
  160. package/docs/design/bg-fetch.md +0 -134
  161. package/docs/design/cast.gv +0 -35
  162. package/docs/design/cast.gv.png +0 -0
  163. package/docs/design/chromecast.md +0 -151
  164. package/docs/design/codec_preferences.md +0 -158
  165. package/docs/design/dash-audio-channels.md +0 -123
  166. package/docs/design/dash-manifests.md +0 -248
  167. package/docs/design/dash-timeline.svg +0 -4
  168. package/docs/design/dataflow.gv +0 -66
  169. package/docs/design/dataflow.gv.png +0 -0
  170. package/docs/design/export.md +0 -70
  171. package/docs/design/fuzzy-locale-matching.md +0 -40
  172. package/docs/design/gap-jumping.md +0 -151
  173. package/docs/design/lcevc-architecture.png +0 -0
  174. package/docs/design/lcevc-demo.png +0 -0
  175. package/docs/design/lcevc-integration.md +0 -72
  176. package/docs/design/locale_compatibility.svg +0 -1
  177. package/docs/design/locales_tree.svg +0 -1
  178. package/docs/design/localization-design-principles.md +0 -158
  179. package/docs/design/newdemo.gv +0 -83
  180. package/docs/design/newdemo.gv.png +0 -0
  181. package/docs/design/offline.gv +0 -43
  182. package/docs/design/offline.gv.png +0 -0
  183. package/docs/design/offline.md +0 -153
  184. package/docs/design/ownership.gv +0 -76
  185. package/docs/design/ownership.gv.png +0 -0
  186. package/docs/design/preload.md +0 -299
  187. package/docs/design/preload.png +0 -0
  188. package/docs/design/talking-about-languages.md +0 -46
  189. package/docs/design/timeline.svg +0 -152
  190. package/docs/design/ui.md +0 -31
  191. package/docs/design/ui_player_relationships.svg +0 -1
  192. package/docs/jsdoc-plugin.js +0 -74
  193. package/docs/jsdoc-template/README.md +0 -1
  194. package/docs/jsdoc-template/publish.js +0 -879
  195. package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.eot +0 -0
  196. package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.svg +0 -1830
  197. package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.woff +0 -0
  198. package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  199. package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
  200. package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  201. package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.eot +0 -0
  202. package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.svg +0 -1830
  203. package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.woff +0 -0
  204. package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.eot +0 -0
  205. package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.svg +0 -1831
  206. package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.woff +0 -0
  207. package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  208. package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
  209. package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  210. package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.eot +0 -0
  211. package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.svg +0 -1831
  212. package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.woff +0 -0
  213. package/docs/jsdoc-template/static/scripts/linenumber.js +0 -44
  214. package/docs/jsdoc-template/static/scripts/show-widget.js +0 -55
  215. package/docs/jsdoc-template/static/styles/jsdoc-default.css +0 -438
  216. package/docs/jsdoc-template/tmpl/augments.tmpl +0 -10
  217. package/docs/jsdoc-template/tmpl/container.tmpl +0 -205
  218. package/docs/jsdoc-template/tmpl/details.tmpl +0 -152
  219. package/docs/jsdoc-template/tmpl/example.tmpl +0 -2
  220. package/docs/jsdoc-template/tmpl/examples.tmpl +0 -13
  221. package/docs/jsdoc-template/tmpl/exceptions.tmpl +0 -32
  222. package/docs/jsdoc-template/tmpl/layout.tmpl +0 -50
  223. package/docs/jsdoc-template/tmpl/mainpage.tmpl +0 -14
  224. package/docs/jsdoc-template/tmpl/members.tmpl +0 -47
  225. package/docs/jsdoc-template/tmpl/method.tmpl +0 -140
  226. package/docs/jsdoc-template/tmpl/modifies.tmpl +0 -14
  227. package/docs/jsdoc-template/tmpl/params.tmpl +0 -131
  228. package/docs/jsdoc-template/tmpl/properties.tmpl +0 -125
  229. package/docs/jsdoc-template/tmpl/returns.tmpl +0 -19
  230. package/docs/jsdoc-template/tmpl/source.tmpl +0 -8
  231. package/docs/jsdoc-template/tmpl/tutorial.tmpl +0 -21
  232. package/docs/jsdoc-template/tmpl/type.tmpl +0 -7
  233. package/docs/jsdoc.conf.json +0 -38
  234. package/docs/shaka-player-logo.png +0 -0
  235. package/docs/style.md +0 -174
  236. package/docs/tutorials/a11y.md +0 -64
  237. package/docs/tutorials/ad_monetization.md +0 -292
  238. package/docs/tutorials/application-level-redirects.md +0 -94
  239. package/docs/tutorials/architecture.md +0 -32
  240. package/docs/tutorials/basic-usage.md +0 -89
  241. package/docs/tutorials/blob-url.md +0 -15
  242. package/docs/tutorials/config.md +0 -148
  243. package/docs/tutorials/debugging.md +0 -189
  244. package/docs/tutorials/drm-config.md +0 -274
  245. package/docs/tutorials/errors.md +0 -95
  246. package/docs/tutorials/fairplay.md +0 -242
  247. package/docs/tutorials/faq.md +0 -252
  248. package/docs/tutorials/index.json +0 -29
  249. package/docs/tutorials/lcevc.md +0 -118
  250. package/docs/tutorials/license-server-auth.md +0 -248
  251. package/docs/tutorials/license-wrapping.md +0 -168
  252. package/docs/tutorials/manifest-parser.md +0 -365
  253. package/docs/tutorials/network-and-buffering-config.md +0 -119
  254. package/docs/tutorials/offline.md +0 -683
  255. package/docs/tutorials/plugins.md +0 -184
  256. package/docs/tutorials/selenium-grid-config.md +0 -174
  257. package/docs/tutorials/service-worker.md +0 -106
  258. package/docs/tutorials/ui-customization.md +0 -288
  259. package/docs/tutorials/ui.md +0 -230
  260. package/docs/tutorials/upgrade-manifest.md +0 -281
  261. package/docs/tutorials/upgrade.md +0 -104
  262. package/docs/tutorials/welcome.md +0 -108
  263. package/docs/tutorials/widevine-service-certs.md +0 -45
  264. package/karma.conf.js +0 -879
  265. package/maintained-branches.md +0 -15
  266. package/roadmap.md +0 -186
  267. package/test/abr/simple_abr_manager_unit.js +0 -398
  268. package/test/ads/ad_manager_unit.js +0 -260
  269. package/test/assumptions/uint8_array_unit.js +0 -22
  270. package/test/cast/cast_proxy_unit.js +0 -736
  271. package/test/cast/cast_receiver_integration.js +0 -488
  272. package/test/cast/cast_receiver_unit.js +0 -1183
  273. package/test/cast/cast_sender_unit.js +0 -973
  274. package/test/cast/cast_utils_unit.js +0 -311
  275. package/test/cea/cea608_memory_unit.js +0 -411
  276. package/test/cea/cea708_service_unit.js +0 -674
  277. package/test/cea/cea708_window_unit.js +0 -373
  278. package/test/cea/cea_decoder_unit.js +0 -615
  279. package/test/cea/dtvcc_packet_builder_unit.js +0 -158
  280. package/test/cea/dtvcc_packet_unit.js +0 -60
  281. package/test/cea/mp4_cea_parser_unit.js +0 -127
  282. package/test/codec_switching/codec_switching_integration.js +0 -182
  283. package/test/dash/dash_parser_content_protection_unit.js +0 -998
  284. package/test/dash/dash_parser_integration.js +0 -74
  285. package/test/dash/dash_parser_live_unit.js +0 -1542
  286. package/test/dash/dash_parser_manifest_unit.js +0 -3121
  287. package/test/dash/dash_parser_segment_base_unit.js +0 -421
  288. package/test/dash/dash_parser_segment_list_unit.js +0 -380
  289. package/test/dash/dash_parser_segment_template_unit.js +0 -910
  290. package/test/dash/mpd_utils_unit.js +0 -794
  291. package/test/demo/demo_unit.js +0 -108
  292. package/test/deprecate/enforcer_unit.js +0 -74
  293. package/test/deprecate/version_unit.js +0 -57
  294. package/test/hls/hls_live_unit.js +0 -1330
  295. package/test/hls/hls_parser_unit.js +0 -5276
  296. package/test/hls/manifest_text_parser_unit.js +0 -545
  297. package/test/media/adaptation_set_criteria_unit.js +0 -806
  298. package/test/media/adaptation_set_unit.js +0 -229
  299. package/test/media/buffering_observer_unit.js +0 -143
  300. package/test/media/closed_caption_parser_unit.js +0 -18
  301. package/test/media/content_workarounds_unit.js +0 -43
  302. package/test/media/drm_engine_integration.js +0 -356
  303. package/test/media/drm_engine_unit.js +0 -2778
  304. package/test/media/media_source_engine_integration.js +0 -691
  305. package/test/media/media_source_engine_unit.js +0 -1512
  306. package/test/media/mp4_segment_index_parser_unit.js +0 -80
  307. package/test/media/play_rate_controller_unit.js +0 -69
  308. package/test/media/playhead_unit.js +0 -1394
  309. package/test/media/presentation_timeline_unit.js +0 -477
  310. package/test/media/quality_observer_unit.js +0 -138
  311. package/test/media/region_observer_unit.js +0 -374
  312. package/test/media/region_timeline_unit.js +0 -139
  313. package/test/media/segment_index_unit.js +0 -1080
  314. package/test/media/segment_prefetch_unit.js +0 -243
  315. package/test/media/segment_reference_unit.js +0 -63
  316. package/test/media/stall_detector_unit.js +0 -184
  317. package/test/media/streaming_engine_integration.js +0 -632
  318. package/test/media/streaming_engine_unit.js +0 -4211
  319. package/test/media/time_ranges_utils_unit.js +0 -123
  320. package/test/media/webm_segment_index_parser_unit.js +0 -90
  321. package/test/mss/mss_parser_content_protection_unit.js +0 -49
  322. package/test/mss/mss_parser_unit.js +0 -474
  323. package/test/mss/mss_player_integration.js +0 -124
  324. package/test/net/data_uri_plugin_unit.js +0 -105
  325. package/test/net/http_plugin_unit.js +0 -439
  326. package/test/net/networking_engine_unit.js +0 -1236
  327. package/test/net/networking_utils_unit.js +0 -37
  328. package/test/offline/download_progress_estimator_unit.js +0 -90
  329. package/test/offline/indexeddb_storage_unit.js +0 -192
  330. package/test/offline/manifest_convert_unit.js +0 -622
  331. package/test/offline/offline_integration.js +0 -168
  332. package/test/offline/offline_manifest_parser_unit.js +0 -231
  333. package/test/offline/offline_scheme_unit.js +0 -154
  334. package/test/offline/offline_uri_unit.js +0 -59
  335. package/test/offline/storage_compatibility_unit.js +0 -344
  336. package/test/offline/storage_integration.js +0 -1858
  337. package/test/player_external.js +0 -237
  338. package/test/player_integration.js +0 -1371
  339. package/test/player_load_graph_integration.js +0 -865
  340. package/test/player_src_equals_external.js +0 -154
  341. package/test/player_src_equals_integration.js +0 -527
  342. package/test/player_unit.js +0 -4434
  343. package/test/polyfill/media_capabilities_unit.js +0 -277
  344. package/test/polyfill/patchedmediakeys_apple_unit.js +0 -130
  345. package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
  346. package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
  347. package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
  348. package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
  349. package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
  350. package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
  351. package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
  352. package/test/test/assets/3675/dash_0.mpd +0 -30
  353. package/test/test/assets/3675/dash_1.mpd +0 -30
  354. package/test/test/assets/3675/dash_2.mpd +0 -30
  355. package/test/test/assets/3675/dash_3.mpd +0 -30
  356. package/test/test/assets/3675/dash_4.mpd +0 -30
  357. package/test/test/assets/3675/dash_5.mpd +0 -26
  358. package/test/test/assets/3675/init-stream0.m4s +0 -0
  359. package/test/test/assets/audio-xhe-aac.mp4 +0 -0
  360. package/test/test/assets/audio.ts +0 -0
  361. package/test/test/assets/captions-test.ts +0 -0
  362. package/test/test/assets/cea-init.mp4 +0 -0
  363. package/test/test/assets/cea-segment.mp4 +0 -0
  364. package/test/test/assets/chapters.srt +0 -11
  365. package/test/test/assets/chapters.vtt +0 -10
  366. package/test/test/assets/chapters2.vtt +0 -10
  367. package/test/test/assets/dash-aes-128/Fragments(video=0,format=mpd-time-csf) +0 -0
  368. package/test/test/assets/dash-aes-128/Fragments(video=20000000,format=mpd-time-csf) +0 -0
  369. package/test/test/assets/dash-aes-128/Fragments(video=40000000,format=mpd-time-csf) +0 -0
  370. package/test/test/assets/dash-aes-128/Fragments(video=60000000,format=mpd-time-csf) +0 -0
  371. package/test/test/assets/dash-aes-128/Fragments(video=i,format=mpd-time-csf) +0 -0
  372. package/test/test/assets/dash-aes-128/dash.mpd +0 -18
  373. package/test/test/assets/dash-aes-128/license +0 -1
  374. package/test/test/assets/dash-multi-codec/audio_en_2c_128k_aac.mp4 +0 -0
  375. package/test/test/assets/dash-multi-codec/audio_es_2c_64k_opus.webm +0 -0
  376. package/test/test/assets/dash-multi-codec/dash.mpd +0 -32
  377. package/test/test/assets/dash-multi-codec/video_144p_108k_h264.mp4 +0 -0
  378. package/test/test/assets/db-dump-v1.json +0 -1
  379. package/test/test/assets/db-dump-v2-broken.json +0 -1
  380. package/test/test/assets/db-dump-v2-clean.json +0 -1
  381. package/test/test/assets/db-dump-v3.json +0 -1
  382. package/test/test/assets/db-dump-v4-broken.json +0 -1
  383. package/test/test/assets/db-dump-v5.json +0 -1
  384. package/test/test/assets/empty_caption_video_init.mp4 +0 -0
  385. package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
  386. package/test/test/assets/encrypted-sintel-audio-init.mp4 +0 -0
  387. package/test/test/assets/encrypted-sintel-audio-segment.mp4 +0 -0
  388. package/test/test/assets/encrypted-sintel-video-init.mp4 +0 -0
  389. package/test/test/assets/encrypted-sintel-video-segment.mp4 +0 -0
  390. package/test/test/assets/green-pixel.mp4 +0 -0
  391. package/test/test/assets/green-pixel.txt +0 -15
  392. package/test/test/assets/h265-cea-init.mp4 +0 -0
  393. package/test/test/assets/h265-cea-segment.mp4 +0 -0
  394. package/test/test/assets/hls-raw-aac/fileSequence0.aac +0 -0
  395. package/test/test/assets/hls-raw-aac/fileSequence1.aac +0 -0
  396. package/test/test/assets/hls-raw-aac/fileSequence2.aac +0 -0
  397. package/test/test/assets/hls-raw-aac/fileSequence3.aac +0 -0
  398. package/test/test/assets/hls-raw-aac/manifest.m3u8 +0 -4
  399. package/test/test/assets/hls-raw-aac/stream.m4a.m3u8 +0 -14
  400. package/test/test/assets/hls-raw-ac3/fileSequence0.ac3 +0 -0
  401. package/test/test/assets/hls-raw-ac3/fileSequence1.ac3 +0 -0
  402. package/test/test/assets/hls-raw-ac3/fileSequence2.ac3 +0 -0
  403. package/test/test/assets/hls-raw-ac3/fileSequence3.ac3 +0 -0
  404. package/test/test/assets/hls-raw-ac3/fileSequence4.ac3 +0 -0
  405. package/test/test/assets/hls-raw-ac3/fileSequence5.ac3 +0 -0
  406. package/test/test/assets/hls-raw-ac3/fileSequence6.ac3 +0 -0
  407. package/test/test/assets/hls-raw-ac3/fileSequence7.ac3 +0 -0
  408. package/test/test/assets/hls-raw-ac3/prog_index.m3u8 +0 -31
  409. package/test/test/assets/hls-raw-ec3/fileSequence0.ec3 +0 -0
  410. package/test/test/assets/hls-raw-ec3/fileSequence1.ec3 +0 -0
  411. package/test/test/assets/hls-raw-ec3/fileSequence2.ec3 +0 -0
  412. package/test/test/assets/hls-raw-ec3/fileSequence3.ec3 +0 -0
  413. package/test/test/assets/hls-raw-ec3/fileSequence4.ec3 +0 -0
  414. package/test/test/assets/hls-raw-ec3/fileSequence5.ec3 +0 -0
  415. package/test/test/assets/hls-raw-ec3/fileSequence6.ec3 +0 -0
  416. package/test/test/assets/hls-raw-ec3/fileSequence7.ec3 +0 -0
  417. package/test/test/assets/hls-raw-ec3/prog_index.m3u8 +0 -31
  418. package/test/test/assets/hls-raw-mp3/chunklist_w905519204.m3u8 +0 -13
  419. package/test/test/assets/hls-raw-mp3/media_w905519204_0.mp3 +0 -0
  420. package/test/test/assets/hls-raw-mp3/media_w905519204_1.mp3 +0 -0
  421. package/test/test/assets/hls-raw-mp3/media_w905519204_2.mp3 +0 -0
  422. package/test/test/assets/hls-raw-mp3/media_w905519204_3.mp3 +0 -0
  423. package/test/test/assets/hls-raw-mp3/playlist.m3u8 +0 -4
  424. package/test/test/assets/hls-ts-aac/playlist.m3u8 +0 -23
  425. package/test/test/assets/hls-ts-aac/segment_0.ts +0 -0
  426. package/test/test/assets/hls-ts-aac/segment_1.ts +0 -0
  427. package/test/test/assets/hls-ts-aac/segment_2.ts +0 -0
  428. package/test/test/assets/hls-ts-aac/segment_3.ts +0 -0
  429. package/test/test/assets/hls-ts-aac/segment_4.ts +0 -0
  430. package/test/test/assets/hls-ts-aac/segment_5.ts +0 -0
  431. package/test/test/assets/hls-ts-aac/segment_6.ts +0 -0
  432. package/test/test/assets/hls-ts-aac/segment_7.ts +0 -0
  433. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0000.ts +0 -0
  434. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0001.ts +0 -0
  435. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0002.ts +0 -0
  436. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0003.ts +0 -0
  437. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0004.ts +0 -0
  438. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0005.ts +0 -0
  439. package/test/test/assets/hls-ts-ac3/prog_index.m3u8 +0 -19
  440. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0000.ts +0 -0
  441. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0001.ts +0 -0
  442. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0002.ts +0 -0
  443. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0003.ts +0 -0
  444. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0004.ts +0 -0
  445. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0005.ts +0 -0
  446. package/test/test/assets/hls-ts-ec3/prog_index.m3u8 +0 -19
  447. package/test/test/assets/hls-ts-h264/fileSequence0.ts +0 -0
  448. package/test/test/assets/hls-ts-h264/fileSequence1.ts +0 -0
  449. package/test/test/assets/hls-ts-h264/fileSequence2.ts +0 -0
  450. package/test/test/assets/hls-ts-h264/fileSequence3.ts +0 -0
  451. package/test/test/assets/hls-ts-h264/fileSequence4.ts +0 -0
  452. package/test/test/assets/hls-ts-h264/fileSequence5.ts +0 -0
  453. package/test/test/assets/hls-ts-h264/prog_index.m3u8 +0 -25
  454. package/test/test/assets/hls-ts-h265/0.ts +0 -0
  455. package/test/test/assets/hls-ts-h265/hevc.m3u8 +0 -6
  456. package/test/test/assets/hls-ts-h265/index.m3u8 +0 -7
  457. package/test/test/assets/hls-ts-mp3/manifest.m3u8 +0 -13
  458. package/test/test/assets/hls-ts-mp3/media_w239891843_0.ts +0 -0
  459. package/test/test/assets/hls-ts-mp3/media_w239891843_1.ts +0 -0
  460. package/test/test/assets/hls-ts-mp3/media_w239891843_2.ts +0 -0
  461. package/test/test/assets/hls-ts-mp3/media_w239891843_3.ts +0 -0
  462. package/test/test/assets/hls-ts-muxed-aac-h264/chunk.m3u8 +0 -17
  463. package/test/test/assets/hls-ts-muxed-aac-h264/n_0_0_0.ts +0 -0
  464. package/test/test/assets/hls-ts-muxed-aac-h264/n_1_0_0.ts +0 -0
  465. package/test/test/assets/hls-ts-muxed-aac-h264/n_2_0_0.ts +0 -0
  466. package/test/test/assets/hls-ts-muxed-aac-h264/n_3_0_0.ts +0 -0
  467. package/test/test/assets/hls-ts-muxed-aac-h264/n_4_0_0.ts +0 -0
  468. package/test/test/assets/hls-ts-muxed-aac-h264/n_5_0_0.ts +0 -0
  469. package/test/test/assets/hls-ts-muxed-aac-h264/playlist.m3u8 +0 -4
  470. package/test/test/assets/hls-ts-muxed-aac-h265/0.ts +0 -0
  471. package/test/test/assets/hls-ts-muxed-aac-h265/1.ts +0 -0
  472. package/test/test/assets/hls-ts-muxed-aac-h265/media.m3u8 +0 -9
  473. package/test/test/assets/hls-ts-muxed-ac3-h264/media.m3u8 +0 -24
  474. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00000.ts +0 -0
  475. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00001.ts +0 -0
  476. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00002.ts +0 -0
  477. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00003.ts +0 -0
  478. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00004.ts +0 -0
  479. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00005.ts +0 -0
  480. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0000.ts +0 -0
  481. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0001.ts +0 -0
  482. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0002.ts +0 -0
  483. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0003.ts +0 -0
  484. package/test/test/assets/hls-ts-muxed-ec3-h264/prog_index.m3u8 +0 -14
  485. package/test/test/assets/hls-ts-muxed-mp3-h264/index.m3u8 +0 -23
  486. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-1-v1-a1.ts +0 -0
  487. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-2-v1-a1.ts +0 -0
  488. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-3-v1-a1.ts +0 -0
  489. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-4-v1-a1.ts +0 -0
  490. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-5-v1-a1.ts +0 -0
  491. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-6-v1-a1.ts +0 -0
  492. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-7-v1-a1.ts +0 -0
  493. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-8-v1-a1.ts +0 -0
  494. package/test/test/assets/id3-metadata.aac +0 -0
  495. package/test/test/assets/id3-metadata.ts +0 -0
  496. package/test/test/assets/index-segment.mp4 +0 -0
  497. package/test/test/assets/index-segment.webm +0 -0
  498. package/test/test/assets/init-segment.webm +0 -0
  499. package/test/test/assets/large_file.mpd +0 -4930
  500. package/test/test/assets/multidrm-audio-init.mp4 +0 -0
  501. package/test/test/assets/multidrm-audio-segment.mp4 +0 -0
  502. package/test/test/assets/multidrm-video-init.mp4 +0 -0
  503. package/test/test/assets/multidrm-video-segment.mp4 +0 -0
  504. package/test/test/assets/multiple-trun-init.mp4 +0 -0
  505. package/test/test/assets/multiple-trun-segment.mp4 +0 -0
  506. package/test/test/assets/sintel-audio-init.mp4 +0 -0
  507. package/test/test/assets/sintel-audio-segment.mp4 +0 -0
  508. package/test/test/assets/sintel-video-init.mp4 +0 -0
  509. package/test/test/assets/sintel-video-segment.mp4 +0 -0
  510. package/test/test/assets/small.mp4 +0 -0
  511. package/test/test/assets/text-clip-alt.vtt +0 -63
  512. package/test/test/assets/text-clip.vtt +0 -63
  513. package/test/test/assets/thumbnails-sprites.vtt +0 -10
  514. package/test/test/assets/thumbnails.vtt +0 -10
  515. package/test/test/assets/ttml-init.mp4 +0 -0
  516. package/test/test/assets/ttml-segment-multiplemdat.mp4 +0 -0
  517. package/test/test/assets/ttml-segment.mp4 +0 -0
  518. package/test/test/assets/video.ts +0 -0
  519. package/test/test/assets/vtt-init.mp4 +0 -0
  520. package/test/test/assets/vtt-segment-multi-payload.mp4 +0 -0
  521. package/test/test/assets/vtt-segment-no-duration.mp4 +0 -0
  522. package/test/test/assets/vtt-segment-settings.mp4 +0 -0
  523. package/test/test/assets/vtt-segment.mp4 +0 -0
  524. package/test/test/boot.js +0 -495
  525. package/test/test/externs/filters.js +0 -44
  526. package/test/test/externs/fontfaceonload.js +0 -29
  527. package/test/test/externs/jasmine.js +0 -670
  528. package/test/test/externs/karma.js +0 -26
  529. package/test/test/externs/require.js +0 -21
  530. package/test/test/externs/sprintf.js +0 -18
  531. package/test/test/namespace.js +0 -10
  532. package/test/test/util/canned_idb.js +0 -379
  533. package/test/test/util/cea_utils.js +0 -60
  534. package/test/test/util/dash_parser_util.js +0 -329
  535. package/test/test/util/fake_ad.js +0 -321
  536. package/test/test/util/fake_ad_manager.js +0 -122
  537. package/test/test/util/fake_demo_main.js +0 -144
  538. package/test/test/util/fake_drm_engine.js +0 -103
  539. package/test/test/util/fake_media_source_engine.js +0 -464
  540. package/test/test/util/fake_networking_engine.js +0 -381
  541. package/test/test/util/fake_segment_prefetch.js +0 -84
  542. package/test/test/util/fake_text_displayer.js +0 -60
  543. package/test/test/util/id3_generator.js +0 -100
  544. package/test/test/util/indexeddb_utils.js +0 -124
  545. package/test/test/util/jasmine_fetch.js +0 -382
  546. package/test/test/util/layout_tests.js +0 -434
  547. package/test/test/util/loader.js +0 -88
  548. package/test/test/util/manifest_generator.js +0 -705
  549. package/test/test/util/manifest_parser_util.js +0 -101
  550. package/test/test/util/mss_parser_util.js +0 -119
  551. package/test/test/util/offline_utils.js +0 -105
  552. package/test/test/util/simple_fakes.js +0 -535
  553. package/test/test/util/stream_generator.js +0 -676
  554. package/test/test/util/streaming_engine_util.js +0 -506
  555. package/test/test/util/test_scheme.js +0 -778
  556. package/test/test/util/ttml_utils.js +0 -77
  557. package/test/test/util/ui_utils.js +0 -183
  558. package/test/test/util/util.js +0 -374
  559. package/test/test/util/waiter.js +0 -406
  560. package/test/text/cue_integration.js +0 -51
  561. package/test/text/lrc_text_parser_unit.js +0 -98
  562. package/test/text/mp4_ttml_parser_unit.js +0 -171
  563. package/test/text/mp4_vtt_parser_unit.js +0 -195
  564. package/test/text/sbv_text_parser_unit.js +0 -81
  565. package/test/text/simple_text_displayer_unit.js +0 -468
  566. package/test/text/srt_text_parser_unit.js +0 -163
  567. package/test/text/ssa_text_parser_unit.js +0 -382
  568. package/test/text/text_displayer_layout_unit.js +0 -323
  569. package/test/text/text_engine_unit.js +0 -500
  570. package/test/text/text_track_integration.js +0 -186
  571. package/test/text/ttml_text_parser_unit.js +0 -2176
  572. package/test/text/ui_text_displayer_unit.js +0 -608
  573. package/test/text/vtt_text_parser_unit.js +0 -1363
  574. package/test/text/web_vtt_generator_unit.js +0 -144
  575. package/test/text/web_vtt_layout_integration.js +0 -524
  576. package/test/transmuxer/transmuxer_engine_integration.js +0 -69
  577. package/test/transmuxer/transmuxer_integration.js +0 -443
  578. package/test/ui/ad_ui_unit.js +0 -369
  579. package/test/ui/localization_unit.js +0 -508
  580. package/test/ui/ui_customization_unit.js +0 -208
  581. package/test/ui/ui_integration.js +0 -669
  582. package/test/ui/ui_unit.js +0 -902
  583. package/test/util/abortable_operation_unit.js +0 -624
  584. package/test/util/array_utils_unit.js +0 -58
  585. package/test/util/buffer_utils_unit.js +0 -185
  586. package/test/util/cmcd_manager_unit.js +0 -440
  587. package/test/util/content_steering_manager_unit.js +0 -427
  588. package/test/util/data_view_reader_unit.js +0 -254
  589. package/test/util/ebml_parser_unit.js +0 -297
  590. package/test/util/event_manager_unit.js +0 -185
  591. package/test/util/fake_event_target_unit.js +0 -123
  592. package/test/util/id3_utils_unit.js +0 -168
  593. package/test/util/iterables_unit.js +0 -68
  594. package/test/util/language_utils_unit.js +0 -240
  595. package/test/util/manifest_parser_utils_unit.js +0 -55
  596. package/test/util/mime_utils_unit.js +0 -64
  597. package/test/util/mp4_box_parsers_unit.js +0 -246
  598. package/test/util/mp4_parser_unit.js +0 -373
  599. package/test/util/multi_map_unit.js +0 -94
  600. package/test/util/object_utils_unit.js +0 -79
  601. package/test/util/periods_unit.js +0 -1623
  602. package/test/util/pssh_unit.js +0 -226
  603. package/test/util/state_history_unit.js +0 -101
  604. package/test/util/stream_utils_unit.js +0 -1068
  605. package/test/util/string_utils_unit.js +0 -166
  606. package/test/util/text_parser_unit.js +0 -165
  607. package/test/util/ts_parser_unit.js +0 -77
  608. package/test/util/xml_utils_unit.js +0 -444
@@ -1,427 +0,0 @@
1
- /*! @license
2
- * Shaka Player
3
- * Copyright 2016 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- describe('ContentSteeringManager', () => {
8
- /** @type {!shaka.test.FakeNetworkingEngine} */
9
- let fakeNetEngine;
10
-
11
- /** @type {!shaka.util.ContentSteeringManager} */
12
- let manager;
13
-
14
- beforeEach(() => {
15
- fakeNetEngine = new shaka.test.FakeNetworkingEngine();
16
- const playerInterface = {
17
- networkingEngine: fakeNetEngine,
18
- modifyManifestRequest: fail,
19
- modifySegmentRequest: fail,
20
- filter: fail,
21
- makeTextStreamsForClosedCaptions: fail,
22
- onTimelineRegionAdded: fail,
23
- onEvent: fail,
24
- onError: fail,
25
- isLowLatencyMode: fail,
26
- isAutoLowLatencyMode: fail,
27
- enableLowLatencyMode: fail,
28
- updateDuration: fail,
29
- newDrmInfo: fail,
30
- onManifestUpdated: fail,
31
- getBandwidthEstimate: () => 1e6,
32
- };
33
- const config = shaka.util.PlayerConfiguration.createDefault().manifest;
34
- manager = new shaka.util.ContentSteeringManager(playerInterface);
35
- manager.configure(config);
36
- manager.setBaseUris([
37
- 'http://default',
38
- ]);
39
- manager.addLocation('foo', 'cdn-a', 'http://cdn-a');
40
- manager.addLocation('foo', 'cdn-b', 'http://cdn-b');
41
- manager.addLocation('foo', 'cdn-c', 'http://cdn-c');
42
- });
43
-
44
- afterEach(async () => {
45
- await manager.destroy();
46
- });
47
-
48
- describe('defaultPathwayId', () => {
49
- it('allows no value', () => {
50
- manager.setDefaultPathwayId(null);
51
-
52
- const locations = manager.getLocations('foo');
53
- expect(locations.length).toBe(3);
54
- expect(locations[0]).toBe('http://cdn-a');
55
- expect(locations[1]).toBe('http://cdn-b');
56
- expect(locations[2]).toBe('http://cdn-c');
57
- });
58
-
59
- it('allows one value', () => {
60
- manager.setDefaultPathwayId('cdn-b');
61
-
62
- const locations = manager.getLocations('foo');
63
- expect(locations.length).toBe(1);
64
- expect(locations[0]).toBe('http://cdn-b');
65
- });
66
-
67
- it('allows multiple values', () => {
68
- manager.setDefaultPathwayId('cdn-b,cdn-a,cdn-c');
69
-
70
- const locations = manager.getLocations('foo');
71
- expect(locations.length).toBe(3);
72
- expect(locations[0]).toBe('http://cdn-b');
73
- expect(locations[1]).toBe('http://cdn-a');
74
- expect(locations[2]).toBe('http://cdn-c');
75
- });
76
- });
77
-
78
- describe('queryParams', () => {
79
- it('send the correct value for DASH', async () => {
80
- manager.setManifestType(shaka.media.ManifestParser.DASH);
81
- const manifest = JSON.stringify({
82
- 'VERSION': 1,
83
- 'TTL': 1,
84
- 'RELOAD-URI': 'http://foo.bar/update',
85
- 'PATHWAY-PRIORITY': [
86
- 'cdn-b',
87
- 'cdn-a',
88
- ],
89
- });
90
- fakeNetEngine.setResponseText('http://foo.bar/manifest', manifest);
91
-
92
- await manager.requestInfo('http://foo.bar/manifest');
93
-
94
- const locations = manager.getLocations('foo');
95
- expect(locations.length).toBe(2);
96
- expect(locations[0]).toBe('http://cdn-b');
97
- expect(locations[1]).toBe('http://cdn-a');
98
-
99
- const manifestUpdate = JSON.stringify({
100
- 'VERSION': 1,
101
- 'TTL': 1,
102
- 'RELOAD-URI': 'http://foo.bar/update',
103
- 'PATHWAY-PRIORITY': [
104
- 'cdn-b',
105
- ],
106
- });
107
- const updateUrl = 'http://foo.bar/update?_DASH_pathway=cdn-b&_DASH_throughput=1000000';
108
- fakeNetEngine.setResponseText(updateUrl, manifestUpdate);
109
-
110
- await shaka.test.Util.delay(1);
111
-
112
- const newLocations = manager.getLocations('foo');
113
- expect(newLocations.length).toBe(1);
114
- expect(newLocations[0]).toBe('http://cdn-b');
115
- });
116
-
117
- it('send the correct value for HLS', async () => {
118
- manager.setManifestType(shaka.media.ManifestParser.HLS);
119
- const manifest = JSON.stringify({
120
- 'VERSION': 1,
121
- 'TTL': 1,
122
- 'RELOAD-URI': 'http://foo.bar/update',
123
- 'PATHWAY-PRIORITY': [
124
- 'cdn-b',
125
- 'cdn-a',
126
- ],
127
- });
128
- fakeNetEngine.setResponseText('http://foo.bar/manifest', manifest);
129
-
130
- await manager.requestInfo('http://foo.bar/manifest');
131
-
132
- const locations = manager.getLocations('foo');
133
- expect(locations.length).toBe(2);
134
- expect(locations[0]).toBe('http://cdn-b');
135
- expect(locations[1]).toBe('http://cdn-a');
136
-
137
- const manifestUpdate = JSON.stringify({
138
- 'VERSION': 1,
139
- 'TTL': 1,
140
- 'RELOAD-URI': 'http://foo.bar/update',
141
- 'PATHWAY-PRIORITY': [
142
- 'cdn-b',
143
- ],
144
- });
145
- const updateUrl = 'http://foo.bar/update?_HLS_pathway=cdn-b&_HLS_throughput=1000000';
146
- fakeNetEngine.setResponseText(updateUrl, manifestUpdate);
147
-
148
- await shaka.test.Util.delay(1);
149
-
150
- const newLocations = manager.getLocations('foo');
151
- expect(newLocations.length).toBe(1);
152
- expect(newLocations[0]).toBe('http://cdn-b');
153
- });
154
-
155
- it('not send value for unknown manifest', async () => {
156
- const manifest = JSON.stringify({
157
- 'VERSION': 1,
158
- 'TTL': 1,
159
- 'RELOAD-URI': 'http://foo.bar/update',
160
- 'PATHWAY-PRIORITY': [
161
- 'cdn-b',
162
- 'cdn-a',
163
- ],
164
- });
165
- fakeNetEngine.setResponseText('http://foo.bar/manifest', manifest);
166
-
167
- await manager.requestInfo('http://foo.bar/manifest');
168
-
169
- const locations = manager.getLocations('foo');
170
- expect(locations.length).toBe(2);
171
- expect(locations[0]).toBe('http://cdn-b');
172
- expect(locations[1]).toBe('http://cdn-a');
173
-
174
- const manifestUpdate = JSON.stringify({
175
- 'VERSION': 1,
176
- 'TTL': 1,
177
- 'RELOAD-URI': 'http://foo.bar/update',
178
- 'PATHWAY-PRIORITY': [
179
- 'cdn-b',
180
- ],
181
- });
182
- fakeNetEngine.setResponseText('http://foo.bar/update', manifestUpdate);
183
-
184
- await shaka.test.Util.delay(1);
185
-
186
- const newLocations = manager.getLocations('foo');
187
- expect(newLocations.length).toBe(1);
188
- expect(newLocations[0]).toBe('http://cdn-b');
189
- });
190
- });
191
-
192
- describe('steeringManifest', () => {
193
- it('ignores manifest with a version different than 1', async () => {
194
- const manifest = JSON.stringify({
195
- 'VERSION': 35,
196
- 'TTL': 10,
197
- 'RELOAD-URI': 'http://foo.bar/update',
198
- 'PATHWAY-PRIORITY': [
199
- 'cdn-b',
200
- 'cdn-a',
201
- ],
202
- });
203
- fakeNetEngine.setResponseText('http://foo.bar/manifest', manifest);
204
-
205
- await manager.requestInfo('http://foo.bar/manifest');
206
-
207
- const locations = manager.getLocations('foo');
208
- expect(locations.length).toBe(3);
209
- expect(locations[0]).toBe('http://cdn-a');
210
- expect(locations[1]).toBe('http://cdn-b');
211
- expect(locations[2]).toBe('http://cdn-c');
212
- });
213
-
214
- it('honors RELOAD-URI', async () => {
215
- const manifest = JSON.stringify({
216
- 'VERSION': 1,
217
- 'TTL': 1,
218
- 'RELOAD-URI': 'http://foo.bar/update',
219
- 'PATHWAY-PRIORITY': [
220
- 'cdn-b',
221
- 'cdn-a',
222
- ],
223
- });
224
- fakeNetEngine.setResponseText('http://foo.bar/manifest', manifest);
225
-
226
- await manager.requestInfo('http://foo.bar/manifest');
227
-
228
- const locations = manager.getLocations('foo');
229
- expect(locations.length).toBe(2);
230
- expect(locations[0]).toBe('http://cdn-b');
231
- expect(locations[1]).toBe('http://cdn-a');
232
-
233
- const manifestUpdate = JSON.stringify({
234
- 'VERSION': 1,
235
- 'TTL': 1,
236
- 'RELOAD-URI': 'http://foo.bar/update',
237
- 'PATHWAY-PRIORITY': [
238
- 'cdn-b',
239
- ],
240
- });
241
- fakeNetEngine.setResponseText('http://foo.bar/update', manifestUpdate);
242
-
243
- await shaka.test.Util.delay(1);
244
-
245
- const newLocations = manager.getLocations('foo');
246
- expect(newLocations.length).toBe(1);
247
- expect(newLocations[0]).toBe('http://cdn-b');
248
- });
249
-
250
- it('fallback for no RELOAD-URI', async () => {
251
- const manifest = JSON.stringify({
252
- 'VERSION': 1,
253
- 'TTL': 1,
254
- 'PATHWAY-PRIORITY': [
255
- 'cdn-b',
256
- 'cdn-a',
257
- ],
258
- });
259
- fakeNetEngine.setResponseText('http://foo.bar/manifest', manifest);
260
-
261
- await manager.requestInfo('http://foo.bar/manifest');
262
-
263
- const locations = manager.getLocations('foo');
264
- expect(locations.length).toBe(2);
265
- expect(locations[0]).toBe('http://cdn-b');
266
- expect(locations[1]).toBe('http://cdn-a');
267
-
268
- const manifestUpdate = JSON.stringify({
269
- 'VERSION': 1,
270
- 'TTL': 1,
271
- 'PATHWAY-PRIORITY': [
272
- 'cdn-b',
273
- ],
274
- });
275
- fakeNetEngine.setResponseText('http://foo.bar/manifest', manifestUpdate);
276
-
277
- await shaka.test.Util.delay(1);
278
-
279
- const newLocations = manager.getLocations('foo');
280
- expect(newLocations.length).toBe(1);
281
- expect(newLocations[0]).toBe('http://cdn-b');
282
- });
283
-
284
- it('honors TTL', async () => {
285
- const manifest = JSON.stringify({
286
- 'VERSION': 1,
287
- 'TTL': 1,
288
- 'RELOAD-URI': 'http://foo.bar/update',
289
- 'PATHWAY-PRIORITY': [
290
- 'cdn-b',
291
- 'cdn-a',
292
- ],
293
- });
294
- fakeNetEngine.setResponseText('http://foo.bar/manifest', manifest);
295
-
296
- await manager.requestInfo('http://foo.bar/manifest');
297
-
298
- const locations = manager.getLocations('foo');
299
- expect(locations.length).toBe(2);
300
- expect(locations[0]).toBe('http://cdn-b');
301
- expect(locations[1]).toBe('http://cdn-a');
302
-
303
- const manifestUpdate = JSON.stringify({
304
- 'VERSION': 1,
305
- 'TTL': 2,
306
- 'RELOAD-URI': 'http://foo.bar/update',
307
- 'PATHWAY-PRIORITY': [
308
- 'cdn-b',
309
- ],
310
- });
311
- fakeNetEngine.setResponseText('http://foo.bar/update', manifestUpdate);
312
-
313
- await shaka.test.Util.delay(2);
314
-
315
- const newLocations = manager.getLocations('foo');
316
- expect(newLocations.length).toBe(1);
317
- expect(newLocations[0]).toBe('http://cdn-b');
318
- });
319
- });
320
-
321
- describe('get correct locations', () => {
322
- it('with PATHWAY-PRIORITY', async () => {
323
- const manifest = JSON.stringify({
324
- 'VERSION': 1,
325
- 'TTL': 10,
326
- 'RELOAD-URI': 'http://foo.bar/update',
327
- 'PATHWAY-PRIORITY': [
328
- 'cdn-b',
329
- 'cdn-a',
330
- 'cdn-c',
331
- ],
332
- });
333
- fakeNetEngine.setResponseText('http://foo.bar/manifest', manifest);
334
-
335
- await manager.requestInfo('http://foo.bar/manifest');
336
-
337
- const locations = manager.getLocations('foo');
338
- expect(locations.length).toBe(3);
339
- expect(locations[0]).toBe('http://cdn-b');
340
- expect(locations[1]).toBe('http://cdn-a');
341
- expect(locations[2]).toBe('http://cdn-c');
342
- });
343
-
344
- it('with PATHWAY-PRIORITY and PATHWAY-CLONES', async () => {
345
- const manifest = JSON.stringify({
346
- 'VERSION': 1,
347
- 'TTL': 10,
348
- 'RELOAD-URI': 'http://foo.bar/update',
349
- 'PATHWAY-PRIORITY': [
350
- 'cdn-d',
351
- 'cdn-b',
352
- 'cdn-a',
353
- 'cdn-c',
354
- ],
355
- 'PATHWAY-CLONES': [
356
- {
357
- 'BASE-ID': 'cdn-c',
358
- 'ID': 'cdn-d',
359
- 'URI-REPLACEMENT': {
360
- 'HOST': 'cdn-d',
361
- },
362
- },
363
- ],
364
- });
365
- fakeNetEngine.setResponseText('http://foo.bar/manifest', manifest);
366
-
367
- await manager.requestInfo('http://foo.bar/manifest');
368
-
369
- const locations = manager.getLocations('foo');
370
- expect(locations.length).toBe(4);
371
- expect(locations[0]).toBe('http://cdn-d');
372
- expect(locations[1]).toBe('http://cdn-b');
373
- expect(locations[2]).toBe('http://cdn-a');
374
- expect(locations[3]).toBe('http://cdn-c');
375
- });
376
-
377
- it('without PATHWAY-PRIORITY but with defaultPathwayId', () => {
378
- manager.setDefaultPathwayId('cdn-b,cdn-a,cdn-c');
379
-
380
- const locations = manager.getLocations('foo');
381
- expect(locations.length).toBe(3);
382
- expect(locations[0]).toBe('http://cdn-b');
383
- expect(locations[1]).toBe('http://cdn-a');
384
- expect(locations[2]).toBe('http://cdn-c');
385
- });
386
-
387
- it('without PATHWAY-PRIORITY neither defaultPathwayId', () => {
388
- const locations = manager.getLocations('foo');
389
- expect(locations.length).toBe(3);
390
- expect(locations[0]).toBe('http://cdn-a');
391
- expect(locations[1]).toBe('http://cdn-b');
392
- expect(locations[2]).toBe('http://cdn-c');
393
- });
394
-
395
- it('use baseuris if no locations', () => {
396
- manager.clearPreviousLocations();
397
- const locations = manager.getLocations('foo');
398
- expect(locations.length).toBe(1);
399
- expect(locations[0]).toBe('http://default');
400
- });
401
- });
402
-
403
- describe('allow ban locations', () => {
404
- it('with PATHWAY-PRIORITY', async () => {
405
- const manifest = JSON.stringify({
406
- 'VERSION': 1,
407
- 'TTL': 10,
408
- 'RELOAD-URI': 'http://foo.bar/update',
409
- 'PATHWAY-PRIORITY': [
410
- 'cdn-b',
411
- 'cdn-a',
412
- 'cdn-c',
413
- ],
414
- });
415
- fakeNetEngine.setResponseText('http://foo.bar/manifest', manifest);
416
-
417
- await manager.requestInfo('http://foo.bar/manifest');
418
-
419
- manager.banLocation('http://cdn-b');
420
-
421
- const locations = manager.getLocations('foo');
422
- expect(locations.length).toBe(2);
423
- expect(locations[0]).toBe('http://cdn-a');
424
- expect(locations[1]).toBe('http://cdn-c');
425
- });
426
- });
427
- });
@@ -1,254 +0,0 @@
1
- /*! @license
2
- * Shaka Player
3
- * Copyright 2016 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- describe('DataViewReader', () => {
8
- const Util = shaka.test.Util;
9
-
10
- // |data| as interpreted as a 64 bit integer must not be larger than 2^53-1.
11
- // decimal digits.
12
- const data = new Uint8Array([0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07]);
13
- // |data2| is small enough in little-endian to be read as a 64-bit number,
14
- // and has the sign bit set on the first 6 bytes to prove that we don't
15
- // return negative values.
16
- const data2 =
17
- new Uint8Array([0xde, 0xad, 0xbe, 0xef, 0xff, 0xff, 0x01, 0x00]);
18
-
19
- /** @type {!shaka.util.DataViewReader} */
20
- let bigEndianReader;
21
- /** @type {!shaka.util.DataViewReader} */
22
- let littleEndianReader;
23
- /** @type {!shaka.util.DataViewReader} */
24
- let bigEndianReader2;
25
- /** @type {!shaka.util.DataViewReader} */
26
- let littleEndianReader2;
27
-
28
- beforeEach(() => {
29
- bigEndianReader = new shaka.util.DataViewReader(
30
- data, shaka.util.DataViewReader.Endianness.BIG_ENDIAN);
31
- bigEndianReader2 = new shaka.util.DataViewReader(
32
- data2, shaka.util.DataViewReader.Endianness.BIG_ENDIAN);
33
- littleEndianReader = new shaka.util.DataViewReader(
34
- data, shaka.util.DataViewReader.Endianness.LITTLE_ENDIAN);
35
- littleEndianReader2 = new shaka.util.DataViewReader(
36
- data2, shaka.util.DataViewReader.Endianness.LITTLE_ENDIAN);
37
- });
38
-
39
- it('reads a uint8 in big endian', () => {
40
- const value1 = bigEndianReader.readUint8();
41
- expect(value1).toBe(0x00);
42
-
43
- const value2 = bigEndianReader.readUint8();
44
- expect(value2).toBe(0x01);
45
-
46
- const value3 = bigEndianReader2.readUint8();
47
- expect(value3).toBe(0xde);
48
-
49
- const value4 = bigEndianReader2.readUint8();
50
- expect(value4).toBe(0xad);
51
- });
52
-
53
- it('reads a uint16 in big endian', () => {
54
- const value1 = bigEndianReader.readUint16();
55
- expect(value1).toBe(0x0001);
56
-
57
- const value2 = bigEndianReader.readUint16();
58
- expect(value2).toBe(0x0203);
59
-
60
- const value3 = bigEndianReader2.readUint16();
61
- expect(value3).toBe(0xdead);
62
-
63
- const value4 = bigEndianReader2.readUint16();
64
- expect(value4).toBe(0xbeef);
65
- });
66
-
67
- it('reads a uint32 in big endian', () => {
68
- const value1 = bigEndianReader.readUint32();
69
- expect(value1).toBe(0x00010203);
70
-
71
- const value2 = bigEndianReader.readUint32();
72
- expect(value2).toBe(0x04050607);
73
-
74
- const value3 = bigEndianReader2.readUint32();
75
- expect(value3).toBe(0xdeadbeef);
76
-
77
- const value4 = bigEndianReader2.readUint32();
78
- expect(value4).toBe(0xffff0100);
79
- });
80
-
81
- it('reads an int32 in big endian', () => {
82
- const value1 = bigEndianReader.readInt32();
83
- expect(value1).toBe(66051);
84
-
85
- const value2 = bigEndianReader.readInt32();
86
- expect(value2).toBe(67438087);
87
-
88
- const value3 = bigEndianReader2.readInt32();
89
- expect(value3).toBe(-559038737);
90
-
91
- const value4 = bigEndianReader2.readInt32();
92
- expect(value4).toBe(-65280);
93
- });
94
-
95
- it('reads a uint64 in big endian', () => {
96
- const value = bigEndianReader.readUint64();
97
- expect(value).toBe(0x0001020304050607);
98
- });
99
-
100
- it('reads a uint8 in little endian', () => {
101
- const value1 = littleEndianReader.readUint8();
102
- expect(value1).toBe(0x00);
103
-
104
- const value2 = littleEndianReader.readUint8();
105
- expect(value2).toBe(0x01);
106
-
107
- const value3 = littleEndianReader2.readUint8();
108
- expect(value3).toBe(0xde);
109
-
110
- const value4 = littleEndianReader2.readUint8();
111
- expect(value4).toBe(0xad);
112
- });
113
-
114
- it('reads a uint16 in little endian', () => {
115
- const value1 = littleEndianReader.readUint16();
116
- expect(value1).toBe(0x0100);
117
-
118
- const value2 = littleEndianReader.readUint16();
119
- expect(value2).toBe(0x0302);
120
-
121
- const value3 = littleEndianReader2.readUint16();
122
- expect(value3).toBe(0xadde);
123
-
124
- const value4 = littleEndianReader2.readUint16();
125
- expect(value4).toBe(0xefbe);
126
- });
127
-
128
- it('reads a uint32 in little endian', () => {
129
- const value1 = littleEndianReader.readUint32();
130
- expect(value1).toBe(0x03020100);
131
-
132
- const value2 = littleEndianReader.readUint32();
133
- expect(value2).toBe(0x07060504);
134
-
135
- const value3 = littleEndianReader2.readUint32();
136
- expect(value3).toBe(0xefbeadde);
137
-
138
- const value4 = littleEndianReader2.readUint32();
139
- expect(value4).toBe(0x0001ffff);
140
- });
141
-
142
- it('reads an int32 in little endian', () => {
143
- const value1 = littleEndianReader.readInt32();
144
- expect(value1).toBe(50462976);
145
-
146
- const value2 = littleEndianReader.readInt32();
147
- expect(value2).toBe(117835012);
148
-
149
- const value3 = littleEndianReader2.readInt32();
150
- expect(value3).toBe(-272716322);
151
-
152
- const value4 = littleEndianReader2.readInt32();
153
- expect(value4).toBe(131071);
154
- });
155
-
156
- it('reads a uint64 in little endian', () => {
157
- const value = littleEndianReader2.readUint64();
158
- expect(value).toBe(0x0001ffffefbeadde);
159
- });
160
-
161
- it('skips bytes', () => {
162
- bigEndianReader.skip(1);
163
- const value = bigEndianReader.readUint8();
164
- expect(value).toBe(0x01);
165
- });
166
-
167
- it('determines the end of the data view', () => {
168
- bigEndianReader.skip(7);
169
- expect(bigEndianReader.hasMoreData()).toBe(true);
170
-
171
- bigEndianReader.skip(1);
172
- expect(bigEndianReader.hasMoreData()).toBe(false);
173
- });
174
-
175
- it('gets the byte position', () => {
176
- expect(bigEndianReader.getPosition()).toBe(0);
177
-
178
- bigEndianReader.skip(1);
179
- expect(bigEndianReader.getPosition()).toBe(1);
180
-
181
- bigEndianReader.skip(7);
182
- expect(bigEndianReader.getPosition()).toBe(8);
183
- });
184
-
185
- describe('end-of-stream', () => {
186
- it('detects when reading a uint8', () => {
187
- bigEndianReader.skip(7);
188
- bigEndianReader.readUint8();
189
- runTest(() => {
190
- bigEndianReader.readUint8();
191
- });
192
- });
193
-
194
- it('detects when reading a uint16', () => {
195
- bigEndianReader.skip(7);
196
- runTest(() => {
197
- bigEndianReader.readUint16();
198
- });
199
- });
200
-
201
- it('detects when reading a uint32', () => {
202
- bigEndianReader.skip(5);
203
- runTest(() => {
204
- bigEndianReader.readUint32();
205
- });
206
- });
207
-
208
- it('detects when reading a int32', () => {
209
- bigEndianReader.skip(5);
210
- runTest(() => {
211
- bigEndianReader.readInt32();
212
- });
213
- });
214
-
215
- it('detects when reading a uint64', () => {
216
- bigEndianReader.skip(3);
217
- runTest(() => {
218
- bigEndianReader.readUint64();
219
- });
220
- });
221
-
222
- it('detects when skipping bytes', () => {
223
- bigEndianReader.skip(8);
224
- runTest(() => {
225
- bigEndianReader.skip(1);
226
- });
227
- });
228
-
229
- it('detects when reading bytes', () => {
230
- bigEndianReader.skip(8);
231
- runTest(() => {
232
- bigEndianReader.readBytes(1);
233
- });
234
- });
235
-
236
- function runTest(test) {
237
- const expected = Util.jasmineError(new shaka.util.Error(
238
- shaka.util.Error.Severity.CRITICAL,
239
- shaka.util.Error.Category.MEDIA,
240
- shaka.util.Error.Code.BUFFER_READ_OUT_OF_BOUNDS));
241
- expect(test).toThrow(expected);
242
- }
243
- });
244
-
245
- it('detects uint64s too large for JavaScript', () => {
246
- const expected = Util.jasmineError(new shaka.util.Error(
247
- shaka.util.Error.Severity.CRITICAL,
248
- shaka.util.Error.Category.MEDIA,
249
- shaka.util.Error.Code.JS_INTEGER_OVERFLOW));
250
-
251
- expect(() => littleEndianReader.readUint64()).toThrow(expected);
252
- expect(() => bigEndianReader2.readUint64()).toThrow(expected);
253
- });
254
- });