shaka-player 3.2.4 → 3.2.7

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 (327) hide show
  1. package/.csslintrc +11 -1
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  3. package/.github/workflows/build-and-test.yaml +129 -0
  4. package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +56 -0
  5. package/.github/workflows/custom-actions/set-commit-status/action.yaml +41 -0
  6. package/.github/workflows/demo-version-index.yaml +29 -0
  7. package/.github/workflows/nightly-demo.yaml +42 -0
  8. package/.github/workflows/release-please.yaml +147 -0
  9. package/.github/workflows/safari-homedir-launcher.sh +18 -0
  10. package/.github/workflows/selenium-lab-tests.yaml +92 -0
  11. package/AUTHORS +2 -0
  12. package/CHANGELOG.md +1596 -1556
  13. package/CONTRIBUTING.md +2 -2
  14. package/CONTRIBUTORS +2 -0
  15. package/README.md +7 -7
  16. package/app-engine/README.md +9 -0
  17. package/app-engine/demo-version-index/README.md +14 -0
  18. package/app-engine/demo-version-index/app.yaml +2 -0
  19. package/app-engine/demo-version-index/main.py +162 -0
  20. package/app-engine/demo-version-index/requirements.txt +6 -0
  21. package/app-engine/demo-version-index/templates/index.html +114 -0
  22. package/app-engine/shaka-player-demo/README.md +18 -0
  23. package/app-engine/shaka-player-demo/app.yaml +61 -0
  24. package/app-engine/shaka-player-demo/main.py +95 -0
  25. package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
  26. package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
  27. package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
  28. package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
  29. package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
  30. package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
  31. package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
  32. package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
  33. package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
  34. package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
  35. package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
  36. package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
  37. package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
  38. package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
  39. package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
  40. package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
  41. package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
  42. package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
  43. package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
  44. package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
  45. package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
  46. package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
  47. package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
  48. package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
  49. package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
  50. package/app-engine/shaka-player-demo/posters/standard.png +0 -0
  51. package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
  52. package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
  53. package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
  54. package/app-engine/shaka-player-demo/posters.py +110 -0
  55. package/app-engine/shaka-player-demo/requirements.txt +5 -0
  56. package/app-engine/shaka-player-demo/time.txt +1 -0
  57. package/build/README.md +3 -3
  58. package/build/checkversion.py +1 -1
  59. package/build/conformance.textproto +13 -0
  60. package/build/docker/Dockerfile +20 -0
  61. package/build/docker/docker-compose.yml +10 -0
  62. package/build/gendeps.py +18 -15
  63. package/build/shaka-lab.yaml +163 -0
  64. package/build/shakaBuildHelpers.py +4 -29
  65. package/build/test.py +94 -29
  66. package/build/wrapper.template.js +2 -2
  67. package/demo/TengwarTelcontar.woff2 +0 -0
  68. package/demo/asset_card.js +1 -2
  69. package/demo/cast_receiver/index.html +1 -1
  70. package/demo/cast_receiver/receiver_app.css +14 -14
  71. package/demo/common/assets.js +2 -0
  72. package/demo/config.js +0 -1
  73. package/demo/custom.js +0 -1
  74. package/demo/customWarning.txt +2 -2
  75. package/demo/demo.less +29 -18
  76. package/demo/demo_uncompiled.js +1 -13
  77. package/demo/index.html +1 -1
  78. package/demo/main.js +3 -3
  79. package/dist/controls.css +2 -2
  80. package/dist/controls.css.map +1 -1
  81. package/dist/demo.compiled.debug.js +191 -194
  82. package/dist/demo.compiled.debug.map +4 -4
  83. package/dist/demo.compiled.js +191 -194
  84. package/dist/demo.compiled.map +4 -4
  85. package/dist/demo.css +1 -1
  86. package/dist/demo.css.map +1 -1
  87. package/dist/deps.js +225 -219
  88. package/dist/locales.js +30 -30
  89. package/dist/receiver.compiled.debug.js +43 -45
  90. package/dist/receiver.compiled.debug.map +4 -4
  91. package/dist/receiver.compiled.js +43 -45
  92. package/dist/receiver.compiled.map +4 -4
  93. package/dist/shaka-player.compiled.d.ts +225 -224
  94. package/dist/shaka-player.compiled.debug.d.ts +225 -224
  95. package/dist/shaka-player.compiled.debug.externs.js +5 -3
  96. package/dist/shaka-player.compiled.debug.js +319 -323
  97. package/dist/shaka-player.compiled.debug.map +4 -4
  98. package/dist/shaka-player.compiled.externs.js +5 -3
  99. package/dist/shaka-player.compiled.js +832 -833
  100. package/dist/shaka-player.compiled.map +4 -4
  101. package/dist/shaka-player.ui.d.ts +267 -266
  102. package/dist/shaka-player.ui.debug.d.ts +267 -266
  103. package/dist/shaka-player.ui.debug.externs.js +5 -3
  104. package/dist/shaka-player.ui.debug.js +287 -291
  105. package/dist/shaka-player.ui.debug.map +4 -4
  106. package/dist/shaka-player.ui.externs.js +5 -3
  107. package/dist/shaka-player.ui.js +981 -982
  108. package/dist/shaka-player.ui.map +4 -4
  109. package/docs/design/REDESIGN.md +33 -33
  110. package/docs/design/codec_preferences.md +1 -1
  111. package/docs/design/dash-audio-channels.md +3 -3
  112. package/docs/design/dash-manifests.md +1 -1
  113. package/docs/design/gap-jumping.md +3 -3
  114. package/docs/design/preload.md +2 -2
  115. package/docs/tutorials/faq.md +8 -8
  116. package/docs/tutorials/index.json +1 -0
  117. package/docs/tutorials/plugins.md +3 -3
  118. package/docs/tutorials/selenium-grid-config.md +122 -0
  119. package/docs/tutorials/welcome.md +10 -2
  120. package/karma.conf.js +141 -30
  121. package/lib/abr/simple_abr_manager.js +12 -6
  122. package/lib/cast/cast_proxy.js +3 -4
  123. package/lib/cea/cea608_data_channel.js +2 -2
  124. package/lib/cea/cea708_service.js +5 -4
  125. package/lib/cea/mp4_cea_parser.js +11 -5
  126. package/lib/cea/sei_processor.js +6 -3
  127. package/lib/dash/dash_parser.js +11 -14
  128. package/lib/dash/mpd_utils.js +4 -5
  129. package/lib/dash/segment_list.js +1 -2
  130. package/lib/dash/segment_template.js +3 -3
  131. package/lib/hls/hls_parser.js +34 -20
  132. package/lib/hls/manifest_text_parser.js +3 -3
  133. package/lib/media/adaptation_set.js +1 -2
  134. package/lib/media/content_workarounds.js +2 -2
  135. package/lib/media/drm_engine.js +3 -2
  136. package/lib/media/media_source_engine.js +10 -3
  137. package/lib/media/mp4_segment_index_parser.js +1 -4
  138. package/lib/media/playhead.js +2 -2
  139. package/lib/media/presentation_timeline.js +18 -8
  140. package/lib/media/streaming_engine.js +6 -6
  141. package/lib/media/time_ranges_utils.js +1 -3
  142. package/lib/media/video_wrapper.js +1 -1
  143. package/lib/net/networking_engine.js +1 -1
  144. package/lib/offline/indexeddb/storage_mechanism.js +4 -2
  145. package/lib/offline/storage.js +4 -4
  146. package/lib/player.js +190 -114
  147. package/lib/polyfill/all.js +2 -3
  148. package/lib/polyfill/encryption_scheme.js +1 -1
  149. package/lib/polyfill/media_capabilities.js +3 -3
  150. package/lib/polyfill/mediasource.js +1 -1
  151. package/lib/text/cue.js +1 -1
  152. package/lib/text/simple_text_displayer.js +2 -1
  153. package/lib/text/ttml_text_parser.js +8 -5
  154. package/lib/text/ui_text_displayer.js +1 -1
  155. package/lib/util/buffer_utils.js +1 -3
  156. package/lib/util/config_utils.js +25 -0
  157. package/lib/util/ebml_parser.js +3 -3
  158. package/lib/util/error.js +8 -1
  159. package/lib/util/iterables.js +0 -46
  160. package/lib/util/manifest_parser_utils.js +1 -1
  161. package/lib/util/mime_utils.js +48 -1
  162. package/lib/util/mp4_box_parsers.js +1 -4
  163. package/lib/util/mp4_parser.js +5 -7
  164. package/lib/util/periods.js +13 -13
  165. package/lib/util/platform.js +3 -3
  166. package/lib/util/player_configuration.js +9 -14
  167. package/lib/util/pssh.js +1 -4
  168. package/lib/util/stream_utils.js +8 -5
  169. package/lib/util/string_utils.js +3 -5
  170. package/lib/util/uint8array_utils.js +3 -5
  171. package/lib/util/xml_utils.js +15 -7
  172. package/package.json +61 -36
  173. package/roadmap.md +17 -17
  174. package/test/abr/simple_abr_manager_unit.js +3 -8
  175. package/test/ads/ad_manager_unit.js +0 -6
  176. package/test/cast/cast_proxy_unit.js +0 -8
  177. package/test/cast/cast_receiver_integration.js +1 -18
  178. package/test/cast/cast_receiver_unit.js +1 -9
  179. package/test/cast/cast_sender_unit.js +0 -6
  180. package/test/cast/cast_utils_unit.js +1 -13
  181. package/test/cea/cea608_memory_unit.js +0 -5
  182. package/test/cea/cea708_service_unit.js +0 -7
  183. package/test/cea/cea708_window_unit.js +0 -5
  184. package/test/cea/cea_decoder_unit.js +0 -6
  185. package/test/cea/dtvcc_packet_builder_unit.js +0 -3
  186. package/test/cea/dtvcc_packet_unit.js +0 -5
  187. package/test/cea/mp4_cea_parser_unit.js +0 -4
  188. package/test/dash/dash_parser_content_protection_unit.js +1 -10
  189. package/test/dash/dash_parser_live_unit.js +2 -15
  190. package/test/dash/dash_parser_manifest_unit.js +2 -40
  191. package/test/dash/dash_parser_segment_base_unit.js +1 -8
  192. package/test/dash/dash_parser_segment_list_unit.js +1 -7
  193. package/test/dash/dash_parser_segment_template_unit.js +0 -9
  194. package/test/dash/mpd_utils_unit.js +3 -11
  195. package/test/demo/demo_unit.js +0 -5
  196. package/test/deprecate/enforcer_unit.js +0 -4
  197. package/test/deprecate/version_unit.js +0 -2
  198. package/test/hls/hls_live_unit.js +28 -14
  199. package/test/hls/hls_parser_unit.js +2 -15
  200. package/test/hls/manifest_text_parser_unit.js +19 -10
  201. package/test/media/adaptation_set_criteria_unit.js +3 -7
  202. package/test/media/adaptation_set_unit.js +0 -2
  203. package/test/media/buffering_observer_unit.js +1 -4
  204. package/test/media/closed_caption_parser_unit.js +0 -3
  205. package/test/media/drm_engine_integration.js +2 -15
  206. package/test/media/drm_engine_unit.js +4 -24
  207. package/test/media/manifest_parser_unit.js +0 -4
  208. package/test/media/media_source_engine_integration.js +1 -7
  209. package/test/media/media_source_engine_unit.js +5 -18
  210. package/test/media/mp4_segment_index_parser_unit.js +0 -4
  211. package/test/media/play_rate_controller_unit.js +0 -4
  212. package/test/media/playhead_unit.js +8 -16
  213. package/test/media/presentation_timeline_unit.js +4 -7
  214. package/test/media/region_observer_unit.js +1 -6
  215. package/test/media/region_timeline_unit.js +0 -3
  216. package/test/media/segment_index_unit.js +0 -6
  217. package/test/media/segment_reference_unit.js +0 -3
  218. package/test/media/stall_detector_unit.js +0 -5
  219. package/test/media/streaming_engine_integration.js +11 -36
  220. package/test/media/streaming_engine_unit.js +11 -35
  221. package/test/media/time_ranges_utils_unit.js +0 -2
  222. package/test/media/transmuxer_integration.js +0 -6
  223. package/test/media/webm_segment_index_parser_unit.js +0 -4
  224. package/test/net/data_uri_plugin_unit.js +0 -7
  225. package/test/net/http_plugin_unit.js +0 -9
  226. package/test/net/networking_engine_unit.js +0 -11
  227. package/test/offline/download_progress_estimator_unit.js +0 -2
  228. package/test/offline/indexeddb_storage_unit.js +1 -7
  229. package/test/offline/manifest_convert_unit.js +0 -8
  230. package/test/offline/offline_integration.js +1 -10
  231. package/test/offline/offline_manifest_parser_unit.js +0 -6
  232. package/test/offline/offline_scheme_unit.js +0 -8
  233. package/test/offline/offline_uri_unit.js +0 -2
  234. package/test/offline/storage_compatibility_unit.js +2 -15
  235. package/test/offline/storage_integration.js +1 -25
  236. package/test/player_external.js +9 -11
  237. package/test/player_integration.js +27 -38
  238. package/test/player_load_graph_integration.js +1 -6
  239. package/test/player_src_equals_external.js +3 -9
  240. package/test/player_src_equals_integration.js +81 -90
  241. package/test/player_unit.js +150 -38
  242. package/test/routing/walker_unit.js +0 -8
  243. package/test/test/assets/large_file.mpd +1 -1
  244. package/test/test/boot.js +84 -22
  245. package/test/test/externs/filters.js +4 -0
  246. package/test/test/externs/jasmine.js +2 -2
  247. package/test/test/externs/karma.js +4 -0
  248. package/test/test/namespace.js +10 -0
  249. package/test/test/util/canned_idb.js +0 -8
  250. package/test/test/util/cea_utils.js +0 -6
  251. package/test/test/util/dash_parser_util.js +0 -13
  252. package/test/test/util/fake_ad.js +0 -3
  253. package/test/test/util/fake_ad_manager.js +0 -9
  254. package/test/test/util/fake_demo_main.js +0 -5
  255. package/test/test/util/fake_drm_engine.js +0 -6
  256. package/test/test/util/fake_media_source_engine.js +0 -7
  257. package/test/test/util/fake_networking_engine.js +0 -5
  258. package/test/test/util/fake_text_displayer.js +0 -5
  259. package/test/test/util/indexeddb_utils.js +1 -10
  260. package/test/test/util/jasmine_fetch.js +0 -1
  261. package/test/test/util/loader.js +0 -18
  262. package/test/test/util/manifest_generator.js +9 -14
  263. package/test/test/util/manifest_parser_util.js +0 -6
  264. package/test/test/util/offline_utils.js +0 -5
  265. package/test/test/util/simple_fakes.js +40 -28
  266. package/test/test/util/stream_generator.js +0 -14
  267. package/test/test/util/streaming_engine_util.js +0 -15
  268. package/test/test/util/test_scheme.js +1 -19
  269. package/test/test/util/ttml_utils.js +0 -2
  270. package/test/test/util/ui_utils.js +0 -9
  271. package/test/test/util/util.js +5 -19
  272. package/test/test/util/waiter.js +84 -43
  273. package/test/text/cue_integration.js +0 -4
  274. package/test/text/lrc_text_parser_unit.js +0 -4
  275. package/test/text/mp4_ttml_parser_unit.js +0 -6
  276. package/test/text/mp4_vtt_parser_unit.js +1 -7
  277. package/test/text/sbv_text_parser_unit.js +0 -4
  278. package/test/text/simple_text_displayer_unit.js +1 -8
  279. package/test/text/srt_text_parser_unit.js +0 -4
  280. package/test/text/ssa_text_parser_unit.js +0 -5
  281. package/test/text/text_engine_unit.js +2 -7
  282. package/test/text/text_track_integration.js +0 -2
  283. package/test/text/ttml_text_parser_unit.js +2 -11
  284. package/test/text/ui_text_displayer_unit.js +44 -41
  285. package/test/text/vtt_text_parser_unit.js +0 -9
  286. package/test/text/web_vtt_generator_unit.js +0 -3
  287. package/test/ui/ad_ui_unit.js +0 -11
  288. package/test/ui/localization_unit.js +0 -3
  289. package/test/ui/text_displayer_layout_unit.js +1 -12
  290. package/test/ui/ui_customization_unit.js +0 -6
  291. package/test/ui/ui_integration.js +0 -16
  292. package/test/ui/ui_unit.js +1 -17
  293. package/test/util/abortable_operation_unit.js +4 -9
  294. package/test/util/array_utils_unit.js +0 -2
  295. package/test/util/buffer_utils_unit.js +0 -2
  296. package/test/util/data_view_reader_unit.js +0 -4
  297. package/test/util/ebml_parser_unit.js +0 -4
  298. package/test/util/event_manager_unit.js +0 -3
  299. package/test/util/fake_event_target_unit.js +0 -5
  300. package/test/util/functional_unit.js +1 -1
  301. package/test/util/iterables_unit.js +0 -64
  302. package/test/util/language_utils_unit.js +0 -3
  303. package/test/util/manifest_parser_utils_unit.js +0 -2
  304. package/test/util/mime_utils_unit.js +54 -0
  305. package/test/util/mp4_box_parsers_unit.js +0 -5
  306. package/test/util/mp4_parser_unit.js +0 -4
  307. package/test/util/multi_map_unit.js +0 -3
  308. package/test/util/object_utils_unit.js +0 -2
  309. package/test/util/periods_unit.js +93 -7
  310. package/test/util/pssh_unit.js +0 -5
  311. package/test/util/state_history_unit.js +0 -2
  312. package/test/util/stream_utils_unit.js +3 -8
  313. package/test/util/string_utils_unit.js +0 -6
  314. package/test/util/text_parser_unit.js +0 -2
  315. package/test/util/xml_utils_unit.js +0 -4
  316. package/ui/less/ad_controls.less +6 -6
  317. package/ui/less/buttons.less +6 -6
  318. package/ui/less/containers.less +9 -11
  319. package/ui/less/overflow_menu.less +4 -4
  320. package/ui/less/range_elements.less +7 -2
  321. package/ui/locales/sjn-translations.yaml +257 -0
  322. package/ui/locales/sjn.json +42 -0
  323. package/ui/seek_bar.js +2 -1
  324. package/.github/workflows/build_and_test.yaml +0 -73
  325. package/.github/workflows/release.yaml +0 -53
  326. package/docs/tutorials/gsoc-ideas-list.md +0 -3
  327. package/externs/svgelement.js +0 -18
@@ -4,13 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
-
8
- goog.require('shaka.test.FakeVideo');
9
- goog.require('shaka.text.Cue');
10
- goog.require('shaka.text.SimpleTextDisplayer');
11
- goog.require('shaka.util.Functional');
12
- goog.requireType('shaka.test.FakeTextTrack');
13
-
14
7
  describe('SimpleTextDisplayer', () => {
15
8
  const originalVTTCue = window.VTTCue;
16
9
  const Cue = shaka.text.Cue;
@@ -74,7 +67,7 @@ describe('SimpleTextDisplayer', () => {
74
67
  });
75
68
 
76
69
  it('appends equal time cues in reverse order', () => {
77
- // Regression test for https://github.com/google/shaka-player/issues/848
70
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/848
78
71
 
79
72
  // When VTTCue is seen as the real thing (because of the presence of
80
73
  // VTTCue.prototype.line), then the reverse-order behavior comes into
@@ -4,10 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.text.SrtTextParser');
8
- goog.require('shaka.util.BufferUtils');
9
- goog.require('shaka.util.StringUtils');
10
-
11
7
  describe('SrtTextParser', () => {
12
8
  it('supports no cues', () => {
13
9
  verifyHelper([],
@@ -4,11 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.text.Cue');
8
- goog.require('shaka.text.SsaTextParser');
9
- goog.require('shaka.util.BufferUtils');
10
- goog.require('shaka.util.StringUtils');
11
-
12
7
  describe('SsaTextParser', () => {
13
8
  const Cue = shaka.text.Cue;
14
9
 
@@ -4,11 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.test.FakeTextDisplayer');
8
- goog.require('shaka.text.Cue');
9
- goog.require('shaka.text.TextEngine');
10
- goog.require('shaka.util.MimeUtils');
11
-
12
7
  describe('TextEngine', () => {
13
8
  const TextEngine = shaka.text.TextEngine;
14
9
 
@@ -336,7 +331,7 @@ describe('TextEngine', () => {
336
331
  it('does not use timestamp offset', async () => {
337
332
  // The start and end times passed to appendBuffer are now absolute, so
338
333
  // they already account for timestampOffset and period offset.
339
- // See https://github.com/google/shaka-player/issues/1562
334
+ // See https://github.com/shaka-project/shaka-player/issues/1562
340
335
  textEngine.setTimestampOffset(60);
341
336
  await textEngine.appendBuffer(dummyData, 0, 3);
342
337
  expect(textEngine.bufferStart()).toBe(0);
@@ -379,7 +374,7 @@ describe('TextEngine', () => {
379
374
  it('does not use timestamp offset', async () => {
380
375
  // The start and end times passed to appendBuffer are now absolute, so
381
376
  // they already account for timestampOffset and period offset.
382
- // See https://github.com/google/shaka-player/issues/1562
377
+ // See https://github.com/shaka-project/shaka-player/issues/1562
383
378
  textEngine.setTimestampOffset(60);
384
379
  await textEngine.appendBuffer(dummyData, 3, 6);
385
380
  expect(textEngine.bufferedAheadOf(4)).toBe(2);
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.test.UiUtils');
8
-
9
7
  // This tests three assumptions we make about text tracks in Shaka Player:
10
8
  // 1. If a non-null value for cues is stored, it will always be the
11
9
  // non-null value for cues when cues returns a non-null value.
@@ -4,15 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.test.TtmlUtils');
8
- goog.require('shaka.test.Util');
9
- goog.require('shaka.text.Cue');
10
- goog.require('shaka.text.CueRegion');
11
- goog.require('shaka.text.TtmlTextParser');
12
- goog.require('shaka.util.BufferUtils');
13
- goog.require('shaka.util.Error');
14
- goog.require('shaka.util.StringUtils');
15
-
16
7
  describe('TtmlTextParser', () => {
17
8
  const Cue = shaka.text.Cue;
18
9
  const CueRegion = shaka.text.CueRegion;
@@ -1669,7 +1660,7 @@ describe('TtmlTextParser', () => {
1669
1660
  {startTime: 1, endTime: 4});
1670
1661
  });
1671
1662
 
1672
- // Regression test for https://github.com/google/shaka-player/issues/2478
1663
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/2478
1673
1664
  it('supports nested cues with only non-ASCII characters', () => {
1674
1665
  verifyHelper(
1675
1666
  [
@@ -1871,7 +1862,7 @@ describe('TtmlTextParser', () => {
1871
1862
  );
1872
1863
  });
1873
1864
 
1874
- // Regression test for https://github.com/google/shaka-player/issues/3743
1865
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/3743
1875
1866
  it('inherits styles from other styles on nestedCues', () => {
1876
1867
  verifyHelper(
1877
1868
  [
@@ -4,10 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.test.Util');
8
- goog.require('shaka.text.Cue');
9
- goog.require('shaka.text.UITextDisplayer');
10
-
11
7
  describe('UITextDisplayer', () => {
12
8
  /** @type {!HTMLElement} */
13
9
  let videoContainer;
@@ -65,7 +61,18 @@ describe('UITextDisplayer', () => {
65
61
  document.body.removeChild(videoContainer);
66
62
  });
67
63
 
68
- it('correctly displays styles for cues', async () => {
64
+ /**
65
+ * @suppress {visibility}
66
+ * "suppress visibility" has function scope, so this is a mini-function that
67
+ * exists solely to suppress visibility rules for these actions.
68
+ */
69
+ function updateCaptions() {
70
+ // Rather than wait for a timer, which can be unreliable on Safari when the
71
+ // device is heavily loaded, trigger the update explicitly.
72
+ textDisplayer.updateCaptions_();
73
+ }
74
+
75
+ it('correctly displays styles for cues', () => {
69
76
  /** @type {!shaka.text.Cue} */
70
77
  const cue = new shaka.text.Cue(0, 100, 'Captain\'s log.');
71
78
  cue.color = 'green';
@@ -81,8 +88,7 @@ describe('UITextDisplayer', () => {
81
88
 
82
89
  textDisplayer.setTextVisibility(true);
83
90
  textDisplayer.append([cue]);
84
- // Wait until updateCaptions_() gets called.
85
- await shaka.test.Util.delay(0.5);
91
+ updateCaptions();
86
92
 
87
93
  const textContainer = videoContainer.querySelector('.shaka-text-container');
88
94
  const captions = textContainer.querySelector('div');
@@ -114,7 +120,7 @@ describe('UITextDisplayer', () => {
114
120
  .toEqual(jasmine.objectContaining({'background-color': 'black'}));
115
121
  });
116
122
 
117
- it('correctly displays styles for nested cues', async () => {
123
+ it('correctly displays styles for nested cues', () => {
118
124
  /** @type {!shaka.text.Cue} */
119
125
  const cue = new shaka.text.Cue(0, 100, '');
120
126
  const nestedCue = new shaka.text.Cue(0, 100, 'Captain\'s log.');
@@ -131,8 +137,7 @@ describe('UITextDisplayer', () => {
131
137
 
132
138
  textDisplayer.setTextVisibility(true);
133
139
  textDisplayer.append([cue]);
134
- // Wait until updateCaptions_() gets called.
135
- await shaka.test.Util.delay(0.5);
140
+ updateCaptions();
136
141
 
137
142
  // Verify styles applied to the nested cues.
138
143
  const textContainer = videoContainer.querySelector('.shaka-text-container');
@@ -165,7 +170,7 @@ describe('UITextDisplayer', () => {
165
170
  .toEqual(jasmine.objectContaining({'background-color': 'black'}));
166
171
  });
167
172
 
168
- it('correctly displays styles for cellResolution units', async () => {
173
+ it('correctly displays styles for cellResolution units', () => {
169
174
  /** @type {!shaka.text.Cue} */
170
175
  const cue = new shaka.text.Cue(0, 100, 'Captain\'s log.');
171
176
  cue.fontSize = '0.80c';
@@ -177,8 +182,7 @@ describe('UITextDisplayer', () => {
177
182
 
178
183
  textDisplayer.setTextVisibility(true);
179
184
  textDisplayer.append([cue]);
180
- // Wait until updateCaptions_() gets called.
181
- await shaka.test.Util.delay(0.5);
185
+ updateCaptions();
182
186
 
183
187
  // Expected value is calculated based on ttp:cellResolution="60 20"
184
188
  // videoContainerHeight=450px and tts:fontSize="0.80c" on the default style.
@@ -200,7 +204,7 @@ describe('UITextDisplayer', () => {
200
204
  }));
201
205
  });
202
206
 
203
- it('correctly displays styles for percentages units', async () => {
207
+ it('correctly displays styles for percentages units', () => {
204
208
  /** @type {!shaka.text.Cue} */
205
209
  const cue = new shaka.text.Cue(0, 100, 'Captain\'s log.');
206
210
  cue.fontSize = '90%';
@@ -211,8 +215,7 @@ describe('UITextDisplayer', () => {
211
215
 
212
216
  textDisplayer.setTextVisibility(true);
213
217
  textDisplayer.append([cue]);
214
- // Wait until updateCaptions_() gets called.
215
- await shaka.test.Util.delay(0.5);
218
+ updateCaptions();
216
219
 
217
220
  // Expected value is calculated based on ttp:cellResolution="32 15"
218
221
  // videoContainerHeight=450px and tts:fontSize="90%" on the default style.
@@ -225,15 +228,15 @@ describe('UITextDisplayer', () => {
225
228
  jasmine.objectContaining({'font-size': expectedFontSize}));
226
229
  });
227
230
 
228
- it('does not display duplicate cues', async () => {
231
+ it('does not display duplicate cues', () => {
229
232
  // These are identical.
230
233
  const cue1 = new shaka.text.Cue(0, 100, 'Captain\'s log.');
231
234
  const cue2 = new shaka.text.Cue(0, 100, 'Captain\'s log.');
232
235
 
233
236
  textDisplayer.setTextVisibility(true);
234
237
  textDisplayer.append([cue1]);
235
- // Wait until updateCaptions_() gets called.
236
- await shaka.test.Util.delay(0.5);
238
+ updateCaptions();
239
+
237
240
  /** @type {Element} */
238
241
  const textContainer = videoContainer.querySelector('.shaka-text-container');
239
242
  let captions = textContainer.querySelectorAll('div');
@@ -241,14 +244,14 @@ describe('UITextDisplayer', () => {
241
244
  expect(captions.length).toBe(1);
242
245
 
243
246
  textDisplayer.append([cue2]);
244
- // Wait until updateCaptions_() gets called.
245
- await shaka.test.Util.delay(0.5);
247
+ updateCaptions();
248
+
246
249
  captions = textContainer.querySelectorAll('div');
247
250
  // Expect textContainer to display one cue without duplication.
248
251
  expect(captions.length).toBe(1);
249
252
  });
250
253
 
251
- it('does not mistake cues with nested cues as duplicates', async () => {
254
+ it('does not mistake cues with nested cues as duplicates', () => {
252
255
  // These are not identical, but might look like it at the top level.
253
256
  const cue1 = new shaka.text.Cue(0, 100, '');
254
257
  cue1.nestedCues = [
@@ -265,8 +268,8 @@ describe('UITextDisplayer', () => {
265
268
 
266
269
  textDisplayer.setTextVisibility(true);
267
270
  textDisplayer.append([cue1]);
268
- // Wait until updateCaptions_() gets called.
269
- await shaka.test.Util.delay(0.5);
271
+ updateCaptions();
272
+
270
273
  /** @type {Element} */
271
274
  const textContainer = videoContainer.querySelector('.shaka-text-container');
272
275
  let captions = textContainer.querySelectorAll('div');
@@ -274,15 +277,15 @@ describe('UITextDisplayer', () => {
274
277
  expect(captions.length).toBe(1);
275
278
 
276
279
  textDisplayer.append([cue2, cue3]);
277
- // Wait until updateCaptions_() gets called.
278
- await shaka.test.Util.delay(0.5);
280
+ updateCaptions();
281
+
279
282
  captions = textContainer.querySelectorAll('div');
280
283
  // Expect textContainer to display all three cues, since they are not truly
281
284
  // duplicates.
282
285
  expect(captions.length).toBe(3);
283
286
  });
284
287
 
285
- it('does not mistake cues with different styles duplicates', async () => {
288
+ it('does not mistake cues with different styles duplicates', () => {
286
289
  // These all have the same text and timing, but different styles.
287
290
  const cue1 = new shaka.text.Cue(0, 100, 'Hello!');
288
291
  cue1.color = 'green';
@@ -296,8 +299,8 @@ describe('UITextDisplayer', () => {
296
299
 
297
300
  textDisplayer.setTextVisibility(true);
298
301
  textDisplayer.append([cue1]);
299
- // Wait until updateCaptions_() gets called.
300
- await shaka.test.Util.delay(0.5);
302
+ updateCaptions();
303
+
301
304
  /** @type {Element} */
302
305
  const textContainer = videoContainer.querySelector('.shaka-text-container');
303
306
  let captions = textContainer.querySelectorAll('div');
@@ -305,20 +308,20 @@ describe('UITextDisplayer', () => {
305
308
  expect(captions.length).toBe(1);
306
309
 
307
310
  textDisplayer.append([cue2, cue3]);
308
- // Wait until updateCaptions_() gets called.
309
- await shaka.test.Util.delay(0.5);
311
+ updateCaptions();
312
+
310
313
  captions = textContainer.querySelectorAll('div');
311
314
  // Expect textContainer to display all three cues, since they are not truly
312
315
  // duplicates.
313
316
  expect(captions.length).toBe(3);
314
317
  });
315
318
 
316
- it('hides currently displayed cue when removed', async () => {
319
+ it('hides currently displayed cue when removed', () => {
317
320
  const cue = new shaka.text.Cue(0, 50, 'One');
318
321
  textDisplayer.setTextVisibility(true);
319
322
  textDisplayer.append([cue]);
320
323
  video.currentTime = 10;
321
- await shaka.test.Util.delay(0.5);
324
+ updateCaptions();
322
325
  const textContainer = videoContainer.querySelector('.shaka-text-container');
323
326
 
324
327
  let cueElements = textContainer.querySelectorAll('div');
@@ -331,7 +334,7 @@ describe('UITextDisplayer', () => {
331
334
  expect(cueElements.length).toBe(0);
332
335
  });
333
336
 
334
- it('hides and shows nested cues at appropriate times', async () => {
337
+ it('hides and shows nested cues at appropriate times', () => {
335
338
  const parentCue1 = new shaka.text.Cue(0, 100, '');
336
339
  const cue1 = new shaka.text.Cue(0, 50, 'One');
337
340
  parentCue1.nestedCues.push(cue1);
@@ -348,7 +351,7 @@ describe('UITextDisplayer', () => {
348
351
  textDisplayer.append([parentCue1, parentCue2]);
349
352
 
350
353
  video.currentTime = 10;
351
- await shaka.test.Util.delay(0.5);
354
+ updateCaptions();
352
355
  /** @type {Element} */
353
356
  const textContainer = videoContainer.querySelector('.shaka-text-container');
354
357
  let parentCueElements = textContainer.querySelectorAll('div');
@@ -357,38 +360,38 @@ describe('UITextDisplayer', () => {
357
360
  expect(parentCueElements[0].textContent).toBe('One');
358
361
 
359
362
  video.currentTime = 35;
360
- await shaka.test.Util.delay(0.5);
363
+ updateCaptions();
361
364
  parentCueElements = textContainer.querySelectorAll('div');
362
365
  expect(parentCueElements.length).toBe(1);
363
366
  expect(parentCueElements[0].textContent).toBe('OneTwo');
364
367
 
365
368
  video.currentTime = 60;
366
- await shaka.test.Util.delay(0.5);
369
+ updateCaptions();
367
370
  parentCueElements = textContainer.querySelectorAll('div');
368
371
  expect(parentCueElements.length).toBe(1);
369
372
  expect(parentCueElements[0].textContent).toBe('TwoThree');
370
373
 
371
374
  video.currentTime = 85;
372
- await shaka.test.Util.delay(0.5);
375
+ updateCaptions();
373
376
  parentCueElements = textContainer.querySelectorAll('div');
374
377
  expect(parentCueElements.length).toBe(1);
375
378
  expect(parentCueElements[0].textContent).toBe('Three');
376
379
 
377
380
  video.currentTime = 95;
378
- await shaka.test.Util.delay(0.5);
381
+ updateCaptions();
379
382
  parentCueElements = textContainer.querySelectorAll('div');
380
383
  expect(parentCueElements.length).toBe(2);
381
384
  expect(parentCueElements[0].textContent).toBe('Three');
382
385
  expect(parentCueElements[1].textContent).toBe('Four');
383
386
 
384
387
  video.currentTime = 105;
385
- await shaka.test.Util.delay(0.5);
388
+ updateCaptions();
386
389
  parentCueElements = textContainer.querySelectorAll('div');
387
390
  expect(parentCueElements.length).toBe(1);
388
391
  expect(parentCueElements[0].textContent).toBe('Four');
389
392
 
390
393
  video.currentTime = 150;
391
- await shaka.test.Util.delay(0.5);
394
+ updateCaptions();
392
395
  parentCueElements = textContainer.querySelectorAll('div');
393
396
  expect(parentCueElements.length).toBe(1);
394
397
  expect(parentCueElements[0].textContent).toBe('');
@@ -4,15 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.log');
8
- goog.require('shaka.test.Util');
9
- goog.require('shaka.text.Cue');
10
- goog.require('shaka.text.CueRegion');
11
- goog.require('shaka.text.VttTextParser');
12
- goog.require('shaka.util.BufferUtils');
13
- goog.require('shaka.util.Error');
14
- goog.require('shaka.util.StringUtils');
15
-
16
7
  describe('VttTextParser', () => {
17
8
  const Cue = shaka.text.Cue;
18
9
  const CueRegion = shaka.text.CueRegion;
@@ -4,9 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.text.Cue');
8
- goog.require('shaka.text.WebVttGenerator');
9
-
10
7
  describe('WebVttGenerator', () => {
11
8
  it('supports no cues', () => {
12
9
  verifyHelper([], [], 'WEBVTT\n\n');
@@ -4,17 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.Player');
8
- goog.require('shaka.ads.AdManager');
9
- goog.require('shaka.test.FakeAd');
10
- goog.require('shaka.test.FakeAdManager');
11
- goog.require('shaka.test.UiUtils');
12
- goog.require('shaka.test.Util');
13
- goog.require('shaka.test.Waiter');
14
- goog.require('shaka.ui.Locales');
15
- goog.require('shaka.util.EventManager');
16
- goog.requireType('shaka.ui.Localization');
17
-
18
7
  describe('Ad UI', () => {
19
8
  const UiUtils = shaka.test.UiUtils;
20
9
  /** @type {!HTMLLinkElement} */
@@ -4,9 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.ui.Localization');
8
- goog.requireType('shaka.util.FakeEvent');
9
-
10
7
  describe('Localization', () => {
11
8
  const Localization = shaka.ui.Localization;
12
9
 
@@ -4,17 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.Player');
8
- goog.require('shaka.test.FakeVideo');
9
- goog.require('shaka.test.UiUtils');
10
- goog.require('shaka.test.Util');
11
- goog.require('shaka.test.Waiter');
12
- goog.require('shaka.text.Cue');
13
- goog.require('shaka.text.SimpleTextDisplayer');
14
- goog.require('shaka.text.UITextDisplayer');
15
- goog.require('shaka.ui.Overlay');
16
- goog.require('shaka.util.EventManager');
17
-
18
7
  // TODO: Move this suite to the text/ folder where it belongs
19
8
  const supportsScreenshots = () => shaka.test.Util.supportsScreenshots();
20
9
  filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
@@ -416,7 +405,7 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
416
405
  await checkScreenshot(prefix, 'flat-cue-bg');
417
406
  });
418
407
 
419
- // https://github.com/google/shaka-player/issues/2761
408
+ // https://github.com/shaka-project/shaka-player/issues/2761
420
409
  it('deeply-nested cues', async () => {
421
410
  const makeCue = (text, fg = '', bg = '', nestedCues = []) => {
422
411
  const cue = new shaka.text.Cue(0, 1, text);
@@ -4,12 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('goog.asserts');
8
- goog.require('shaka.test.UiUtils');
9
- goog.require('shaka.test.Waiter');
10
- goog.require('shaka.util.EventManager');
11
- goog.requireType('shaka.ui.Overlay');
12
-
13
7
  describe('UI Customization', () => {
14
8
  const UiUtils = shaka.test.UiUtils;
15
9
  /** @type {!HTMLLinkElement} */
@@ -4,22 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('goog.asserts');
8
- goog.require('mozilla.LanguageMapping');
9
- goog.require('shaka.test.Loader');
10
- goog.require('shaka.test.TestScheme');
11
- goog.require('shaka.test.UiUtils');
12
- goog.require('shaka.test.Util');
13
- goog.require('shaka.test.Waiter');
14
- goog.require('shaka.ui.Element');
15
- goog.require('shaka.util.Dom');
16
- goog.require('shaka.util.EventManager');
17
- goog.require('shaka.util.Iterables');
18
- goog.requireType('shaka.Player');
19
- goog.requireType('shaka.ui.Controls');
20
- goog.requireType('shaka.ui.Overlay');
21
-
22
-
23
7
  describe('UI', () => {
24
8
  const Util = shaka.test.Util;
25
9
  const UiUtils = shaka.test.UiUtils;
@@ -4,21 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('goog.asserts');
8
- goog.require('shaka.media.ManifestParser');
9
- goog.require('shaka.test.FakeManifestParser');
10
- goog.require('shaka.test.ManifestGenerator');
11
- goog.require('shaka.test.UiUtils');
12
- goog.require('shaka.test.Util');
13
- goog.require('shaka.ui.OverflowMenu');
14
- goog.require('shaka.ui.ResolutionSelection');
15
- goog.require('shaka.util.Functional');
16
- goog.require('shaka.util.Iterables');
17
- goog.require('shaka.util.Platform');
18
- goog.requireType('shaka.Player');
19
- goog.requireType('shaka.ui.Controls');
20
- goog.requireType('shaka.ui.Overlay');
21
-
22
7
  describe('UI', () => {
23
8
  const UiUtils = shaka.test.UiUtils;
24
9
  const Util = shaka.test.Util;
@@ -137,8 +122,7 @@ describe('UI', () => {
137
122
  // Four is just a random number I (ismena) came up with to test a
138
123
  // multi-video use case. It could be replaces with any other
139
124
  // (reasonable) number.
140
- for (const _ of shaka.util.Iterables.range(4)) {
141
- shaka.util.Functional.ignored(_);
125
+ for (let i = 0; i < 4; i++) {
142
126
  const video = /** @type {!HTMLVideoElement} */
143
127
  (document.createElement('video'));
144
128
 
@@ -4,11 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.test.Util');
8
- goog.require('shaka.util.AbortableOperation');
9
- goog.require('shaka.util.Error');
10
- goog.require('shaka.util.PublicPromise');
11
-
12
7
  describe('AbortableOperation', () => {
13
8
  const Util = shaka.test.Util;
14
9
 
@@ -392,10 +387,10 @@ describe('AbortableOperation', () => {
392
387
  expect(value).toBe(500);
393
388
  }).finally((ok) => {
394
389
  expect(ok).toBe(true);
395
- // The bug https://github.com/google/shaka-player/issues/1260 makes this
396
- // expectation fail because some stages were skipped. Without this
397
- // check, the test would pass, even though the bug shows up first in the
398
- // basic functionality of 'chain'.
390
+ // The bug https://github.com/shaka-project/shaka-player/issues/1260
391
+ // makes this expectation fail because some stages were skipped.
392
+ // Without this check, the test would pass, even though the bug shows
393
+ // up first in the basic functionality of 'chain'.
399
394
  expect(values).toEqual([100, 200, 300, 400, 500]);
400
395
  });
401
396
  await op.promise;
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.util.ArrayUtils');
8
-
9
7
  describe('ArrayUtils', () => {
10
8
  const ArrayUtils = shaka.util.ArrayUtils;
11
9
 
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.util.BufferUtils');
8
-
9
7
  describe('BufferUtils', () => {
10
8
  const BufferUtils = shaka.util.BufferUtils;
11
9
 
@@ -4,10 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.test.Util');
8
- goog.require('shaka.util.DataViewReader');
9
- goog.require('shaka.util.Error');
10
-
11
7
  describe('DataViewReader', () => {
12
8
  const Util = shaka.test.Util;
13
9
 
@@ -4,10 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.test.Util');
8
- goog.require('shaka.util.EbmlParser');
9
- goog.require('shaka.util.Error');
10
-
11
7
  describe('EbmlParser', /** @suppress {accessControls} */ () => {
12
8
  const Util = shaka.test.Util;
13
9
 
@@ -4,9 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.test.Util');
8
- goog.require('shaka.util.EventManager');
9
-
10
7
  describe('EventManager', () => {
11
8
  const Util = shaka.test.Util;
12
9
 
@@ -4,11 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.log');
8
- goog.require('shaka.test.Util');
9
- goog.require('shaka.util.FakeEvent');
10
- goog.require('shaka.util.FakeEventTarget');
11
-
12
7
  describe('FakeEventTarget', () => {
13
8
  const Util = shaka.test.Util;
14
9
  const originalLogError = shaka.log.error;
@@ -73,7 +73,7 @@ describe('Functional', () => {
73
73
  expect(obj.val).toBe(1);
74
74
  });
75
75
 
76
- // Regression test for https://github.com/google/shaka-player/issues/2958
76
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/2958
77
77
  it('supports ES6 classes', () => {
78
78
  const obj = Functional.callFactory(Es6Class);
79
79
  expect(obj.val).toBe(1);