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,9 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.media.PresentationTimeline');
8
- goog.require('shaka.test.ManifestParser');
9
-
10
7
  describe('PresentationTimeline', () => {
11
8
  const originalDateNow = Date.now;
12
9
  const makeSegmentReference = (startTime, endTime) => {
@@ -183,7 +180,7 @@ describe('PresentationTimeline', () => {
183
180
 
184
181
  // In spite of the current time, the explicit segment times will decide
185
182
  // the availability window.
186
- // See https://github.com/google/shaka-player/issues/999
183
+ // See https://github.com/shaka-project/shaka-player/issues/999
187
184
  setElapsed(1000);
188
185
  timeline.notifySegments([ref1, ref2, ref3, ref4, ref5]);
189
186
 
@@ -283,7 +280,7 @@ describe('PresentationTimeline', () => {
283
280
 
284
281
  // In spite of the current time, the explicit segment times will decide
285
282
  // the availability window.
286
- // See https://github.com/google/shaka-player/issues/999
283
+ // See https://github.com/shaka-project/shaka-player/issues/999
287
284
  setElapsed(1000);
288
285
  timeline.notifySegments([ref1, ref2, ref3, ref4, ref5]);
289
286
 
@@ -396,12 +393,12 @@ describe('PresentationTimeline', () => {
396
393
  expect(timeline.getSafeSeekRangeStart(25)).toBe(5);
397
394
  });
398
395
 
399
- // Regression test for https://github.com/google/shaka-player/issues/2831
396
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/2831
400
397
  it('will round up to the nearest ms', () => {
401
398
  const timeline = makeVodTimeline(/* duration= */ 60);
402
399
  // Seeking to this exact number may result in seeking to slightly less
403
400
  // than that, due to rounding.
404
- timeline.setUserSeekStart(1.458666666666666666666666);
401
+ timeline.setUserSeekStart(1.458666666666666);
405
402
  // So the safe range start should be slightly higher, with fewer digits.
406
403
  expect(timeline.getSafeSeekRangeStart(0)).toBe(1.459);
407
404
  });
@@ -4,10 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.media.QualityObserver');
8
- goog.require('shaka.test.Util');
9
-
10
-
11
7
  describe('QualityObserver', () => {
12
8
  /** @type {!shaka.media.QualityObserver} */
13
9
  let observer;
@@ -4,11 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.media.RegionObserver');
8
- goog.require('shaka.media.RegionTimeline');
9
- goog.require('shaka.test.Util');
10
- goog.requireType('shaka.media.IPlayheadObserver');
11
-
12
7
  describe('RegionObserver', () => {
13
8
  /** @type {!shaka.media.RegionTimeline} */
14
9
  let timeline;
@@ -324,7 +319,7 @@ describe('RegionObserver', () => {
324
319
  expect(onSkipRegion).not.toHaveBeenCalled();
325
320
  });
326
321
 
327
- // See https://github.com/google/shaka-player/issues/3949
322
+ // See https://github.com/shaka-project/shaka-player/issues/3949
328
323
  it('cleans up references to regions', async () => {
329
324
  const region = createRegion('my-region', 0, 10);
330
325
  timeline.addRegion(region);
@@ -4,9 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.media.RegionTimeline');
8
- goog.require('shaka.test.Util');
9
-
10
7
  describe('RegionTimeline', () => {
11
8
  /** @type {!shaka.media.RegionTimeline} */
12
9
  let timeline;
@@ -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.media.MetaSegmentIndex');
9
- goog.require('shaka.media.SegmentIndex');
10
- goog.require('shaka.media.SegmentReference');
11
- goog.require('shaka.test.Util');
12
-
13
7
  describe('SegmentIndex', /** @suppress {accessControls} */ () => {
14
8
  const actual1 = makeReference(uri(0), 0, 10);
15
9
  const actual2 = makeReference(uri(20), 10, 20);
@@ -699,22 +693,6 @@ describe('SegmentIndex', /** @suppress {accessControls} */ () => {
699
693
  expect(iterator.current()).toBe(null);
700
694
  });
701
695
 
702
- describe('seek', () => {
703
- it('returns the matching segment', () => {
704
- const index = new shaka.media.SegmentIndex(inputRefs);
705
- const iterator = index[Symbol.iterator]();
706
- expect(iterator.seek(10)).toBe(inputRefs[1]);
707
- expect(iterator.current()).toBe(inputRefs[1]);
708
- });
709
-
710
- it('returns the matching segment with partial segments', () => {
711
- const index = new shaka.media.SegmentIndex(inputRefsWithPartial);
712
- const iterator = index[Symbol.iterator]();
713
- expect(iterator.seek(8)).toBe(inputRefsWithPartial[0]);
714
- expect(iterator.seek(10)).toBe(partialRefs1[0]);
715
- });
716
- });
717
-
718
696
  describe('next', () => {
719
697
  it('starts with the first segment', () => {
720
698
  const index = new shaka.media.SegmentIndex(inputRefs);
@@ -731,20 +709,20 @@ describe('SegmentIndex', /** @suppress {accessControls} */ () => {
731
709
  expect(iterator.next().value).toBe(null);
732
710
  });
733
711
 
734
- it('iterates forward after a seek', () => {
712
+ it('iterates from getIteratorForTime', () => {
735
713
  const index = new shaka.media.SegmentIndex(inputRefs);
736
- const iterator = index[Symbol.iterator]();
737
- expect(iterator.seek(10)).toBe(inputRefs[1]);
714
+ const iterator = index.getIteratorForTime(10);
715
+ expect(iterator.next().value).toBe(inputRefs[1]);
738
716
  expect(iterator.current()).toBe(inputRefs[1]);
739
717
  expect(iterator.next().value).toBe(inputRefs[2]);
740
718
  expect(iterator.current()).toBe(inputRefs[2]);
741
719
  expect(iterator.next().value).toBe(null);
742
720
  });
743
721
 
744
- it('iterates forward after a seek with partial segments', () => {
722
+ it('iterates from getIteratorForTime with partial segments', () => {
745
723
  const index = new shaka.media.SegmentIndex(inputRefsWithPartial);
746
- const iterator = index[Symbol.iterator]();
747
- expect(iterator.seek(10)).toBe(partialRefs1[0]);
724
+ const iterator = index.getIteratorForTime(10);
725
+ expect(iterator.next().value).toBe(partialRefs1[0]);
748
726
  expect(iterator.current()).toBe(partialRefs1[0]);
749
727
  expect(iterator.next().value).toBe(partialRefs1[1]);
750
728
  expect(iterator.current()).toBe(partialRefs1[1]);
@@ -941,11 +919,17 @@ describe('SegmentIndex', /** @suppress {accessControls} */ () => {
941
919
  expect(Array.from(metaIndex)).toEqual(oldRefs);
942
920
 
943
921
  // Every 0.1 seconds, return the next new ref.
944
- index1.updateEvery(0.1, () => {
945
- return [newRefs.shift()];
922
+ const done = new Promise((resolve, reject) => {
923
+ index1.updateEvery(0.1, () => {
924
+ if (newRefs.length == 0) {
925
+ resolve();
926
+ }
927
+ return [newRefs.shift()];
928
+ });
946
929
  });
947
930
  // Wait long enough for all three new refs to be appended.
948
- await shaka.test.Util.delay(0.5);
931
+ // Or for all of the new refs to be passed out.
932
+ await Promise.race([shaka.test.Util.delay(1), done]);
949
933
 
950
934
  expect(Array.from(metaIndex)).toEqual(oldRefs.concat(inputRefs2));
951
935
  });
@@ -4,9 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.media.InitSegmentReference');
8
- goog.require('shaka.media.SegmentReference');
9
-
10
7
  describe('SegmentReference', () => {
11
8
  it('returns in getters values from constructor parameters', () => {
12
9
  const initSegmentReference = new shaka.media.InitSegmentReference(
@@ -4,11 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
-
8
- goog.require('shaka.media.StallDetector');
9
- goog.require('shaka.media.StallDetector.Implementation');
10
- goog.require('shaka.test.Util');
11
-
12
7
  describe('StallDetector', () => {
13
8
  /**
14
9
  * @implements {shaka.media.StallDetector.Implementation}
@@ -4,31 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.media.InitSegmentReference');
8
- goog.require('shaka.media.MediaSourceEngine');
9
- goog.require('shaka.media.MediaSourcePlayhead');
10
- goog.require('shaka.media.SegmentIndex');
11
- goog.require('shaka.media.SegmentReference');
12
- goog.require('shaka.media.StreamingEngine');
13
- goog.require('shaka.net.NetworkingEngine');
14
- goog.require('shaka.test.FakeClosedCaptionParser');
15
- goog.require('shaka.test.FakeTextDisplayer');
16
- goog.require('shaka.test.Mp4LiveStreamGenerator');
17
- goog.require('shaka.test.Mp4VodStreamGenerator');
18
- goog.require('shaka.test.StreamingEngineUtil');
19
- goog.require('shaka.test.TestScheme');
20
- goog.require('shaka.test.UiUtils');
21
- goog.require('shaka.test.Util');
22
- goog.require('shaka.test.Waiter');
23
- goog.require('shaka.util.EventManager');
24
- goog.require('shaka.util.ManifestParserUtils');
25
- goog.require('shaka.util.Platform');
26
- goog.require('shaka.util.PlayerConfiguration');
27
- goog.requireType('shaka.media.Playhead');
28
- goog.requireType('shaka.media.PresentationTimeline');
29
- goog.requireType('shaka.test.FakeNetworkingEngine');
30
- goog.requireType('shaka.test.FakePresentationTimeline');
31
-
32
7
  describe('StreamingEngine', () => {
33
8
  const ContentType = shaka.util.ManifestParserUtils.ContentType;
34
9
  const Util = shaka.test.Util;
@@ -93,6 +68,7 @@ describe('StreamingEngine', () => {
93
68
  video,
94
69
  new shaka.test.FakeClosedCaptionParser(),
95
70
  new shaka.test.FakeTextDisplayer());
71
+ waiter.setMediaSourceEngine(mediaSourceEngine);
96
72
  });
97
73
 
98
74
  afterEach(async () => {
@@ -238,8 +214,7 @@ describe('StreamingEngine', () => {
238
214
  manifest,
239
215
  config,
240
216
  /* startTime= */ null,
241
- onSeek,
242
- shaka.test.Util.spyFunc(onEvent));
217
+ onSeek);
243
218
  }
244
219
 
245
220
  function setupManifest(
@@ -287,7 +262,11 @@ describe('StreamingEngine', () => {
287
262
  streamingEngine.switchVariant(variant);
288
263
  await streamingEngine.start();
289
264
  video.play();
290
- await waiter.timeoutAfter(90).waitForEnd(video);
265
+ // The overall test timeout is 120 seconds, and the content is 60
266
+ // seconds. It should be possible to complete this test in 100 seconds,
267
+ // and if not, we want the error thrown to be within the overall test's
268
+ // timeout window.
269
+ await waiter.timeoutAfter(100).waitForEnd(video);
291
270
  });
292
271
 
293
272
  it('plays at high playback rates', async () => {
@@ -308,14 +287,7 @@ describe('StreamingEngine', () => {
308
287
  await waiter.timeoutAfter(10).waitForMovement(video);
309
288
  video.playbackRate = 10;
310
289
 
311
- // Something weird happens on some platforms (variously Chromecast, legacy
312
- // Edge, and Safari) where the playhead can go past duration.
313
- // To cope with this, don't fail on timeout. If the video never got
314
- // flagged as "ended", check for the playhead to be near or past the end.
315
- await waiter.timeoutAfter(30).failOnTimeout(false).waitForEnd(video);
316
- if (!video.ended) {
317
- expect(video.currentTime).toBeGreaterThan(video.duration - 0.1);
318
- }
290
+ await waiter.timeoutAfter(30).waitForEnd(video);
319
291
  });
320
292
 
321
293
  it('can handle buffered seeks', async () => {
@@ -325,9 +297,9 @@ describe('StreamingEngine', () => {
325
297
  video.play();
326
298
 
327
299
  // After 35 seconds seek back 10 seconds into the first Period.
328
- await waiter.timeoutAfter(60).waitUntilPlayheadReaches(video, 35);
300
+ await waiter.timeoutAfter(80).waitUntilPlayheadReaches(video, 35);
329
301
  video.currentTime = 25;
330
- await waiter.timeoutAfter(60).waitForEnd(video);
302
+ await waiter.timeoutAfter(80).waitForEnd(video);
331
303
  });
332
304
 
333
305
  it('can handle unbuffered seeks', async () => {
@@ -430,7 +402,6 @@ describe('StreamingEngine', () => {
430
402
  // TODO: Consider also adding tests for missing frames.
431
403
  describe('gap jumping', () => {
432
404
  it('jumps small gaps at the beginning', async () => {
433
- config.smallGapLimit = 5;
434
405
  await setupGappyContent(/* gapAtStart= */ 1, /* dropSegment= */ false);
435
406
 
436
407
  // Let's go!
@@ -446,8 +417,6 @@ describe('StreamingEngine', () => {
446
417
  });
447
418
 
448
419
  it('jumps large gaps at the beginning', async () => {
449
- config.smallGapLimit = 1;
450
- config.jumpLargeGaps = true;
451
420
  await setupGappyContent(/* gapAtStart= */ 5, /* dropSegment= */ false);
452
421
 
453
422
  // Let's go!
@@ -463,7 +432,6 @@ describe('StreamingEngine', () => {
463
432
  });
464
433
 
465
434
  it('jumps small gaps in the middle', async () => {
466
- config.smallGapLimit = 20;
467
435
  await setupGappyContent(/* gapAtStart= */ 0, /* dropSegment= */ true);
468
436
 
469
437
  // Let's go!
@@ -478,11 +446,9 @@ describe('StreamingEngine', () => {
478
446
  await waiter.timeoutAfter(60).waitUntilPlayheadReaches(video, 23);
479
447
  // Should be close enough to still have the gap buffered.
480
448
  expect(video.buffered.length).toBe(2);
481
- expect(onEvent).not.toHaveBeenCalled();
482
449
  });
483
450
 
484
451
  it('jumps large gaps in the middle', async () => {
485
- config.jumpLargeGaps = true;
486
452
  await setupGappyContent(/* gapAtStart= */ 0, /* dropSegment= */ true);
487
453
 
488
454
  // Let's go!
@@ -497,37 +463,6 @@ describe('StreamingEngine', () => {
497
463
  await waiter.timeoutAfter(60).waitUntilPlayheadReaches(video, 23);
498
464
  // Should be close enough to still have the gap buffered.
499
465
  expect(video.buffered.length).toBe(2);
500
- expect(onEvent).toHaveBeenCalled();
501
- });
502
-
503
- it('won\'t jump large gaps with preventDefault()', async () => {
504
- config.jumpLargeGaps = true;
505
- await setupGappyContent(/* gapAtStart= */ 0, /* dropSegment= */ true);
506
-
507
- onEvent.and.callFake((event) => {
508
- event.preventDefault();
509
- });
510
-
511
- // Let's go!
512
- streamingEngine.switchVariant(variant);
513
- await streamingEngine.start();
514
-
515
- await waiter.timeoutAfter(5).waitForEvent(video, 'loadeddata');
516
-
517
- let seekCount = 0;
518
- eventManager.listen(video, 'seeking', () => {
519
- seekCount++;
520
- });
521
-
522
- video.currentTime = 8;
523
- video.play();
524
-
525
- await shaka.test.Util.delay(5);
526
-
527
- // Edge somehow plays _into_ the gap, and Xbox One plays _through_ the
528
- // gap. Just make sure _we_ don't jump the gap by seeking. One seek is
529
- // required to start playback at time 8.
530
- expect(seekCount).toBe(1);
531
466
  });
532
467
 
533
468
  /**
@@ -637,6 +572,7 @@ describe('StreamingEngine', () => {
637
572
  minBufferTime: 2,
638
573
  textStreams: [],
639
574
  imageStreams: [],
575
+ sequenceMode: false,
640
576
  variants: [{
641
577
  id: 1,
642
578
  video: {
@@ -649,6 +585,7 @@ describe('StreamingEngine', () => {
649
585
  width: 600,
650
586
  height: 400,
651
587
  type: shaka.util.ManifestParserUtils.ContentType.VIDEO,
588
+ drmInfos: [],
652
589
  },
653
590
  audio: {
654
591
  id: 3,
@@ -658,6 +595,7 @@ describe('StreamingEngine', () => {
658
595
  codecs: 'mp4a.40.2',
659
596
  bandwidth: 192000,
660
597
  type: shaka.util.ManifestParserUtils.ContentType.AUDIO,
598
+ drmInfos: [],
661
599
  },
662
600
  }],
663
601
  };
@@ -4,30 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('goog.asserts');
8
- goog.require('shaka.log');
9
- goog.require('shaka.media.InitSegmentReference');
10
- goog.require('shaka.media.SegmentReference');
11
- goog.require('shaka.media.StreamingEngine');
12
- goog.require('shaka.net.NetworkingEngine');
13
- goog.require('shaka.net.NetworkingEngine.PendingRequest');
14
- goog.require('shaka.test.FakeNetworkingEngine');
15
- goog.require('shaka.test.FakeMediaSourceEngine');
16
- goog.require('shaka.test.ManifestGenerator');
17
- goog.require('shaka.test.StreamingEngineUtil');
18
- goog.require('shaka.test.Util');
19
- goog.require('shaka.util.AbortableOperation');
20
- goog.require('shaka.util.Error');
21
- goog.require('shaka.util.Iterables');
22
- goog.require('shaka.util.ManifestParserUtils');
23
- goog.require('shaka.util.MimeUtils');
24
- goog.require('shaka.util.PlayerConfiguration');
25
- goog.require('shaka.util.PublicPromise');
26
- goog.require('shaka.util.Uint8ArrayUtils');
27
- goog.requireType('shaka.media.PresentationTimeline');
28
- goog.requireType('shaka.test.FakeNetworkingEngine');
29
- goog.requireType('shaka.test.FakePresentationTimeline');
30
-
31
7
  describe('StreamingEngine', () => {
32
8
  const Util = shaka.test.Util;
33
9
  const ContentType = shaka.util.ManifestParserUtils.ContentType;
@@ -284,7 +260,7 @@ describe('StreamingEngine', () => {
284
260
  };
285
261
 
286
262
  const segmentsInFirstPeriod = 12;
287
- for (const i of shaka.util.Iterables.range(segmentsInFirstPeriod)) {
263
+ for (let i = 0; i < segmentsInFirstPeriod; i++) {
288
264
  segmentData[ContentType.AUDIO].segments.push(
289
265
  makeBuffer(segmentSizes[ContentType.AUDIO]));
290
266
  segmentData[ContentType.VIDEO].segments.push(
@@ -298,7 +274,7 @@ describe('StreamingEngine', () => {
298
274
  }
299
275
 
300
276
  const segmentsInSecondPeriod = 2;
301
- for (const i of shaka.util.Iterables.range(segmentsInSecondPeriod)) {
277
+ for (let i = 0; i < segmentsInSecondPeriod; i++) {
302
278
  segmentData[ContentType.AUDIO].segments.push(
303
279
  makeBuffer(segmentSizes[ContentType.AUDIO]));
304
280
  segmentData[ContentType.VIDEO].segments.push(
@@ -520,7 +496,8 @@ describe('StreamingEngine', () => {
520
496
  expectedMseInit.set(ContentType.VIDEO, videoStream);
521
497
  expectedMseInit.set(ContentType.TEXT, textStream);
522
498
 
523
- expect(mediaSourceEngine.init).toHaveBeenCalledWith(expectedMseInit, false);
499
+ expect(mediaSourceEngine.init).toHaveBeenCalledWith(expectedMseInit,
500
+ /** forceTransmuxTS= */ false, /** sequenceMode= */ false);
524
501
  expect(mediaSourceEngine.init).toHaveBeenCalledTimes(1);
525
502
 
526
503
  expect(mediaSourceEngine.setDuration).toHaveBeenCalledTimes(1);
@@ -651,7 +628,7 @@ describe('StreamingEngine', () => {
651
628
  // should be buffered. Those segment numbers are 1-based, and this array
652
629
  // is 0-based, so we expect i >= 9 to be downloaded.
653
630
  const segments = mediaSourceEngine.segments;
654
- for (const i of shaka.util.Iterables.range(14)) {
631
+ for (let i = 0; i < 14; i++) {
655
632
  expect(segments[ContentType.AUDIO][i]).withContext(i).toBe(i >= 9);
656
633
  expect(segments[ContentType.VIDEO][i]).withContext(i).toBe(i >= 9);
657
634
  expect(segments[ContentType.TEXT][i]).withContext(i).toBe(i >= 9);
@@ -757,7 +734,7 @@ describe('StreamingEngine', () => {
757
734
  expect(timeline.setDuration).toHaveBeenCalledWith(35);
758
735
  });
759
736
 
760
- // https://github.com/google/shaka-player/issues/979
737
+ // https://github.com/shaka-project/shaka-player/issues/979
761
738
  it('does not expand the timeline duration', async () => {
762
739
  setupVod();
763
740
  mediaSourceEngine = new shaka.test.FakeMediaSourceEngine(segmentData);
@@ -783,7 +760,7 @@ describe('StreamingEngine', () => {
783
760
  expect(timeline.setDuration).not.toHaveBeenCalled();
784
761
  });
785
762
 
786
- // https://github.com/google/shaka-player/issues/1967
763
+ // https://github.com/shaka-project/shaka-player/issues/1967
787
764
  it('does not change duration when 0', async () => {
788
765
  setupVod();
789
766
  mediaSourceEngine = new shaka.test.FakeMediaSourceEngine(segmentData);
@@ -825,10 +802,10 @@ describe('StreamingEngine', () => {
825
802
  asymmetricMatch: (val) => val > 40 && val <= 40.1,
826
803
  };
827
804
  expect(mediaSourceEngine.setStreamProperties)
828
- .toHaveBeenCalledWith('video', 0, lt20, gt40);
805
+ .toHaveBeenCalledWith('video', 0, lt20, gt40, false);
829
806
  });
830
807
 
831
- // Regression test for https://github.com/google/shaka-player/issues/3717
808
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/3717
832
809
  it('applies fudge factors for the duration', async () => {
833
810
  setupVod();
834
811
 
@@ -931,7 +908,7 @@ describe('StreamingEngine', () => {
931
908
  expect(mediaSourceEngine.appendBuffer).toHaveBeenCalled();
932
909
  });
933
910
 
934
- // https://github.com/google/shaka-player/issues/2957
911
+ // https://github.com/shaka-project/shaka-player/issues/2957
935
912
  it('plays with fewer text segments', async () => {
936
913
  setupVod();
937
914
 
@@ -1093,7 +1070,7 @@ describe('StreamingEngine', () => {
1093
1070
  expect(mediaSourceEngine.resetCaptionParser).not.toHaveBeenCalled();
1094
1071
  });
1095
1072
 
1096
- // See https://github.com/google/shaka-player/issues/2956
1073
+ // See https://github.com/shaka-project/shaka-player/issues/2956
1097
1074
  it('works with fast variant switches during update', async () => {
1098
1075
  // Delay the appendBuffer call until later so we are waiting for this to
1099
1076
  // finish when we switch.
@@ -1661,7 +1638,7 @@ describe('StreamingEngine', () => {
1661
1638
  });
1662
1639
  });
1663
1640
 
1664
- // https://github.com/google/shaka-player/issues/2670
1641
+ // https://github.com/shaka-project/shaka-player/issues/2670
1665
1642
  it('rapid unbuffered seeks', async () => {
1666
1643
  // This test simulates rapid dragging of the seek bar, as in #2670.
1667
1644
  // In that issue, we would buffer the wrong segments due to a race
@@ -1800,7 +1777,7 @@ describe('StreamingEngine', () => {
1800
1777
 
1801
1778
  // Since we performed an unbuffered seek into the second Period, the
1802
1779
  // first 12 segments should not be buffered.
1803
- for (const i of shaka.util.Iterables.range(14)) {
1780
+ for (let i = 0; i < 14; i++) {
1804
1781
  expect(mediaSourceEngine.segments[ContentType.AUDIO][i]).toBe(i >= 12);
1805
1782
  expect(mediaSourceEngine.segments[ContentType.VIDEO][i]).toBe(i >= 12);
1806
1783
  expect(mediaSourceEngine.segments[ContentType.TEXT][i]).toBe(i >= 12);
@@ -2602,7 +2579,7 @@ describe('StreamingEngine', () => {
2602
2579
  // should be buffered. Those segment numbers are 1-based, and this array
2603
2580
  // is 0-based, so we expect i >= 9 to be downloaded.
2604
2581
  const segments = mediaSourceEngine.segments;
2605
- for (const i of shaka.util.Iterables.range(14)) {
2582
+ for (let i = 0; i < 14; i++) {
2606
2583
  expect(segments[ContentType.AUDIO][i]).withContext(i).toBe(i >= 9);
2607
2584
  expect(segments[ContentType.VIDEO][i]).withContext(i).toBe(i >= 9);
2608
2585
  expect(segments[ContentType.TEXT][i]).withContext(i).toBe(i >= 9);
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.media.TimeRangesUtils');
8
-
9
7
  describe('TimeRangesUtils', () => {
10
8
  const TimeRangesUtils = shaka.media.TimeRangesUtils;
11
9
 
@@ -24,11 +22,6 @@ describe('TimeRangesUtils', () => {
24
22
  expect(TimeRangesUtils.isBuffered(b, 13)).toBe(true);
25
23
  });
26
24
 
27
- it('returns buffered when having a small gap', () => {
28
- const b = createFakeBuffered([{start: 10, end: 20}]);
29
- expect(TimeRangesUtils.isBuffered(b, 9, 1)).toBe(true);
30
- });
31
-
32
25
  // Ranges: [10-20], [30-40], [50-60]
33
26
  defineTest('returns false when before range', {time: 3, expected: false});
34
27
  defineTest('returns true inside first range', {time: 12, expected: true});
@@ -3,12 +3,6 @@
3
3
  * Copyright 2016 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- goog.require('goog.asserts');
7
- goog.require('shaka.media.Transmuxer');
8
- goog.require('shaka.test.Util');
9
- goog.require('shaka.util.ManifestParserUtils');
10
- goog.require('shaka.util.Mp4BoxParsers');
11
- goog.require('shaka.util.Mp4Parser');
12
6
 
13
7
  describe('Transmuxer', () => {
14
8
  const ContentType = shaka.util.ManifestParserUtils.ContentType;
@@ -4,10 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.media.WebmSegmentIndexParser');
8
- goog.require('shaka.test.Util');
9
- goog.require('shaka.util.Error');
10
-
11
7
  describe('WebmSegmentIndexParser', () => {
12
8
  const indexSegmentUri = '/base/test/test/assets/index-segment.webm';
13
9
  const initSegmentUri = '/base/test/test/assets/init-segment.webm';
@@ -4,13 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.net.DataUriPlugin');
8
- goog.require('shaka.net.NetworkingEngine');
9
- goog.require('shaka.net.NetworkingEngine.RequestType');
10
- goog.require('shaka.test.Util');
11
- goog.require('shaka.util.Error');
12
- goog.require('shaka.util.StringUtils');
13
-
14
7
  describe('DataUriPlugin', () => {
15
8
  const retryParameters = shaka.net.NetworkingEngine.defaultRetryParameters();
16
9
 
@@ -4,15 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
-
8
- goog.require('shaka.net.HttpFetchPlugin');
9
- goog.require('shaka.net.HttpXHRPlugin');
10
- goog.require('shaka.net.NetworkingEngine');
11
- goog.require('shaka.net.NetworkingEngine.RequestType');
12
- goog.require('shaka.test.Util');
13
- goog.require('shaka.util.BufferUtils');
14
- goog.require('shaka.util.Error');
15
-
16
7
  /**
17
8
  * Add a set of http plugin tests, for the given scheme plugin.
18
9
  *
@@ -4,17 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.net.Backoff');
8
- goog.require('shaka.net.NetworkingEngine');
9
- goog.require('shaka.net.NetworkingEngine.RequestType');
10
- goog.require('shaka.test.StatusPromise');
11
- goog.require('shaka.test.Util');
12
- goog.require('shaka.util.AbortableOperation');
13
- goog.require('shaka.util.Error');
14
- goog.require('shaka.util.Networking');
15
- goog.require('shaka.util.PublicPromise');
16
- goog.requireType('shaka.net.NetworkingEngine.PendingRequest');
17
-
18
7
  describe('NetworkingEngine', /** @suppress {accessControls} */ () => {
19
8
  const StatusPromise = shaka.test.StatusPromise;
20
9
  const Util = shaka.test.Util;
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.offline.DownloadProgressEstimator');
8
-
9
7
  describe('DownloadProgressEstimator', () => {
10
8
  /** @type {!shaka.offline.DownloadProgressEstimator} */
11
9
  let estimator;
@@ -4,12 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.offline.indexeddb.V5StorageCell');
8
- goog.require('shaka.test.IndexedDBUtils');
9
- goog.require('shaka.test.OfflineUtils');
10
- goog.require('shaka.test.Util');
11
- goog.require('shaka.util.Error');
12
-
13
7
  filterDescribe('IndexeddbStorageCell', () => window.indexedDB, () => {
14
8
  const IndexedDBUtils = shaka.test.IndexedDBUtils;
15
9
  const OfflineUtils = shaka.test.OfflineUtils;