shaka-player 3.3.0 → 3.3.3

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 (344) 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 +130 -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 +29 -0
  8. package/.github/workflows/nightly-demo.yaml +42 -0
  9. package/.github/workflows/release-please.yaml +145 -0
  10. package/.github/workflows/safari-homedir-launcher.sh +18 -0
  11. package/.github/workflows/selenium-lab-tests.yaml +93 -0
  12. package/AUTHORS +2 -0
  13. package/CHANGELOG.md +1722 -1640
  14. package/CONTRIBUTING.md +2 -2
  15. package/CONTRIBUTORS +2 -0
  16. package/README.md +7 -7
  17. package/app-engine/README.md +9 -0
  18. package/app-engine/demo-version-index/README.md +14 -0
  19. package/app-engine/demo-version-index/app.yaml +2 -0
  20. package/app-engine/demo-version-index/main.py +162 -0
  21. package/app-engine/demo-version-index/requirements.txt +6 -0
  22. package/app-engine/demo-version-index/templates/index.html +114 -0
  23. package/app-engine/shaka-player-demo/README.md +18 -0
  24. package/app-engine/shaka-player-demo/app.yaml +61 -0
  25. package/app-engine/shaka-player-demo/main.py +95 -0
  26. package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
  27. package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
  28. package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
  29. package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
  30. package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
  31. package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
  32. package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
  33. package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
  34. package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
  35. package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
  36. package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
  37. package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
  38. package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
  39. package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
  40. package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
  41. package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
  42. package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
  43. package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
  44. package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
  45. package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
  46. package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
  47. package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
  48. package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
  49. package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
  50. package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
  51. package/app-engine/shaka-player-demo/posters/standard.png +0 -0
  52. package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
  53. package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
  54. package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
  55. package/app-engine/shaka-player-demo/posters.py +110 -0
  56. package/app-engine/shaka-player-demo/requirements.txt +5 -0
  57. package/app-engine/shaka-player-demo/time.txt +1 -0
  58. package/build/README.md +1 -1
  59. package/build/checkversion.py +1 -1
  60. package/build/conformance.textproto +196 -169
  61. package/build/docker/Dockerfile +20 -0
  62. package/build/docker/docker-compose.yml +10 -0
  63. package/build/gendeps.py +18 -15
  64. package/build/shaka-lab.yaml +163 -0
  65. package/build/shakaBuildHelpers.py +4 -29
  66. package/build/test.py +93 -28
  67. package/build/types/polyfill +1 -0
  68. package/build/wrapper.template.js +2 -2
  69. package/demo/TengwarTelcontar.woff2 +0 -0
  70. package/demo/asset_card.js +1 -2
  71. package/demo/cast_receiver/index.html +1 -1
  72. package/demo/cast_receiver/receiver_app.css +14 -14
  73. package/demo/common/assets.js +2 -0
  74. package/demo/config.js +0 -1
  75. package/demo/custom.js +0 -1
  76. package/demo/customWarning.txt +2 -2
  77. package/demo/demo.less +29 -18
  78. package/demo/demo_uncompiled.js +1 -13
  79. package/demo/index.html +1 -1
  80. package/demo/main.js +3 -3
  81. package/dist/controls.css +3 -3
  82. package/dist/controls.css.map +1 -1
  83. package/dist/demo.compiled.debug.js +191 -194
  84. package/dist/demo.compiled.debug.map +4 -4
  85. package/dist/demo.compiled.js +191 -194
  86. package/dist/demo.compiled.map +4 -4
  87. package/dist/demo.css +1 -1
  88. package/dist/demo.css.map +1 -1
  89. package/dist/deps.js +233 -226
  90. package/dist/locales.js +30 -30
  91. package/dist/receiver.compiled.debug.js +43 -45
  92. package/dist/receiver.compiled.debug.map +4 -4
  93. package/dist/receiver.compiled.js +43 -45
  94. package/dist/receiver.compiled.map +4 -4
  95. package/dist/shaka-player.compiled.d.ts +272 -238
  96. package/dist/shaka-player.compiled.debug.d.ts +272 -238
  97. package/dist/shaka-player.compiled.debug.externs.js +53 -16
  98. package/dist/shaka-player.compiled.debug.js +393 -394
  99. package/dist/shaka-player.compiled.debug.map +4 -4
  100. package/dist/shaka-player.compiled.externs.js +53 -16
  101. package/dist/shaka-player.compiled.js +840 -843
  102. package/dist/shaka-player.compiled.map +4 -4
  103. package/dist/shaka-player.ui.d.ts +318 -293
  104. package/dist/shaka-player.ui.debug.d.ts +318 -293
  105. package/dist/shaka-player.ui.debug.externs.js +55 -27
  106. package/dist/shaka-player.ui.debug.js +415 -417
  107. package/dist/shaka-player.ui.debug.map +4 -4
  108. package/dist/shaka-player.ui.externs.js +55 -27
  109. package/dist/shaka-player.ui.js +997 -1000
  110. package/dist/shaka-player.ui.map +4 -4
  111. package/docs/design/REDESIGN.md +33 -33
  112. package/docs/design/bg-fetch.md +2 -2
  113. package/docs/design/codec_preferences.md +1 -1
  114. package/docs/design/dash-audio-channels.md +3 -3
  115. package/docs/design/dash-manifests.md +1 -1
  116. package/docs/design/gap-jumping.md +3 -3
  117. package/docs/design/preload.md +2 -2
  118. package/docs/tutorials/faq.md +8 -8
  119. package/docs/tutorials/index.json +1 -0
  120. package/docs/tutorials/plugins.md +3 -3
  121. package/docs/tutorials/selenium-grid-config.md +122 -0
  122. package/docs/tutorials/welcome.md +10 -2
  123. package/externs/cmcd.js +186 -0
  124. package/externs/shaka/player.js +8 -0
  125. package/externs/shaka/text.js +10 -0
  126. package/karma.conf.js +156 -45
  127. package/lib/abr/simple_abr_manager.js +12 -6
  128. package/lib/ads/ad_manager.js +1 -0
  129. package/lib/cast/cast_proxy.js +6 -4
  130. package/lib/cast/cast_receiver.js +3 -0
  131. package/lib/cea/cea608_data_channel.js +2 -2
  132. package/lib/cea/cea708_service.js +5 -4
  133. package/lib/cea/mp4_cea_parser.js +11 -5
  134. package/lib/cea/sei_processor.js +6 -3
  135. package/lib/dash/dash_parser.js +40 -30
  136. package/lib/dash/mpd_utils.js +4 -5
  137. package/lib/dash/segment_list.js +1 -2
  138. package/lib/dash/segment_template.js +3 -3
  139. package/lib/hls/hls_parser.js +41 -9
  140. package/lib/hls/manifest_text_parser.js +4 -3
  141. package/lib/media/adaptation_set.js +1 -2
  142. package/lib/media/content_workarounds.js +2 -2
  143. package/lib/media/drm_engine.js +3 -2
  144. package/lib/media/media_source_engine.js +3 -2
  145. package/lib/media/mp4_segment_index_parser.js +1 -4
  146. package/lib/media/playhead.js +2 -2
  147. package/lib/media/presentation_timeline.js +18 -8
  148. package/lib/media/quality_observer.js +17 -34
  149. package/lib/media/region_observer.js +39 -33
  150. package/lib/media/region_timeline.js +17 -19
  151. package/lib/media/segment_index.js +2 -1
  152. package/lib/media/segment_reference.js +19 -1
  153. package/lib/media/streaming_engine.js +12 -9
  154. package/lib/media/time_ranges_utils.js +1 -3
  155. package/lib/media/video_wrapper.js +1 -1
  156. package/lib/net/networking_engine.js +5 -1
  157. package/lib/offline/storage.js +12 -13
  158. package/lib/player.js +87 -41
  159. package/lib/polyfill/all.js +2 -3
  160. package/lib/polyfill/encryption_scheme.js +1 -1
  161. package/lib/polyfill/media_capabilities.js +32 -17
  162. package/lib/polyfill/mediasource.js +1 -1
  163. package/lib/polyfill/symbol.js +46 -0
  164. package/lib/text/cue.js +7 -1
  165. package/lib/text/simple_text_displayer.js +2 -1
  166. package/lib/text/ttml_text_parser.js +92 -63
  167. package/lib/text/ui_text_displayer.js +18 -12
  168. package/lib/util/buffer_utils.js +1 -3
  169. package/lib/util/cmcd_manager.js +47 -201
  170. package/lib/util/ebml_parser.js +3 -3
  171. package/lib/util/error.js +1 -1
  172. package/lib/util/fake_event_target.js +21 -1
  173. package/lib/util/iterables.js +0 -46
  174. package/lib/util/mp4_box_parsers.js +1 -4
  175. package/lib/util/mp4_parser.js +5 -7
  176. package/lib/util/periods.js +10 -11
  177. package/lib/util/platform.js +3 -3
  178. package/lib/util/pssh.js +1 -4
  179. package/lib/util/stream_utils.js +88 -11
  180. package/lib/util/string_utils.js +3 -5
  181. package/lib/util/uint8array_utils.js +3 -5
  182. package/lib/util/xml_utils.js +34 -7
  183. package/package.json +62 -40
  184. package/roadmap.md +17 -17
  185. package/shaka-player.uncompiled.js +1 -0
  186. package/test/abr/simple_abr_manager_unit.js +3 -8
  187. package/test/ads/ad_manager_unit.js +0 -6
  188. package/test/cast/cast_proxy_unit.js +0 -8
  189. package/test/cast/cast_receiver_integration.js +1 -18
  190. package/test/cast/cast_receiver_unit.js +1 -9
  191. package/test/cast/cast_sender_unit.js +0 -6
  192. package/test/cast/cast_utils_unit.js +0 -13
  193. package/test/cea/cea608_memory_unit.js +0 -5
  194. package/test/cea/cea708_service_unit.js +0 -7
  195. package/test/cea/cea708_window_unit.js +0 -5
  196. package/test/cea/cea_decoder_unit.js +0 -6
  197. package/test/cea/dtvcc_packet_builder_unit.js +0 -3
  198. package/test/cea/dtvcc_packet_unit.js +0 -5
  199. package/test/cea/mp4_cea_parser_unit.js +0 -4
  200. package/test/dash/dash_parser_content_protection_unit.js +1 -10
  201. package/test/dash/dash_parser_live_unit.js +45 -15
  202. package/test/dash/dash_parser_manifest_unit.js +4 -17
  203. package/test/dash/dash_parser_segment_base_unit.js +1 -8
  204. package/test/dash/dash_parser_segment_list_unit.js +1 -7
  205. package/test/dash/dash_parser_segment_template_unit.js +0 -9
  206. package/test/dash/mpd_utils_unit.js +3 -11
  207. package/test/demo/demo_unit.js +0 -5
  208. package/test/deprecate/enforcer_unit.js +0 -4
  209. package/test/deprecate/version_unit.js +0 -2
  210. package/test/hls/hls_live_unit.js +2 -14
  211. package/test/hls/hls_parser_unit.js +76 -15
  212. package/test/hls/manifest_text_parser_unit.js +0 -10
  213. package/test/media/adaptation_set_criteria_unit.js +3 -7
  214. package/test/media/adaptation_set_unit.js +0 -2
  215. package/test/media/buffering_observer_unit.js +1 -4
  216. package/test/media/closed_caption_parser_unit.js +0 -3
  217. package/test/media/drm_engine_integration.js +2 -15
  218. package/test/media/drm_engine_unit.js +7 -27
  219. package/test/media/manifest_parser_unit.js +0 -4
  220. package/test/media/media_source_engine_integration.js +0 -7
  221. package/test/media/media_source_engine_unit.js +1 -14
  222. package/test/media/mp4_segment_index_parser_unit.js +0 -4
  223. package/test/media/play_rate_controller_unit.js +0 -4
  224. package/test/media/playhead_unit.js +8 -16
  225. package/test/media/presentation_timeline_unit.js +4 -7
  226. package/test/media/quality_observer_unit.js +4 -5
  227. package/test/media/region_observer_unit.js +40 -10
  228. package/test/media/region_timeline_unit.js +40 -25
  229. package/test/media/segment_index_unit.js +0 -6
  230. package/test/media/segment_reference_unit.js +0 -3
  231. package/test/media/stall_detector_unit.js +0 -5
  232. package/test/media/streaming_engine_integration.js +11 -37
  233. package/test/media/streaming_engine_unit.js +155 -34
  234. package/test/media/time_ranges_utils_unit.js +0 -2
  235. package/test/media/transmuxer_integration.js +0 -6
  236. package/test/media/webm_segment_index_parser_unit.js +0 -4
  237. package/test/net/data_uri_plugin_unit.js +0 -7
  238. package/test/net/http_plugin_unit.js +0 -9
  239. package/test/net/networking_engine_unit.js +0 -11
  240. package/test/offline/download_progress_estimator_unit.js +0 -2
  241. package/test/offline/indexeddb_storage_unit.js +0 -6
  242. package/test/offline/manifest_convert_unit.js +0 -8
  243. package/test/offline/offline_integration.js +1 -10
  244. package/test/offline/offline_manifest_parser_unit.js +0 -6
  245. package/test/offline/offline_scheme_unit.js +0 -8
  246. package/test/offline/offline_uri_unit.js +0 -2
  247. package/test/offline/storage_compatibility_unit.js +1 -14
  248. package/test/offline/storage_integration.js +1 -27
  249. package/test/player_external.js +2 -10
  250. package/test/player_integration.js +63 -36
  251. package/test/player_load_graph_integration.js +1 -6
  252. package/test/player_src_equals_external.js +3 -9
  253. package/test/player_src_equals_integration.js +41 -15
  254. package/test/player_unit.js +71 -46
  255. package/test/routing/walker_unit.js +0 -8
  256. package/test/test/assets/chapters.vtt +2 -2
  257. package/test/test/assets/chapters2.vtt +10 -0
  258. package/test/test/assets/large_file.mpd +1 -1
  259. package/test/test/boot.js +75 -22
  260. package/test/test/externs/jasmine.js +2 -2
  261. package/test/test/externs/karma.js +4 -0
  262. package/test/test/namespace.js +10 -0
  263. package/test/test/util/canned_idb.js +0 -8
  264. package/test/test/util/cea_utils.js +0 -6
  265. package/test/test/util/dash_parser_util.js +0 -13
  266. package/test/test/util/fake_ad.js +0 -3
  267. package/test/test/util/fake_ad_manager.js +0 -9
  268. package/test/test/util/fake_demo_main.js +0 -5
  269. package/test/test/util/fake_drm_engine.js +0 -6
  270. package/test/test/util/fake_media_source_engine.js +0 -7
  271. package/test/test/util/fake_networking_engine.js +0 -5
  272. package/test/test/util/fake_text_displayer.js +0 -5
  273. package/test/test/util/indexeddb_utils.js +1 -10
  274. package/test/test/util/jasmine_fetch.js +0 -1
  275. package/test/test/util/loader.js +0 -18
  276. package/test/test/util/manifest_generator.js +9 -14
  277. package/test/test/util/manifest_parser_util.js +0 -6
  278. package/test/test/util/offline_utils.js +0 -5
  279. package/test/test/util/simple_fakes.js +9 -26
  280. package/test/test/util/stream_generator.js +0 -14
  281. package/test/test/util/streaming_engine_util.js +0 -15
  282. package/test/test/util/test_scheme.js +1 -19
  283. package/test/test/util/ttml_utils.js +79 -0
  284. package/test/test/util/ui_utils.js +0 -9
  285. package/test/test/util/util.js +15 -26
  286. package/test/test/util/waiter.js +84 -43
  287. package/test/text/cue_integration.js +0 -4
  288. package/test/text/lrc_text_parser_unit.js +0 -4
  289. package/test/text/mp4_ttml_parser_unit.js +10 -23
  290. package/test/text/mp4_vtt_parser_unit.js +1 -7
  291. package/test/text/sbv_text_parser_unit.js +0 -4
  292. package/test/text/simple_text_displayer_unit.js +1 -8
  293. package/test/text/srt_text_parser_unit.js +0 -4
  294. package/test/text/ssa_text_parser_unit.js +0 -5
  295. package/test/text/text_engine_unit.js +2 -7
  296. package/test/text/text_track_integration.js +0 -2
  297. package/test/text/ttml_text_parser_unit.js +499 -239
  298. package/test/text/ui_text_displayer_unit.js +44 -41
  299. package/test/text/vtt_text_parser_unit.js +0 -9
  300. package/test/text/web_vtt_generator_unit.js +0 -3
  301. package/test/ui/ad_ui_unit.js +0 -11
  302. package/test/ui/localization_unit.js +0 -3
  303. package/test/ui/text_displayer_layout_unit.js +9 -19
  304. package/test/ui/ui_customization_unit.js +0 -6
  305. package/test/ui/ui_integration.js +0 -16
  306. package/test/ui/ui_unit.js +1 -17
  307. package/test/util/abortable_operation_unit.js +4 -9
  308. package/test/util/array_utils_unit.js +0 -2
  309. package/test/util/buffer_utils_unit.js +0 -2
  310. package/test/util/cmcd_manager_unit.js +29 -18
  311. package/test/util/data_view_reader_unit.js +0 -4
  312. package/test/util/ebml_parser_unit.js +0 -4
  313. package/test/util/event_manager_unit.js +0 -3
  314. package/test/util/fake_event_target_unit.js +0 -5
  315. package/test/util/functional_unit.js +1 -1
  316. package/test/util/iterables_unit.js +0 -64
  317. package/test/util/language_utils_unit.js +0 -3
  318. package/test/util/manifest_parser_utils_unit.js +0 -2
  319. package/test/util/mp4_box_parsers_unit.js +0 -5
  320. package/test/util/mp4_parser_unit.js +0 -4
  321. package/test/util/multi_map_unit.js +0 -3
  322. package/test/util/object_utils_unit.js +0 -2
  323. package/test/util/periods_unit.js +14 -7
  324. package/test/util/pssh_unit.js +0 -5
  325. package/test/util/state_history_unit.js +0 -2
  326. package/test/util/stream_utils_unit.js +39 -38
  327. package/test/util/string_utils_unit.js +0 -6
  328. package/test/util/text_parser_unit.js +0 -2
  329. package/test/util/xml_utils_unit.js +0 -4
  330. package/third_party/closure-uri/uri.js +21 -0
  331. package/ui/controls.js +3 -0
  332. package/ui/less/ad_controls.less +4 -4
  333. package/ui/less/buttons.less +5 -5
  334. package/ui/less/containers.less +9 -11
  335. package/ui/less/overflow_menu.less +4 -4
  336. package/ui/less/range_elements.less +5 -0
  337. package/ui/less/tooltip.less +1 -1
  338. package/ui/locales/sjn-translations.yaml +257 -0
  339. package/ui/locales/sjn.json +42 -0
  340. package/ui/localization.js +12 -36
  341. package/ui/text_selection.js +1 -0
  342. package/externs/media_capabilities.js +0 -16
  343. package/externs/svgelement.js +0 -18
  344. package/externs/webcrypto.js +0 -18
package/lib/util/pssh.js CHANGED
@@ -9,8 +9,6 @@ goog.provide('shaka.util.Pssh');
9
9
  goog.require('goog.asserts');
10
10
  goog.require('shaka.log');
11
11
  goog.require('shaka.util.BufferUtils');
12
- goog.require('shaka.util.Functional');
13
- goog.require('shaka.util.Iterables');
14
12
  goog.require('shaka.util.Mp4Parser');
15
13
  goog.require('shaka.util.Uint8ArrayUtils');
16
14
 
@@ -83,8 +81,7 @@ shaka.util.Pssh = class {
83
81
  shaka.util.Uint8ArrayUtils.toHex(box.reader.readBytes(16)));
84
82
  if (box.version > 0) {
85
83
  const numKeyIds = box.reader.readUint32();
86
- for (const _ of shaka.util.Iterables.range(numKeyIds)) {
87
- shaka.util.Functional.ignored(_);
84
+ for (let i = 0; i < numKeyIds; i++) {
88
85
  const keyId =
89
86
  shaka.util.Uint8ArrayUtils.toHex(box.reader.readBytes(16));
90
87
  this.cencKeyIds.push(keyId);
@@ -419,14 +419,49 @@ shaka.util.StreamUtils = class {
419
419
  */
420
420
  static async filterManifestByMediaCapabilities(
421
421
  manifest, usePersistentLicenses) {
422
- goog.asserts.assert(window.shakaMediaCapabilities,
422
+ goog.asserts.assert(navigator.mediaCapabilities,
423
423
  'MediaCapabilities should be valid.');
424
424
 
425
425
  await shaka.util.StreamUtils.getDecodingInfosForVariants(
426
426
  manifest.variants, usePersistentLicenses, /* srcEquals= */ false);
427
427
  manifest.variants = manifest.variants.filter((variant) => {
428
+ // See: https://github.com/shaka-project/shaka-player/issues/3860
428
429
  const video = variant.video;
429
- // See: https://github.com/google/shaka-player/issues/3380
430
+ const ContentType = shaka.util.ManifestParserUtils.ContentType;
431
+ if (video) {
432
+ let videoCodecs = shaka.util.StreamUtils.patchVp9(video.codecs);
433
+ // For multiplexed streams. Here we must check the audio of the
434
+ // stream to see if it is compatible.
435
+ if (video.codecs.includes(',')) {
436
+ const allCodecs = video.codecs.split(',');
437
+ videoCodecs = shaka.util.ManifestParserUtils.guessCodecs(
438
+ ContentType.VIDEO, allCodecs);
439
+ const audioCodecs = shaka.util.ManifestParserUtils.guessCodecs(
440
+ ContentType.AUDIO, allCodecs);
441
+ const audioFullType = shaka.util.MimeUtils.getFullOrConvertedType(
442
+ video.mimeType, audioCodecs, ContentType.AUDIO);
443
+ if (!MediaSource.isTypeSupported(audioFullType)) {
444
+ return false;
445
+ }
446
+ }
447
+ const fullType = shaka.util.MimeUtils.getFullOrConvertedType(
448
+ video.mimeType, videoCodecs, ContentType.VIDEO);
449
+ if (!MediaSource.isTypeSupported(fullType)) {
450
+ return false;
451
+ }
452
+ }
453
+ const audio = variant.audio;
454
+ if (audio) {
455
+ const codecs =
456
+ shaka.util.StreamUtils.getCorrectAudioCodecs_(audio.codecs);
457
+ const fullType = shaka.util.MimeUtils.getFullOrConvertedType(
458
+ audio.mimeType, codecs, ContentType.AUDIO);
459
+ if (!MediaSource.isTypeSupported(fullType)) {
460
+ return false;
461
+ }
462
+ }
463
+
464
+ // See: https://github.com/shaka-project/shaka-player/issues/3380
430
465
  if (shaka.util.Platform.isXboxOne() && video &&
431
466
  ((video.width && video.width > 1920) ||
432
467
  (video.height && video.height > 1080)) &&
@@ -468,7 +503,7 @@ shaka.util.StreamUtils = class {
468
503
  return;
469
504
  }
470
505
 
471
- const mediaCapabilities = window.shakaMediaCapabilities;
506
+ const mediaCapabilities = navigator.mediaCapabilities;
472
507
 
473
508
  const operations = [];
474
509
  const getVariantDecodingInfos = (async (variant, decodingConfig) => {
@@ -562,12 +597,8 @@ shaka.util.StreamUtils = class {
562
597
  }
563
598
  }
564
599
  if (audio) {
565
- // Some Tizen devices seem to misreport AC-3 support, but correctly
566
- // report EC-3 support. So query EC-3 as a fallback for AC-3.
567
- // See https://github.com/google/shaka-player/issues/2989 for details.
568
600
  const codecs =
569
- (audio.codecs.toLowerCase() == 'ac-3' &&
570
- shaka.util.Platform.isTizen()) ? 'ec-3' : audio.codecs;
601
+ shaka.util.StreamUtils.getCorrectAudioCodecs_(audio.codecs);
571
602
  const fullType = shaka.util.MimeUtils.getFullOrConvertedType(
572
603
  audio.mimeType, codecs, ContentType.AUDIO);
573
604
 
@@ -678,6 +709,27 @@ shaka.util.StreamUtils = class {
678
709
  return configs;
679
710
  }
680
711
 
712
+
713
+ /**
714
+ * Generates the correct audio codec for MediaDecodingConfiguration and
715
+ * for MediaSource.isTypeSupported.
716
+ * @param {string} codecs
717
+ * @return {string}
718
+ * @private
719
+ */
720
+ static getCorrectAudioCodecs_(codecs) {
721
+ // Some Tizen devices seem to misreport AC-3 support, but correctly
722
+ // report EC-3 support. So query EC-3 as a fallback for AC-3.
723
+ // See https://github.com/shaka-project/shaka-player/issues/2989 for
724
+ // details.
725
+ if (shaka.util.Platform.isTizen()) {
726
+ return codecs.toLowerCase() == 'ac-3' ? 'ec-3' : codecs;
727
+ } else {
728
+ return codecs;
729
+ }
730
+ }
731
+
732
+
681
733
  /**
682
734
  * MediaCapabilities supports 'vp09...' codecs, but not 'vp9'. Translate vp9
683
735
  * codec strings into 'vp09...', to allow such content to play with
@@ -989,6 +1041,31 @@ shaka.util.StreamUtils = class {
989
1041
  static imageStreamToTrack(stream) {
990
1042
  const ContentType = shaka.util.ManifestParserUtils.ContentType;
991
1043
 
1044
+ let width = stream.width || null;
1045
+ let height = stream.height || null;
1046
+
1047
+ // The stream width and height represent the size of the entire thumbnail
1048
+ // sheet, so divide by the layout.
1049
+ let reference = null;
1050
+ // Note: segmentIndex is built by default for HLS, but not for DASH, but
1051
+ // in DASH this information comes at the stream level and not at the
1052
+ // segment level.
1053
+ if (stream.segmentIndex) {
1054
+ reference = stream.segmentIndex.get(0);
1055
+ }
1056
+ let layout = stream.tilesLayout;
1057
+ if (reference) {
1058
+ layout = reference.getTilesLayout() || layout;
1059
+ }
1060
+ if (layout && width != null) {
1061
+ width /= Number(layout.split('x')[0]);
1062
+ }
1063
+ if (layout && height != null) {
1064
+ height /= Number(layout.split('x')[1]);
1065
+ }
1066
+ // TODO: What happens if there are multiple grids, with different
1067
+ // layout sizes, inside this image stream?
1068
+
992
1069
  /** @type {shaka.extern.Track} */
993
1070
  const track = {
994
1071
  id: stream.id,
@@ -998,8 +1075,8 @@ shaka.util.StreamUtils = class {
998
1075
  language: '',
999
1076
  label: null,
1000
1077
  kind: null,
1001
- width: stream.width || null,
1002
- height: stream.height || null,
1078
+ width,
1079
+ height,
1003
1080
  frameRate: null,
1004
1081
  pixelAspectRatio: null,
1005
1082
  hdr: null,
@@ -1016,7 +1093,7 @@ shaka.util.StreamUtils = class {
1016
1093
  channelsCount: null,
1017
1094
  audioSamplingRate: null,
1018
1095
  spatialAudio: false,
1019
- tilesLayout: stream.tilesLayout || null,
1096
+ tilesLayout: layout || null,
1020
1097
  audioBandwidth: null,
1021
1098
  videoBandwidth: null,
1022
1099
  originalVideoId: null,
@@ -10,7 +10,6 @@ goog.require('goog.asserts');
10
10
  goog.require('shaka.log');
11
11
  goog.require('shaka.util.BufferUtils');
12
12
  goog.require('shaka.util.Error');
13
- goog.require('shaka.util.Iterables');
14
13
  goog.require('shaka.util.Lazy');
15
14
 
16
15
 
@@ -81,7 +80,7 @@ shaka.util.StringUtils = class {
81
80
  const length = Math.floor(data.byteLength / 2);
82
81
  const arr = new Uint16Array(length);
83
82
  const dataView = shaka.util.BufferUtils.toDataView(data);
84
- for (const i of shaka.util.Iterables.range(length)) {
83
+ for (let i = 0; i < length; i++) {
85
84
  arr[i] = dataView.getUint16(i * 2, littleEndian);
86
85
  }
87
86
  return shaka.util.StringUtils.fromCharCode(arr);
@@ -158,9 +157,8 @@ shaka.util.StringUtils = class {
158
157
  static toUTF16(str, littleEndian) {
159
158
  const result = new ArrayBuffer(str.length * 2);
160
159
  const view = new DataView(result);
161
- const enumerate = (it) => shaka.util.Iterables.enumerate(it);
162
- for (const {i, item} of enumerate(str)) {
163
- const value = item.charCodeAt(0);
160
+ for (let i = 0; i < str.length; ++i) {
161
+ const value = str.charCodeAt(i);
164
162
  view.setUint16(/* position= */ i * 2, value, littleEndian);
165
163
  }
166
164
  return result;
@@ -8,7 +8,6 @@ goog.provide('shaka.util.Uint8ArrayUtils');
8
8
 
9
9
  goog.require('shaka.Deprecate');
10
10
  goog.require('shaka.util.BufferUtils');
11
- goog.require('shaka.util.Iterables');
12
11
  goog.require('shaka.util.StringUtils');
13
12
 
14
13
 
@@ -74,9 +73,8 @@ shaka.util.Uint8ArrayUtils = class {
74
73
  // byte.
75
74
  const bytes = window.atob(str.replace(/-/g, '+').replace(/_/g, '/'));
76
75
  const result = new Uint8Array(bytes.length);
77
- const enumerate = (it) => shaka.util.Iterables.enumerate(it);
78
- for (const {i, item} of enumerate(bytes)) {
79
- result[i] = item.charCodeAt(0);
76
+ for (let i = 0; i < bytes.length; ++i) {
77
+ result[i] = bytes.charCodeAt(i);
80
78
  }
81
79
  return result;
82
80
  }
@@ -91,7 +89,7 @@ shaka.util.Uint8ArrayUtils = class {
91
89
  static fromHex(str) {
92
90
  const size = str.length / 2;
93
91
  const arr = new Uint8Array(size);
94
- for (const i of shaka.util.Iterables.range(size)) {
92
+ for (let i = 0; i < size; i++) {
95
93
  arr[i] = window.parseInt(str.substr(i * 2, 2), 16);
96
94
  }
97
95
  return arr;
@@ -57,9 +57,13 @@ shaka.util.XmlUtils = class {
57
57
  * @return {!Array.<!Element>} The child XML elements.
58
58
  */
59
59
  static findChildren(elem, name) {
60
- return Array.from(elem.childNodes).filter((child) => {
61
- return child instanceof Element && child.tagName == name;
62
- });
60
+ const found = [];
61
+ for (const child of elem.childNodes) {
62
+ if (child instanceof Element && child.tagName == name) {
63
+ found.push(child);
64
+ }
65
+ }
66
+ return found;
63
67
  }
64
68
 
65
69
 
@@ -82,10 +86,14 @@ shaka.util.XmlUtils = class {
82
86
  * @return {!Array.<!Element>} The child XML elements.
83
87
  */
84
88
  static findChildrenNS(elem, ns, name) {
85
- return Array.from(elem.childNodes).filter((child) => {
86
- return child instanceof Element && child.localName == name &&
87
- child.namespaceURI == ns;
88
- });
89
+ const found = [];
90
+ for (const child of elem.childNodes) {
91
+ if (child instanceof Element && child.localName == name &&
92
+ child.namespaceURI == ns) {
93
+ found.push(child);
94
+ }
95
+ }
96
+ return found;
89
97
  }
90
98
 
91
99
 
@@ -103,6 +111,25 @@ shaka.util.XmlUtils = class {
103
111
  }
104
112
 
105
113
 
114
+ /**
115
+ * Gets a namespace-qualified attribute.
116
+ * @param {!Element} elem The element to get from.
117
+ * @param {!Array.<string>} nsList The lis of namespace URIs.
118
+ * @param {string} name The local name of the attribute.
119
+ * @return {?string} The attribute's value, or null if not present.
120
+ */
121
+ static getAttributeNSList(elem, nsList, name) {
122
+ // Some browsers return the empty string when the attribute is missing,
123
+ // so check if it exists first. See: https://mzl.la/2L7F0UK
124
+ for (const ns of nsList) {
125
+ if (elem.hasAttributeNS(ns, name)) {
126
+ return elem.getAttributeNS(ns, name);
127
+ }
128
+ }
129
+ return null;
130
+ }
131
+
132
+
106
133
  /**
107
134
  * Gets the text contents of a node.
108
135
  * @param {!Node} elem The XML element.
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "shaka-player",
3
3
  "description": "DASH/EME video player library",
4
- "version": "3.3.0",
5
- "homepage": "https://github.com/google/shaka-player",
4
+ "version": "3.3.3",
5
+ "homepage": "https://github.com/shaka-project/shaka-player",
6
6
  "author": "Google",
7
7
  "maintainers": [
8
8
  {
@@ -11,63 +11,85 @@
11
11
  }
12
12
  ],
13
13
  "devDependencies": {
14
- "@chiragrupani/karma-chromium-edge-launcher": "^2.1.0",
14
+ "@babel/core": "^7.17.5",
15
+ "@babel/polyfill": "^7.12.1",
16
+ "@babel/preset-env": "^7.16.11",
15
17
  "@teppeis/clutz": "^1.0.29-4c95e12.v20190929",
16
- "awesomplete": "^1.1.4",
17
- "babel-core": "^6.26.3",
18
- "babel-plugin-istanbul": "^4.1.6",
19
- "babel-polyfill": "^6.26.0",
20
- "babel-preset-env": "^1.7.0",
18
+ "awesomplete": "^1.1.5",
19
+ "babel-plugin-istanbul": "^6.1.1",
21
20
  "cajon": "^0.4.4",
22
- "core-js": "^3.6.5",
23
- "dialog-polyfill": "^0.5.0",
21
+ "code-prettify": "^0.1.0",
22
+ "color-themes-for-google-code-prettify": "^2.0.4",
23
+ "core-js": "^3.21.1",
24
+ "dialog-polyfill": "^0.5.6",
24
25
  "es6-promise-polyfill": "^1.2.0",
25
- "eslint": "^7.18.0",
26
- "eslint-config-google": "^0.13.0",
26
+ "eslint": "^8.9.0",
27
+ "eslint-config-google": "^0.14.0",
27
28
  "eslint-plugin-shaka-rules": "file:./build/eslint-plugin-shaka-rules",
28
29
  "esprima": "^4.0.1",
29
30
  "fastestsmallesttextencoderdecoder": "^1.0.22",
30
31
  "fontfaceonload": "^1.0.2",
31
- "google-closure-compiler-java": "^20210505.0.0",
32
- "google-closure-library": "^20210406.0.0",
33
- "htmlhint": "^0.11.0",
32
+ "google-closure-compiler-java": "^20220301.0.0",
33
+ "google-closure-deps": "https://gitpkg.now.sh/google/closure-library/closure-deps?d7736da6",
34
+ "google-closure-library": "^20220301.0.0",
35
+ "htmlhint": "^1.1.3",
34
36
  "jasmine-ajax": "^4.0.0",
35
- "jimp": "^0.11.0",
36
- "jsdoc": "github:joeyparrish/jsdoc#45c271fa",
37
- "karma": "^6.2.0",
38
- "karma-babel-preprocessor": "^7.0.0",
39
- "karma-chrome-launcher": "^2.2.0",
40
- "karma-coverage": "^1.1.2",
41
- "karma-edge-launcher": "^0.4.2",
42
- "karma-firefox-launcher": "^1.1.0",
43
- "karma-ie-launcher": "^1.0.0",
44
- "karma-jasmine": "^3.3.1",
37
+ "jimp": "^0.16.1",
38
+ "js-yaml": "^4.1.0",
39
+ "jsdoc": "github:joeyparrish/jsdoc#2ca85bb6",
40
+ "karma": "^6.3.16",
41
+ "karma-babel-preprocessor": "^8.0.2",
42
+ "karma-coverage": "^2.2.0",
43
+ "karma-jasmine": "^4.0.1",
45
44
  "karma-jasmine-ajax": "^0.1.13",
45
+ "karma-local-wd-launcher": "^1.6.1",
46
46
  "karma-opera-launcher": "^1.0.0",
47
- "karma-safari-launcher": "^1.0.0",
48
- "karma-sourcemap-loader": "^0.3.7",
49
- "karma-spec-reporter": "0.0.32",
47
+ "karma-sourcemap-loader": "^0.3.8",
48
+ "karma-spec-reporter": "^0.0.34",
50
49
  "karma-webdriver-launcher": "^1.0.8",
51
- "less": "^3.13.1",
52
- "less-plugin-clean-css": "^1.5.1",
50
+ "less": "https://gitpkg.now.sh/joeyparrish/less.js/packages/less?28c63a43",
51
+ "less-plugin-clean-css": "github:austingardner/less-plugin-clean-css#4e9e77bf",
53
52
  "material-design-lite": "^1.3.0",
54
- "mux.js": "^5.7.0",
55
- "pwacompat": "^2.0.10",
56
- "rimraf": "^2.6.3",
53
+ "mux.js": "^5.14.1",
54
+ "open-sans-fonts": "^1.6.2",
55
+ "postcss-less": "^6.0.0",
56
+ "pwacompat": "^2.0.17",
57
+ "rimraf": "^3.0.2",
57
58
  "sprintf-js": "^1.1.2",
58
- "stylelint": "^13.8.0",
59
- "stylelint-config-standard": "^20.0.0",
60
- "tippy.js": "^4.3.1",
61
- "ua-parser-js": "^0.7.24",
62
- "which": "^1.3.1"
59
+ "ssim.js": "^3.5.0",
60
+ "stylelint": "^14.5.1",
61
+ "stylelint-config-standard": "^25.0.0",
62
+ "tippy.js": "^4.3.5",
63
+ "which": "^2.0.2"
64
+ },
65
+ "shakaCustom": {
66
+ "purposeOfDemoDeps": "These are the files from node_modules that need to be deployed with the demo app.",
67
+ "demoDeps": [
68
+ "awesomplete/awesomplete.css",
69
+ "awesomplete/awesomplete.min.js",
70
+ "dialog-polyfill/dialog-polyfill.css",
71
+ "dialog-polyfill/dist/dialog-polyfill.js",
72
+ "eme-encryption-scheme-polyfill/index.js",
73
+ "es6-promise-polyfill/promise.min.js",
74
+ "fastestsmallesttextencoderdecoder/EncoderDecoderTogether.min.js",
75
+ "google-closure-library/closure/goog/base.js",
76
+ "less/dist/less.js",
77
+ "material-design-lite/dist/material.indigo-blue.min.css",
78
+ "material-design-lite/dist/material.min.js",
79
+ "mux.js/dist/mux.min.js",
80
+ "popper.js/dist/umd/popper.min.js",
81
+ "pwacompat/pwacompat.min.js",
82
+ "tippy.js/umd/index.min.js",
83
+ "tippy.js/index.css"
84
+ ]
63
85
  },
64
86
  "main": "dist/shaka-player.compiled.js",
65
87
  "repository": {
66
88
  "type": "git",
67
- "url": "https://github.com/google/shaka-player.git"
89
+ "url": "https://github.com/shaka-project/shaka-player.git"
68
90
  },
69
91
  "bugs": {
70
- "url": "https://github.com/google/shaka-player/issues"
92
+ "url": "https://github.com/shaka-project/shaka-player/issues"
71
93
  },
72
94
  "license": "Apache-2.0",
73
95
  "scripts": {
package/roadmap.md CHANGED
@@ -10,49 +10,49 @@ so the exact milestone for future features is not pre-determined.
10
10
 
11
11
  Priority features up next:
12
12
  - Support containerless formats
13
- https://github.com/google/shaka-player/issues/2337
13
+ https://github.com/shaka-project/shaka-player/issues/2337
14
14
  - Preload API
15
- https://github.com/google/shaka-player/issues/880
15
+ https://github.com/shaka-project/shaka-player/issues/880
16
16
  - Codec-switching and order preference
17
- https://github.com/google/shaka-player/issues/1528
18
- https://github.com/google/shaka-player/issues/2179
17
+ https://github.com/shaka-project/shaka-player/issues/1528
18
+ https://github.com/shaka-project/shaka-player/issues/2179
19
19
 
20
20
  Candidate features for future release cycles:
21
21
  - HLS interstitial support
22
- https://github.com/google/shaka-player/issues/3364
22
+ https://github.com/shaka-project/shaka-player/issues/3364
23
23
  - Support ID3 tags in mp4
24
- https://github.com/google/shaka-player/issues/3351
24
+ https://github.com/shaka-project/shaka-player/issues/3351
25
25
  - MSE support for FairPlay
26
- https://github.com/google/shaka-player/issues/3346
26
+ https://github.com/shaka-project/shaka-player/issues/3346
27
27
  - Smaller, more modular binary
28
28
  - Official TypeScript defs, generated from source
29
- https://github.com/google/shaka-player/issues/1030
29
+ https://github.com/shaka-project/shaka-player/issues/1030
30
30
  - Shaka Analytics Component and an integration with BigQuery Analytics
31
- https://github.com/google/shaka-player/issues/3359
31
+ https://github.com/shaka-project/shaka-player/issues/3359
32
32
  - Integration with Google Video ML/Cloud AI
33
33
 
34
34
  v3.3 - 2021 Q3 or Q4
35
35
  - Background fetch for offline storage
36
- https://github.com/google/shaka-player/issues/879
36
+ https://github.com/shaka-project/shaka-player/issues/879
37
37
  - HLS performance improvements
38
- https://github.com/google/shaka-player/issues/3363
38
+ https://github.com/shaka-project/shaka-player/issues/3363
39
39
 
40
40
  =====
41
41
 
42
42
  v3.2 - 2021 Q3
43
43
  - MediaCapabilities to make performance-based decisions
44
- https://github.com/google/shaka-player/issues/1391
44
+ https://github.com/shaka-project/shaka-player/issues/1391
45
45
  - Configurable key-system priority
46
- https://github.com/google/shaka-player/issues/3002
46
+ https://github.com/shaka-project/shaka-player/issues/3002
47
47
 
48
48
  v3.1 - 2021 Q2
49
49
  - Low-latency live (LL-HLS, LL-DASH)
50
- https://github.com/google/shaka-player/issues/1525
50
+ https://github.com/shaka-project/shaka-player/issues/1525
51
51
  - Own CEA parser, use mux.js only for TS
52
- https://github.com/google/shaka-player/issues/2648
52
+ https://github.com/shaka-project/shaka-player/issues/2648
53
53
  - Thumbnail tracks
54
- DASH: https://github.com/google/shaka-player/issues/559
55
- HLS: https://github.com/google/shaka-player/issues/2429
54
+ DASH: https://github.com/shaka-project/shaka-player/issues/559
55
+ HLS: https://github.com/shaka-project/shaka-player/issues/2429
56
56
 
57
57
  v3.0 - 2020 Q2
58
58
  - Code health improvements
@@ -45,6 +45,7 @@ goog.require('shaka.polyfill.PatchedMediaKeysNop');
45
45
  goog.require('shaka.polyfill.PatchedMediaKeysWebkit');
46
46
  goog.require('shaka.polyfill.PiPWebkit');
47
47
  goog.require('shaka.polyfill.RandomUUID');
48
+ goog.require('shaka.polyfill.Symbol');
48
49
  goog.require('shaka.polyfill.VTTCue');
49
50
  goog.require('shaka.polyfill.VideoPlayPromise');
50
51
  goog.require('shaka.polyfill.VideoPlaybackQuality');
@@ -4,11 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.abr.SimpleAbrManager');
8
- goog.require('shaka.test.ManifestGenerator');
9
- goog.require('shaka.test.Util');
10
- goog.require('shaka.util.PlayerConfiguration');
11
-
12
7
  describe('SimpleAbrManager', () => {
13
8
  const sufficientBWMultiplier = 1.06;
14
9
  const defaultBandwidthEstimate = 500e3; // 500kbps
@@ -91,7 +86,7 @@ describe('SimpleAbrManager', () => {
91
86
  config.defaultBandwidthEstimate = 3e6;
92
87
  abrManager.configure(config);
93
88
  const chosen = abrManager.chooseVariant();
94
- expect(chosen.id).toBe(104);
89
+ expect(chosen.id).toBe(103);
95
90
  });
96
91
 
97
92
  it('can handle empty variants', () => {
@@ -170,7 +165,7 @@ describe('SimpleAbrManager', () => {
170
165
  it('can handle 0 duration segments', () => {
171
166
  // Makes sure bandwidth estimate doesn't get set to NaN
172
167
  // when a 0 duration segment is encountered.
173
- // https://github.com/google/shaka-player/issues/582
168
+ // https://github.com/shaka-project/shaka-player/issues/582
174
169
  const bandwidth = 5e5;
175
170
  const bytesPerSecond = sufficientBWMultiplier * bandwidth / 8.0;
176
171
 
@@ -208,7 +203,7 @@ describe('SimpleAbrManager', () => {
208
203
  abrManager.segmentDownloaded(1000, bytesPerSecond);
209
204
 
210
205
  // Expect variants 4 to be chosen
211
- const expectedVariant = variants[4];
206
+ const expectedVariant = variants[3];
212
207
 
213
208
  expect(switchCallback).toHaveBeenCalledWith(expectedVariant);
214
209
  });
@@ -4,12 +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.FakeVideo');
10
- goog.require('shaka.test.Util');
11
- goog.require('shaka.util.Error');
12
-
13
7
  describe('Ad manager', () => {
14
8
  /** @type {!shaka.test.FakeVideo} */
15
9
  let mockVideo;
@@ -4,14 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.cast.CastProxy');
8
- goog.require('shaka.cast.CastSender');
9
- goog.require('shaka.test.FakeVideo');
10
- goog.require('shaka.test.Util');
11
- goog.require('shaka.util.Error');
12
- goog.require('shaka.util.FakeEvent');
13
- goog.require('shaka.util.PublicPromise');
14
-
15
7
  describe('CastProxy', () => {
16
8
  const CastProxy = shaka.cast.CastProxy;
17
9
  const FakeEvent = shaka.util.FakeEvent;
@@ -4,22 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.Player');
8
- goog.require('shaka.cast.CastReceiver');
9
- goog.require('shaka.cast.CastUtils');
10
- goog.require('shaka.log');
11
- goog.require('shaka.media.DrmEngine');
12
- goog.require('shaka.media.ManifestParser');
13
- goog.require('shaka.media.StreamingEngine');
14
- goog.require('shaka.net.NetworkingEngine');
15
- goog.require('shaka.test.TestScheme');
16
- goog.require('shaka.test.UiUtils');
17
- goog.require('shaka.util.EventManager');
18
- goog.require('shaka.util.Functional');
19
- goog.require('shaka.util.Iterables');
20
- goog.require('shaka.util.Platform');
21
- goog.require('shaka.util.PublicPromise');
22
-
23
7
  // The receiver is only meant to run on the Chromecast, so we have the
24
8
  // ability to use modern APIs there that may not be available on all of the
25
9
  // browsers our library supports. Because of this, CastReceiver tests will
@@ -198,8 +182,7 @@ filterDescribe('CastReceiver', castReceiverIntegrationSupport, () => {
198
182
  // the average length is expected to be lower than the length of the first
199
183
  // update message.
200
184
  let totalLength = 0;
201
- for (const _ of shaka.util.Iterables.range(50)) {
202
- shaka.util.Functional.ignored(_);
185
+ for (let i = 0; i < 50; i++) {
203
186
  // eslint-disable-next-line no-await-in-loop
204
187
  const message = await waitForUpdateMessage();
205
188
  totalLength += message.length;
@@ -4,14 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.cast.CastReceiver');
8
- goog.require('shaka.cast.CastUtils');
9
- goog.require('shaka.test.FakeVideo');
10
- goog.require('shaka.test.Util');
11
- goog.require('shaka.util.Error');
12
- goog.require('shaka.util.Platform');
13
- goog.require('shaka.util.PublicPromise');
14
-
15
7
  // The receiver is only meant to run on the Chromecast, so we have the
16
8
  // ability to use modern APIs there that may not be available on all of the
17
9
  // browsers our library supports. Because of this, CastReceiver tests will
@@ -756,7 +748,7 @@ filterDescribe('CastReceiver', castReceiverSupport, () => {
756
748
  expect(mockGenericMessageBus.broadcast).toHaveBeenCalledTimes(1);
757
749
 
758
750
  // This covers the lack of scrubber in the Google Home app, as described
759
- // in https://github.com/google/shaka-player/issues/2606
751
+ // in https://github.com/shaka-project/shaka-player/issues/2606
760
752
  expectMediaInfo('URI A', 1);
761
753
  });
762
754
 
@@ -4,12 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.cast.CastSender');
8
- goog.require('shaka.cast.CastUtils');
9
- goog.require('shaka.test.StatusPromise');
10
- goog.require('shaka.test.Util');
11
- goog.require('shaka.util.Error');
12
-
13
7
  describe('CastSender', () => {
14
8
  const CastSender = shaka.cast.CastSender;
15
9
  const CastUtils = shaka.cast.CastUtils;