shaka-player 3.3.2 → 3.3.5

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 (339) hide show
  1. package/.csslintrc +11 -1
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  3. package/.github/pull_request_template.md +6 -34
  4. package/.github/workflows/build-and-test.yaml +129 -0
  5. package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +56 -0
  6. package/.github/workflows/custom-actions/set-commit-status/action.yaml +41 -0
  7. package/.github/workflows/demo-version-index.yaml +29 -0
  8. package/.github/workflows/nightly-demo.yaml +42 -0
  9. package/.github/workflows/release-please.yaml +147 -0
  10. package/.github/workflows/safari-homedir-launcher.sh +18 -0
  11. package/.github/workflows/selenium-lab-tests.yaml +92 -0
  12. package/AUTHORS +2 -0
  13. package/CHANGELOG.md +1718 -1675
  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 +3 -3
  59. package/build/checkversion.py +2 -2
  60. package/build/conformance.textproto +13 -0
  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 +94 -29
  67. package/build/types/core +0 -1
  68. package/build/types/polyfill +1 -0
  69. package/build/wrapper.template.js +2 -2
  70. package/demo/TengwarTelcontar.woff2 +0 -0
  71. package/demo/asset_card.js +1 -2
  72. package/demo/cast_receiver/index.html +1 -1
  73. package/demo/cast_receiver/receiver_app.css +14 -14
  74. package/demo/common/assets.js +2 -0
  75. package/demo/config.js +0 -1
  76. package/demo/custom.js +0 -1
  77. package/demo/customWarning.txt +2 -2
  78. package/demo/demo.less +29 -18
  79. package/demo/demo_uncompiled.js +1 -13
  80. package/demo/index.html +1 -1
  81. package/demo/main.js +3 -3
  82. package/dist/controls.css +3 -3
  83. package/dist/controls.css.map +1 -1
  84. package/dist/demo.compiled.debug.js +191 -194
  85. package/dist/demo.compiled.debug.map +4 -4
  86. package/dist/demo.compiled.js +191 -194
  87. package/dist/demo.compiled.map +4 -4
  88. package/dist/demo.css +1 -1
  89. package/dist/demo.css.map +1 -1
  90. package/dist/deps.js +232 -226
  91. package/dist/locales.js +30 -30
  92. package/dist/receiver.compiled.debug.js +43 -45
  93. package/dist/receiver.compiled.debug.map +4 -4
  94. package/dist/receiver.compiled.js +43 -45
  95. package/dist/receiver.compiled.map +4 -4
  96. package/dist/shaka-player.compiled.d.ts +247 -236
  97. package/dist/shaka-player.compiled.debug.d.ts +247 -236
  98. package/dist/shaka-player.compiled.debug.externs.js +15 -3
  99. package/dist/shaka-player.compiled.debug.js +284 -290
  100. package/dist/shaka-player.compiled.debug.map +4 -4
  101. package/dist/shaka-player.compiled.externs.js +15 -3
  102. package/dist/shaka-player.compiled.js +855 -859
  103. package/dist/shaka-player.compiled.map +4 -4
  104. package/dist/shaka-player.ui.d.ts +291 -280
  105. package/dist/shaka-player.ui.debug.d.ts +291 -280
  106. package/dist/shaka-player.ui.debug.externs.js +15 -3
  107. package/dist/shaka-player.ui.debug.js +296 -302
  108. package/dist/shaka-player.ui.debug.map +4 -4
  109. package/dist/shaka-player.ui.externs.js +15 -3
  110. package/dist/shaka-player.ui.js +1005 -1009
  111. package/dist/shaka-player.ui.map +4 -4
  112. package/docs/design/REDESIGN.md +33 -33
  113. package/docs/design/bg-fetch.md +2 -2
  114. package/docs/design/codec_preferences.md +1 -1
  115. package/docs/design/dash-audio-channels.md +3 -3
  116. package/docs/design/dash-manifests.md +1 -1
  117. package/docs/design/gap-jumping.md +3 -3
  118. package/docs/design/preload.md +2 -2
  119. package/docs/tutorials/faq.md +8 -8
  120. package/docs/tutorials/index.json +1 -0
  121. package/docs/tutorials/plugins.md +3 -3
  122. package/docs/tutorials/selenium-grid-config.md +122 -0
  123. package/docs/tutorials/welcome.md +10 -2
  124. package/externs/cmcd.js +1 -1
  125. package/karma.conf.js +141 -30
  126. package/lib/abr/simple_abr_manager.js +12 -6
  127. package/lib/cast/cast_proxy.js +3 -4
  128. package/lib/cea/cea608_data_channel.js +2 -2
  129. package/lib/cea/cea708_service.js +5 -4
  130. package/lib/cea/mp4_cea_parser.js +11 -5
  131. package/lib/cea/sei_processor.js +6 -3
  132. package/lib/dash/dash_parser.js +11 -14
  133. package/lib/dash/mpd_utils.js +4 -5
  134. package/lib/dash/segment_list.js +1 -2
  135. package/lib/dash/segment_template.js +3 -3
  136. package/lib/hls/hls_parser.js +34 -20
  137. package/lib/hls/manifest_text_parser.js +3 -3
  138. package/lib/media/adaptation_set.js +1 -2
  139. package/lib/media/content_workarounds.js +2 -2
  140. package/lib/media/drm_engine.js +3 -2
  141. package/lib/media/media_source_engine.js +10 -3
  142. package/lib/media/mp4_segment_index_parser.js +1 -4
  143. package/lib/media/playhead.js +2 -2
  144. package/lib/media/presentation_timeline.js +18 -8
  145. package/lib/media/streaming_engine.js +6 -6
  146. package/lib/media/time_ranges_utils.js +1 -3
  147. package/lib/media/video_wrapper.js +1 -1
  148. package/lib/net/networking_engine.js +1 -1
  149. package/lib/offline/indexeddb/storage_mechanism.js +4 -2
  150. package/lib/offline/storage.js +96 -95
  151. package/lib/player.js +190 -114
  152. package/lib/polyfill/all.js +2 -3
  153. package/lib/polyfill/encryption_scheme.js +1 -1
  154. package/lib/polyfill/media_capabilities.js +3 -3
  155. package/lib/polyfill/mediasource.js +1 -1
  156. package/lib/polyfill/symbol.js +46 -0
  157. package/lib/text/cue.js +1 -1
  158. package/lib/text/simple_text_displayer.js +2 -1
  159. package/lib/text/ttml_text_parser.js +8 -5
  160. package/lib/text/ui_text_displayer.js +1 -1
  161. package/lib/util/buffer_utils.js +1 -3
  162. package/lib/util/config_utils.js +25 -0
  163. package/lib/util/ebml_parser.js +3 -3
  164. package/lib/util/error.js +8 -1
  165. package/lib/util/iterables.js +0 -46
  166. package/lib/util/manifest_parser_utils.js +1 -1
  167. package/lib/util/mime_utils.js +48 -1
  168. package/lib/util/mp4_box_parsers.js +1 -4
  169. package/lib/util/mp4_parser.js +5 -7
  170. package/lib/util/periods.js +15 -15
  171. package/lib/util/platform.js +3 -3
  172. package/lib/util/player_configuration.js +9 -14
  173. package/lib/util/pssh.js +1 -4
  174. package/lib/util/stream_utils.js +8 -5
  175. package/lib/util/string_utils.js +3 -5
  176. package/lib/util/uint8array_utils.js +3 -5
  177. package/lib/util/xml_utils.js +15 -7
  178. package/package.json +61 -36
  179. package/roadmap.md +17 -17
  180. package/shaka-player.uncompiled.js +1 -0
  181. package/test/abr/simple_abr_manager_unit.js +3 -8
  182. package/test/ads/ad_manager_unit.js +0 -6
  183. package/test/cast/cast_proxy_unit.js +0 -8
  184. package/test/cast/cast_receiver_integration.js +1 -18
  185. package/test/cast/cast_receiver_unit.js +1 -9
  186. package/test/cast/cast_sender_unit.js +0 -6
  187. package/test/cast/cast_utils_unit.js +1 -13
  188. package/test/cea/cea608_memory_unit.js +0 -5
  189. package/test/cea/cea708_service_unit.js +0 -7
  190. package/test/cea/cea708_window_unit.js +0 -5
  191. package/test/cea/cea_decoder_unit.js +0 -6
  192. package/test/cea/dtvcc_packet_builder_unit.js +0 -3
  193. package/test/cea/dtvcc_packet_unit.js +0 -5
  194. package/test/cea/mp4_cea_parser_unit.js +0 -4
  195. package/test/dash/dash_parser_content_protection_unit.js +1 -10
  196. package/test/dash/dash_parser_live_unit.js +2 -15
  197. package/test/dash/dash_parser_manifest_unit.js +2 -40
  198. package/test/dash/dash_parser_segment_base_unit.js +1 -8
  199. package/test/dash/dash_parser_segment_list_unit.js +1 -7
  200. package/test/dash/dash_parser_segment_template_unit.js +0 -9
  201. package/test/dash/mpd_utils_unit.js +3 -11
  202. package/test/demo/demo_unit.js +0 -5
  203. package/test/deprecate/enforcer_unit.js +0 -4
  204. package/test/deprecate/version_unit.js +0 -2
  205. package/test/hls/hls_live_unit.js +28 -14
  206. package/test/hls/hls_parser_unit.js +2 -15
  207. package/test/hls/manifest_text_parser_unit.js +19 -10
  208. package/test/media/adaptation_set_criteria_unit.js +3 -7
  209. package/test/media/adaptation_set_unit.js +0 -2
  210. package/test/media/buffering_observer_unit.js +1 -4
  211. package/test/media/closed_caption_parser_unit.js +0 -3
  212. package/test/media/drm_engine_integration.js +2 -15
  213. package/test/media/drm_engine_unit.js +4 -24
  214. package/test/media/manifest_parser_unit.js +0 -4
  215. package/test/media/media_source_engine_integration.js +1 -7
  216. package/test/media/media_source_engine_unit.js +5 -18
  217. package/test/media/mp4_segment_index_parser_unit.js +0 -4
  218. package/test/media/play_rate_controller_unit.js +0 -4
  219. package/test/media/playhead_unit.js +8 -16
  220. package/test/media/presentation_timeline_unit.js +4 -7
  221. package/test/media/quality_observer_unit.js +0 -4
  222. package/test/media/region_observer_unit.js +1 -6
  223. package/test/media/region_timeline_unit.js +0 -3
  224. package/test/media/segment_index_unit.js +0 -6
  225. package/test/media/segment_reference_unit.js +0 -3
  226. package/test/media/stall_detector_unit.js +0 -5
  227. package/test/media/streaming_engine_integration.js +11 -36
  228. package/test/media/streaming_engine_unit.js +11 -35
  229. package/test/media/time_ranges_utils_unit.js +0 -2
  230. package/test/media/transmuxer_integration.js +0 -6
  231. package/test/media/webm_segment_index_parser_unit.js +0 -4
  232. package/test/net/data_uri_plugin_unit.js +0 -7
  233. package/test/net/http_plugin_unit.js +0 -9
  234. package/test/net/networking_engine_unit.js +0 -11
  235. package/test/offline/download_progress_estimator_unit.js +0 -2
  236. package/test/offline/indexeddb_storage_unit.js +1 -7
  237. package/test/offline/manifest_convert_unit.js +0 -8
  238. package/test/offline/offline_integration.js +1 -10
  239. package/test/offline/offline_manifest_parser_unit.js +0 -6
  240. package/test/offline/offline_scheme_unit.js +0 -8
  241. package/test/offline/offline_uri_unit.js +0 -2
  242. package/test/offline/storage_compatibility_unit.js +2 -15
  243. package/test/offline/storage_integration.js +1 -27
  244. package/test/player_external.js +9 -11
  245. package/test/player_integration.js +28 -38
  246. package/test/player_load_graph_integration.js +1 -6
  247. package/test/player_src_equals_external.js +3 -9
  248. package/test/player_src_equals_integration.js +81 -90
  249. package/test/player_unit.js +150 -38
  250. package/test/routing/walker_unit.js +0 -8
  251. package/test/test/assets/large_file.mpd +1 -1
  252. package/test/test/boot.js +84 -22
  253. package/test/test/externs/filters.js +4 -0
  254. package/test/test/externs/jasmine.js +2 -2
  255. package/test/test/externs/karma.js +4 -0
  256. package/test/test/namespace.js +10 -0
  257. package/test/test/util/canned_idb.js +0 -8
  258. package/test/test/util/cea_utils.js +0 -6
  259. package/test/test/util/dash_parser_util.js +0 -13
  260. package/test/test/util/fake_ad.js +0 -3
  261. package/test/test/util/fake_ad_manager.js +0 -9
  262. package/test/test/util/fake_demo_main.js +0 -5
  263. package/test/test/util/fake_drm_engine.js +0 -6
  264. package/test/test/util/fake_media_source_engine.js +0 -7
  265. package/test/test/util/fake_networking_engine.js +0 -5
  266. package/test/test/util/fake_text_displayer.js +0 -5
  267. package/test/test/util/indexeddb_utils.js +1 -10
  268. package/test/test/util/jasmine_fetch.js +0 -1
  269. package/test/test/util/loader.js +0 -18
  270. package/test/test/util/manifest_generator.js +9 -14
  271. package/test/test/util/manifest_parser_util.js +0 -6
  272. package/test/test/util/offline_utils.js +0 -5
  273. package/test/test/util/simple_fakes.js +40 -28
  274. package/test/test/util/stream_generator.js +0 -14
  275. package/test/test/util/streaming_engine_util.js +0 -15
  276. package/test/test/util/test_scheme.js +1 -19
  277. package/test/test/util/ttml_utils.js +0 -2
  278. package/test/test/util/ui_utils.js +0 -9
  279. package/test/test/util/util.js +5 -19
  280. package/test/test/util/waiter.js +84 -43
  281. package/test/text/cue_integration.js +0 -4
  282. package/test/text/lrc_text_parser_unit.js +0 -4
  283. package/test/text/mp4_ttml_parser_unit.js +0 -6
  284. package/test/text/mp4_vtt_parser_unit.js +1 -7
  285. package/test/text/sbv_text_parser_unit.js +0 -4
  286. package/test/text/simple_text_displayer_unit.js +1 -8
  287. package/test/text/srt_text_parser_unit.js +0 -4
  288. package/test/text/ssa_text_parser_unit.js +0 -5
  289. package/test/text/text_engine_unit.js +2 -7
  290. package/test/text/text_track_integration.js +0 -2
  291. package/test/text/ttml_text_parser_unit.js +2 -11
  292. package/test/text/ui_text_displayer_unit.js +44 -41
  293. package/test/text/vtt_text_parser_unit.js +0 -9
  294. package/test/text/web_vtt_generator_unit.js +0 -3
  295. package/test/ui/ad_ui_unit.js +0 -11
  296. package/test/ui/localization_unit.js +0 -3
  297. package/test/ui/text_displayer_layout_unit.js +1 -12
  298. package/test/ui/ui_customization_unit.js +0 -6
  299. package/test/ui/ui_integration.js +0 -16
  300. package/test/ui/ui_unit.js +1 -17
  301. package/test/util/abortable_operation_unit.js +4 -9
  302. package/test/util/array_utils_unit.js +0 -2
  303. package/test/util/buffer_utils_unit.js +0 -2
  304. package/test/util/cmcd_manager_unit.js +0 -3
  305. package/test/util/data_view_reader_unit.js +0 -4
  306. package/test/util/ebml_parser_unit.js +0 -4
  307. package/test/util/event_manager_unit.js +0 -3
  308. package/test/util/fake_event_target_unit.js +0 -5
  309. package/test/util/functional_unit.js +1 -1
  310. package/test/util/iterables_unit.js +0 -64
  311. package/test/util/language_utils_unit.js +0 -3
  312. package/test/util/manifest_parser_utils_unit.js +0 -2
  313. package/test/util/mime_utils_unit.js +54 -0
  314. package/test/util/mp4_box_parsers_unit.js +0 -5
  315. package/test/util/mp4_parser_unit.js +0 -4
  316. package/test/util/multi_map_unit.js +0 -3
  317. package/test/util/object_utils_unit.js +0 -2
  318. package/test/util/periods_unit.js +93 -7
  319. package/test/util/pssh_unit.js +0 -5
  320. package/test/util/state_history_unit.js +0 -2
  321. package/test/util/stream_utils_unit.js +3 -8
  322. package/test/util/string_utils_unit.js +0 -6
  323. package/test/util/text_parser_unit.js +0 -2
  324. package/test/util/xml_utils_unit.js +0 -4
  325. package/ui/less/ad_controls.less +6 -6
  326. package/ui/less/buttons.less +6 -6
  327. package/ui/less/containers.less +13 -15
  328. package/ui/less/overflow_menu.less +4 -4
  329. package/ui/less/range_elements.less +7 -2
  330. package/ui/less/tooltip.less +4 -4
  331. package/ui/locales/sjn-translations.yaml +257 -0
  332. package/ui/locales/sjn.json +42 -0
  333. package/ui/seek_bar.js +2 -1
  334. package/.github/workflows/build_and_test.yaml +0 -73
  335. package/.github/workflows/release.yaml +0 -53
  336. package/docs/tutorials/gsoc-ideas-list.md +0 -3
  337. package/externs/svgelement.js +0 -18
  338. package/externs/webcrypto.js +0 -18
  339. package/lib/util/mutex.js +0 -52
@@ -4,15 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('ShakaDemoAssetInfo');
8
- goog.require('shaka.test.Loader');
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
- goog.requireType('shaka.Player');
14
- goog.requireType('shaka.net.NetworkingEngine.RequestType');
15
-
16
7
  describe('Player', () => {
17
8
  const Util = shaka.test.Util;
18
9
  const Feature = shakaAssets.Feature;
@@ -48,6 +39,7 @@ describe('Player', () => {
48
39
  // Grab event manager from the uncompiled library:
49
40
  eventManager = new shaka.util.EventManager();
50
41
  waiter = new shaka.test.Waiter(eventManager);
42
+ waiter.setPlayer(player);
51
43
 
52
44
  onErrorSpy = jasmine.createSpy('onError');
53
45
  onErrorSpy.and.callFake((event) => fail(event.detail));
@@ -117,7 +109,7 @@ describe('Player', () => {
117
109
 
118
110
  // Make sure we don't get stuck on gaps that only appear in some
119
111
  // browsers (Safari, Firefox).
120
- // TODO(https://github.com/google/shaka-player/issues/1702):
112
+ // TODO(https://github.com/shaka-project/shaka-player/issues/1702):
121
113
  // Is this necessary because of a bug in Shaka Player?
122
114
  player.configure('streaming.jumpLargeGaps', true);
123
115
 
@@ -128,7 +120,13 @@ describe('Player', () => {
128
120
  const networkingEngine = player.getNetworkingEngine();
129
121
  asset.applyFilters(networkingEngine);
130
122
 
131
- await player.load(asset.manifestUri);
123
+ // Rather than awaiting the load() method, catch any load() errors and
124
+ // wait on the 'canplay' event. This has the advantage that we will
125
+ // get better logging of the media state on a timeout, since that
126
+ // capabilitiy is built into the waiter for media element events.
127
+ player.load(asset.manifestUri).catch(fail);
128
+ await waiter.timeoutAfter(60).waitForEvent(video, 'canplay');
129
+
132
130
  if (asset.features) {
133
131
  const isLive = asset.features.includes(Feature.LIVE);
134
132
  expect(player.isLive()).toBe(isLive);
@@ -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
 
@@ -1059,16 +1053,16 @@ describe('Player', () => {
1059
1053
  });
1060
1054
  }); // describe('unloading')
1061
1055
 
1062
- describe('chapters', () => {
1063
- it('add external chapters in vtt format', async () => {
1056
+ describe('addChaptersTrack', () => {
1057
+ it('adds 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
1060
  const partialUri1 = new goog.Uri('/base/test/test/assets/chapters.vtt');
1067
1061
  const absoluteUri1 = locationUri.resolve(partialUri1);
1068
1062
  await player.addChaptersTrack(absoluteUri1.toString(), 'en');
1069
1063
 
1070
- await shaka.test.Util.delay(1.5);
1071
-
1064
+ // Data should be available as soon as addChaptersTrack resolves.
1065
+ // See https://github.com/shaka-project/shaka-player/issues/4186
1072
1066
  const chapters = player.getChapters('en');
1073
1067
  expect(chapters.length).toBe(3);
1074
1068
  const chapter1 = chapters[0];
@@ -1088,8 +1082,6 @@ describe('Player', () => {
1088
1082
  const absoluteUri2 = locationUri.resolve(partialUri2);
1089
1083
  await player.addChaptersTrack(absoluteUri2.toString(), 'en');
1090
1084
 
1091
- await shaka.test.Util.delay(1.5);
1092
-
1093
1085
  const chaptersUpdated = player.getChapters('en');
1094
1086
  expect(chaptersUpdated.length).toBe(6);
1095
1087
  const chapterUpdated1 = chaptersUpdated[0];
@@ -1118,15 +1110,13 @@ describe('Player', () => {
1118
1110
  expect(chapterUpdated6.endTime).toBe(61.349);
1119
1111
  });
1120
1112
 
1121
- it('add external chapters in srt format', async () => {
1113
+ it('adds external chapters in srt format', async () => {
1122
1114
  await player.load('test:sintel_no_text_compiled');
1123
1115
  const locationUri = new goog.Uri(location.href);
1124
1116
  const partialUri = new goog.Uri('/base/test/test/assets/chapters.srt');
1125
1117
  const absoluteUri = locationUri.resolve(partialUri);
1126
1118
  await player.addChaptersTrack(absoluteUri.toString(), 'es');
1127
1119
 
1128
- await shaka.test.Util.delay(1.5);
1129
-
1130
1120
  const chapters = player.getChapters('es');
1131
1121
  expect(chapters.length).toBe(3);
1132
1122
  const chapter1 = chapters[0];
@@ -1142,5 +1132,5 @@ describe('Player', () => {
1142
1132
  expect(chapter3.startTime).toBe(30);
1143
1133
  expect(chapter3.endTime).toBe(61.349);
1144
1134
  });
1145
- }); // describe('chapters')
1135
+ }); // describe('addChaptersTrack')
1146
1136
  });
@@ -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=|.
@@ -326,90 +319,88 @@ describe('Player Src Equals', () => {
326
319
  expect(newTrack).toBeTruthy();
327
320
  });
328
321
 
329
- it('add external chapters in vtt format', async () => {
330
- await loadWithSrcEquals(SMALL_MP4_CONTENT_URI, /* startTime= */ null);
331
-
332
- const locationUri = new goog.Uri(location.href);
333
- const partialUri1 = new goog.Uri('/base/test/test/assets/chapters.vtt');
334
- const absoluteUri1 = locationUri.resolve(partialUri1);
335
- await player.addChaptersTrack(absoluteUri1.toString(), 'en');
336
-
337
- await shaka.test.Util.delay(1.5);
338
-
339
- const chapters = player.getChapters('en');
340
- expect(chapters.length).toBe(3);
341
- const chapter1 = chapters[0];
342
- expect(chapter1.title).toBe('Chapter 1');
343
- expect(chapter1.startTime).toBe(0);
344
- expect(chapter1.endTime).toBe(5);
345
- const chapter2 = chapters[1];
346
- expect(chapter2.title).toBe('Chapter 2');
347
- expect(chapter2.startTime).toBe(5);
348
- expect(chapter2.endTime).toBe(10);
349
- const chapter3 = chapters[2];
350
- expect(chapter3.title).toBe('Chapter 3');
351
- expect(chapter3.startTime).toBe(10);
352
- expect(chapter3.endTime).toBe(20);
353
-
354
- const partialUri2 = new goog.Uri('/base/test/test/assets/chapters2.vtt');
355
- const absoluteUri2 = locationUri.resolve(partialUri2);
356
- await player.addChaptersTrack(absoluteUri2.toString(), 'en');
357
-
358
- await shaka.test.Util.delay(1.5);
359
-
360
- const chaptersUpdated = player.getChapters('en');
361
- expect(chaptersUpdated.length).toBe(6);
362
- const chapterUpdated1 = chaptersUpdated[0];
363
- expect(chapterUpdated1.title).toBe('Chapter 1');
364
- expect(chapterUpdated1.startTime).toBe(0);
365
- expect(chapterUpdated1.endTime).toBe(5);
366
- const chapterUpdated2 = chaptersUpdated[1];
367
- expect(chapterUpdated2.title).toBe('Chapter 2');
368
- expect(chapterUpdated2.startTime).toBe(5);
369
- expect(chapterUpdated2.endTime).toBe(10);
370
- const chapterUpdated3 = chaptersUpdated[2];
371
- expect(chapterUpdated3.title).toBe('Chapter 3');
372
- expect(chapterUpdated3.startTime).toBe(10);
373
- expect(chapterUpdated3.endTime).toBe(20);
374
- const chapterUpdated4 = chaptersUpdated[3];
375
- expect(chapterUpdated4.title).toBe('Chapter 4');
376
- expect(chapterUpdated4.startTime).toBe(20);
377
- expect(chapterUpdated4.endTime).toBe(30);
378
- const chapterUpdated5 = chaptersUpdated[4];
379
- expect(chapterUpdated5.title).toBe('Chapter 5');
380
- expect(chapterUpdated5.startTime).toBe(30);
381
- expect(chapterUpdated5.endTime).toBe(40);
382
- const chapterUpdated6 = chaptersUpdated[5];
383
- expect(chapterUpdated6.title).toBe('Chapter 6');
384
- expect(chapterUpdated6.startTime).toBe(40);
385
- expect(chapterUpdated6.endTime).toBe(61.349);
386
- });
387
-
388
- it('add external chapters in srt format', async () => {
389
- await loadWithSrcEquals(SMALL_MP4_CONTENT_URI, /* startTime= */ null);
390
-
391
- const locationUri = new goog.Uri(location.href);
392
- const partialUri = new goog.Uri('/base/test/test/assets/chapters.srt');
393
- const absoluteUri = locationUri.resolve(partialUri);
394
- await player.addChaptersTrack(absoluteUri.toString(), 'es');
395
-
396
- await shaka.test.Util.delay(1.5);
322
+ describe('addChaptersTrack', () => {
323
+ it('adds external chapters in vtt format', async () => {
324
+ await loadWithSrcEquals(SMALL_MP4_CONTENT_URI, /* startTime= */ null);
325
+
326
+ const locationUri = new goog.Uri(location.href);
327
+ const partialUri1 = new goog.Uri('/base/test/test/assets/chapters.vtt');
328
+ const absoluteUri1 = locationUri.resolve(partialUri1);
329
+ await player.addChaptersTrack(absoluteUri1.toString(), 'en');
330
+
331
+ // Data should be available as soon as addChaptersTrack resolves.
332
+ // See https://github.com/shaka-project/shaka-player/issues/4186
333
+ const chapters = player.getChapters('en');
334
+ expect(chapters.length).toBe(3);
335
+ const chapter1 = chapters[0];
336
+ expect(chapter1.title).toBe('Chapter 1');
337
+ expect(chapter1.startTime).toBe(0);
338
+ expect(chapter1.endTime).toBe(5);
339
+ const chapter2 = chapters[1];
340
+ expect(chapter2.title).toBe('Chapter 2');
341
+ expect(chapter2.startTime).toBe(5);
342
+ expect(chapter2.endTime).toBe(10);
343
+ const chapter3 = chapters[2];
344
+ expect(chapter3.title).toBe('Chapter 3');
345
+ expect(chapter3.startTime).toBe(10);
346
+ expect(chapter3.endTime).toBe(20);
347
+
348
+ const partialUri2 = new goog.Uri('/base/test/test/assets/chapters2.vtt');
349
+ const absoluteUri2 = locationUri.resolve(partialUri2);
350
+ await player.addChaptersTrack(absoluteUri2.toString(), 'en');
351
+
352
+ const chaptersUpdated = player.getChapters('en');
353
+ expect(chaptersUpdated.length).toBe(6);
354
+ const chapterUpdated1 = chaptersUpdated[0];
355
+ expect(chapterUpdated1.title).toBe('Chapter 1');
356
+ expect(chapterUpdated1.startTime).toBe(0);
357
+ expect(chapterUpdated1.endTime).toBe(5);
358
+ const chapterUpdated2 = chaptersUpdated[1];
359
+ expect(chapterUpdated2.title).toBe('Chapter 2');
360
+ expect(chapterUpdated2.startTime).toBe(5);
361
+ expect(chapterUpdated2.endTime).toBe(10);
362
+ const chapterUpdated3 = chaptersUpdated[2];
363
+ expect(chapterUpdated3.title).toBe('Chapter 3');
364
+ expect(chapterUpdated3.startTime).toBe(10);
365
+ expect(chapterUpdated3.endTime).toBe(20);
366
+ const chapterUpdated4 = chaptersUpdated[3];
367
+ expect(chapterUpdated4.title).toBe('Chapter 4');
368
+ expect(chapterUpdated4.startTime).toBe(20);
369
+ expect(chapterUpdated4.endTime).toBe(30);
370
+ const chapterUpdated5 = chaptersUpdated[4];
371
+ expect(chapterUpdated5.title).toBe('Chapter 5');
372
+ expect(chapterUpdated5.startTime).toBe(30);
373
+ expect(chapterUpdated5.endTime).toBe(40);
374
+ const chapterUpdated6 = chaptersUpdated[5];
375
+ expect(chapterUpdated6.title).toBe('Chapter 6');
376
+ expect(chapterUpdated6.startTime).toBe(40);
377
+ expect(chapterUpdated6.endTime).toBe(61.349);
378
+ });
397
379
 
398
- const chapters = player.getChapters('es');
399
- expect(chapters.length).toBe(3);
400
- const chapter1 = chapters[0];
401
- expect(chapter1.title).toBe('Chapter 1');
402
- expect(chapter1.startTime).toBe(0);
403
- expect(chapter1.endTime).toBe(5);
404
- const chapter2 = chapters[1];
405
- expect(chapter2.title).toBe('Chapter 2');
406
- expect(chapter2.startTime).toBe(5);
407
- expect(chapter2.endTime).toBe(30);
408
- const chapter3 = chapters[2];
409
- expect(chapter3.title).toBe('Chapter 3');
410
- expect(chapter3.startTime).toBe(30);
411
- expect(chapter3.endTime).toBe(61.349);
412
- });
380
+ it('add external chapters in srt format', async () => {
381
+ await loadWithSrcEquals(SMALL_MP4_CONTENT_URI, /* startTime= */ null);
382
+
383
+ const locationUri = new goog.Uri(location.href);
384
+ const partialUri = new goog.Uri('/base/test/test/assets/chapters.srt');
385
+ const absoluteUri = locationUri.resolve(partialUri);
386
+ await player.addChaptersTrack(absoluteUri.toString(), 'es');
387
+
388
+ const chapters = player.getChapters('es');
389
+ expect(chapters.length).toBe(3);
390
+ const chapter1 = chapters[0];
391
+ expect(chapter1.title).toBe('Chapter 1');
392
+ expect(chapter1.startTime).toBe(0);
393
+ expect(chapter1.endTime).toBe(5);
394
+ const chapter2 = chapters[1];
395
+ expect(chapter2.title).toBe('Chapter 2');
396
+ expect(chapter2.startTime).toBe(5);
397
+ expect(chapter2.endTime).toBe(30);
398
+ const chapter3 = chapters[2];
399
+ expect(chapter3.title).toBe('Chapter 3');
400
+ expect(chapter3.startTime).toBe(30);
401
+ expect(chapter3.endTime).toBe(61.349);
402
+ });
403
+ }); // describe('addChaptersTrack')
413
404
 
414
405
  // Since we are not in-charge of streaming, calling |retryStreaming| should
415
406
  // have no effect.