shaka-player 3.3.2 → 4.0.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 (389) hide show
  1. package/.csslintrc +11 -1
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  3. package/.github/pull_request_template.md +6 -34
  4. package/.github/workflows/build-and-test.yaml +129 -0
  5. package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +56 -0
  6. package/.github/workflows/custom-actions/set-commit-status/action.yaml +41 -0
  7. package/.github/workflows/demo-version-index.yaml +37 -0
  8. package/.github/workflows/nightly-demo.yaml +42 -0
  9. package/.github/workflows/release-please.yaml +168 -0
  10. package/.github/workflows/safari-homedir-launcher.sh +18 -0
  11. package/.github/workflows/selenium-lab-tests.yaml +92 -0
  12. package/.github/workflows/sync-labels.yaml +33 -0
  13. package/.github/workflows/update-issues.yaml +29 -0
  14. package/.github/workflows/validate-pr-title.yaml +35 -0
  15. package/AUTHORS +3 -0
  16. package/CHANGELOG.md +1866 -1675
  17. package/CONTRIBUTING.md +2 -2
  18. package/CONTRIBUTORS +3 -0
  19. package/README.md +16 -13
  20. package/app-engine/README.md +9 -0
  21. package/app-engine/demo-version-index/README.md +14 -0
  22. package/app-engine/demo-version-index/app.yaml +28 -0
  23. package/app-engine/demo-version-index/generate.py +164 -0
  24. package/app-engine/demo-version-index/main.py +11 -0
  25. package/app-engine/demo-version-index/requirements.txt +5 -0
  26. package/app-engine/demo-version-index/templates/index.html +114 -0
  27. package/app-engine/shaka-player-demo/README.md +18 -0
  28. package/app-engine/shaka-player-demo/app.yaml +61 -0
  29. package/app-engine/shaka-player-demo/main.py +95 -0
  30. package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
  31. package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
  32. package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
  33. package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
  34. package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
  35. package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
  36. package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
  37. package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
  38. package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
  39. package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
  40. package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
  41. package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
  42. package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
  43. package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
  44. package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
  45. package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
  46. package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
  47. package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
  48. package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
  49. package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
  50. package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
  51. package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
  52. package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
  53. package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
  54. package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
  55. package/app-engine/shaka-player-demo/posters/standard.png +0 -0
  56. package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
  57. package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
  58. package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
  59. package/app-engine/shaka-player-demo/posters.py +110 -0
  60. package/app-engine/shaka-player-demo/requirements.txt +5 -0
  61. package/app-engine/shaka-player-demo/time.txt +1 -0
  62. package/build/README.md +3 -3
  63. package/build/checkversion.py +1 -1
  64. package/build/compiler.py +1 -1
  65. package/build/conformance.textproto +13 -0
  66. package/build/docker/Dockerfile +20 -0
  67. package/build/docker/docker-compose.yml +10 -0
  68. package/build/gendeps.py +18 -15
  69. package/build/shaka-lab.yaml +161 -0
  70. package/build/shakaBuildHelpers.py +4 -29
  71. package/build/test.py +94 -29
  72. package/build/types/core +0 -1
  73. package/build/types/polyfill +1 -3
  74. package/build/wrapper.template.js +2 -2
  75. package/demo/TengwarTelcontar.woff2 +0 -0
  76. package/demo/asset_card.js +1 -2
  77. package/demo/cast_receiver/index.html +1 -1
  78. package/demo/cast_receiver/receiver_app.css +14 -14
  79. package/demo/common/asset.js +17 -1
  80. package/demo/common/assets.js +31 -0
  81. package/demo/common/message_ids.js +6 -3
  82. package/demo/config.js +10 -12
  83. package/demo/custom.js +39 -1
  84. package/demo/customWarning.txt +2 -2
  85. package/demo/demo.less +29 -18
  86. package/demo/demo_uncompiled.js +1 -13
  87. package/demo/demo_utils.js +0 -1
  88. package/demo/index.html +1 -1
  89. package/demo/locales/en.json +6 -3
  90. package/demo/locales/source.json +22 -10
  91. package/demo/main.js +12 -9
  92. package/demo/search.js +2 -1
  93. package/dist/controls.css +3 -3
  94. package/dist/controls.css.map +1 -1
  95. package/dist/demo.compiled.debug.js +236 -232
  96. package/dist/demo.compiled.debug.map +4 -4
  97. package/dist/demo.compiled.js +236 -232
  98. package/dist/demo.compiled.map +4 -4
  99. package/dist/demo.css +1 -1
  100. package/dist/demo.css.map +1 -1
  101. package/dist/deps.js +229 -226
  102. package/dist/locales.js +34 -32
  103. package/dist/receiver.compiled.debug.js +75 -73
  104. package/dist/receiver.compiled.debug.map +4 -4
  105. package/dist/receiver.compiled.js +75 -73
  106. package/dist/receiver.compiled.map +4 -4
  107. package/dist/shaka-player.compiled.d.ts +321 -314
  108. package/dist/shaka-player.compiled.debug.d.ts +321 -314
  109. package/dist/shaka-player.compiled.debug.externs.js +140 -129
  110. package/dist/shaka-player.compiled.debug.js +527 -592
  111. package/dist/shaka-player.compiled.debug.map +4 -4
  112. package/dist/shaka-player.compiled.externs.js +140 -129
  113. package/dist/shaka-player.compiled.js +836 -860
  114. package/dist/shaka-player.compiled.map +4 -4
  115. package/dist/shaka-player.ui.d.ts +367 -358
  116. package/dist/shaka-player.ui.debug.d.ts +367 -358
  117. package/dist/shaka-player.ui.debug.externs.js +148 -129
  118. package/dist/shaka-player.ui.debug.js +586 -649
  119. package/dist/shaka-player.ui.debug.map +4 -4
  120. package/dist/shaka-player.ui.externs.js +148 -129
  121. package/dist/shaka-player.ui.js +1008 -1028
  122. package/dist/shaka-player.ui.map +4 -4
  123. package/docs/design/REDESIGN.md +33 -33
  124. package/docs/design/bg-fetch.md +2 -2
  125. package/docs/design/codec_preferences.md +1 -1
  126. package/docs/design/dash-audio-channels.md +3 -3
  127. package/docs/design/dash-manifests.md +1 -1
  128. package/docs/design/gap-jumping.md +3 -3
  129. package/docs/design/preload.md +2 -2
  130. package/docs/tutorials/config.md +0 -2
  131. package/docs/tutorials/drm-config.md +5 -0
  132. package/docs/tutorials/fairplay.md +7 -22
  133. package/docs/tutorials/faq.md +8 -19
  134. package/docs/tutorials/index.json +3 -8
  135. package/docs/tutorials/plugins.md +4 -6
  136. package/docs/tutorials/selenium-grid-config.md +122 -0
  137. package/docs/tutorials/upgrade.md +83 -11
  138. package/docs/tutorials/welcome.md +10 -2
  139. package/externs/cmcd.js +1 -1
  140. package/externs/polyfill.js +15 -0
  141. package/externs/shaka/manifest.js +5 -1
  142. package/externs/shaka/net.js +12 -0
  143. package/externs/shaka/offline.js +5 -1
  144. package/externs/shaka/player.js +39 -32
  145. package/externs/shaka/text.js +12 -12
  146. package/externs/sourcebuffer.js +15 -0
  147. package/karma.conf.js +137 -30
  148. package/lib/abr/simple_abr_manager.js +12 -6
  149. package/lib/ads/client_side_ad.js +13 -2
  150. package/lib/ads/client_side_ad_manager.js +22 -4
  151. package/lib/cast/cast_proxy.js +3 -4
  152. package/lib/cast/cast_utils.js +0 -1
  153. package/lib/cea/cea608_data_channel.js +2 -2
  154. package/lib/cea/cea708_service.js +5 -4
  155. package/lib/cea/mp4_cea_parser.js +11 -5
  156. package/lib/cea/sei_processor.js +6 -3
  157. package/lib/dash/content_protection.js +85 -5
  158. package/lib/dash/dash_parser.js +10 -12
  159. package/lib/dash/mpd_utils.js +4 -5
  160. package/lib/dash/segment_list.js +1 -2
  161. package/lib/dash/segment_template.js +3 -3
  162. package/lib/hls/hls_parser.js +386 -749
  163. package/lib/hls/manifest_text_parser.js +5 -6
  164. package/lib/media/adaptation_set.js +1 -2
  165. package/lib/media/content_workarounds.js +2 -2
  166. package/lib/media/drm_engine.js +105 -55
  167. package/lib/media/gap_jumping_controller.js +10 -45
  168. package/lib/media/media_source_engine.js +90 -17
  169. package/lib/media/mp4_segment_index_parser.js +1 -4
  170. package/lib/media/playhead.js +4 -7
  171. package/lib/media/presentation_timeline.js +19 -10
  172. package/lib/media/segment_index.js +13 -46
  173. package/lib/media/segment_reference.js +47 -1
  174. package/lib/media/streaming_engine.js +35 -17
  175. package/lib/media/time_ranges_utils.js +5 -12
  176. package/lib/media/video_wrapper.js +1 -1
  177. package/lib/net/networking_engine.js +4 -1
  178. package/lib/offline/indexeddb/v1_storage_cell.js +1 -0
  179. package/lib/offline/indexeddb/v2_storage_cell.js +1 -0
  180. package/lib/offline/manifest_converter.js +1 -0
  181. package/lib/offline/storage.js +104 -136
  182. package/lib/player.js +50 -216
  183. package/lib/polyfill/all.js +2 -3
  184. package/lib/polyfill/encryption_scheme.js +1 -1
  185. package/lib/polyfill/media_capabilities.js +15 -9
  186. package/lib/polyfill/mediasource.js +0 -28
  187. package/lib/polyfill/patchedmediakeys_nop.js +2 -0
  188. package/lib/polyfill/patchedmediakeys_webkit.js +2 -0
  189. package/lib/polyfill/symbol.js +46 -0
  190. package/lib/text/cue.js +1 -7
  191. package/lib/text/lrc_text_parser.js +8 -0
  192. package/lib/text/mp4_ttml_parser.js +8 -0
  193. package/lib/text/mp4_vtt_parser.js +8 -0
  194. package/lib/text/sbv_text_parser.js +8 -0
  195. package/lib/text/simple_text_displayer.js +3 -8
  196. package/lib/text/srt_text_parser.js +8 -0
  197. package/lib/text/ssa_text_parser.js +8 -0
  198. package/lib/text/text_engine.js +19 -3
  199. package/lib/text/ttml_text_parser.js +16 -5
  200. package/lib/text/ui_text_displayer.js +2 -8
  201. package/lib/text/vtt_text_parser.js +24 -2
  202. package/lib/text/web_vtt_generator.js +1 -7
  203. package/lib/util/buffer_utils.js +1 -3
  204. package/lib/util/ebml_parser.js +3 -3
  205. package/lib/util/error.js +10 -14
  206. package/lib/util/fairplay_utils.js +109 -0
  207. package/lib/util/functional.js +0 -42
  208. package/lib/util/iterables.js +0 -46
  209. package/lib/util/mime_utils.js +2 -0
  210. package/lib/util/mp4_box_parsers.js +1 -4
  211. package/lib/util/mp4_parser.js +5 -7
  212. package/lib/util/periods.js +10 -11
  213. package/lib/util/platform.js +48 -3
  214. package/lib/util/player_configuration.js +12 -6
  215. package/lib/util/pssh.js +24 -8
  216. package/lib/util/stream_utils.js +96 -25
  217. package/lib/util/string_utils.js +3 -5
  218. package/lib/util/uint8array_utils.js +3 -21
  219. package/lib/util/xml_utils.js +16 -8
  220. package/package.json +61 -36
  221. package/roadmap.md +27 -27
  222. package/shaka-player.uncompiled.js +1 -3
  223. package/test/abr/simple_abr_manager_unit.js +3 -8
  224. package/test/ads/ad_manager_unit.js +0 -6
  225. package/test/cast/cast_proxy_unit.js +0 -8
  226. package/test/cast/cast_receiver_integration.js +1 -18
  227. package/test/cast/cast_receiver_unit.js +1 -9
  228. package/test/cast/cast_sender_unit.js +0 -6
  229. package/test/cast/cast_utils_unit.js +1 -13
  230. package/test/cea/cea608_memory_unit.js +0 -5
  231. package/test/cea/cea708_service_unit.js +0 -7
  232. package/test/cea/cea708_window_unit.js +0 -5
  233. package/test/cea/cea_decoder_unit.js +0 -6
  234. package/test/cea/dtvcc_packet_builder_unit.js +0 -3
  235. package/test/cea/dtvcc_packet_unit.js +0 -5
  236. package/test/cea/mp4_cea_parser_unit.js +0 -4
  237. package/test/dash/dash_parser_content_protection_unit.js +45 -10
  238. package/test/dash/dash_parser_live_unit.js +2 -15
  239. package/test/dash/dash_parser_manifest_unit.js +2 -40
  240. package/test/dash/dash_parser_segment_base_unit.js +1 -8
  241. package/test/dash/dash_parser_segment_list_unit.js +1 -7
  242. package/test/dash/dash_parser_segment_template_unit.js +3 -13
  243. package/test/dash/mpd_utils_unit.js +3 -11
  244. package/test/demo/demo_unit.js +2 -6
  245. package/test/deprecate/enforcer_unit.js +0 -4
  246. package/test/deprecate/version_unit.js +0 -2
  247. package/test/hls/hls_live_unit.js +101 -234
  248. package/test/hls/hls_parser_unit.js +517 -447
  249. package/test/hls/manifest_text_parser_unit.js +0 -10
  250. package/test/media/adaptation_set_criteria_unit.js +3 -7
  251. package/test/media/adaptation_set_unit.js +0 -2
  252. package/test/media/buffering_observer_unit.js +1 -4
  253. package/test/media/closed_caption_parser_unit.js +0 -3
  254. package/test/media/drm_engine_integration.js +2 -15
  255. package/test/media/drm_engine_unit.js +90 -144
  256. package/test/media/manifest_parser_unit.js +0 -4
  257. package/test/media/media_source_engine_integration.js +26 -10
  258. package/test/media/media_source_engine_unit.js +8 -20
  259. package/test/media/mp4_segment_index_parser_unit.js +0 -4
  260. package/test/media/play_rate_controller_unit.js +0 -4
  261. package/test/media/playhead_unit.js +35 -207
  262. package/test/media/presentation_timeline_unit.js +4 -7
  263. package/test/media/quality_observer_unit.js +0 -4
  264. package/test/media/region_observer_unit.js +1 -6
  265. package/test/media/region_timeline_unit.js +0 -3
  266. package/test/media/segment_index_unit.js +15 -31
  267. package/test/media/segment_reference_unit.js +0 -3
  268. package/test/media/stall_detector_unit.js +0 -5
  269. package/test/media/streaming_engine_integration.js +13 -75
  270. package/test/media/streaming_engine_unit.js +14 -37
  271. package/test/media/time_ranges_utils_unit.js +0 -7
  272. package/test/media/transmuxer_integration.js +0 -6
  273. package/test/media/webm_segment_index_parser_unit.js +0 -4
  274. package/test/net/data_uri_plugin_unit.js +0 -7
  275. package/test/net/http_plugin_unit.js +0 -9
  276. package/test/net/networking_engine_unit.js +0 -11
  277. package/test/offline/download_progress_estimator_unit.js +0 -2
  278. package/test/offline/indexeddb_storage_unit.js +0 -6
  279. package/test/offline/manifest_convert_unit.js +34 -12
  280. package/test/offline/offline_integration.js +1 -10
  281. package/test/offline/offline_manifest_parser_unit.js +1 -6
  282. package/test/offline/offline_scheme_unit.js +0 -8
  283. package/test/offline/offline_uri_unit.js +0 -2
  284. package/test/offline/storage_compatibility_unit.js +1 -14
  285. package/test/offline/storage_integration.js +6 -31
  286. package/test/player_external.js +1 -15
  287. package/test/player_integration.js +38 -28
  288. package/test/player_load_graph_integration.js +1 -6
  289. package/test/player_src_equals_external.js +3 -9
  290. package/test/player_src_equals_integration.js +0 -7
  291. package/test/player_unit.js +78 -37
  292. package/test/routing/walker_unit.js +0 -8
  293. package/test/test/assets/large_file.mpd +1 -1
  294. package/test/test/boot.js +75 -22
  295. package/test/test/externs/jasmine.js +2 -2
  296. package/test/test/externs/karma.js +4 -0
  297. package/test/test/namespace.js +10 -0
  298. package/test/test/util/canned_idb.js +0 -8
  299. package/test/test/util/cea_utils.js +0 -6
  300. package/test/test/util/dash_parser_util.js +0 -13
  301. package/test/test/util/fake_ad.js +0 -3
  302. package/test/test/util/fake_ad_manager.js +0 -9
  303. package/test/test/util/fake_demo_main.js +0 -5
  304. package/test/test/util/fake_drm_engine.js +0 -6
  305. package/test/test/util/fake_media_source_engine.js +11 -11
  306. package/test/test/util/fake_networking_engine.js +0 -5
  307. package/test/test/util/fake_text_displayer.js +0 -5
  308. package/test/test/util/indexeddb_utils.js +1 -10
  309. package/test/test/util/jasmine_fetch.js +0 -1
  310. package/test/test/util/loader.js +0 -18
  311. package/test/test/util/manifest_generator.js +12 -15
  312. package/test/test/util/manifest_parser_util.js +4 -7
  313. package/test/test/util/offline_utils.js +1 -5
  314. package/test/test/util/simple_fakes.js +9 -26
  315. package/test/test/util/stream_generator.js +0 -14
  316. package/test/test/util/streaming_engine_util.js +1 -15
  317. package/test/test/util/test_scheme.js +25 -20
  318. package/test/test/util/ttml_utils.js +0 -2
  319. package/test/test/util/ui_utils.js +0 -9
  320. package/test/test/util/util.js +9 -23
  321. package/test/test/util/waiter.js +84 -43
  322. package/test/text/cue_integration.js +2 -6
  323. package/test/text/lrc_text_parser_unit.js +6 -11
  324. package/test/text/mp4_ttml_parser_unit.js +6 -10
  325. package/test/text/mp4_vtt_parser_unit.js +7 -12
  326. package/test/text/sbv_text_parser_unit.js +5 -10
  327. package/test/text/simple_text_displayer_unit.js +1 -8
  328. package/test/text/srt_text_parser_unit.js +5 -10
  329. package/test/text/ssa_text_parser_unit.js +17 -34
  330. package/test/text/text_engine_unit.js +47 -12
  331. package/test/text/text_track_integration.js +0 -2
  332. package/test/text/ttml_text_parser_unit.js +79 -88
  333. package/test/text/ui_text_displayer_unit.js +44 -41
  334. package/test/text/vtt_text_parser_unit.js +55 -66
  335. package/test/text/web_vtt_generator_unit.js +0 -3
  336. package/test/ui/ad_ui_unit.js +0 -11
  337. package/test/ui/localization_unit.js +0 -3
  338. package/test/ui/text_displayer_layout_unit.js +1 -12
  339. package/test/ui/ui_customization_unit.js +0 -6
  340. package/test/ui/ui_integration.js +0 -32
  341. package/test/ui/ui_unit.js +28 -17
  342. package/test/util/abortable_operation_unit.js +4 -9
  343. package/test/util/array_utils_unit.js +0 -2
  344. package/test/util/buffer_utils_unit.js +0 -2
  345. package/test/util/cmcd_manager_unit.js +3 -3
  346. package/test/util/data_view_reader_unit.js +0 -4
  347. package/test/util/ebml_parser_unit.js +0 -4
  348. package/test/util/event_manager_unit.js +0 -3
  349. package/test/util/fake_event_target_unit.js +0 -5
  350. package/test/util/iterables_unit.js +0 -64
  351. package/test/util/language_utils_unit.js +0 -3
  352. package/test/util/manifest_parser_utils_unit.js +0 -2
  353. package/test/util/mp4_box_parsers_unit.js +0 -5
  354. package/test/util/mp4_parser_unit.js +0 -4
  355. package/test/util/multi_map_unit.js +0 -3
  356. package/test/util/object_utils_unit.js +0 -2
  357. package/test/util/periods_unit.js +14 -7
  358. package/test/util/pssh_unit.js +0 -5
  359. package/test/util/state_history_unit.js +0 -2
  360. package/test/util/stream_utils_unit.js +26 -15
  361. package/test/util/string_utils_unit.js +0 -6
  362. package/test/util/text_parser_unit.js +0 -2
  363. package/test/util/xml_utils_unit.js +0 -4
  364. package/ui/controls.js +65 -40
  365. package/ui/fullscreen_button.js +26 -6
  366. package/ui/less/ad_controls.less +6 -6
  367. package/ui/less/buttons.less +6 -6
  368. package/ui/less/containers.less +10 -12
  369. package/ui/less/overflow_menu.less +4 -4
  370. package/ui/less/range_elements.less +7 -2
  371. package/ui/less/tooltip.less +4 -4
  372. package/ui/locales/en.json +1 -0
  373. package/ui/locales/sjn-translations.yaml +257 -0
  374. package/ui/locales/sjn.json +42 -0
  375. package/ui/locales/source.json +5 -0
  376. package/ui/resolution_selection.js +31 -33
  377. package/ui/seek_bar.js +2 -1
  378. package/ui/ui.js +0 -17
  379. package/.github/workflows/build_and_test.yaml +0 -73
  380. package/.github/workflows/release.yaml +0 -53
  381. package/docs/tutorials/upgrade-v2-5.md +0 -441
  382. package/docs/tutorials/upgrade-v3.md +0 -38
  383. package/externs/svgelement.js +0 -18
  384. package/externs/webcrypto.js +0 -18
  385. package/lib/polyfill/mathround.js +0 -49
  386. package/lib/polyfill/patchedmediakeys_apple.js +0 -744
  387. package/lib/polyfill/patchedmediakeys_ms.js +0 -698
  388. package/lib/util/mutex.js +0 -52
  389. package/test/util/functional_unit.js +0 -82
@@ -4,15 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.log');
8
- goog.require('shaka.test.Util');
9
- goog.require('shaka.text.Cue');
10
- goog.require('shaka.text.CueRegion');
11
- goog.require('shaka.text.VttTextParser');
12
- goog.require('shaka.util.BufferUtils');
13
- goog.require('shaka.util.Error');
14
- goog.require('shaka.util.StringUtils');
15
-
16
7
  describe('VttTextParser', () => {
17
8
  const Cue = shaka.text.Cue;
18
9
  const CueRegion = shaka.text.CueRegion;
@@ -34,13 +25,13 @@ describe('VttTextParser', () => {
34
25
  it('supports no cues', () => {
35
26
  verifyHelper([],
36
27
  'WEBVTT',
37
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
28
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
38
29
  });
39
30
 
40
31
  it('supports initial comments', () => {
41
32
  verifyHelper([],
42
33
  'WEBVTT - Comments',
43
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
34
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
44
35
  });
45
36
 
46
37
  it('supports comment blocks', () => {
@@ -48,7 +39,7 @@ describe('VttTextParser', () => {
48
39
  'WEBVTT\n\n' +
49
40
  'NOTE\n' +
50
41
  'This is a comment block',
51
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
42
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
52
43
  });
53
44
 
54
45
  it('supports comment blocks with inital comment', () => {
@@ -56,7 +47,7 @@ describe('VttTextParser', () => {
56
47
  'WEBVTT\n\n' +
57
48
  'NOTE - A header comment\n' +
58
49
  'This is a comment block',
59
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
50
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
60
51
  });
61
52
 
62
53
  it('handles a blank line at the end of the file', () => {
@@ -67,7 +58,7 @@ describe('VttTextParser', () => {
67
58
  'WEBVTT\n\n' +
68
59
  '00:00:20.000 --> 00:00:40.000\n' +
69
60
  'Test\n\n',
70
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
61
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
71
62
  });
72
63
 
73
64
  it('handles no blank line at the end of the file', () => {
@@ -78,8 +69,7 @@ describe('VttTextParser', () => {
78
69
  'WEBVTT\n\n' +
79
70
  '00:00:20.000 --> 00:00:40.000\n' +
80
71
  'Test\n',
81
- {periodStart: 0, segmentStart: 0, segmentEnd: 0,
82
- });
72
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
83
73
  });
84
74
 
85
75
  it('handles no newline after the final text payload', () => {
@@ -90,7 +80,7 @@ describe('VttTextParser', () => {
90
80
  'WEBVTT\n\n' +
91
81
  '00:00:20.000 --> 00:00:40.000\n' +
92
82
  'Test',
93
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
83
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
94
84
  });
95
85
 
96
86
  it('supports cues with no settings', () => {
@@ -106,7 +96,7 @@ describe('VttTextParser', () => {
106
96
  '2\n' +
107
97
  '00:00:40.000 --> 00:00:50.000\n' +
108
98
  'Test2',
109
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
99
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
110
100
  });
111
101
 
112
102
  it('supports cues with no ID', () => {
@@ -120,7 +110,7 @@ describe('VttTextParser', () => {
120
110
  'Test\n\n' +
121
111
  '00:00:40.000 --> 00:00:50.000\n' +
122
112
  'Test2',
123
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
113
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
124
114
  });
125
115
 
126
116
  it('supports comments within cues', () => {
@@ -136,7 +126,7 @@ describe('VttTextParser', () => {
136
126
  'This is a note\n\n' +
137
127
  '00:00:40.000 --> 00:00:50.000\n' +
138
128
  'Test2',
139
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
129
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
140
130
  });
141
131
 
142
132
  it('supports non-integer timecodes', () => {
@@ -147,7 +137,7 @@ describe('VttTextParser', () => {
147
137
  'WEBVTT\n\n' +
148
138
  '00:00:20.100 --> 00:00:40.505\n' +
149
139
  'Test',
150
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
140
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
151
141
  });
152
142
 
153
143
  it('supports large timecodes', () => {
@@ -158,50 +148,50 @@ describe('VttTextParser', () => {
158
148
  'WEBVTT\n\n' +
159
149
  '00:00:20.000 --> 30:00:00.000\n' +
160
150
  'Test',
161
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
151
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
162
152
  });
163
153
 
164
154
  it('requires header', () => {
165
155
  errorHelper(shaka.util.Error.Code.INVALID_TEXT_HEADER,
166
156
  '',
167
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
157
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
168
158
  errorHelper(shaka.util.Error.Code.INVALID_TEXT_HEADER,
169
159
  '00:00:00.000 --> 00:00:00.020\nTest',
170
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
160
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
171
161
  });
172
162
 
173
163
  it('rejects invalid time values', () => {
174
164
  errorHelper(shaka.util.Error.Code.INVALID_TEXT_CUE,
175
165
  'WEBVTT\n\n00.020 --> 0:00.040\nTest',
176
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
166
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
177
167
  anyString);
178
168
  errorHelper(shaka.util.Error.Code.INVALID_TEXT_CUE,
179
169
  'WEBVTT\n\n0:00.020 --> 0:00.040\nTest',
180
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
170
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
181
171
  anyString);
182
172
  errorHelper(shaka.util.Error.Code.INVALID_TEXT_CUE,
183
173
  'WEBVTT\n\n00:00.20 --> 0:00.040\nTest',
184
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
174
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
185
175
  anyString);
186
176
  errorHelper(shaka.util.Error.Code.INVALID_TEXT_CUE,
187
177
  'WEBVTT\n\n00:100.20 --> 0:00.040\nTest',
188
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
178
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
189
179
  anyString);
190
180
  errorHelper(shaka.util.Error.Code.INVALID_TEXT_CUE,
191
181
  'WEBVTT\n\n00:00.020 --> 0:00.040\nTest',
192
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
182
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
193
183
  anyString);
194
184
  errorHelper(shaka.util.Error.Code.INVALID_TEXT_CUE,
195
185
  'WEBVTT\n\n00:00:00:00.020 --> 0:00.040\nTest',
196
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
186
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
197
187
  anyString);
198
188
  errorHelper(shaka.util.Error.Code.INVALID_TEXT_CUE,
199
189
  'WEBVTT\n\n00:61.020 --> 0:00.040\nTest',
200
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
190
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
201
191
  anyString);
202
192
  errorHelper(shaka.util.Error.Code.INVALID_TEXT_CUE,
203
193
  'WEBVTT\n\n61:00.020 --> 0:00.040\nTest',
204
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
194
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
205
195
  anyString);
206
196
  });
207
197
 
@@ -226,7 +216,7 @@ describe('VttTextParser', () => {
226
216
  'Test\n\n' +
227
217
  '00:00:40.000 --> 00:00:50.000 vertical:lr\n' +
228
218
  'Test2',
229
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
219
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
230
220
  });
231
221
 
232
222
  it('supports line setting', () => {
@@ -258,7 +248,7 @@ describe('VttTextParser', () => {
258
248
  'Test3\n\n' +
259
249
  '00:00:55.000 --> 00:01:05.000 line:12.3%\n' +
260
250
  'Test4\n\n',
261
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
251
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
262
252
  });
263
253
 
264
254
  it('supports line setting with optional part', () => {
@@ -280,7 +270,7 @@ describe('VttTextParser', () => {
280
270
  'Test\n\n' +
281
271
  '00:00:40.000 --> 00:00:50.000 line:-1,center\n' +
282
272
  'Test2',
283
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
273
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
284
274
  });
285
275
 
286
276
  it('supports position setting', () => {
@@ -294,7 +284,7 @@ describe('VttTextParser', () => {
294
284
  'Test\n\n' +
295
285
  '00:00:25.000 --> 00:00:45.000 position:12.3%\n' +
296
286
  'Test2\n\n',
297
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
287
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
298
288
  });
299
289
 
300
290
  it('supports position setting with optional part', () => {
@@ -314,7 +304,7 @@ describe('VttTextParser', () => {
314
304
  'Test\n\n' +
315
305
  '00:00:20.000 --> 00:00:40.000 position:45%,start\n' +
316
306
  'Test2',
317
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
307
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
318
308
  });
319
309
 
320
310
  it('supports size setting', () => {
@@ -328,7 +318,7 @@ describe('VttTextParser', () => {
328
318
  'Test\n\n' +
329
319
  '00:00:25.000 --> 00:00:45.000 size:12.3%\n' +
330
320
  'Test2\n\n',
331
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
321
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
332
322
  });
333
323
 
334
324
  it('supports align setting', () => {
@@ -339,7 +329,7 @@ describe('VttTextParser', () => {
339
329
  'WEBVTT\n\n' +
340
330
  '00:00:20.000 --> 00:00:40.000 align:center\n' +
341
331
  'Test',
342
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
332
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
343
333
  });
344
334
 
345
335
  it('supports multiple settings', () => {
@@ -357,7 +347,7 @@ describe('VttTextParser', () => {
357
347
  'WEBVTT\n\n' +
358
348
  '00:00:20.000 --> 00:00:40.000 align:center size:56% vertical:lr\n' +
359
349
  'Test',
360
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
350
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
361
351
  });
362
352
 
363
353
  it('supports timestamps with one-digit hour at start time', () => {
@@ -375,7 +365,7 @@ describe('VttTextParser', () => {
375
365
  'WEBVTT\n\n' +
376
366
  '0:00:20.000 --> 00:00:40.000 align:center size:56% vertical:lr\n' +
377
367
  'Test',
378
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
368
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
379
369
  });
380
370
 
381
371
  it('supports timestamps with one-digit hour at end time', () => {
@@ -393,7 +383,7 @@ describe('VttTextParser', () => {
393
383
  'WEBVTT\n\n' +
394
384
  '00:00:20.000 --> 0:00:40.000 align:center size:56% vertical:lr\n' +
395
385
  'Test',
396
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
386
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
397
387
  });
398
388
 
399
389
  it('supports stamps with one-digit hours at start & end time', () => {
@@ -411,15 +401,15 @@ describe('VttTextParser', () => {
411
401
  'WEBVTT\n\n' +
412
402
  '0:00:20.000 --> 0:00:40.000 align:center size:56% vertical:lr\n' +
413
403
  'Test',
414
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
404
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
415
405
  });
416
406
 
417
- it('uses time offset from periodStart, not segmentStart', () => {
407
+ it('uses time offset from vttOffset, not periodStart or segmentStart', () => {
418
408
  verifyHelper(
419
409
  [
420
410
  {
421
- startTime: 70,
422
- endTime: 80,
411
+ startTime: 50,
412
+ endTime: 60,
423
413
  payload: 'Test',
424
414
  textAlign: 'center',
425
415
  size: 56,
@@ -429,10 +419,9 @@ describe('VttTextParser', () => {
429
419
  'WEBVTT\n\n' +
430
420
  '0:00:10.000 --> 0:00:20.000 align:center size:56% vertical:lr\n' +
431
421
  'Test',
432
- {periodStart: 60, segmentStart: 80, segmentEnd: 100});
422
+ {periodStart: 60, segmentStart: 80, segmentEnd: 100, vttOffset: 40});
433
423
  });
434
424
 
435
-
436
425
  it('parses VTTRegions', () => {
437
426
  verifyHelper(
438
427
  [
@@ -460,7 +449,7 @@ describe('VttTextParser', () => {
460
449
  'viewportanchor=10%,90% scroll=up\n\n' +
461
450
  '0:00:20.000 --> 0:00:40.000 region:reg1\n' +
462
451
  'Test',
463
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
452
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
464
453
  });
465
454
 
466
455
  it('ignores and logs invalid settings', () => {
@@ -473,7 +462,7 @@ describe('VttTextParser', () => {
473
462
  'WEBVTT\n\n' +
474
463
  '00:00:20.000 --> 00:00:40.000 vertical:es\n' +
475
464
  'Test\n\n',
476
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
465
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
477
466
 
478
467
  verifyHelper(
479
468
  [
@@ -482,7 +471,7 @@ describe('VttTextParser', () => {
482
471
  'WEBVTT\n\n' +
483
472
  '00:00:20.000 --> 00:00:40.000 vertical:\n' +
484
473
  'Test\n\n',
485
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
474
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
486
475
 
487
476
  verifyHelper(
488
477
  [
@@ -491,7 +480,7 @@ describe('VttTextParser', () => {
491
480
  'WEBVTT\n\n' +
492
481
  '00:00:20.000 --> 00:00:40.000 vertical\n' +
493
482
  'Test\n\n',
494
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
483
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
495
484
 
496
485
  verifyHelper(
497
486
  [
@@ -500,7 +489,7 @@ describe('VttTextParser', () => {
500
489
  'WEBVTT\n\n' +
501
490
  '00:00:20.000 --> 00:00:40.000 line:-3%\n' +
502
491
  'Test\n\n',
503
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
492
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
504
493
 
505
494
  verifyHelper(
506
495
  [
@@ -509,7 +498,7 @@ describe('VttTextParser', () => {
509
498
  'WEBVTT\n\n' +
510
499
  '00:00:20.000 --> 00:00:40.000 line:45%%\n' +
511
500
  'Test\n\n',
512
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
501
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
513
502
 
514
503
  verifyHelper(
515
504
  [
@@ -518,7 +507,7 @@ describe('VttTextParser', () => {
518
507
  'WEBVTT\n\n' +
519
508
  '00:00:20.000 --> 00:00:40.000 align:10\n' +
520
509
  'Test\n\n',
521
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
510
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
522
511
 
523
512
  verifyHelper(
524
513
  [
@@ -527,7 +516,7 @@ describe('VttTextParser', () => {
527
516
  'WEBVTT\n\n' +
528
517
  '00:00:20.000 --> 00:00:40.000 align:foo\n' +
529
518
  'Test\n\n',
530
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
519
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
531
520
 
532
521
  expect(logWarningSpy).toHaveBeenCalledTimes(7);
533
522
  });
@@ -546,7 +535,7 @@ describe('VttTextParser', () => {
546
535
  'Test\n\n' +
547
536
  '00:00:40.000 --> 00:00:50.000 line:-1\n' +
548
537
  'Test2',
549
- {periodStart: 0, segmentStart: 25, segmentEnd: 65});
538
+ {periodStart: 0, segmentStart: 25, segmentEnd: 65, vttOffset: 0});
550
539
  });
551
540
 
552
541
  it('handles timestamp rollover with X-TIMESTAMP-MAP header', () => {
@@ -562,7 +551,7 @@ describe('VttTextParser', () => {
562
551
  'Test',
563
552
  // Non-null segmentStart takes precedence over X-TIMESTAMP-MAP.
564
553
  // This protects us from rollover in the MPEGTS field.
565
- {periodStart: 0, segmentStart: 95440, segmentEnd: 95550});
554
+ {periodStart: 0, segmentStart: 95440, segmentEnd: 95550, vttOffset: 0});
566
555
 
567
556
  verifyHelper(
568
557
  [
@@ -575,7 +564,7 @@ describe('VttTextParser', () => {
575
564
  'X-TIMESTAMP-MAP=MPEGTS:9745408,LOCAL:00:00:00.000\n\n' +
576
565
  '00:00:00.000 --> 00:00:02.000 line:0\n' +
577
566
  'Test2',
578
- {periodStart: 0, segmentStart: 95550, segmentEnd: 95560});
567
+ {periodStart: 0, segmentStart: 95550, segmentEnd: 95560, vttOffset: 0});
579
568
  });
580
569
 
581
570
  it('supports global style blocks', () => {
@@ -606,7 +595,7 @@ describe('VttTextParser', () => {
606
595
  'Test\n\n' +
607
596
  '00:00:40.000 --> 00:00:50.000\n' +
608
597
  'Test2',
609
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
598
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
610
599
  });
611
600
 
612
601
  it('supports global style blocks without blank lines', () => {
@@ -634,7 +623,7 @@ describe('VttTextParser', () => {
634
623
  'Test\n\n' +
635
624
  '00:00:40.000 --> 00:00:50.000\n' +
636
625
  'Test2',
637
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
626
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
638
627
  });
639
628
 
640
629
  it('supports payload stylized', () => {
@@ -775,7 +764,7 @@ describe('VttTextParser', () => {
775
764
  '<b>Test <i>7</i></b>\n\n' +
776
765
  '00:01:30.000 --> 00:01:40.000\n' +
777
766
  '<b>Test<i>8</b>',
778
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
767
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
779
768
  });
780
769
 
781
770
  it('supports specific style blocks', () => {
@@ -803,7 +792,7 @@ describe('VttTextParser', () => {
803
792
  '<b>Test</b>\n\n' +
804
793
  '00:00:40.000 --> 00:00:50.000\n' +
805
794
  'Test2',
806
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
795
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
807
796
  });
808
797
 
809
798
  it('supports only two digits in the timestamp', () => {
@@ -814,7 +803,7 @@ describe('VttTextParser', () => {
814
803
  'WEBVTT\n\n' +
815
804
  '00:00:20.00 --> 00:00:40.00\n' +
816
805
  'Test',
817
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
806
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
818
807
  });
819
808
 
820
809
  it('supports class with default color', () => {
@@ -956,7 +945,7 @@ describe('VttTextParser', () => {
956
945
  '<c.lime>forward slash 1/2 in text</c>\n\n' +
957
946
  '00:01:50.000 --> 00:02:00.000\n' +
958
947
  '<c.lime>less or more < > in text</c>',
959
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
948
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
960
949
  });
961
950
 
962
951
  it('supports default color overriding', () => {
@@ -982,7 +971,7 @@ describe('VttTextParser', () => {
982
971
  '::cue(bg_blue) { font-size: 10px; background-color: #FF0 }\n\n' +
983
972
  '00:00:10.000 --> 00:00:20.000\n' +
984
973
  '<c.red.bg_blue>Example 1</c>\n\n',
985
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
974
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
986
975
  });
987
976
 
988
977
  /**
@@ -4,9 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.text.Cue');
8
- goog.require('shaka.text.WebVttGenerator');
9
-
10
7
  describe('WebVttGenerator', () => {
11
8
  it('supports no cues', () => {
12
9
  verifyHelper([], [], 'WEBVTT\n\n');
@@ -4,17 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.Player');
8
- goog.require('shaka.ads.AdManager');
9
- goog.require('shaka.test.FakeAd');
10
- goog.require('shaka.test.FakeAdManager');
11
- goog.require('shaka.test.UiUtils');
12
- goog.require('shaka.test.Util');
13
- goog.require('shaka.test.Waiter');
14
- goog.require('shaka.ui.Locales');
15
- goog.require('shaka.util.EventManager');
16
- goog.requireType('shaka.ui.Localization');
17
-
18
7
  describe('Ad UI', () => {
19
8
  const UiUtils = shaka.test.UiUtils;
20
9
  /** @type {!HTMLLinkElement} */
@@ -4,9 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.ui.Localization');
8
- goog.requireType('shaka.util.FakeEvent');
9
-
10
7
  describe('Localization', () => {
11
8
  const Localization = shaka.ui.Localization;
12
9
 
@@ -4,17 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.Player');
8
- goog.require('shaka.test.FakeVideo');
9
- goog.require('shaka.test.UiUtils');
10
- goog.require('shaka.test.Util');
11
- goog.require('shaka.test.Waiter');
12
- goog.require('shaka.text.Cue');
13
- goog.require('shaka.text.SimpleTextDisplayer');
14
- goog.require('shaka.text.UITextDisplayer');
15
- goog.require('shaka.ui.Overlay');
16
- goog.require('shaka.util.EventManager');
17
-
18
7
  // TODO: Move this suite to the text/ folder where it belongs
19
8
  const supportsScreenshots = () => shaka.test.Util.supportsScreenshots();
20
9
  filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
@@ -416,7 +405,7 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
416
405
  await checkScreenshot(prefix, 'flat-cue-bg');
417
406
  });
418
407
 
419
- // https://github.com/google/shaka-player/issues/2761
408
+ // https://github.com/shaka-project/shaka-player/issues/2761
420
409
  it('deeply-nested cues', async () => {
421
410
  const makeCue = (text, fg = '', bg = '', nestedCues = []) => {
422
411
  const cue = new shaka.text.Cue(0, 1, text);
@@ -4,12 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('goog.asserts');
8
- goog.require('shaka.test.UiUtils');
9
- goog.require('shaka.test.Waiter');
10
- goog.require('shaka.util.EventManager');
11
- goog.requireType('shaka.ui.Overlay');
12
-
13
7
  describe('UI Customization', () => {
14
8
  const UiUtils = shaka.test.UiUtils;
15
9
  /** @type {!HTMLLinkElement} */
@@ -4,22 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('goog.asserts');
8
- goog.require('mozilla.LanguageMapping');
9
- goog.require('shaka.test.Loader');
10
- goog.require('shaka.test.TestScheme');
11
- goog.require('shaka.test.UiUtils');
12
- goog.require('shaka.test.Util');
13
- goog.require('shaka.test.Waiter');
14
- goog.require('shaka.ui.Element');
15
- goog.require('shaka.util.Dom');
16
- goog.require('shaka.util.EventManager');
17
- goog.require('shaka.util.Iterables');
18
- goog.requireType('shaka.Player');
19
- goog.requireType('shaka.ui.Controls');
20
- goog.requireType('shaka.ui.Overlay');
21
-
22
-
23
7
  describe('UI', () => {
24
8
  const Util = shaka.test.Util;
25
9
  const UiUtils = shaka.test.UiUtils;
@@ -470,22 +454,6 @@ describe('UI', () => {
470
454
  expect(isChosen).not.toBe(null);
471
455
  });
472
456
 
473
- it('restores the resolutions menu after audio-only playback', async () => {
474
- /** @type {HTMLElement} */
475
- const resolutionButton = shaka.util.Dom.getElementByClassName(
476
- 'shaka-resolution-button', videoContainer);
477
-
478
- // Load an audio-only clip. The menu should be hidden.
479
- await player.load('test:sintel_audio_only_compiled');
480
- expect(player.isAudioOnly()).toBe(true);
481
- expect(resolutionButton.classList.contains('shaka-hidden')).toBe(true);
482
-
483
- // Load an audio-video clip. The menu should be visible again.
484
- await player.load('test:sintel_multi_lingual_multi_res_compiled');
485
- expect(player.isAudioOnly()).toBe(false);
486
- expect(resolutionButton.classList.contains('shaka-hidden')).toBe(false);
487
- });
488
-
489
457
  /**
490
458
  * @return {Element}
491
459
  */
@@ -4,21 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('goog.asserts');
8
- goog.require('shaka.media.ManifestParser');
9
- goog.require('shaka.test.FakeManifestParser');
10
- goog.require('shaka.test.ManifestGenerator');
11
- goog.require('shaka.test.UiUtils');
12
- goog.require('shaka.test.Util');
13
- goog.require('shaka.ui.OverflowMenu');
14
- goog.require('shaka.ui.ResolutionSelection');
15
- goog.require('shaka.util.Functional');
16
- goog.require('shaka.util.Iterables');
17
- goog.require('shaka.util.Platform');
18
- goog.requireType('shaka.Player');
19
- goog.requireType('shaka.ui.Controls');
20
- goog.requireType('shaka.ui.Overlay');
21
-
22
7
  describe('UI', () => {
23
8
  const UiUtils = shaka.test.UiUtils;
24
9
  const Util = shaka.test.Util;
@@ -137,8 +122,7 @@ describe('UI', () => {
137
122
  // Four is just a random number I (ismena) came up with to test a
138
123
  // multi-video use case. It could be replaces with any other
139
124
  // (reasonable) number.
140
- for (const _ of shaka.util.Iterables.range(4)) {
141
- shaka.util.Functional.ignored(_);
125
+ for (let i = 0; i < 4; i++) {
142
126
  const video = /** @type {!HTMLVideoElement} */
143
127
  (document.createElement('video'));
144
128
 
@@ -658,6 +642,33 @@ describe('UI', () => {
658
642
  expect(getResolutions()).toEqual(['540p']);
659
643
  });
660
644
 
645
+ it('displays audio quality based on current stream', async () => {
646
+ const manifest =
647
+ shaka.test.ManifestGenerator.generate((manifest) => {
648
+ manifest.addVariant(0, (variant) => {
649
+ variant.addAudio(0);
650
+ variant.bandwidth = 100000;
651
+ });
652
+ manifest.addVariant(1, (variant) => {
653
+ variant.addAudio(1);
654
+ variant.bandwidth = 200000;
655
+ });
656
+ });
657
+
658
+ shaka.media.ManifestParser.registerParserByMime(
659
+ fakeMimeType, () => new shaka.test.FakeManifestParser(manifest));
660
+
661
+ await player.load(
662
+ /* uri= */ 'fake', /* startTime= */ 0, fakeMimeType);
663
+
664
+ const qualityButtons = videoContainer.querySelectorAll(
665
+ 'button.explicit-resolution > span');
666
+ const qualityOptions =
667
+ Array.from(qualityButtons).map((btn) => btn.innerText);
668
+
669
+ expect(qualityOptions).toEqual(['200 kbits/s', '100 kbits/s']);
670
+ });
671
+
661
672
  /**
662
673
  * Use internals to update the resolution menu. Our fake manifest can
663
674
  * cause problems with startup where the Player will get stuck using
@@ -4,11 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.test.Util');
8
- goog.require('shaka.util.AbortableOperation');
9
- goog.require('shaka.util.Error');
10
- goog.require('shaka.util.PublicPromise');
11
-
12
7
  describe('AbortableOperation', () => {
13
8
  const Util = shaka.test.Util;
14
9
 
@@ -392,10 +387,10 @@ describe('AbortableOperation', () => {
392
387
  expect(value).toBe(500);
393
388
  }).finally((ok) => {
394
389
  expect(ok).toBe(true);
395
- // The bug https://github.com/google/shaka-player/issues/1260 makes this
396
- // expectation fail because some stages were skipped. Without this
397
- // check, the test would pass, even though the bug shows up first in the
398
- // basic functionality of 'chain'.
390
+ // The bug https://github.com/shaka-project/shaka-player/issues/1260
391
+ // makes this expectation fail because some stages were skipped.
392
+ // Without this check, the test would pass, even though the bug shows
393
+ // up first in the basic functionality of 'chain'.
399
394
  expect(values).toEqual([100, 200, 300, 400, 500]);
400
395
  });
401
396
  await op.promise;
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.util.ArrayUtils');
8
-
9
7
  describe('ArrayUtils', () => {
10
8
  const ArrayUtils = shaka.util.ArrayUtils;
11
9