shaka-player 3.2.3 → 3.2.6

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 (325) 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 +130 -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 +93 -0
  11. package/AUTHORS +2 -0
  12. package/CHANGELOG.md +1587 -1551
  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 +1 -1
  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/generateTsDefs.py +2 -0
  64. package/build/shaka-lab.yaml +163 -0
  65. package/build/shakaBuildHelpers.py +4 -29
  66. package/build/test.py +93 -28
  67. package/build/wrapper.template.js +2 -2
  68. package/demo/TengwarTelcontar.woff2 +0 -0
  69. package/demo/asset_card.js +1 -2
  70. package/demo/cast_receiver/index.html +1 -1
  71. package/demo/cast_receiver/receiver_app.css +14 -14
  72. package/demo/common/assets.js +2 -0
  73. package/demo/config.js +0 -1
  74. package/demo/custom.js +0 -1
  75. package/demo/customWarning.txt +2 -2
  76. package/demo/demo.less +29 -18
  77. package/demo/demo_uncompiled.js +1 -13
  78. package/demo/index.html +1 -1
  79. package/demo/main.js +3 -3
  80. package/dist/controls.css +2 -2
  81. package/dist/controls.css.map +1 -1
  82. package/dist/demo.compiled.debug.js +191 -194
  83. package/dist/demo.compiled.debug.map +4 -4
  84. package/dist/demo.compiled.js +191 -194
  85. package/dist/demo.compiled.map +4 -4
  86. package/dist/demo.css +1 -1
  87. package/dist/demo.css.map +1 -1
  88. package/dist/deps.js +225 -219
  89. package/dist/locales.js +27 -27
  90. package/dist/receiver.compiled.debug.js +43 -45
  91. package/dist/receiver.compiled.debug.map +4 -4
  92. package/dist/receiver.compiled.js +43 -45
  93. package/dist/receiver.compiled.map +4 -4
  94. package/dist/shaka-player.compiled.d.ts +228 -225
  95. package/dist/shaka-player.compiled.debug.d.ts +228 -225
  96. package/dist/shaka-player.compiled.debug.externs.js +21 -15
  97. package/dist/shaka-player.compiled.debug.js +326 -333
  98. package/dist/shaka-player.compiled.debug.map +4 -4
  99. package/dist/shaka-player.compiled.externs.js +21 -15
  100. package/dist/shaka-player.compiled.js +818 -821
  101. package/dist/shaka-player.compiled.map +4 -4
  102. package/dist/shaka-player.ui.d.ts +272 -278
  103. package/dist/shaka-player.ui.debug.d.ts +272 -278
  104. package/dist/shaka-player.ui.debug.externs.js +23 -26
  105. package/dist/shaka-player.ui.debug.js +259 -267
  106. package/dist/shaka-player.ui.debug.map +4 -4
  107. package/dist/shaka-player.ui.externs.js +23 -26
  108. package/dist/shaka-player.ui.js +963 -968
  109. package/dist/shaka-player.ui.map +4 -4
  110. package/docs/design/REDESIGN.md +33 -33
  111. package/docs/design/codec_preferences.md +1 -1
  112. package/docs/design/dash-audio-channels.md +3 -3
  113. package/docs/design/dash-manifests.md +1 -1
  114. package/docs/design/gap-jumping.md +3 -3
  115. package/docs/design/preload.md +2 -2
  116. package/docs/tutorials/faq.md +8 -8
  117. package/docs/tutorials/index.json +1 -0
  118. package/docs/tutorials/plugins.md +3 -3
  119. package/docs/tutorials/selenium-grid-config.md +122 -0
  120. package/docs/tutorials/welcome.md +10 -2
  121. package/karma.conf.js +156 -45
  122. package/lib/abr/simple_abr_manager.js +12 -6
  123. package/lib/ads/ad_manager.js +1 -0
  124. package/lib/cast/cast_proxy.js +6 -4
  125. package/lib/cast/cast_receiver.js +3 -0
  126. package/lib/cea/cea608_data_channel.js +2 -2
  127. package/lib/cea/cea708_service.js +5 -4
  128. package/lib/cea/mp4_cea_parser.js +11 -5
  129. package/lib/cea/sei_processor.js +6 -3
  130. package/lib/dash/dash_parser.js +40 -30
  131. package/lib/dash/mpd_utils.js +4 -5
  132. package/lib/dash/segment_list.js +1 -2
  133. package/lib/dash/segment_template.js +3 -3
  134. package/lib/hls/hls_parser.js +11 -9
  135. package/lib/hls/manifest_text_parser.js +4 -3
  136. package/lib/media/adaptation_set.js +1 -2
  137. package/lib/media/content_workarounds.js +2 -2
  138. package/lib/media/drm_engine.js +3 -2
  139. package/lib/media/media_source_engine.js +3 -2
  140. package/lib/media/mp4_segment_index_parser.js +1 -4
  141. package/lib/media/playhead.js +2 -2
  142. package/lib/media/presentation_timeline.js +18 -8
  143. package/lib/media/region_observer.js +39 -33
  144. package/lib/media/region_timeline.js +17 -19
  145. package/lib/media/streaming_engine.js +7 -7
  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 +5 -1
  149. package/lib/offline/storage.js +12 -13
  150. package/lib/player.js +58 -24
  151. package/lib/polyfill/all.js +2 -3
  152. package/lib/polyfill/encryption_scheme.js +1 -1
  153. package/lib/polyfill/media_capabilities.js +3 -3
  154. package/lib/polyfill/mediasource.js +1 -1
  155. package/lib/text/cue.js +1 -1
  156. package/lib/text/simple_text_displayer.js +2 -1
  157. package/lib/text/ttml_text_parser.js +8 -5
  158. package/lib/text/ui_text_displayer.js +1 -1
  159. package/lib/util/buffer_utils.js +1 -3
  160. package/lib/util/ebml_parser.js +3 -3
  161. package/lib/util/error.js +1 -1
  162. package/lib/util/fake_event_target.js +21 -1
  163. package/lib/util/iterables.js +0 -46
  164. package/lib/util/mp4_box_parsers.js +1 -4
  165. package/lib/util/mp4_parser.js +5 -7
  166. package/lib/util/periods.js +8 -9
  167. package/lib/util/platform.js +3 -3
  168. package/lib/util/pssh.js +1 -4
  169. package/lib/util/stream_utils.js +4 -3
  170. package/lib/util/string_utils.js +3 -5
  171. package/lib/util/uint8array_utils.js +3 -5
  172. package/lib/util/xml_utils.js +15 -7
  173. package/package.json +62 -40
  174. package/roadmap.md +17 -17
  175. package/test/abr/simple_abr_manager_unit.js +3 -8
  176. package/test/ads/ad_manager_unit.js +0 -6
  177. package/test/cast/cast_proxy_unit.js +0 -8
  178. package/test/cast/cast_receiver_integration.js +1 -18
  179. package/test/cast/cast_receiver_unit.js +1 -9
  180. package/test/cast/cast_sender_unit.js +0 -6
  181. package/test/cast/cast_utils_unit.js +0 -13
  182. package/test/cea/cea608_memory_unit.js +0 -5
  183. package/test/cea/cea708_service_unit.js +0 -7
  184. package/test/cea/cea708_window_unit.js +0 -5
  185. package/test/cea/cea_decoder_unit.js +0 -6
  186. package/test/cea/dtvcc_packet_builder_unit.js +0 -3
  187. package/test/cea/dtvcc_packet_unit.js +0 -5
  188. package/test/cea/mp4_cea_parser_unit.js +0 -4
  189. package/test/dash/dash_parser_content_protection_unit.js +1 -10
  190. package/test/dash/dash_parser_live_unit.js +45 -15
  191. package/test/dash/dash_parser_manifest_unit.js +4 -17
  192. package/test/dash/dash_parser_segment_base_unit.js +1 -8
  193. package/test/dash/dash_parser_segment_list_unit.js +1 -7
  194. package/test/dash/dash_parser_segment_template_unit.js +0 -9
  195. package/test/dash/mpd_utils_unit.js +3 -11
  196. package/test/demo/demo_unit.js +0 -5
  197. package/test/deprecate/enforcer_unit.js +0 -4
  198. package/test/deprecate/version_unit.js +0 -2
  199. package/test/hls/hls_live_unit.js +2 -14
  200. package/test/hls/hls_parser_unit.js +76 -15
  201. package/test/hls/manifest_text_parser_unit.js +0 -10
  202. package/test/media/adaptation_set_criteria_unit.js +3 -7
  203. package/test/media/adaptation_set_unit.js +0 -2
  204. package/test/media/buffering_observer_unit.js +1 -4
  205. package/test/media/closed_caption_parser_unit.js +0 -3
  206. package/test/media/drm_engine_integration.js +2 -15
  207. package/test/media/drm_engine_unit.js +4 -24
  208. package/test/media/manifest_parser_unit.js +0 -4
  209. package/test/media/media_source_engine_integration.js +0 -7
  210. package/test/media/media_source_engine_unit.js +1 -14
  211. package/test/media/mp4_segment_index_parser_unit.js +0 -4
  212. package/test/media/play_rate_controller_unit.js +0 -4
  213. package/test/media/playhead_unit.js +8 -16
  214. package/test/media/presentation_timeline_unit.js +4 -7
  215. package/test/media/region_observer_unit.js +40 -10
  216. package/test/media/region_timeline_unit.js +40 -25
  217. package/test/media/segment_index_unit.js +0 -6
  218. package/test/media/segment_reference_unit.js +0 -3
  219. package/test/media/stall_detector_unit.js +0 -5
  220. package/test/media/streaming_engine_integration.js +9 -36
  221. package/test/media/streaming_engine_unit.js +11 -35
  222. package/test/media/time_ranges_utils_unit.js +0 -2
  223. package/test/media/transmuxer_integration.js +0 -6
  224. package/test/media/webm_segment_index_parser_unit.js +0 -4
  225. package/test/net/data_uri_plugin_unit.js +0 -7
  226. package/test/net/http_plugin_unit.js +0 -9
  227. package/test/net/networking_engine_unit.js +0 -11
  228. package/test/offline/download_progress_estimator_unit.js +0 -2
  229. package/test/offline/indexeddb_storage_unit.js +0 -6
  230. package/test/offline/manifest_convert_unit.js +0 -8
  231. package/test/offline/offline_integration.js +1 -10
  232. package/test/offline/offline_manifest_parser_unit.js +0 -6
  233. package/test/offline/offline_scheme_unit.js +0 -8
  234. package/test/offline/offline_uri_unit.js +0 -2
  235. package/test/offline/storage_compatibility_unit.js +1 -14
  236. package/test/offline/storage_integration.js +1 -25
  237. package/test/player_external.js +2 -10
  238. package/test/player_integration.js +21 -28
  239. package/test/player_load_graph_integration.js +1 -6
  240. package/test/player_src_equals_external.js +3 -9
  241. package/test/player_src_equals_integration.js +0 -7
  242. package/test/player_unit.js +52 -37
  243. package/test/routing/walker_unit.js +0 -8
  244. package/test/test/assets/large_file.mpd +1 -1
  245. package/test/test/boot.js +75 -22
  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 +9 -26
  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 +15 -26
  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 +9 -19
  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/mp4_box_parsers_unit.js +0 -5
  305. package/test/util/mp4_parser_unit.js +0 -4
  306. package/test/util/multi_map_unit.js +0 -3
  307. package/test/util/object_utils_unit.js +0 -2
  308. package/test/util/periods_unit.js +14 -7
  309. package/test/util/pssh_unit.js +0 -5
  310. package/test/util/state_history_unit.js +0 -2
  311. package/test/util/stream_utils_unit.js +3 -8
  312. package/test/util/string_utils_unit.js +0 -6
  313. package/test/util/text_parser_unit.js +0 -2
  314. package/test/util/xml_utils_unit.js +0 -4
  315. package/ui/controls.js +3 -0
  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/localization.js +12 -36
  324. package/ui/seek_bar.js +2 -1
  325. package/externs/svgelement.js +0 -18
@@ -0,0 +1,257 @@
1
+ # Shaka Player Sindarin (Elvish) Translations
2
+ # Copyright 2022 Google LLC
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ # This documents the manual translation of our UI into Sindarin.
6
+ # This file is not consumed automatically.
7
+
8
+ # References:
9
+ # - Font: http://freetengwar.sourceforge.net/tengtelc.html
10
+ # - Transliteration & dictionary: https://www.tecendil.com/?mode=sindarin
11
+ # - Dictionary: https://www.jrrvf.com/hisweloke/sindar/
12
+ # - Dictionary: https://www.elfdict.com/w/run/s?include_old=1
13
+ # - Grammar: https://www.elvish.org/gwaith/sindarin_intro.htm
14
+ # - Grammar: https://eldamo.org/content/grammar-indexes/grammars-s.html
15
+ # - Imperative ending: -o
16
+ # - Thesaurus: https://www.thesaurus.com/
17
+
18
+ translations:
19
+ - key: AD_DURATION
20
+ english: "Ad duration"
21
+ sjn-literal: "time for break for money"
22
+ sjn-roman: "lû an hastië an mirian"
23
+ sjn: "    "
24
+
25
+ - key: AD_PROGRESS
26
+ english: "Ad [AD_ON] of [NUM_ADS]"
27
+ sjn-literal: "break for money [A] / [B]"
28
+ sjn-roman: "hastië an mirian [A] / [B]"
29
+ sjn: "   [AD_ON] / [NUM_ADS]"
30
+
31
+ - key: AD_TIME
32
+ english: "Ad: [AD_TIME]"
33
+ sjn-literal: "break for money: [A]"
34
+ sjn-roman: "hastië an mirian: [A]"
35
+ sjn: "  : [AD_TIME]"
36
+
37
+ - key: AIRPLAY
38
+ english: "AirPlay"
39
+ sjn-literal: "heavens-make-play"
40
+ sjn-roman: "menelnortho"
41
+ sjn: ""
42
+
43
+ - key: AUTO_QUALITY
44
+ english: "Auto"
45
+ sjn-literal: "adapt/make fit"
46
+ sjn-roman: "cammo"
47
+ sjn: ""
48
+
49
+ - key: BACK
50
+ english: "Back"
51
+ sjn-literal: "return"
52
+ sjn-roman: "dan"
53
+ sjn: ""
54
+
55
+ - key: CAPTIONS
56
+ english: "Captions"
57
+ sjn-literal: "words written"
58
+ sjn-roman: "pith teithiel"
59
+ sjn: " "
60
+
61
+ - key: CAST
62
+ english: "Cast..."
63
+ sjn-literal: "throw"
64
+ sjn-roman: "hanto"
65
+ sjn: ""
66
+
67
+ - key: ENTER_LOOP_MODE
68
+ english: "Loop the current video"
69
+ sjn-literal: "enter repeating"
70
+ sjn-roman: "minno enquetië"
71
+ sjn: " "
72
+
73
+ - key: ENTER_PICTURE_IN_PICTURE
74
+ english: "Enter Picture-in-Picture"
75
+ sjn-literal: "enter mind-picture within mind-picture"
76
+ sjn-roman: "minno fanwos bir fanwos"
77
+ sjn: "   "
78
+
79
+ - key: EXIT_FULL_SCREEN
80
+ english: "Exit full screen"
81
+ sjn-literal: "escape mind-picture full"
82
+ sjn-roman: "uthro fanwos panta"
83
+ sjn: "  "
84
+
85
+ - key: EXIT_LOOP_MODE
86
+ english: "Stop looping the current video"
87
+ sjn-literal: "escape repeating"
88
+ sjn-roman: "uthro enquetië"
89
+ sjn: " "
90
+
91
+ - key: EXIT_PICTURE_IN_PICTURE
92
+ english: "Exit Picture-in-Picture"
93
+ sjn-literal: "escape mind-picture within mind-picture"
94
+ sjn-roman: "uthro fanwos bir fanwos"
95
+ sjn: "   "
96
+
97
+ - key: FAST_FORWARD
98
+ english: "Fast-forward"
99
+ sjn-literal: "make-run fast"
100
+ sjn-roman: "northo lim"
101
+ sjn: " "
102
+
103
+ - key: FULL_SCREEN
104
+ english: "Full screen"
105
+ sjn-literal: "mind-picture full"
106
+ sjn-roman: "fanwos panta"
107
+ sjn: " "
108
+
109
+ - key: LANGUAGE
110
+ english: "Language"
111
+ sjn-literal: "language"
112
+ sjn-roman: "lambë"
113
+ sjn: ""
114
+
115
+ - key: LIVE
116
+ english: "Live"
117
+ sjn-literal: "freshest"
118
+ sjn-roman: "cîrwain"
119
+ sjn: ""
120
+
121
+ - key: LOOP
122
+ english: "Loop"
123
+ sjn-literal: "repeat"
124
+ sjn-roman: "enqueto"
125
+ sjn: ""
126
+
127
+ - key: MORE_SETTINGS
128
+ english: "More settings"
129
+ sjn-literal: "more+choices"
130
+ sjn-roman: "galainc"
131
+ sjn: ""
132
+
133
+ - key: MULTIPLE_LANGUAGES
134
+ english: "Multiple languages"
135
+ sjn-literal: "language without count"
136
+ sjn-roman: "lambë arnoediad"
137
+ sjn: " "
138
+
139
+ - key: MUTE
140
+ english: "Mute"
141
+ sjn-literal: "silence"
142
+ sjn-roman: "dîn"
143
+ sjn: ""
144
+
145
+ - key: NOT_APPLICABLE
146
+ english: "Not applicable"
147
+ sjn-literal: "not important"
148
+ sjn-roman: "la bâl"
149
+ sjn: " "
150
+
151
+ - key: OFF
152
+ english: "Off"
153
+ sjn-literal: "nothing"
154
+ sjn-roman: "unt"
155
+ sjn: ""
156
+
157
+ - key: ON
158
+ english: "On"
159
+ sjn-literal: "active"
160
+ sjn-roman: "carweg"
161
+ sjn: ""
162
+
163
+ - key: PAUSE
164
+ english: "Pause"
165
+ sjn-literal: "tarry/wait/pause"
166
+ sjn-roman: "hasto"
167
+ sjn: ""
168
+
169
+ - key: PICTURE_IN_PICTURE
170
+ english: "Picture-in-picture"
171
+ sjn-literal: "mind-picture within mind-picture"
172
+ sjn-roman: "fanwos bir fanwos"
173
+ sjn: "  "
174
+
175
+ - key: PLAY
176
+ english: "Play"
177
+ sjn-literal: "make-run"
178
+ sjn-roman: "northo"
179
+ sjn: ""
180
+
181
+ - key: PLAYBACK_RATE
182
+ english: "Playback speed"
183
+ sjn-literal: "speed"
184
+ sjn-roman: "lintië"
185
+ sjn: ""
186
+
187
+ - key: REPLAY
188
+ english: "Replay"
189
+ sjn-literal: "make-run again"
190
+ sjn-roman: "adnortho"
191
+ sjn: ""
192
+
193
+ - key: RESOLUTION
194
+ english: "Resolution"
195
+ sjn-literal: "value/preciousness"
196
+ sjn-roman: "meiras"
197
+ sjn: ""
198
+
199
+ - key: REWIND
200
+ english: "Rewind"
201
+ sjn-literal: "make-run backwards"
202
+ sjn-roman: "northo abont"
203
+ sjn: " "
204
+
205
+ - key: SEEK
206
+ english: "Seek"
207
+ sjn-literal: "time"
208
+ sjn-roman: "lû"
209
+ sjn: ""
210
+
211
+ - key: SKIP_AD
212
+ english: "Skip Ad"
213
+ sjn-literal: "leap across break for money"
214
+ sjn-roman: "cabo thar hastië an mirian"
215
+ sjn: "    "
216
+
217
+ - key: SKIP_TO_LIVE
218
+ english: "Skip ahead to live"
219
+ sjn-literal: "leap to freshest"
220
+ sjn-roman: "cabo na cîrwain"
221
+ sjn: "  "
222
+
223
+ - key: STATISTICS
224
+ english: "Statistics"
225
+ sjn-literal: "interrogate numbers"
226
+ sjn-roman: "cetho neth"
227
+ sjn: " "
228
+
229
+ - key: SUBTITLE_FORCED
230
+ english: "Forced"
231
+ sjn-literal: "words written firm/abiding"
232
+ sjn-roman: "pith teithiel taug"
233
+ sjn: "  "
234
+
235
+ - key: UNDETERMINED_LANGUAGE
236
+ english: "Undetermined"
237
+ sjn-literal: "not known"
238
+ sjn-roman: "la sinnen"
239
+ sjn: " "
240
+
241
+ - key: UNMUTE
242
+ english: "Unmute"
243
+ sjn-literal: "noise/sound"
244
+ sjn-roman: "lhôn"
245
+ sjn: ""
246
+
247
+ - key: UNRECOGNIZED_LANGUAGE
248
+ english: "Unrecognized"
249
+ sjn-literal: "not known"
250
+ sjn-roman: "la sinnen"
251
+ sjn: " "
252
+
253
+ - key: VOLUME
254
+ english: "Volume"
255
+ sjn-literal: "loud(ness)"
256
+ sjn-roman: "brui"
257
+ sjn: ""
@@ -0,0 +1,42 @@
1
+ {
2
+ "AD_DURATION": "    ",
3
+ "AD_PROGRESS": "   [AD_ON] / [NUM_ADS]",
4
+ "AD_TIME": "  : [AD_TIME]",
5
+ "AIRPLAY": "",
6
+ "AUTO_QUALITY": "",
7
+ "BACK": "",
8
+ "CAPTIONS": " ",
9
+ "CAST": "",
10
+ "ENTER_LOOP_MODE": " ",
11
+ "ENTER_PICTURE_IN_PICTURE": "   ",
12
+ "EXIT_FULL_SCREEN": "  ",
13
+ "EXIT_LOOP_MODE": " ",
14
+ "EXIT_PICTURE_IN_PICTURE": "   ",
15
+ "FAST_FORWARD": " ",
16
+ "FULL_SCREEN": " ",
17
+ "LANGUAGE": "",
18
+ "LIVE": "",
19
+ "LOOP": "",
20
+ "MORE_SETTINGS": "",
21
+ "MULTIPLE_LANGUAGES": " ",
22
+ "MUTE": "",
23
+ "NOT_APPLICABLE": " ",
24
+ "OFF": "",
25
+ "ON": "",
26
+ "PAUSE": "",
27
+ "PICTURE_IN_PICTURE": "  ",
28
+ "PLAY": "",
29
+ "PLAYBACK_RATE": "",
30
+ "REPLAY": "",
31
+ "RESOLUTION": "",
32
+ "REWIND": " ",
33
+ "SEEK": "",
34
+ "SKIP_AD": "    ",
35
+ "SKIP_TO_LIVE": "  ",
36
+ "STATISTICS": " ",
37
+ "SUBTITLE_FORCED": "  ",
38
+ "UNDETERMINED_LANGUAGE": " ",
39
+ "UNMUTE": "",
40
+ "UNRECOGNIZED_LANGUAGE": " ",
41
+ "VOLUME": ""
42
+ }
@@ -23,17 +23,18 @@ goog.require('shaka.util.LanguageUtils');
23
23
  * If a string is not available, it will return the localized
24
24
  * form in the closest related locale.
25
25
  *
26
- * @implements {EventTarget}
27
26
  * @final
28
27
  * @export
29
28
  */
30
- shaka.ui.Localization = class {
29
+ shaka.ui.Localization = class extends shaka.util.FakeEventTarget {
31
30
  /**
32
31
  * @param {string} fallbackLocale
33
32
  * The fallback locale that should be used. It will be assumed that this
34
33
  * locale should have entries for just about every request.
35
34
  */
36
35
  constructor(fallbackLocale) {
36
+ super();
37
+
37
38
  /** @private {string} */
38
39
  this.fallbackLocale_ = shaka.util.LanguageUtils.normalize(fallbackLocale);
39
40
 
@@ -62,41 +63,16 @@ shaka.ui.Localization = class {
62
63
  * @private {!Map.<string, !Map.<string, string>>}
63
64
  */
64
65
  this.localizations_ = new Map();
65
-
66
- /**
67
- * The event target that we will wrap so that we can fire events
68
- * without having to manage the listeners directly.
69
- *
70
- * @private {!EventTarget}
71
- */
72
- this.events_ = new shaka.util.FakeEventTarget();
73
- }
74
-
75
- /**
76
- * @override
77
- * @export
78
- */
79
- addEventListener(type, listener, options) {
80
- this.events_.addEventListener(type, listener, options);
81
- }
82
-
83
- /**
84
- * @override
85
- * @export
86
- */
87
- removeEventListener(type, listener, options) {
88
- // Apparently Closure says we can be passed a null |option|, but we can't
89
- // pass a null option, so if we get have a null-like |option|, force it to
90
- // be undefined.
91
- this.events_.removeEventListener(type, listener, options || undefined);
92
66
  }
93
67
 
94
68
  /**
95
69
  * @override
96
70
  * @export
97
71
  */
98
- dispatchEvent(event) {
99
- return this.events_.dispatchEvent(event);
72
+ release() {
73
+ // Placeholder so that readers know this implements IReleasable (via
74
+ // FakeEventTarget)
75
+ super.release();
100
76
  }
101
77
 
102
78
  /**
@@ -130,7 +106,7 @@ shaka.ui.Localization = class {
130
106
  (locale) => !this.localizations_.has(locale));
131
107
 
132
108
  if (missing.length) {
133
- this.events_.dispatchEvent(new shaka.util.FakeEvent(
109
+ this.dispatchEvent(new shaka.util.FakeEvent(
134
110
  Class.UNKNOWN_LOCALES,
135
111
  (new Map()).set('locales', missing)));
136
112
  }
@@ -141,7 +117,7 @@ shaka.ui.Localization = class {
141
117
 
142
118
  const data = (new Map()).set(
143
119
  'locales', found.length ? found : [this.fallbackLocale_]);
144
- this.events_.dispatchEvent(new shaka.util.FakeEvent(
120
+ this.dispatchEvent(new shaka.util.FakeEvent(
145
121
  Class.LOCALE_CHANGED,
146
122
  data));
147
123
  }
@@ -193,7 +169,7 @@ shaka.ui.Localization = class {
193
169
  // data from.
194
170
  this.updateCurrentMap_();
195
171
 
196
- this.events_.dispatchEvent(new FakeEvent(Class.LOCALE_UPDATED));
172
+ this.dispatchEvent(new FakeEvent(Class.LOCALE_UPDATED));
197
173
 
198
174
  return this;
199
175
  }
@@ -249,7 +225,7 @@ shaka.ui.Localization = class {
249
225
  // Make a copy to avoid leaking references.
250
226
  .set('locales', Array.from(this.currentLocales_))
251
227
  .set('missing', id);
252
- this.events_.dispatchEvent(new FakeEvent(Class.UNKNOWN_LOCALIZATION, data));
228
+ this.dispatchEvent(new FakeEvent(Class.UNKNOWN_LOCALIZATION, data));
253
229
 
254
230
  return '';
255
231
  }
@@ -377,7 +353,7 @@ shaka.ui.Localization = class {
377
353
  // an array.
378
354
  .set('missing', Array.from(missing));
379
355
 
380
- this.events_.dispatchEvent(new shaka.util.FakeEvent(
356
+ this.dispatchEvent(new shaka.util.FakeEvent(
381
357
  shaka.ui.Localization.MISSING_LOCALIZATIONS,
382
358
  data));
383
359
  }
package/ui/seek_bar.js CHANGED
@@ -74,7 +74,8 @@ shaka.ui.SeekBar = class extends shaka.ui.RangeElement {
74
74
  });
75
75
 
76
76
  /**
77
- * When user is scrubbing the seek bar - we should pause the video - see https://git.io/JUhHG
77
+ * When user is scrubbing the seek bar - we should pause the video - see
78
+ * https://github.com/google/shaka-player/pull/2898#issuecomment-705229215
78
79
  * but will conditionally pause or play the video after scrubbing
79
80
  * depending on its previous state
80
81
  *
@@ -1,18 +0,0 @@
1
- /*! @license
2
- * Shaka Player
3
- * Copyright 2016 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- /**
8
- * @fileoverview Externs for SVGElement which are missing from the Closure
9
- * compiler.
10
- *
11
- * @externs
12
- */
13
-
14
- // Right now, we only use SVGElement in an instanceof check, so we just declare
15
- // the type with nothing on it.
16
-
17
- /** @constructor */
18
- function SVGElement() {}