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
@@ -4,22 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('goog.Uri');
8
- goog.require('shaka.Player');
9
- goog.require('shaka.log');
10
- goog.require('shaka.media.DrmEngine');
11
- goog.require('shaka.media.TimeRangesUtils');
12
- goog.require('shaka.test.FakeAbrManager');
13
- goog.require('shaka.test.FakeTextDisplayer');
14
- goog.require('shaka.test.Loader');
15
- goog.require('shaka.test.TestScheme');
16
- goog.require('shaka.test.UiUtils');
17
- goog.require('shaka.test.Util');
18
- goog.require('shaka.test.Waiter');
19
- goog.require('shaka.util.EventManager');
20
- goog.require('shaka.util.Functional');
21
- goog.require('shaka.util.Iterables');
22
-
23
7
  describe('Player', () => {
24
8
  /** @type {!jasmine.Spy} */
25
9
  let onErrorSpy;
@@ -53,6 +37,7 @@ describe('Player', () => {
53
37
  // Grab event manager from the uncompiled library:
54
38
  eventManager = new shaka.util.EventManager();
55
39
  waiter = new shaka.test.Waiter(eventManager);
40
+ waiter.setPlayer(player);
56
41
 
57
42
  onErrorSpy = jasmine.createSpy('onError');
58
43
  onErrorSpy.and.callFake((event) => {
@@ -299,7 +284,7 @@ describe('Player', () => {
299
284
  expect(variantTrack.language).toBe(textTrack.language);
300
285
  });
301
286
 
302
- // Repro for https://github.com/google/shaka-player/issues/1879.
287
+ // Repro for https://github.com/shaka-project/shaka-player/issues/1879.
303
288
  it('appends cues when enabled initially', async () => {
304
289
  let cues = [];
305
290
  /** @const {!shaka.test.FakeTextDisplayer} */
@@ -356,7 +341,7 @@ describe('Player', () => {
356
341
  expect(cues.length).toBeGreaterThan(0);
357
342
  });
358
343
 
359
- // https://github.com/google/shaka-player/issues/2553
344
+ // https://github.com/shaka-project/shaka-player/issues/2553
360
345
  it('does not change the selected track', async () => {
361
346
  player.configure('streaming.alwaysStreamText', false);
362
347
  await player.load('test:forced_subs_simulation_compiled');
@@ -482,7 +467,7 @@ describe('Player', () => {
482
467
  expect(configuredTextDisplayer).toBe(textDisplayer);
483
468
  });
484
469
 
485
- // Regression test for https://github.com/google/shaka-player/issues/1187
470
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/1187
486
471
  it('does not throw on destroy', async () => {
487
472
  await player.load('test:sintel_compiled');
488
473
  video.play();
@@ -513,7 +498,7 @@ describe('Player', () => {
513
498
  // and the track selection was ignored. Because this bug involved
514
499
  // interactions between Player and StreamingEngine, it is an integration
515
500
  // test and not a unit test.
516
- // https://github.com/google/shaka-player/issues/1119
501
+ // https://github.com/shaka-project/shaka-player/issues/1119
517
502
  it('allows early selection of specific tracks', async () => {
518
503
  /** @type {!jasmine.Spy} */
519
504
  const streamingListener = jasmine.createSpy('listener');
@@ -548,7 +533,7 @@ describe('Player', () => {
548
533
  // switchingPeriods_ in Player. Because this bug involved interactions
549
534
  // between Player and StreamingEngine, it is an integration test and not a
550
535
  // unit test.
551
- // https://github.com/google/shaka-player/issues/1119
536
+ // https://github.com/shaka-project/shaka-player/issues/1119
552
537
  it('allows selection of tracks in subsequent loads', async () => {
553
538
  /** @type {!jasmine.Spy} */
554
539
  const streamingListener = jasmine.createSpy('listener');
@@ -646,7 +631,9 @@ describe('Player', () => {
646
631
  eventManager.listen(video, 'waiting', checkOnEvent);
647
632
  eventManager.listen(player, 'trackschanged', checkOnEvent);
648
633
 
649
- const waiter = (new shaka.test.Waiter(eventManager)).timeoutAfter(10);
634
+ const waiter = new shaka.test.Waiter(eventManager)
635
+ .setPlayer(player)
636
+ .timeoutAfter(10);
650
637
  const canPlayThrough = waiter.waitForEvent(video, 'canplaythrough');
651
638
 
652
639
  await player.load('test:sintel_compiled', 5);
@@ -720,6 +707,7 @@ describe('Player', () => {
720
707
  player.addEventListener('mediaqualitychanged',
721
708
  Util.spyFunc(onQualityChange));
722
709
  waiter = new shaka.test.Waiter(eventManager)
710
+ .setPlayer(player)
723
711
  .timeoutAfter(10)
724
712
  .failOnTimeout(true);
725
713
  });
@@ -777,7 +765,9 @@ describe('Player', () => {
777
765
  eventManager.listen(player, 'error', Util.spyFunc(onErrorSpy));
778
766
  /** @type {shaka.test.Waiter} */
779
767
  const waiter = new shaka.test.Waiter(eventManager)
780
- .timeoutAfter(20).failOnTimeout(true);
768
+ .setPlayer(player)
769
+ .timeoutAfter(20)
770
+ .failOnTimeout(true);
781
771
  await waiter.waitForEnd(video);
782
772
 
783
773
  // The stream should have transitioned to VOD by now.
@@ -785,7 +775,7 @@ describe('Player', () => {
785
775
 
786
776
  // Check that the final seek range is as expected.
787
777
  const seekRange = player.seekRange();
788
- expect(seekRange.end).toBe(14);
778
+ expect(seekRange.end).toBeCloseTo(14);
789
779
  });
790
780
  });
791
781
 
@@ -802,6 +792,7 @@ describe('Player', () => {
802
792
  player.addEventListener('buffering', Util.spyFunc(onBuffering));
803
793
 
804
794
  waiter = new shaka.test.Waiter(eventManager)
795
+ .setPlayer(player)
805
796
  .timeoutAfter(10)
806
797
  .failOnTimeout(true);
807
798
  });
@@ -915,8 +906,7 @@ describe('Player', () => {
915
906
  }
916
907
 
917
908
  async function waitUntilBuffered(amount) {
918
- for (const _ of shaka.util.Iterables.range(25)) {
919
- shaka.util.Functional.ignored(_);
909
+ for (let i = 0; i < 25; i++) {
920
910
  // We buffer from an internal segment, so this shouldn't take long to
921
911
  // buffer.
922
912
  await Util.delay(0.1); // eslint-disable-line no-await-in-loop
@@ -993,7 +983,9 @@ describe('Player', () => {
993
983
 
994
984
  /** @type {shaka.test.Waiter} */
995
985
  const waiter = new shaka.test.Waiter(eventManager)
996
- .timeoutAfter(1).failOnTimeout(true);
986
+ .setPlayer(player)
987
+ .timeoutAfter(1)
988
+ .failOnTimeout(true);
997
989
 
998
990
  await waiter.waitForPromise(abrEnabled, 'AbrManager enabled');
999
991
 
@@ -1013,7 +1005,9 @@ describe('Player', () => {
1013
1005
 
1014
1006
  /** @type {shaka.test.Waiter} */
1015
1007
  const waiter = new shaka.test.Waiter(eventManager)
1016
- .timeoutAfter(1).failOnTimeout(true);
1008
+ .setPlayer(player)
1009
+ .timeoutAfter(1)
1010
+ .failOnTimeout(true);
1017
1011
 
1018
1012
  await waiter.waitForPromise(abrEnabled, 'AbrManager enabled');
1019
1013
 
@@ -1063,9 +1057,9 @@ describe('Player', () => {
1063
1057
  it('add external chapters in vtt format', async () => {
1064
1058
  await player.load('test:sintel_no_text_compiled');
1065
1059
  const locationUri = new goog.Uri(location.href);
1066
- const partialUri = new goog.Uri('/base/test/test/assets/chapters.vtt');
1067
- const absoluteUri = locationUri.resolve(partialUri);
1068
- await player.addChaptersTrack(absoluteUri.toString(), 'en');
1060
+ const partialUri1 = new goog.Uri('/base/test/test/assets/chapters.vtt');
1061
+ const absoluteUri1 = locationUri.resolve(partialUri1);
1062
+ await player.addChaptersTrack(absoluteUri1.toString(), 'en');
1069
1063
 
1070
1064
  await shaka.test.Util.delay(1.5);
1071
1065
 
@@ -1078,11 +1072,44 @@ describe('Player', () => {
1078
1072
  const chapter2 = chapters[1];
1079
1073
  expect(chapter2.title).toBe('Chapter 2');
1080
1074
  expect(chapter2.startTime).toBe(5);
1081
- expect(chapter2.endTime).toBe(30);
1075
+ expect(chapter2.endTime).toBe(10);
1082
1076
  const chapter3 = chapters[2];
1083
1077
  expect(chapter3.title).toBe('Chapter 3');
1084
- expect(chapter3.startTime).toBe(30);
1085
- expect(chapter3.endTime).toBe(61.349);
1078
+ expect(chapter3.startTime).toBe(10);
1079
+ expect(chapter3.endTime).toBe(20);
1080
+
1081
+ const partialUri2 = new goog.Uri('/base/test/test/assets/chapters2.vtt');
1082
+ const absoluteUri2 = locationUri.resolve(partialUri2);
1083
+ await player.addChaptersTrack(absoluteUri2.toString(), 'en');
1084
+
1085
+ await shaka.test.Util.delay(1.5);
1086
+
1087
+ const chaptersUpdated = player.getChapters('en');
1088
+ expect(chaptersUpdated.length).toBe(6);
1089
+ const chapterUpdated1 = chaptersUpdated[0];
1090
+ expect(chapterUpdated1.title).toBe('Chapter 1');
1091
+ expect(chapterUpdated1.startTime).toBe(0);
1092
+ expect(chapterUpdated1.endTime).toBe(5);
1093
+ const chapterUpdated2 = chaptersUpdated[1];
1094
+ expect(chapterUpdated2.title).toBe('Chapter 2');
1095
+ expect(chapterUpdated2.startTime).toBe(5);
1096
+ expect(chapterUpdated2.endTime).toBe(10);
1097
+ const chapterUpdated3 = chaptersUpdated[2];
1098
+ expect(chapterUpdated3.title).toBe('Chapter 3');
1099
+ expect(chapterUpdated3.startTime).toBe(10);
1100
+ expect(chapterUpdated3.endTime).toBe(20);
1101
+ const chapterUpdated4 = chaptersUpdated[3];
1102
+ expect(chapterUpdated4.title).toBe('Chapter 4');
1103
+ expect(chapterUpdated4.startTime).toBe(20);
1104
+ expect(chapterUpdated4.endTime).toBe(30);
1105
+ const chapterUpdated5 = chaptersUpdated[4];
1106
+ expect(chapterUpdated5.title).toBe('Chapter 5');
1107
+ expect(chapterUpdated5.startTime).toBe(30);
1108
+ expect(chapterUpdated5.endTime).toBe(40);
1109
+ const chapterUpdated6 = chaptersUpdated[5];
1110
+ expect(chapterUpdated6.title).toBe('Chapter 6');
1111
+ expect(chapterUpdated6.startTime).toBe(40);
1112
+ expect(chapterUpdated6.endTime).toBe(61.349);
1086
1113
  });
1087
1114
 
1088
1115
  it('add external chapters in srt format', async () => {
@@ -1090,11 +1117,11 @@ describe('Player', () => {
1090
1117
  const locationUri = new goog.Uri(location.href);
1091
1118
  const partialUri = new goog.Uri('/base/test/test/assets/chapters.srt');
1092
1119
  const absoluteUri = locationUri.resolve(partialUri);
1093
- await player.addChaptersTrack(absoluteUri.toString(), 'en');
1120
+ await player.addChaptersTrack(absoluteUri.toString(), 'es');
1094
1121
 
1095
1122
  await shaka.test.Util.delay(1.5);
1096
1123
 
1097
- const chapters = player.getChapters('en');
1124
+ const chapters = player.getChapters('es');
1098
1125
  expect(chapters.length).toBe(3);
1099
1126
  const chapter1 = chapters[0];
1100
1127
  expect(chapter1.title).toBe('Chapter 1');
@@ -4,11 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.Player');
8
- goog.require('shaka.test.UiUtils');
9
- goog.require('shaka.test.Util');
10
- goog.require('shaka.util.Error');
11
-
12
7
  describe('Player Load Graph', () => {
13
8
  const SMALL_MP4_CONTENT_URI = '/base/test/test/assets/small.mp4';
14
9
 
@@ -124,7 +119,7 @@ describe('Player Load Graph', () => {
124
119
 
125
120
  // There was a bug when calling unload before calling load would cause
126
121
  // the load to continue before the (first) unload was complete.
127
- // https://github.com/google/shaka-player/issues/612
122
+ // https://github.com/shaka-project/shaka-player/issues/612
128
123
  it('load will wait for unload to finish', async () => {
129
124
  createPlayer(/* attachedTo= */ null);
130
125
 
@@ -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.test.UiUtils');
9
- goog.require('shaka.test.Util');
10
- goog.require('shaka.test.Waiter');
11
- goog.require('shaka.util.EventManager');
12
-
13
7
  describe('Player Src Equals', () => {
14
8
  // This asset needs to be (1) long and (2) high bitrate so that we can
15
9
  // invoke unbuffered seeks.
@@ -88,7 +82,7 @@ describe('Player Src Equals', () => {
88
82
  expect(player.isBuffering()).toBeTruthy();
89
83
  });
90
84
 
91
- // A regression test for https://github.com/google/shaka-player/issues/2523
85
+ // A regression test for https://github.com/shaka-project/shaka-player/issues/2523
92
86
  it('detects subtitles in native HLS', async () => {
93
87
  const supportsNativeHls =
94
88
  video.canPlayType('application/vnd.apple.mpegurl') != '';
@@ -103,8 +97,8 @@ describe('Player Src Equals', () => {
103
97
  });
104
98
 
105
99
  // A regression test for
106
- // https://github.com/google/shaka-player/issues/2483#issuecomment-633412527
107
- // and https://github.com/google/shaka-player/issues/2593
100
+ // https://github.com/shaka-project/shaka-player/issues/2483#issuecomment-633412527
101
+ // and https://github.com/shaka-project/shaka-player/issues/2593
108
102
  it('honors preferred audio and text languages', async () => {
109
103
  const supportsNativeHls =
110
104
  video.canPlayType('application/vnd.apple.mpegurl') != '';
@@ -4,13 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('goog.Uri');
8
- goog.require('shaka.Player');
9
- goog.require('shaka.test.UiUtils');
10
- goog.require('shaka.test.Util');
11
- goog.require('shaka.test.Waiter');
12
- goog.require('shaka.util.EventManager');
13
-
14
7
  // These tests are for testing Shaka Player's integration with
15
8
  // |HTMLMediaElement.src=|. These tests are to verify that all |shaka.Player|
16
9
  // public methods behaviour correctly when playing content video |src=|.
@@ -330,9 +323,9 @@ describe('Player Src Equals', () => {
330
323
  await loadWithSrcEquals(SMALL_MP4_CONTENT_URI, /* startTime= */ null);
331
324
 
332
325
  const locationUri = new goog.Uri(location.href);
333
- const partialUri = new goog.Uri('/base/test/test/assets/chapters.vtt');
334
- const absoluteUri = locationUri.resolve(partialUri);
335
- await player.addChaptersTrack(absoluteUri.toString(), 'en');
326
+ const partialUri1 = new goog.Uri('/base/test/test/assets/chapters.vtt');
327
+ const absoluteUri1 = locationUri.resolve(partialUri1);
328
+ await player.addChaptersTrack(absoluteUri1.toString(), 'en');
336
329
 
337
330
  await shaka.test.Util.delay(1.5);
338
331
 
@@ -345,11 +338,44 @@ describe('Player Src Equals', () => {
345
338
  const chapter2 = chapters[1];
346
339
  expect(chapter2.title).toBe('Chapter 2');
347
340
  expect(chapter2.startTime).toBe(5);
348
- expect(chapter2.endTime).toBe(30);
341
+ expect(chapter2.endTime).toBe(10);
349
342
  const chapter3 = chapters[2];
350
343
  expect(chapter3.title).toBe('Chapter 3');
351
- expect(chapter3.startTime).toBe(30);
352
- expect(chapter3.endTime).toBe(61.349);
344
+ expect(chapter3.startTime).toBe(10);
345
+ expect(chapter3.endTime).toBe(20);
346
+
347
+ const partialUri2 = new goog.Uri('/base/test/test/assets/chapters2.vtt');
348
+ const absoluteUri2 = locationUri.resolve(partialUri2);
349
+ await player.addChaptersTrack(absoluteUri2.toString(), 'en');
350
+
351
+ await shaka.test.Util.delay(1.5);
352
+
353
+ const chaptersUpdated = player.getChapters('en');
354
+ expect(chaptersUpdated.length).toBe(6);
355
+ const chapterUpdated1 = chaptersUpdated[0];
356
+ expect(chapterUpdated1.title).toBe('Chapter 1');
357
+ expect(chapterUpdated1.startTime).toBe(0);
358
+ expect(chapterUpdated1.endTime).toBe(5);
359
+ const chapterUpdated2 = chaptersUpdated[1];
360
+ expect(chapterUpdated2.title).toBe('Chapter 2');
361
+ expect(chapterUpdated2.startTime).toBe(5);
362
+ expect(chapterUpdated2.endTime).toBe(10);
363
+ const chapterUpdated3 = chaptersUpdated[2];
364
+ expect(chapterUpdated3.title).toBe('Chapter 3');
365
+ expect(chapterUpdated3.startTime).toBe(10);
366
+ expect(chapterUpdated3.endTime).toBe(20);
367
+ const chapterUpdated4 = chaptersUpdated[3];
368
+ expect(chapterUpdated4.title).toBe('Chapter 4');
369
+ expect(chapterUpdated4.startTime).toBe(20);
370
+ expect(chapterUpdated4.endTime).toBe(30);
371
+ const chapterUpdated5 = chaptersUpdated[4];
372
+ expect(chapterUpdated5.title).toBe('Chapter 5');
373
+ expect(chapterUpdated5.startTime).toBe(30);
374
+ expect(chapterUpdated5.endTime).toBe(40);
375
+ const chapterUpdated6 = chaptersUpdated[5];
376
+ expect(chapterUpdated6.title).toBe('Chapter 6');
377
+ expect(chapterUpdated6.startTime).toBe(40);
378
+ expect(chapterUpdated6.endTime).toBe(61.349);
353
379
  });
354
380
 
355
381
  it('add external chapters in srt format', async () => {
@@ -358,11 +384,11 @@ describe('Player Src Equals', () => {
358
384
  const locationUri = new goog.Uri(location.href);
359
385
  const partialUri = new goog.Uri('/base/test/test/assets/chapters.srt');
360
386
  const absoluteUri = locationUri.resolve(partialUri);
361
- await player.addChaptersTrack(absoluteUri.toString(), 'en');
387
+ await player.addChaptersTrack(absoluteUri.toString(), 'es');
362
388
 
363
389
  await shaka.test.Util.delay(1.5);
364
390
 
365
- const chapters = player.getChapters('en');
391
+ const chapters = player.getChapters('es');
366
392
  expect(chapters.length).toBe(3);
367
393
  const chapter1 = chapters[0];
368
394
  expect(chapter1.title).toBe('Chapter 1');
@@ -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.Player');
9
- goog.require('shaka.log');
10
- goog.require('shaka.media.BufferingObserver');
11
- goog.require('shaka.media.ManifestParser');
12
- goog.require('shaka.media.PresentationTimeline');
13
- goog.require('shaka.media.SegmentReference');
14
- goog.require('shaka.media.SegmentIndex');
15
- goog.require('shaka.test.FakeAbrManager');
16
- goog.require('shaka.test.FakeDrmEngine');
17
- goog.require('shaka.test.FakeManifestParser');
18
- goog.require('shaka.test.FakeNetworkingEngine');
19
- goog.require('shaka.test.FakePlayhead');
20
- goog.require('shaka.test.FakeStreamingEngine');
21
- goog.require('shaka.test.FakeTextDisplayer');
22
- goog.require('shaka.test.FakeVideo');
23
- goog.require('shaka.test.ManifestGenerator');
24
- goog.require('shaka.test.Util');
25
- goog.require('shaka.util.ConfigUtils');
26
- goog.require('shaka.util.Error');
27
- goog.require('shaka.util.Iterables');
28
- goog.require('shaka.util.ManifestParserUtils');
29
- goog.requireType('shaka.media.Playhead');
30
-
31
7
  describe('Player', () => {
32
8
  const ContentType = shaka.util.ManifestParserUtils.ContentType;
33
9
  const Util = shaka.test.Util;
@@ -36,7 +12,7 @@ describe('Player', () => {
36
12
  const originalLogWarn = shaka.log.warning;
37
13
  const originalLogAlwaysWarn = shaka.log.alwaysWarn;
38
14
  const originalIsTypeSupported = window.MediaSource.isTypeSupported;
39
- const originalDecodingInfo = window.shakaMediaCapabilities.decodingInfo;
15
+ const originalDecodingInfo = navigator.mediaCapabilities.decodingInfo;
40
16
 
41
17
  const fakeManifestUri = 'fake-manifest-uri';
42
18
  const fakeMimeType = 'application/test';
@@ -93,7 +69,7 @@ describe('Player', () => {
93
69
  // Since this is not an integration test, we don't want MediaCapabilities to
94
70
  // fail assertions based on browser support for types. Pretend that all
95
71
  // video and audio types are supported.
96
- window.shakaMediaCapabilities.decodingInfo = async (config) => {
72
+ navigator.mediaCapabilities.decodingInfo = async (config) => {
97
73
  await Promise.resolve();
98
74
  const videoType = config['video'] ?
99
75
  config['video'].contentType.split('/')[0] : null;
@@ -177,7 +153,7 @@ describe('Player', () => {
177
153
  shaka.log.alwaysWarn = originalLogAlwaysWarn;
178
154
  window.MediaSource.isTypeSupported = originalIsTypeSupported;
179
155
  shaka.media.ManifestParser.unregisterParserByMime(fakeMimeType);
180
- window.shakaMediaCapabilities.decodingInfo = originalDecodingInfo;
156
+ navigator.mediaCapabilities.decodingInfo = originalDecodingInfo;
181
157
  }
182
158
  });
183
159
 
@@ -325,7 +301,7 @@ describe('Player', () => {
325
301
  // We used to fire the event /before/ filtering, which meant that for
326
302
  // multi-codec content, the application might select something which will
327
303
  // later be removed during filtering.
328
- // https://github.com/google/shaka-player/issues/1119
304
+ // https://github.com/shaka-project/shaka-player/issues/1119
329
305
  it('fires after tracks have been filtered', async () => {
330
306
  streamingListener.and.callFake(() => {
331
307
  const tracks = player.getVariantTracks();
@@ -621,7 +597,7 @@ describe('Player', () => {
621
597
  expect(logWarnSpy).not.toHaveBeenCalled();
622
598
  });
623
599
 
624
- // Regression test for https://github.com/google/shaka-player/issues/784
600
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/784
625
601
  it('does not throw when overwriting serverCertificate', () => {
626
602
  player.configure({
627
603
  drm: {
@@ -687,9 +663,9 @@ describe('Player', () => {
687
663
  });
688
664
 
689
665
  it('configures play and seek range for VOD', async () => {
690
- player.configure({playRangeStart: 5, playRangeEnd: 10});
691
666
  const timeline = new shaka.media.PresentationTimeline(300, 0);
692
667
  timeline.setStatic(true);
668
+ timeline.setDuration(300);
693
669
  manifest = shaka.test.ManifestGenerator.generate((manifest) => {
694
670
  manifest.presentationTimeline = timeline;
695
671
  manifest.addVariant(0, (variant) => {
@@ -697,7 +673,46 @@ describe('Player', () => {
697
673
  });
698
674
  });
699
675
  goog.asserts.assert(manifest, 'manifest must be non-null');
676
+
677
+ player.configure({playRangeStart: 5, playRangeEnd: 10});
700
678
  await player.load(fakeManifestUri, 0, fakeMimeType);
679
+
680
+ const seekRange = player.seekRange();
681
+ expect(seekRange.start).toBe(5);
682
+ expect(seekRange.end).toBe(10);
683
+ });
684
+
685
+ // Test for https://github.com/shaka-project/shaka-player/issues/4026
686
+ it('configures play and seek range with notifySegments', async () => {
687
+ const timeline = new shaka.media.PresentationTimeline(300, 0);
688
+ timeline.setStatic(true);
689
+ // This duration is used by useSegmentTemplate below to decide how many
690
+ // references to generate.
691
+ timeline.setDuration(300);
692
+ manifest = shaka.test.ManifestGenerator.generate((manifest) => {
693
+ manifest.presentationTimeline = timeline;
694
+ manifest.addVariant(0, (variant) => {
695
+ variant.addVideo(1, (stream) => {
696
+ stream.useSegmentTemplate(
697
+ '$Number$.mp4', /* segmentDuration= */ 10);
698
+ });
699
+ });
700
+ });
701
+ goog.asserts.assert(manifest, 'manifest must be non-null');
702
+
703
+ // Explicitly notify the timeline of the segment references.
704
+ const videoStream = manifest.variants[0].video;
705
+ await videoStream.createSegmentIndex();
706
+ goog.asserts.assert(videoStream.segmentIndex,
707
+ 'SegmentIndex must be non-null');
708
+ const references = Array.from(videoStream.segmentIndex);
709
+ goog.asserts.assert(references.length != 0,
710
+ 'Must have references for this test!');
711
+ timeline.notifySegments(references);
712
+
713
+ player.configure({playRangeStart: 5, playRangeEnd: 10});
714
+ await player.load(fakeManifestUri, 0, fakeMimeType);
715
+
701
716
  const seekRange = player.seekRange();
702
717
  expect(seekRange.start).toBe(5);
703
718
  expect(seekRange.end).toBe(10);
@@ -798,7 +813,7 @@ describe('Player', () => {
798
813
  expect(newConfig.streaming.bufferBehind).toBe(77);
799
814
  });
800
815
 
801
- // https://github.com/google/shaka-player/issues/1524
816
+ // https://github.com/shaka-project/shaka-player/issues/1524
802
817
  it('does not pollute other advanced DRM configs', () => {
803
818
  player.configure('drm.advanced.foo', {});
804
819
  player.configure('drm.advanced.bar', {});
@@ -1092,8 +1107,8 @@ describe('Player', () => {
1092
1107
  // Image tracks
1093
1108
  manifest.addImageStream(53, (stream) => {
1094
1109
  stream.originalId = 'thumbnail';
1095
- stream.width = 100;
1096
- stream.height = 200;
1110
+ stream.width = 200;
1111
+ stream.height = 400;
1097
1112
  stream.bandwidth = 10;
1098
1113
  stream.mimeType = 'image/jpeg';
1099
1114
  stream.tilesLayout = '1x1';
@@ -1503,8 +1518,8 @@ describe('Player', () => {
1503
1518
  audioBandwidth: null,
1504
1519
  videoBandwidth: null,
1505
1520
  bandwidth: 10,
1506
- width: 100,
1507
- height: 200,
1521
+ width: 200,
1522
+ height: 400,
1508
1523
  frameRate: null,
1509
1524
  pixelAspectRatio: null,
1510
1525
  hdr: null,
@@ -1668,8 +1683,8 @@ describe('Player', () => {
1668
1683
  expect(getActiveTextTrack().id).toBe(spanishTextTrack.id);
1669
1684
  });
1670
1685
 
1671
- // Regression test for https://github.com/google/shaka-player/issues/2906
1672
- // and https://github.com/google/shaka-player/issues/2909.
1686
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/2906
1687
+ // and https://github.com/shaka-project/shaka-player/issues/2909.
1673
1688
  it('selectAudioLanguage() can choose role-less tracks', async () => {
1674
1689
  // For this test, we use a different (and simpler) manifest.
1675
1690
  // Both audio tracks are English; one has a role, and one has no roles.
@@ -1729,7 +1744,7 @@ describe('Player', () => {
1729
1744
  expect(getActiveVariantTrack().audioRoles).toEqual([]);
1730
1745
  });
1731
1746
 
1732
- // https://github.com/google/shaka-player/issues/3262
1747
+ // https://github.com/shaka-project/shaka-player/issues/3262
1733
1748
  it('selectAudioLanguage() doesn\'t change resolution', () => {
1734
1749
  player.configure('abr.enabled', false);
1735
1750
  abrManager.chooseIndex = 1;
@@ -1807,7 +1822,7 @@ describe('Player', () => {
1807
1822
  expect(getActiveTextTrack().language).toBe('en');
1808
1823
  });
1809
1824
 
1810
- // https://github.com/google/shaka-player/issues/2010
1825
+ // https://github.com/shaka-project/shaka-player/issues/2010
1811
1826
  it('changing text lang changes active stream when not streaming', () => {
1812
1827
  player.setTextTrackVisibility(false);
1813
1828
 
@@ -2112,8 +2127,8 @@ describe('Player', () => {
2112
2127
  async function runTest(languages, preference, expectedIndex) {
2113
2128
  // A manifest we can use to test language selection.
2114
2129
  manifest = shaka.test.ManifestGenerator.generate((manifest) => {
2115
- const enumerate = (it) => shaka.util.Iterables.enumerate(it);
2116
- for (const {i, item: lang} of enumerate(languages)) {
2130
+ for (let i = 0; i < languages.length; i++) {
2131
+ const lang = languages[i];
2117
2132
  if (lang.charAt(0) == '*') {
2118
2133
  manifest.addVariant(i, (variant) => {
2119
2134
  variant.primary = true;
@@ -2463,7 +2478,7 @@ describe('Player', () => {
2463
2478
  it('throws CONTENT_UNSUPPORTED_BY_BROWSER', async () => {
2464
2479
  window.MediaSource.isTypeSupported = (mimeType) => false;
2465
2480
 
2466
- window.shakaMediaCapabilities.decodingInfo = async (config) => {
2481
+ navigator.mediaCapabilities.decodingInfo = async (config) => {
2467
2482
  await Promise.resolve();
2468
2483
  return {supported: false};
2469
2484
  };
@@ -2548,7 +2563,7 @@ describe('Player', () => {
2548
2563
  expect(variants[0].id).toBe(2);
2549
2564
 
2550
2565
  // Now increase the restriction, AbrManager should still be updated.
2551
- // https://github.com/google/shaka-player/issues/1533
2566
+ // https://github.com/shaka-project/shaka-player/issues/1533
2552
2567
  abrManager.setVariants.calls.reset();
2553
2568
  player.configure({restrictions: {maxBandwidth: Infinity}});
2554
2569
  expect(abrManager.setVariants).toHaveBeenCalledTimes(1);
@@ -2827,7 +2842,7 @@ describe('Player', () => {
2827
2842
  });
2828
2843
  });
2829
2844
 
2830
- window.shakaMediaCapabilities.decodingInfo = async (config) => {
2845
+ navigator.mediaCapabilities.decodingInfo = async (config) => {
2831
2846
  await Promise.resolve();
2832
2847
  const videoType = config['video'] ? config['video'].contentType : '';
2833
2848
  if (videoType.includes('video') &&
@@ -3186,7 +3201,7 @@ describe('Player', () => {
3186
3201
  // Most of our Player unit tests never adapt. This allowed some assertions
3187
3202
  // to creep in that went uncaught until they happened during manual testing.
3188
3203
  // Repro only happens with audio+video variants in which we only adapt one
3189
- // type. This test covers https://github.com/google/shaka-player/issues/954
3204
+ // type. This test covers https://github.com/shaka-project/shaka-player/issues/954
3190
3205
 
3191
3206
  manifest = shaka.test.ManifestGenerator.generate((manifest) => {
3192
3207
  manifest.addVariant(0, (variant) => {
@@ -3268,7 +3283,7 @@ describe('Player', () => {
3268
3283
 
3269
3284
  describe('load', () => {
3270
3285
  it('tolerates bandwidth of NaN, undefined, or 0', async () => {
3271
- // Regression test for https://github.com/google/shaka-player/issues/938
3286
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/938
3272
3287
  manifest = shaka.test.ManifestGenerator.generate((manifest) => {
3273
3288
  manifest.addVariant(0, (variant) => {
3274
3289
  variant.bandwidth = /** @type {?} */(undefined);
@@ -3537,29 +3552,39 @@ describe('Player', () => {
3537
3552
 
3538
3553
  await player.load(fakeManifestUri, 0, fakeMimeType);
3539
3554
 
3555
+ expect(player.getImageTracks()[0].width).toBe(100);
3556
+ expect(player.getImageTracks()[0].height).toBe(50);
3540
3557
  const thumbnail0 = await player.getThumbnails(5, 0);
3541
3558
  const thumbnail1 = await player.getThumbnails(5, 11);
3542
3559
  const thumbnail2 = await player.getThumbnails(5, 21);
3543
3560
  const thumbnail5 = await player.getThumbnails(5, 51);
3544
3561
  expect(thumbnail0).toEqual(jasmine.objectContaining({
3562
+ imageHeight: 150,
3563
+ imageWidth: 200,
3545
3564
  positionX: 0,
3546
3565
  positionY: 0,
3547
3566
  width: 100,
3548
3567
  height: 50,
3549
3568
  }));
3550
3569
  expect(thumbnail1).toEqual(jasmine.objectContaining({
3570
+ imageHeight: 150,
3571
+ imageWidth: 200,
3551
3572
  positionX: 100,
3552
3573
  positionY: 0,
3553
3574
  width: 100,
3554
3575
  height: 50,
3555
3576
  }));
3556
3577
  expect(thumbnail2).toEqual(jasmine.objectContaining({
3578
+ imageHeight: 150,
3579
+ imageWidth: 200,
3557
3580
  positionX: 0,
3558
3581
  positionY: 50,
3559
3582
  width: 100,
3560
3583
  height: 50,
3561
3584
  }));
3562
3585
  expect(thumbnail5).toEqual(jasmine.objectContaining({
3586
+ imageHeight: 150,
3587
+ imageWidth: 200,
3563
3588
  positionX: 100,
3564
3589
  positionY: 100,
3565
3590
  width: 100,
@@ -4,14 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('goog.asserts');
8
- goog.require('shaka.routing.Walker');
9
- goog.require('shaka.test.Util');
10
- goog.require('shaka.util.AbortableOperation');
11
- goog.require('shaka.util.Error');
12
- goog.require('shaka.util.PublicPromise');
13
- goog.requireType('shaka.routing.Node');
14
-
15
7
  describe('Walker', () => {
16
8
  const AbortableOperation = shaka.util.AbortableOperation;
17
9