shaka-player 3.3.1 → 3.3.4

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 (336) 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 +147 -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 +1707 -1670
  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 +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/generateTsDefs.py +2 -0
  65. package/build/shaka-lab.yaml +163 -0
  66. package/build/shakaBuildHelpers.py +4 -29
  67. package/build/test.py +93 -28
  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 +233 -226
  91. package/dist/locales.js +32 -32
  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 +250 -237
  97. package/dist/shaka-player.compiled.debug.d.ts +250 -237
  98. package/dist/shaka-player.compiled.debug.externs.js +31 -15
  99. package/dist/shaka-player.compiled.debug.js +252 -257
  100. package/dist/shaka-player.compiled.debug.map +4 -4
  101. package/dist/shaka-player.compiled.externs.js +31 -15
  102. package/dist/shaka-player.compiled.js +844 -849
  103. package/dist/shaka-player.compiled.map +4 -4
  104. package/dist/shaka-player.ui.d.ts +296 -292
  105. package/dist/shaka-player.ui.debug.d.ts +296 -292
  106. package/dist/shaka-player.ui.debug.externs.js +33 -26
  107. package/dist/shaka-player.ui.debug.js +345 -351
  108. package/dist/shaka-player.ui.debug.map +4 -4
  109. package/dist/shaka-player.ui.externs.js +33 -26
  110. package/dist/shaka-player.ui.js +1002 -1008
  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 +156 -45
  126. package/lib/abr/simple_abr_manager.js +12 -6
  127. package/lib/ads/ad_manager.js +1 -0
  128. package/lib/cast/cast_proxy.js +6 -4
  129. package/lib/cast/cast_receiver.js +3 -0
  130. package/lib/cea/cea608_data_channel.js +2 -2
  131. package/lib/cea/cea708_service.js +5 -4
  132. package/lib/cea/mp4_cea_parser.js +11 -5
  133. package/lib/cea/sei_processor.js +6 -3
  134. package/lib/dash/dash_parser.js +40 -30
  135. package/lib/dash/mpd_utils.js +4 -5
  136. package/lib/dash/segment_list.js +1 -2
  137. package/lib/dash/segment_template.js +3 -3
  138. package/lib/hls/hls_parser.js +11 -9
  139. package/lib/hls/manifest_text_parser.js +4 -3
  140. package/lib/media/adaptation_set.js +1 -2
  141. package/lib/media/content_workarounds.js +2 -2
  142. package/lib/media/drm_engine.js +3 -2
  143. package/lib/media/media_source_engine.js +3 -2
  144. package/lib/media/mp4_segment_index_parser.js +1 -4
  145. package/lib/media/playhead.js +2 -2
  146. package/lib/media/presentation_timeline.js +18 -8
  147. package/lib/media/quality_observer.js +17 -34
  148. package/lib/media/region_observer.js +39 -33
  149. package/lib/media/region_timeline.js +17 -19
  150. package/lib/media/streaming_engine.js +7 -7
  151. package/lib/media/time_ranges_utils.js +1 -3
  152. package/lib/media/video_wrapper.js +1 -1
  153. package/lib/net/networking_engine.js +5 -1
  154. package/lib/offline/storage.js +12 -13
  155. package/lib/player.js +65 -25
  156. package/lib/polyfill/all.js +2 -3
  157. package/lib/polyfill/encryption_scheme.js +1 -1
  158. package/lib/polyfill/media_capabilities.js +3 -3
  159. package/lib/polyfill/mediasource.js +1 -1
  160. package/lib/polyfill/symbol.js +46 -0
  161. package/lib/text/cue.js +1 -1
  162. package/lib/text/simple_text_displayer.js +2 -1
  163. package/lib/text/ttml_text_parser.js +8 -5
  164. package/lib/text/ui_text_displayer.js +1 -1
  165. package/lib/util/buffer_utils.js +1 -3
  166. package/lib/util/ebml_parser.js +3 -3
  167. package/lib/util/error.js +1 -1
  168. package/lib/util/fake_event_target.js +21 -1
  169. package/lib/util/iterables.js +0 -46
  170. package/lib/util/mp4_box_parsers.js +1 -4
  171. package/lib/util/mp4_parser.js +5 -7
  172. package/lib/util/periods.js +10 -11
  173. package/lib/util/platform.js +3 -3
  174. package/lib/util/pssh.js +1 -4
  175. package/lib/util/stream_utils.js +4 -3
  176. package/lib/util/string_utils.js +3 -5
  177. package/lib/util/uint8array_utils.js +3 -5
  178. package/lib/util/xml_utils.js +15 -7
  179. package/package.json +62 -40
  180. package/roadmap.md +17 -17
  181. package/shaka-player.uncompiled.js +1 -0
  182. package/test/abr/simple_abr_manager_unit.js +3 -8
  183. package/test/ads/ad_manager_unit.js +0 -6
  184. package/test/cast/cast_proxy_unit.js +0 -8
  185. package/test/cast/cast_receiver_integration.js +1 -18
  186. package/test/cast/cast_receiver_unit.js +1 -9
  187. package/test/cast/cast_sender_unit.js +0 -6
  188. package/test/cast/cast_utils_unit.js +0 -13
  189. package/test/cea/cea608_memory_unit.js +0 -5
  190. package/test/cea/cea708_service_unit.js +0 -7
  191. package/test/cea/cea708_window_unit.js +0 -5
  192. package/test/cea/cea_decoder_unit.js +0 -6
  193. package/test/cea/dtvcc_packet_builder_unit.js +0 -3
  194. package/test/cea/dtvcc_packet_unit.js +0 -5
  195. package/test/cea/mp4_cea_parser_unit.js +0 -4
  196. package/test/dash/dash_parser_content_protection_unit.js +1 -10
  197. package/test/dash/dash_parser_live_unit.js +45 -15
  198. package/test/dash/dash_parser_manifest_unit.js +4 -17
  199. package/test/dash/dash_parser_segment_base_unit.js +1 -8
  200. package/test/dash/dash_parser_segment_list_unit.js +1 -7
  201. package/test/dash/dash_parser_segment_template_unit.js +0 -9
  202. package/test/dash/mpd_utils_unit.js +3 -11
  203. package/test/demo/demo_unit.js +0 -5
  204. package/test/deprecate/enforcer_unit.js +0 -4
  205. package/test/deprecate/version_unit.js +0 -2
  206. package/test/hls/hls_live_unit.js +2 -14
  207. package/test/hls/hls_parser_unit.js +76 -15
  208. package/test/hls/manifest_text_parser_unit.js +0 -10
  209. package/test/media/adaptation_set_criteria_unit.js +3 -7
  210. package/test/media/adaptation_set_unit.js +0 -2
  211. package/test/media/buffering_observer_unit.js +1 -4
  212. package/test/media/closed_caption_parser_unit.js +0 -3
  213. package/test/media/drm_engine_integration.js +2 -15
  214. package/test/media/drm_engine_unit.js +4 -24
  215. package/test/media/manifest_parser_unit.js +0 -4
  216. package/test/media/media_source_engine_integration.js +0 -7
  217. package/test/media/media_source_engine_unit.js +1 -14
  218. package/test/media/mp4_segment_index_parser_unit.js +0 -4
  219. package/test/media/play_rate_controller_unit.js +0 -4
  220. package/test/media/playhead_unit.js +8 -16
  221. package/test/media/presentation_timeline_unit.js +4 -7
  222. package/test/media/quality_observer_unit.js +4 -5
  223. package/test/media/region_observer_unit.js +40 -10
  224. package/test/media/region_timeline_unit.js +40 -25
  225. package/test/media/segment_index_unit.js +0 -6
  226. package/test/media/segment_reference_unit.js +0 -3
  227. package/test/media/stall_detector_unit.js +0 -5
  228. package/test/media/streaming_engine_integration.js +9 -36
  229. package/test/media/streaming_engine_unit.js +11 -35
  230. package/test/media/time_ranges_utils_unit.js +0 -2
  231. package/test/media/transmuxer_integration.js +0 -6
  232. package/test/media/webm_segment_index_parser_unit.js +0 -4
  233. package/test/net/data_uri_plugin_unit.js +0 -7
  234. package/test/net/http_plugin_unit.js +0 -9
  235. package/test/net/networking_engine_unit.js +0 -11
  236. package/test/offline/download_progress_estimator_unit.js +0 -2
  237. package/test/offline/indexeddb_storage_unit.js +0 -6
  238. package/test/offline/manifest_convert_unit.js +0 -8
  239. package/test/offline/offline_integration.js +1 -10
  240. package/test/offline/offline_manifest_parser_unit.js +0 -6
  241. package/test/offline/offline_scheme_unit.js +0 -8
  242. package/test/offline/offline_uri_unit.js +0 -2
  243. package/test/offline/storage_compatibility_unit.js +1 -14
  244. package/test/offline/storage_integration.js +1 -27
  245. package/test/player_external.js +2 -10
  246. package/test/player_integration.js +22 -28
  247. package/test/player_load_graph_integration.js +1 -6
  248. package/test/player_src_equals_external.js +3 -9
  249. package/test/player_src_equals_integration.js +0 -7
  250. package/test/player_unit.js +52 -37
  251. package/test/routing/walker_unit.js +0 -8
  252. package/test/test/assets/large_file.mpd +1 -1
  253. package/test/test/boot.js +75 -22
  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 +9 -26
  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 +15 -26
  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 +9 -19
  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/mp4_box_parsers_unit.js +0 -5
  314. package/test/util/mp4_parser_unit.js +0 -4
  315. package/test/util/multi_map_unit.js +0 -3
  316. package/test/util/object_utils_unit.js +0 -2
  317. package/test/util/periods_unit.js +14 -7
  318. package/test/util/pssh_unit.js +0 -5
  319. package/test/util/state_history_unit.js +0 -2
  320. package/test/util/stream_utils_unit.js +3 -8
  321. package/test/util/string_utils_unit.js +0 -6
  322. package/test/util/text_parser_unit.js +0 -2
  323. package/test/util/xml_utils_unit.js +0 -4
  324. package/ui/controls.js +3 -0
  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/localization.js +12 -36
  334. package/ui/seek_bar.js +2 -1
  335. package/externs/svgelement.js +0 -18
  336. package/externs/webcrypto.js +0 -18
@@ -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, () => {
@@ -34,11 +23,8 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
34
23
  */
35
24
  let beforeScreenshot;
36
25
 
37
- // Legacy Edge seems to have inconsistent font kerning. A one-pixel offset in
38
- // the position of one character appears about 60% of the time, requiring us
39
- // to have this change tolerance in our tests. So far, all past bugs in our
40
- // implementation that we have tests for would exceed this threshold by a lot.
41
- const threshold = 160; // px
26
+ // A minimum similarity score for screenshots, between 0 and 1.
27
+ const minSimilarity = 0.95;
42
28
 
43
29
  const originalCast = window.chrome && window.chrome.cast;
44
30
 
@@ -196,6 +182,7 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
196
182
 
197
183
  // The video must be played a little now, after the cues were appended,
198
184
  // but before the screenshot.
185
+ video.playbackRate = 1;
199
186
  video.play();
200
187
  await waiter.failOnTimeout(false).timeoutAfter(5)
201
188
  .waitForMovement(video);
@@ -203,10 +190,13 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
203
190
 
204
191
  // Seek to a time when cues should be showing.
205
192
  video.currentTime = time;
193
+ // Get into a playing state, but without movement.
194
+ video.playbackRate = 0;
195
+ video.play();
206
196
 
207
197
  // Add a short delay to ensure that the system has caught up and that
208
198
  // native text displayers have been updated by the browser.
209
- await Util.shortDelay();
199
+ await Util.delay(0.1);
210
200
  };
211
201
  });
212
202
 
@@ -415,7 +405,7 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
415
405
  await checkScreenshot(prefix, 'flat-cue-bg');
416
406
  });
417
407
 
418
- // https://github.com/google/shaka-player/issues/2761
408
+ // https://github.com/shaka-project/shaka-player/issues/2761
419
409
  it('deeply-nested cues', async () => {
420
410
  const makeCue = (text, fg = '', bg = '', nestedCues = []) => {
421
411
  const cue = new shaka.text.Cue(0, 1, text);
@@ -475,6 +465,6 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
475
465
  return Util.checkScreenshot(
476
466
  /* element= */ videoContainer,
477
467
  prefix + '-' + baseName,
478
- threshold);
468
+ minSimilarity);
479
469
  }
480
470
  });
@@ -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,9 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.util.CmcdManager');
8
- goog.require('shaka.util.ObjectUtils');
9
-
10
7
  describe('CmcdManager', () => {
11
8
  const CmcdManager = shaka.util.CmcdManager;
12
9
  const uuidRegex =
@@ -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);
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.util.Iterables');
8
-
9
7
  describe('Iterables', () => {
10
8
  const Iterables = shaka.util.Iterables;
11
9
 
@@ -67,66 +65,4 @@ describe('Iterables', () => {
67
65
  expect(Iterables.filter(input, (x) => x < 0)).toEqual([]);
68
66
  });
69
67
  });
70
-
71
- describe('enumerate', () => {
72
- function enumerate(it) {
73
- return Array.from(Iterables.enumerate(it));
74
- }
75
-
76
- it('works with no items', () => {
77
- expect(enumerate([])).toEqual([]);
78
- });
79
-
80
- it('works with one item', () => {
81
- expect(enumerate([999]))
82
- .toEqual([{i: 0, item: 999, prev: undefined, next: undefined}]);
83
- });
84
-
85
- it('works with special values', () => {
86
- expect(enumerate([[]]))
87
- .toEqual([{i: 0, item: [], prev: undefined, next: undefined}]);
88
- expect(enumerate([0]))
89
- .toEqual([{i: 0, item: 0, prev: undefined, next: undefined}]);
90
- expect(enumerate([null]))
91
- .toEqual([{i: 0, item: null, prev: undefined, next: undefined}]);
92
- expect(enumerate([undefined]))
93
- .toEqual([{i: 0, item: undefined, prev: undefined, next: undefined}]);
94
- });
95
-
96
- it('works with two items', () => {
97
- expect(enumerate([888, 999]))
98
- .toEqual([
99
- {i: 0, item: 888, prev: undefined, next: 999},
100
- {i: 1, item: 999, prev: 888, next: undefined},
101
- ]);
102
- });
103
-
104
- it('works with three items', () => {
105
- expect(enumerate([777, 888, 999]))
106
- .toEqual([
107
- {i: 0, item: 777, prev: undefined, next: 888},
108
- {i: 1, item: 888, prev: 777, next: 999},
109
- {i: 2, item: 999, prev: 888, next: undefined},
110
- ]);
111
- });
112
-
113
- it('keeps references', () => {
114
- const expected = [
115
- {a: 'x'},
116
- {b: 'y'},
117
- {c: 'z'},
118
- ];
119
- const actual = enumerate(expected);
120
-
121
- expect(actual[0].item).toBe(expected[0]);
122
- expect(actual[0].next).toBe(expected[1]);
123
-
124
- expect(actual[1].prev).toBe(expected[0]);
125
- expect(actual[1].item).toBe(expected[1]);
126
- expect(actual[1].next).toBe(expected[2]);
127
-
128
- expect(actual[2].prev).toBe(expected[1]);
129
- expect(actual[2].item).toBe(expected[2]);
130
- });
131
- });
132
68
  });
@@ -4,9 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.util.LanguageUtils');
8
- goog.require('shaka.util.ManifestParserUtils');
9
-
10
7
  describe('LanguageUtils', () => {
11
8
  const LanguageUtils = shaka.util.LanguageUtils;
12
9
 
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.util.ManifestParserUtils');
8
-
9
7
  describe('ManifestParserUtils', () => {
10
8
  const ManifestParserUtils = shaka.util.ManifestParserUtils;
11
9
 
@@ -4,11 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('goog.asserts');
8
- goog.require('shaka.test.Util');
9
- goog.require('shaka.util.Mp4BoxParsers');
10
- goog.require('shaka.util.Mp4Parser');
11
-
12
7
  describe('Mp4BoxParsers', () => {
13
8
  const videoInitSegmentUri = '/base/test/test/assets/sintel-video-init.mp4';
14
9
  const videoSegmentUri = '/base/test/test/assets/sintel-video-segment.mp4';
@@ -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.Error');
9
- goog.require('shaka.util.Mp4Parser');
10
-
11
7
  describe('Mp4Parser', () => {
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.MultiMap');
9
-
10
7
  describe('MultiMap', () => {
11
8
  /** @type {shaka.util.MultiMap<number>} */
12
9
  let map;
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.util.ObjectUtils');
8
-
9
7
  describe('ObjectUtils', () => {
10
8
  const ObjectUtils = shaka.util.ObjectUtils;
11
9
 
@@ -4,10 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.test.ManifestGenerator');
8
- goog.require('shaka.util.ManifestParserUtils');
9
- goog.require('shaka.util.PeriodCombiner');
10
-
11
7
  describe('PeriodCombiner', () => {
12
8
  // These test cases don't really read well as "it" statements. Phrasing them
13
9
  // that way would make the names very long, so here we break with that
@@ -477,7 +473,7 @@ describe('PeriodCombiner', () => {
477
473
  a3.originalId = 'a3';
478
474
  a3.bandwidth = 97065;
479
475
  a3.roles = ['role1', 'role2'];
480
- a2.codecs = 'mp4a.40.2';
476
+ a3.codecs = 'mp4a.40.2';
481
477
 
482
478
  // a4 has a different label from a3, and should not
483
479
  // be filtered out.
@@ -500,14 +496,24 @@ describe('PeriodCombiner', () => {
500
496
  const t1 = makeTextStream('en');
501
497
  t1.originalId = 't1';
502
498
  t1.roles = ['role1'];
499
+ t1.bandwidth = 1158;
503
500
 
504
501
  const t2 = makeTextStream('en');
505
502
  t2.originalId = 't2';
506
503
  t2.roles = ['role1', 'role2'];
504
+ t2.bandwidth = 1172;
507
505
 
508
506
  const t3 = makeTextStream('en');
509
507
  t3.originalId = 't3';
510
508
  t3.roles = ['role1'];
509
+ t3.bandwidth = 1158;
510
+
511
+ // t4 has a different bandwidth from t3, and should not
512
+ // be filtered out.
513
+ const t4 = makeTextStream('en');
514
+ t4.originalId = 't4';
515
+ t4.roles = ['role1'];
516
+ t4.bandwidth = 1186;
511
517
 
512
518
  // i1 and i3 are duplicates.
513
519
  const i1 = makeImageStream(240);
@@ -539,6 +545,7 @@ describe('PeriodCombiner', () => {
539
545
  t1,
540
546
  t2,
541
547
  t3,
548
+ t4,
542
549
  ],
543
550
  imageStreams: [
544
551
  i1,
@@ -565,7 +572,7 @@ describe('PeriodCombiner', () => {
565
572
  }
566
573
 
567
574
  const textStreams = combiner.getTextStreams();
568
- expect(textStreams.length).toBe(2);
575
+ expect(textStreams.length).toBe(3);
569
576
 
570
577
  // t3 should've been filtered out
571
578
  const textIds = textStreams.map((t) => t.originalId);
@@ -1059,7 +1066,7 @@ describe('PeriodCombiner', () => {
1059
1066
  it('The number of variants stays stable after many periods ' +
1060
1067
  'when going between similar content and varying ads', async () => {
1061
1068
  // This test is based on the content from
1062
- // https://github.com/google/shaka-player/issues/2716
1069
+ // https://github.com/shaka-project/shaka-player/issues/2716
1063
1070
  // that used to cause our period flattening logic to keep
1064
1071
  // creating new variants for every new period added.
1065
1072
  // It's ok to create a few additional varinats/streams,
@@ -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.Error');
9
- goog.require('shaka.util.Pssh');
10
- goog.require('shaka.util.Uint8ArrayUtils');
11
-
12
7
  describe('Pssh', () => {
13
8
  const Uint8ArrayUtils = shaka.util.Uint8ArrayUtils;
14
9
 
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.util.StateHistory');
8
-
9
7
  describe('StateHistory', () => {
10
8
  const oldDateNow = Date.now;
11
9
 
@@ -4,11 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.test.FakeDrmEngine');
8
- goog.require('shaka.test.ManifestGenerator');
9
- goog.require('shaka.test.Util');
10
- goog.require('shaka.util.StreamUtils');
11
-
12
7
  describe('StreamUtils', () => {
13
8
  const StreamUtils = shaka.util.StreamUtils;
14
9
 
@@ -184,7 +179,7 @@ describe('StreamUtils', () => {
184
179
  });
185
180
 
186
181
  it('chooses only one role, even if none is preferred', () => {
187
- // Regression test for https://github.com/google/shaka-player/issues/949
182
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/949
188
183
  manifest = shaka.test.ManifestGenerator.generate((manifest) => {
189
184
  manifest.addTextStream(0, (stream) => {
190
185
  stream.language = 'en';
@@ -223,7 +218,7 @@ describe('StreamUtils', () => {
223
218
  });
224
219
 
225
220
  it('chooses only one role, even if all are primary', () => {
226
- // Regression test for https://github.com/google/shaka-player/issues/949
221
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/949
227
222
  manifest = shaka.test.ManifestGenerator.generate((manifest) => {
228
223
  manifest.addTextStream(0, (stream) => {
229
224
  stream.language = 'en';
@@ -269,7 +264,7 @@ describe('StreamUtils', () => {
269
264
  });
270
265
 
271
266
  it('chooses only one language, even if all are primary', () => {
272
- // Regression test for https://github.com/google/shaka-player/issues/918
267
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/918
273
268
  manifest = shaka.test.ManifestGenerator.generate((manifest) => {
274
269
  manifest.addTextStream(0, (stream) => {
275
270
  stream.language = 'en';
@@ -4,12 +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.BufferUtils');
9
- goog.require('shaka.util.Error');
10
- goog.require('shaka.util.ManifestParserUtils');
11
- goog.require('shaka.util.StringUtils');
12
-
13
7
  describe('StringUtils', () => {
14
8
  const StringUtils = shaka.util.StringUtils;
15
9
 
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.util.TextParser');
8
-
9
7
  describe('TextParser', () => {
10
8
  const TextParser = shaka.util.TextParser;
11
9
 
@@ -4,10 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('goog.asserts');
8
- goog.require('shaka.util.XmlUtils');
9
-
10
-
11
7
  describe('XmlUtils', () => {
12
8
  // A number that cannot be represented as a Javascript number.
13
9
  const HUGE_NUMBER_STRING = new Array(500).join('7');
package/ui/controls.js CHANGED
@@ -254,6 +254,9 @@ shaka.ui.Controls = class extends shaka.util.FakeEventTarget {
254
254
 
255
255
  this.localization_ = null;
256
256
  this.pressedKeys_.clear();
257
+
258
+ // FakeEventTarget implements IReleasable
259
+ super.release();
257
260
  }
258
261
 
259
262
 
@@ -78,11 +78,11 @@
78
78
 
79
79
  /* This math is determining how far the button is from the right edge.
80
80
  * Ad panel's parent is centered and @bottom-controls-width wide, so
81
- * 100 - @bottom-controls-width = margins from both sides of the container.
81
+ * 100% - @bottom-controls-width = margins from both sides of the container.
82
82
  * That divided by 2 is margin on one side, so we take that, and move the
83
83
  * button from its normal position to the right by that percentage.
84
84
  */
85
- right: (100 - @bottom-controls-width) / 2 * -1;
85
+ right: calc((100% - @bottom-controls-width) / 2 * -1);
86
86
  display: flex;
87
87
  flex-direction: row;
88
88
  margin: 0;
@@ -90,18 +90,18 @@
90
90
 
91
91
  .shaka-skip-ad-button {
92
92
  padding: 5px 15px;
93
- background: rgba(0, 0, 0, 0.7);
93
+ background: rgba(0 0 0 / 70%);
94
94
  border: none;
95
95
 
96
96
  &:disabled {
97
- background: rgba(0, 0, 0, 0.3);
97
+ background: rgba(0 0 0 / 30%);
98
98
  }
99
99
 
100
100
  cursor: pointer;
101
101
  }
102
102
 
103
103
  .shaka-skip-ad-counter {
104
- padding: 5px 5px;
105
- background: rgba(0, 0, 0, 0.7);
104
+ padding: 5px;
105
+ background: rgba(0 0 0 / 70%);
106
106
  margin: 0;
107
107
  }