shaka-player 3.3.2 → 4.0.0

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 (389) hide show
  1. package/.csslintrc +11 -1
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  3. package/.github/pull_request_template.md +6 -34
  4. package/.github/workflows/build-and-test.yaml +129 -0
  5. package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +56 -0
  6. package/.github/workflows/custom-actions/set-commit-status/action.yaml +41 -0
  7. package/.github/workflows/demo-version-index.yaml +37 -0
  8. package/.github/workflows/nightly-demo.yaml +42 -0
  9. package/.github/workflows/release-please.yaml +168 -0
  10. package/.github/workflows/safari-homedir-launcher.sh +18 -0
  11. package/.github/workflows/selenium-lab-tests.yaml +92 -0
  12. package/.github/workflows/sync-labels.yaml +33 -0
  13. package/.github/workflows/update-issues.yaml +29 -0
  14. package/.github/workflows/validate-pr-title.yaml +35 -0
  15. package/AUTHORS +3 -0
  16. package/CHANGELOG.md +1866 -1675
  17. package/CONTRIBUTING.md +2 -2
  18. package/CONTRIBUTORS +3 -0
  19. package/README.md +16 -13
  20. package/app-engine/README.md +9 -0
  21. package/app-engine/demo-version-index/README.md +14 -0
  22. package/app-engine/demo-version-index/app.yaml +28 -0
  23. package/app-engine/demo-version-index/generate.py +164 -0
  24. package/app-engine/demo-version-index/main.py +11 -0
  25. package/app-engine/demo-version-index/requirements.txt +5 -0
  26. package/app-engine/demo-version-index/templates/index.html +114 -0
  27. package/app-engine/shaka-player-demo/README.md +18 -0
  28. package/app-engine/shaka-player-demo/app.yaml +61 -0
  29. package/app-engine/shaka-player-demo/main.py +95 -0
  30. package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
  31. package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
  32. package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
  33. package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
  34. package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
  35. package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
  36. package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
  37. package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
  38. package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
  39. package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
  40. package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
  41. package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
  42. package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
  43. package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
  44. package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
  45. package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
  46. package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
  47. package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
  48. package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
  49. package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
  50. package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
  51. package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
  52. package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
  53. package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
  54. package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
  55. package/app-engine/shaka-player-demo/posters/standard.png +0 -0
  56. package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
  57. package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
  58. package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
  59. package/app-engine/shaka-player-demo/posters.py +110 -0
  60. package/app-engine/shaka-player-demo/requirements.txt +5 -0
  61. package/app-engine/shaka-player-demo/time.txt +1 -0
  62. package/build/README.md +3 -3
  63. package/build/checkversion.py +1 -1
  64. package/build/compiler.py +1 -1
  65. package/build/conformance.textproto +13 -0
  66. package/build/docker/Dockerfile +20 -0
  67. package/build/docker/docker-compose.yml +10 -0
  68. package/build/gendeps.py +18 -15
  69. package/build/shaka-lab.yaml +161 -0
  70. package/build/shakaBuildHelpers.py +4 -29
  71. package/build/test.py +94 -29
  72. package/build/types/core +0 -1
  73. package/build/types/polyfill +1 -3
  74. package/build/wrapper.template.js +2 -2
  75. package/demo/TengwarTelcontar.woff2 +0 -0
  76. package/demo/asset_card.js +1 -2
  77. package/demo/cast_receiver/index.html +1 -1
  78. package/demo/cast_receiver/receiver_app.css +14 -14
  79. package/demo/common/asset.js +17 -1
  80. package/demo/common/assets.js +31 -0
  81. package/demo/common/message_ids.js +6 -3
  82. package/demo/config.js +10 -12
  83. package/demo/custom.js +39 -1
  84. package/demo/customWarning.txt +2 -2
  85. package/demo/demo.less +29 -18
  86. package/demo/demo_uncompiled.js +1 -13
  87. package/demo/demo_utils.js +0 -1
  88. package/demo/index.html +1 -1
  89. package/demo/locales/en.json +6 -3
  90. package/demo/locales/source.json +22 -10
  91. package/demo/main.js +12 -9
  92. package/demo/search.js +2 -1
  93. package/dist/controls.css +3 -3
  94. package/dist/controls.css.map +1 -1
  95. package/dist/demo.compiled.debug.js +236 -232
  96. package/dist/demo.compiled.debug.map +4 -4
  97. package/dist/demo.compiled.js +236 -232
  98. package/dist/demo.compiled.map +4 -4
  99. package/dist/demo.css +1 -1
  100. package/dist/demo.css.map +1 -1
  101. package/dist/deps.js +229 -226
  102. package/dist/locales.js +34 -32
  103. package/dist/receiver.compiled.debug.js +75 -73
  104. package/dist/receiver.compiled.debug.map +4 -4
  105. package/dist/receiver.compiled.js +75 -73
  106. package/dist/receiver.compiled.map +4 -4
  107. package/dist/shaka-player.compiled.d.ts +321 -314
  108. package/dist/shaka-player.compiled.debug.d.ts +321 -314
  109. package/dist/shaka-player.compiled.debug.externs.js +140 -129
  110. package/dist/shaka-player.compiled.debug.js +527 -592
  111. package/dist/shaka-player.compiled.debug.map +4 -4
  112. package/dist/shaka-player.compiled.externs.js +140 -129
  113. package/dist/shaka-player.compiled.js +836 -860
  114. package/dist/shaka-player.compiled.map +4 -4
  115. package/dist/shaka-player.ui.d.ts +367 -358
  116. package/dist/shaka-player.ui.debug.d.ts +367 -358
  117. package/dist/shaka-player.ui.debug.externs.js +148 -129
  118. package/dist/shaka-player.ui.debug.js +586 -649
  119. package/dist/shaka-player.ui.debug.map +4 -4
  120. package/dist/shaka-player.ui.externs.js +148 -129
  121. package/dist/shaka-player.ui.js +1008 -1028
  122. package/dist/shaka-player.ui.map +4 -4
  123. package/docs/design/REDESIGN.md +33 -33
  124. package/docs/design/bg-fetch.md +2 -2
  125. package/docs/design/codec_preferences.md +1 -1
  126. package/docs/design/dash-audio-channels.md +3 -3
  127. package/docs/design/dash-manifests.md +1 -1
  128. package/docs/design/gap-jumping.md +3 -3
  129. package/docs/design/preload.md +2 -2
  130. package/docs/tutorials/config.md +0 -2
  131. package/docs/tutorials/drm-config.md +5 -0
  132. package/docs/tutorials/fairplay.md +7 -22
  133. package/docs/tutorials/faq.md +8 -19
  134. package/docs/tutorials/index.json +3 -8
  135. package/docs/tutorials/plugins.md +4 -6
  136. package/docs/tutorials/selenium-grid-config.md +122 -0
  137. package/docs/tutorials/upgrade.md +83 -11
  138. package/docs/tutorials/welcome.md +10 -2
  139. package/externs/cmcd.js +1 -1
  140. package/externs/polyfill.js +15 -0
  141. package/externs/shaka/manifest.js +5 -1
  142. package/externs/shaka/net.js +12 -0
  143. package/externs/shaka/offline.js +5 -1
  144. package/externs/shaka/player.js +39 -32
  145. package/externs/shaka/text.js +12 -12
  146. package/externs/sourcebuffer.js +15 -0
  147. package/karma.conf.js +137 -30
  148. package/lib/abr/simple_abr_manager.js +12 -6
  149. package/lib/ads/client_side_ad.js +13 -2
  150. package/lib/ads/client_side_ad_manager.js +22 -4
  151. package/lib/cast/cast_proxy.js +3 -4
  152. package/lib/cast/cast_utils.js +0 -1
  153. package/lib/cea/cea608_data_channel.js +2 -2
  154. package/lib/cea/cea708_service.js +5 -4
  155. package/lib/cea/mp4_cea_parser.js +11 -5
  156. package/lib/cea/sei_processor.js +6 -3
  157. package/lib/dash/content_protection.js +85 -5
  158. package/lib/dash/dash_parser.js +10 -12
  159. package/lib/dash/mpd_utils.js +4 -5
  160. package/lib/dash/segment_list.js +1 -2
  161. package/lib/dash/segment_template.js +3 -3
  162. package/lib/hls/hls_parser.js +386 -749
  163. package/lib/hls/manifest_text_parser.js +5 -6
  164. package/lib/media/adaptation_set.js +1 -2
  165. package/lib/media/content_workarounds.js +2 -2
  166. package/lib/media/drm_engine.js +105 -55
  167. package/lib/media/gap_jumping_controller.js +10 -45
  168. package/lib/media/media_source_engine.js +90 -17
  169. package/lib/media/mp4_segment_index_parser.js +1 -4
  170. package/lib/media/playhead.js +4 -7
  171. package/lib/media/presentation_timeline.js +19 -10
  172. package/lib/media/segment_index.js +13 -46
  173. package/lib/media/segment_reference.js +47 -1
  174. package/lib/media/streaming_engine.js +35 -17
  175. package/lib/media/time_ranges_utils.js +5 -12
  176. package/lib/media/video_wrapper.js +1 -1
  177. package/lib/net/networking_engine.js +4 -1
  178. package/lib/offline/indexeddb/v1_storage_cell.js +1 -0
  179. package/lib/offline/indexeddb/v2_storage_cell.js +1 -0
  180. package/lib/offline/manifest_converter.js +1 -0
  181. package/lib/offline/storage.js +104 -136
  182. package/lib/player.js +50 -216
  183. package/lib/polyfill/all.js +2 -3
  184. package/lib/polyfill/encryption_scheme.js +1 -1
  185. package/lib/polyfill/media_capabilities.js +15 -9
  186. package/lib/polyfill/mediasource.js +0 -28
  187. package/lib/polyfill/patchedmediakeys_nop.js +2 -0
  188. package/lib/polyfill/patchedmediakeys_webkit.js +2 -0
  189. package/lib/polyfill/symbol.js +46 -0
  190. package/lib/text/cue.js +1 -7
  191. package/lib/text/lrc_text_parser.js +8 -0
  192. package/lib/text/mp4_ttml_parser.js +8 -0
  193. package/lib/text/mp4_vtt_parser.js +8 -0
  194. package/lib/text/sbv_text_parser.js +8 -0
  195. package/lib/text/simple_text_displayer.js +3 -8
  196. package/lib/text/srt_text_parser.js +8 -0
  197. package/lib/text/ssa_text_parser.js +8 -0
  198. package/lib/text/text_engine.js +19 -3
  199. package/lib/text/ttml_text_parser.js +16 -5
  200. package/lib/text/ui_text_displayer.js +2 -8
  201. package/lib/text/vtt_text_parser.js +24 -2
  202. package/lib/text/web_vtt_generator.js +1 -7
  203. package/lib/util/buffer_utils.js +1 -3
  204. package/lib/util/ebml_parser.js +3 -3
  205. package/lib/util/error.js +10 -14
  206. package/lib/util/fairplay_utils.js +109 -0
  207. package/lib/util/functional.js +0 -42
  208. package/lib/util/iterables.js +0 -46
  209. package/lib/util/mime_utils.js +2 -0
  210. package/lib/util/mp4_box_parsers.js +1 -4
  211. package/lib/util/mp4_parser.js +5 -7
  212. package/lib/util/periods.js +10 -11
  213. package/lib/util/platform.js +48 -3
  214. package/lib/util/player_configuration.js +12 -6
  215. package/lib/util/pssh.js +24 -8
  216. package/lib/util/stream_utils.js +96 -25
  217. package/lib/util/string_utils.js +3 -5
  218. package/lib/util/uint8array_utils.js +3 -21
  219. package/lib/util/xml_utils.js +16 -8
  220. package/package.json +61 -36
  221. package/roadmap.md +27 -27
  222. package/shaka-player.uncompiled.js +1 -3
  223. package/test/abr/simple_abr_manager_unit.js +3 -8
  224. package/test/ads/ad_manager_unit.js +0 -6
  225. package/test/cast/cast_proxy_unit.js +0 -8
  226. package/test/cast/cast_receiver_integration.js +1 -18
  227. package/test/cast/cast_receiver_unit.js +1 -9
  228. package/test/cast/cast_sender_unit.js +0 -6
  229. package/test/cast/cast_utils_unit.js +1 -13
  230. package/test/cea/cea608_memory_unit.js +0 -5
  231. package/test/cea/cea708_service_unit.js +0 -7
  232. package/test/cea/cea708_window_unit.js +0 -5
  233. package/test/cea/cea_decoder_unit.js +0 -6
  234. package/test/cea/dtvcc_packet_builder_unit.js +0 -3
  235. package/test/cea/dtvcc_packet_unit.js +0 -5
  236. package/test/cea/mp4_cea_parser_unit.js +0 -4
  237. package/test/dash/dash_parser_content_protection_unit.js +45 -10
  238. package/test/dash/dash_parser_live_unit.js +2 -15
  239. package/test/dash/dash_parser_manifest_unit.js +2 -40
  240. package/test/dash/dash_parser_segment_base_unit.js +1 -8
  241. package/test/dash/dash_parser_segment_list_unit.js +1 -7
  242. package/test/dash/dash_parser_segment_template_unit.js +3 -13
  243. package/test/dash/mpd_utils_unit.js +3 -11
  244. package/test/demo/demo_unit.js +2 -6
  245. package/test/deprecate/enforcer_unit.js +0 -4
  246. package/test/deprecate/version_unit.js +0 -2
  247. package/test/hls/hls_live_unit.js +101 -234
  248. package/test/hls/hls_parser_unit.js +517 -447
  249. package/test/hls/manifest_text_parser_unit.js +0 -10
  250. package/test/media/adaptation_set_criteria_unit.js +3 -7
  251. package/test/media/adaptation_set_unit.js +0 -2
  252. package/test/media/buffering_observer_unit.js +1 -4
  253. package/test/media/closed_caption_parser_unit.js +0 -3
  254. package/test/media/drm_engine_integration.js +2 -15
  255. package/test/media/drm_engine_unit.js +90 -144
  256. package/test/media/manifest_parser_unit.js +0 -4
  257. package/test/media/media_source_engine_integration.js +26 -10
  258. package/test/media/media_source_engine_unit.js +8 -20
  259. package/test/media/mp4_segment_index_parser_unit.js +0 -4
  260. package/test/media/play_rate_controller_unit.js +0 -4
  261. package/test/media/playhead_unit.js +35 -207
  262. package/test/media/presentation_timeline_unit.js +4 -7
  263. package/test/media/quality_observer_unit.js +0 -4
  264. package/test/media/region_observer_unit.js +1 -6
  265. package/test/media/region_timeline_unit.js +0 -3
  266. package/test/media/segment_index_unit.js +15 -31
  267. package/test/media/segment_reference_unit.js +0 -3
  268. package/test/media/stall_detector_unit.js +0 -5
  269. package/test/media/streaming_engine_integration.js +13 -75
  270. package/test/media/streaming_engine_unit.js +14 -37
  271. package/test/media/time_ranges_utils_unit.js +0 -7
  272. package/test/media/transmuxer_integration.js +0 -6
  273. package/test/media/webm_segment_index_parser_unit.js +0 -4
  274. package/test/net/data_uri_plugin_unit.js +0 -7
  275. package/test/net/http_plugin_unit.js +0 -9
  276. package/test/net/networking_engine_unit.js +0 -11
  277. package/test/offline/download_progress_estimator_unit.js +0 -2
  278. package/test/offline/indexeddb_storage_unit.js +0 -6
  279. package/test/offline/manifest_convert_unit.js +34 -12
  280. package/test/offline/offline_integration.js +1 -10
  281. package/test/offline/offline_manifest_parser_unit.js +1 -6
  282. package/test/offline/offline_scheme_unit.js +0 -8
  283. package/test/offline/offline_uri_unit.js +0 -2
  284. package/test/offline/storage_compatibility_unit.js +1 -14
  285. package/test/offline/storage_integration.js +6 -31
  286. package/test/player_external.js +1 -15
  287. package/test/player_integration.js +38 -28
  288. package/test/player_load_graph_integration.js +1 -6
  289. package/test/player_src_equals_external.js +3 -9
  290. package/test/player_src_equals_integration.js +0 -7
  291. package/test/player_unit.js +78 -37
  292. package/test/routing/walker_unit.js +0 -8
  293. package/test/test/assets/large_file.mpd +1 -1
  294. package/test/test/boot.js +75 -22
  295. package/test/test/externs/jasmine.js +2 -2
  296. package/test/test/externs/karma.js +4 -0
  297. package/test/test/namespace.js +10 -0
  298. package/test/test/util/canned_idb.js +0 -8
  299. package/test/test/util/cea_utils.js +0 -6
  300. package/test/test/util/dash_parser_util.js +0 -13
  301. package/test/test/util/fake_ad.js +0 -3
  302. package/test/test/util/fake_ad_manager.js +0 -9
  303. package/test/test/util/fake_demo_main.js +0 -5
  304. package/test/test/util/fake_drm_engine.js +0 -6
  305. package/test/test/util/fake_media_source_engine.js +11 -11
  306. package/test/test/util/fake_networking_engine.js +0 -5
  307. package/test/test/util/fake_text_displayer.js +0 -5
  308. package/test/test/util/indexeddb_utils.js +1 -10
  309. package/test/test/util/jasmine_fetch.js +0 -1
  310. package/test/test/util/loader.js +0 -18
  311. package/test/test/util/manifest_generator.js +12 -15
  312. package/test/test/util/manifest_parser_util.js +4 -7
  313. package/test/test/util/offline_utils.js +1 -5
  314. package/test/test/util/simple_fakes.js +9 -26
  315. package/test/test/util/stream_generator.js +0 -14
  316. package/test/test/util/streaming_engine_util.js +1 -15
  317. package/test/test/util/test_scheme.js +25 -20
  318. package/test/test/util/ttml_utils.js +0 -2
  319. package/test/test/util/ui_utils.js +0 -9
  320. package/test/test/util/util.js +9 -23
  321. package/test/test/util/waiter.js +84 -43
  322. package/test/text/cue_integration.js +2 -6
  323. package/test/text/lrc_text_parser_unit.js +6 -11
  324. package/test/text/mp4_ttml_parser_unit.js +6 -10
  325. package/test/text/mp4_vtt_parser_unit.js +7 -12
  326. package/test/text/sbv_text_parser_unit.js +5 -10
  327. package/test/text/simple_text_displayer_unit.js +1 -8
  328. package/test/text/srt_text_parser_unit.js +5 -10
  329. package/test/text/ssa_text_parser_unit.js +17 -34
  330. package/test/text/text_engine_unit.js +47 -12
  331. package/test/text/text_track_integration.js +0 -2
  332. package/test/text/ttml_text_parser_unit.js +79 -88
  333. package/test/text/ui_text_displayer_unit.js +44 -41
  334. package/test/text/vtt_text_parser_unit.js +55 -66
  335. package/test/text/web_vtt_generator_unit.js +0 -3
  336. package/test/ui/ad_ui_unit.js +0 -11
  337. package/test/ui/localization_unit.js +0 -3
  338. package/test/ui/text_displayer_layout_unit.js +1 -12
  339. package/test/ui/ui_customization_unit.js +0 -6
  340. package/test/ui/ui_integration.js +0 -32
  341. package/test/ui/ui_unit.js +28 -17
  342. package/test/util/abortable_operation_unit.js +4 -9
  343. package/test/util/array_utils_unit.js +0 -2
  344. package/test/util/buffer_utils_unit.js +0 -2
  345. package/test/util/cmcd_manager_unit.js +3 -3
  346. package/test/util/data_view_reader_unit.js +0 -4
  347. package/test/util/ebml_parser_unit.js +0 -4
  348. package/test/util/event_manager_unit.js +0 -3
  349. package/test/util/fake_event_target_unit.js +0 -5
  350. package/test/util/iterables_unit.js +0 -64
  351. package/test/util/language_utils_unit.js +0 -3
  352. package/test/util/manifest_parser_utils_unit.js +0 -2
  353. package/test/util/mp4_box_parsers_unit.js +0 -5
  354. package/test/util/mp4_parser_unit.js +0 -4
  355. package/test/util/multi_map_unit.js +0 -3
  356. package/test/util/object_utils_unit.js +0 -2
  357. package/test/util/periods_unit.js +14 -7
  358. package/test/util/pssh_unit.js +0 -5
  359. package/test/util/state_history_unit.js +0 -2
  360. package/test/util/stream_utils_unit.js +26 -15
  361. package/test/util/string_utils_unit.js +0 -6
  362. package/test/util/text_parser_unit.js +0 -2
  363. package/test/util/xml_utils_unit.js +0 -4
  364. package/ui/controls.js +65 -40
  365. package/ui/fullscreen_button.js +26 -6
  366. package/ui/less/ad_controls.less +6 -6
  367. package/ui/less/buttons.less +6 -6
  368. package/ui/less/containers.less +10 -12
  369. package/ui/less/overflow_menu.less +4 -4
  370. package/ui/less/range_elements.less +7 -2
  371. package/ui/less/tooltip.less +4 -4
  372. package/ui/locales/en.json +1 -0
  373. package/ui/locales/sjn-translations.yaml +257 -0
  374. package/ui/locales/sjn.json +42 -0
  375. package/ui/locales/source.json +5 -0
  376. package/ui/resolution_selection.js +31 -33
  377. package/ui/seek_bar.js +2 -1
  378. package/ui/ui.js +0 -17
  379. package/.github/workflows/build_and_test.yaml +0 -73
  380. package/.github/workflows/release.yaml +0 -53
  381. package/docs/tutorials/upgrade-v2-5.md +0 -441
  382. package/docs/tutorials/upgrade-v3.md +0 -38
  383. package/externs/svgelement.js +0 -18
  384. package/externs/webcrypto.js +0 -18
  385. package/lib/polyfill/mathround.js +0 -49
  386. package/lib/polyfill/patchedmediakeys_apple.js +0 -744
  387. package/lib/polyfill/patchedmediakeys_ms.js +0 -698
  388. package/lib/util/mutex.js +0 -52
  389. package/test/util/functional_unit.js +0 -82
@@ -26,7 +26,7 @@
26
26
  *
27
27
  * Based on tips from https://stackoverflow.com/a/12925343 */
28
28
  box-sizing: border-box;
29
- padding: @play-button-size-percentage / 2;
29
+ padding: calc(@play-button-size-percentage / 2);
30
30
  width: 0;
31
31
  height: 0;
32
32
 
@@ -38,7 +38,7 @@
38
38
  border-radius: 50%;
39
39
 
40
40
  /* A small drop shadow below the button. */
41
- box-shadow: rgba(0, 0, 0, 0.1) 0 0 20px 0;
41
+ box-shadow: rgba(0 0 0 / 10%) 0 0 20px 0;
42
42
 
43
43
  /* No border. */
44
44
  border: none;
@@ -51,7 +51,7 @@
51
51
  background-position: center center;
52
52
 
53
53
  /* A background color behind the play arrow. */
54
- background-color: rgba(255, 255, 255, 0.9);
54
+ background-color: rgba(255 255 255 / 90%);
55
55
 
56
56
  .show-when-controls-shown();
57
57
 
@@ -60,11 +60,11 @@
60
60
  * deployed separately from the compiled CSS.
61
61
  * Note that these URIs should relative to ui/controls.less, not this file. */
62
62
  &[icon="play"] {
63
- background-image: data-uri('images/play_arrow.svg');
63
+ background-image: data-uri("images/play_arrow.svg");
64
64
  }
65
65
 
66
66
  &[icon="pause"] {
67
- background-image: data-uri('images/pause.svg');
67
+ background-image: data-uri("images/pause.svg");
68
68
  }
69
69
  }
70
70
 
@@ -74,7 +74,7 @@
74
74
  */
75
75
  .shaka-current-time {
76
76
  font-size: 14px;
77
- color: rgb(255, 255, 255);
77
+ color: white;
78
78
  cursor: pointer;
79
79
 
80
80
  &[disabled] {
@@ -6,8 +6,6 @@
6
6
 
7
7
  /* All of the top-level containers into which various visible features go. */
8
8
 
9
- @transparent: rgba(0, 0, 0, 0);
10
-
11
9
  /* A container for the entire video + controls combo. This is the auto-setup
12
10
  * div which we populate. */
13
11
  .shaka-video-container {
@@ -19,13 +17,13 @@
19
17
 
20
18
  /* Set a special font for material design icons. */
21
19
  .material-icons-round {
22
- font-family: 'Material Icons Round';
20
+ font-family: "Material Icons Round";
23
21
  font-size: 24px;
24
22
  }
25
23
 
26
24
  /* Set the fonts for all other content. */
27
25
  * {
28
- font-family: Roboto-Regular, Roboto, sans-serif;
26
+ font-family: Roboto-Regular, Roboto, sans-serif, TengwarTelcontar;
29
27
  }
30
28
  }
31
29
 
@@ -202,7 +200,7 @@
202
200
  min-width: 300px;
203
201
 
204
202
  color: white;
205
- background-color: rgba(35, 35, 35, 0.9);
203
+ background-color: rgba(35 35 35 / 90%);
206
204
 
207
205
  font-size: 14px;
208
206
 
@@ -223,12 +221,12 @@
223
221
  }
224
222
 
225
223
  span {
226
- color: rgb(150, 150, 150);
224
+ color: rgb(150 150 150);
227
225
  }
228
226
  }
229
227
 
230
228
  .shaka-context-menu {
231
- background-color: rgba(35, 35, 35, 0.9);
229
+ background-color: rgba(35 35 35 / 90%);
232
230
 
233
231
  border-radius: 2px;
234
232
 
@@ -248,7 +246,7 @@
248
246
  cursor: pointer;
249
247
 
250
248
  &:hover {
251
- background-color: rgba(50, 50, 50, 0.9);
249
+ background-color: rgba(50 50 50 / 90%);
252
250
  }
253
251
  }
254
252
 
@@ -277,7 +275,7 @@
277
275
  .show-when-controls-shown();
278
276
 
279
277
  /* A black gradient at the bottom, behind the controls, but only so high. */
280
- background: linear-gradient(to top, rgba(0, 0, 0, 1) 0, @transparent 15%);
278
+ background: linear-gradient(to top, black 0, transparent 15%);
281
279
  }
282
280
 
283
281
  .shaka-text-container {
@@ -305,7 +303,7 @@
305
303
  /* These are defaults which are overridden by JS or cue styles. */
306
304
  font-size: 20px;
307
305
  line-height: 1.4; // relative to font size.
308
- color: rgb(255, 255, 255);
306
+ color: white;
309
307
 
310
308
  span.shaka-text-wrapper {
311
309
  display: inline;
@@ -348,11 +346,11 @@
348
346
 
349
347
  margin: 0;
350
348
  box-sizing: border-box;
351
- padding: @spinner-size-percentage / 2;
349
+ padding: calc(@spinner-size-percentage / 2);
352
350
  width: 0;
353
351
  height: 0;
354
352
 
355
353
  /* Add a bit of a white shadow to keep our black spinner visible
356
354
  on a black background. */
357
- filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.5));
355
+ filter: drop-shadow(0 0 2px rgba(255 255 255 / 50%));
358
356
  }
@@ -18,7 +18,7 @@
18
18
 
19
19
  /* Styles for the menu itself. */
20
20
  background: white;
21
- box-shadow: 0 1px 9px 0 rgba(0, 0, 0, 0.4);
21
+ box-shadow: 0 1px 9px 0 rgba(0 0 0 / 40%);
22
22
  border-radius: 2px;
23
23
  max-height: 250px;
24
24
  min-width: 180px;
@@ -52,7 +52,7 @@
52
52
 
53
53
  /* When hovered, the button's background is highlighted. */
54
54
  &:hover {
55
- background: rgb(224, 224, 224);
55
+ background: rgb(224 224 224);
56
56
  }
57
57
 
58
58
  /* The button is clickable, showing cursor pointer */
@@ -64,7 +64,7 @@
64
64
  }
65
65
 
66
66
  .shaka-keyboard-navigation &:focus {
67
- background: rgb(224, 224, 224);
67
+ background: rgb(224 224 224);
68
68
  }
69
69
  }
70
70
 
@@ -109,7 +109,7 @@
109
109
  * language, the currently-selected resolution, etc. */
110
110
  .shaka-current-selection-span {
111
111
  /* This is dimmer than the other span, which is the name of the submenu. */
112
- color: rgba(0, 0, 0, 0.54);
112
+ color: rgba(0 0 0 / 54%);
113
113
  }
114
114
 
115
115
  /* The submenus have somewhat different margins inside them. */
@@ -39,7 +39,7 @@
39
39
  .overlay-parent();
40
40
 
41
41
  /* Vertical margins to occupy the same space as the thumb. */
42
- margin: (@thumb-size - @track-height)/2 6px;
42
+ margin: calc((@thumb-size - @track-height) / 2) 6px;
43
43
 
44
44
  /* Smaller height to contain the background for the virtual track. */
45
45
  height: @track-height;
@@ -57,6 +57,11 @@
57
57
  /* The track should fill the range element. */
58
58
  width: 100%;
59
59
 
60
+ /* Since range elements are special input elements, they must reflect user
61
+ * interaction, so when the user hovers over the range element, the cursor
62
+ * must be a pointer. */
63
+ cursor: pointer;
64
+
60
65
  /* The track should be tall enough to contain the thumb without clipping it.
61
66
  * It is very tricky to make the thumb show outside the track on IE 11, and
62
67
  * it is incompatible with our background gradients. */
@@ -104,7 +109,7 @@
104
109
 
105
110
  /* Position the top of the range element so that it is centered on the
106
111
  * container. Note that the container is actually smaller than the thumb. */
107
- top: (@track-height - @thumb-size) / 2;
112
+ top: calc((@track-height - @thumb-size) / 2);
108
113
 
109
114
  /* Make sure clicking at the very top of the bar still takes effect and is not
110
115
  * confused with clicking the video to play/pause it. */
@@ -48,22 +48,22 @@
48
48
 
49
49
  /* Override .material-icons-round text styling */
50
50
  font-family: Roboto-Regular, Roboto, sans-serif;
51
- line-height: @material-icons-width / 2;
51
+ line-height: calc(@material-icons-width / 2);
52
52
  white-space: nowrap;
53
53
  font-size: 13px;
54
54
 
55
55
  /* Styling */
56
- background: rgba(35, 35, 35, 0.9);
56
+ background: rgba(35 35 35 / 90%);
57
57
  color: white;
58
58
  border-radius: 3px;
59
59
  padding: 5px 10px;
60
60
 
61
61
  /* Positioning */
62
62
  position: absolute;
63
- bottom: @material-icons-width + 5px;
63
+ bottom: calc(@material-icons-width + 5px);
64
64
 
65
65
  /* Left attribute is set to half of the width of the parent button */
66
- left: @material-icons-width / 2;
66
+ left: calc(@material-icons-width / 2);
67
67
 
68
68
  /* The tooltip is also translated 50% to appear centered */
69
69
  .translateX(-0.5);
@@ -27,6 +27,7 @@
27
27
  "PICTURE_IN_PICTURE": "Picture-in-Picture",
28
28
  "PLAY": "Play",
29
29
  "PLAYBACK_RATE": "Playback speed",
30
+ "QUALITY": "Quality",
30
31
  "REPLAY": "Replay",
31
32
  "RESOLUTION": "Resolution",
32
33
  "REWIND": "Rewind",
@@ -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
+ }
@@ -113,6 +113,11 @@
113
113
  "message": "Playback speed",
114
114
  "description": "Label for a button used to navigate to a submenu to choose the playback speed in the video player."
115
115
  },
116
+ "QUALITY": {
117
+ "description": "Label for a button used to open a submenu to choose audio quality in the video player.",
118
+ "meaning": "Audio quality",
119
+ "message": "Quality"
120
+ },
116
121
  "REPLAY": {
117
122
  "description": "Label for a button used to replay the video in a video player.",
118
123
  "message": "Replay"
@@ -61,9 +61,6 @@ shaka.ui.ResolutionSelection = class extends shaka.ui.SettingsMenu {
61
61
  });
62
62
 
63
63
  this.updateResolutionSelection_();
64
-
65
- // Set up all the strings in the user's preferred language.
66
- this.updateLocalizedStrings_();
67
64
  }
68
65
 
69
66
 
@@ -72,27 +69,6 @@ shaka.ui.ResolutionSelection = class extends shaka.ui.SettingsMenu {
72
69
  /** @type {!Array.<shaka.extern.Track>} */
73
70
  let tracks = this.player.getVariantTracks();
74
71
 
75
- // Hide resolution menu and button for audio-only content and src= content
76
- // without resolution information.
77
- // TODO: for audio-only content, this should be a bitrate selection menu
78
- // instead.
79
- if (tracks.length && !tracks[0].height) {
80
- shaka.ui.Utils.setDisplay(this.menu, false);
81
- shaka.ui.Utils.setDisplay(this.button, false);
82
- return;
83
- }
84
- // Otherwise, restore it.
85
- shaka.ui.Utils.setDisplay(this.button, true);
86
-
87
- tracks.sort((t1, t2) => {
88
- // We have already screened for audio-only content, but the compiler
89
- // doesn't know that.
90
- goog.asserts.assert(t1.height != null, 'Null height');
91
- goog.asserts.assert(t2.height != null, 'Null height');
92
-
93
- return t2.height - t1.height;
94
- });
95
-
96
72
  // If there is a selected variant track, then we filter out any tracks in
97
73
  // a different language. Then we use those remaining tracks to display the
98
74
  // available resolutions.
@@ -104,14 +80,31 @@ shaka.ui.ResolutionSelection = class extends shaka.ui.SettingsMenu {
104
80
  track.channelsCount == selectedTrack.channelsCount);
105
81
  }
106
82
 
107
- // Remove duplicate entries with the same height. This can happen if
108
- // we have multiple resolutions of audio. Pick an arbitrary one.
83
+ // Remove duplicate entries with the same resolution or quality depending
84
+ // on content type. Pick an arbitrary one.
109
85
  tracks = tracks.filter((track, idx) => {
110
- // Keep the first one with the same height.
111
- const otherIdx = tracks.findIndex((t) => t.height == track.height);
86
+ // Keep the first one with the same height or bandwidth.
87
+ const otherIdx = this.player.isAudioOnly() ?
88
+ tracks.findIndex((t) => t.bandwidth == track.bandwidth) :
89
+ tracks.findIndex((t) => t.height == track.height);
112
90
  return otherIdx == idx;
113
91
  });
114
92
 
93
+ // Sort the tracks by height or bandwith depending on content type.
94
+ if (this.player.isAudioOnly()) {
95
+ tracks.sort((t1, t2) => {
96
+ goog.asserts.assert(t1.bandwidth != null, 'Null bandwidth');
97
+ goog.asserts.assert(t2.bandwidth != null, 'Null bandwidth');
98
+ return t2.bandwidth - t1.bandwidth;
99
+ });
100
+ } else {
101
+ tracks.sort((t1, t2) => {
102
+ goog.asserts.assert(t1.height != null, 'Null height');
103
+ goog.asserts.assert(t2.height != null, 'Null height');
104
+ return t2.height - t1.height;
105
+ });
106
+ }
107
+
115
108
  // Remove old shaka-resolutions
116
109
  // 1. Save the back to menu button
117
110
  const backButton = shaka.ui.Utils.getFirstDescendantWithClassName(
@@ -133,7 +126,8 @@ shaka.ui.ResolutionSelection = class extends shaka.ui.SettingsMenu {
133
126
  () => this.onTrackSelected_(track));
134
127
 
135
128
  const span = shaka.util.Dom.createHTMLElement('span');
136
- span.textContent = track.height + 'p';
129
+ span.textContent = this.player.isAudioOnly() ?
130
+ Math.round(track.bandwidth / 1000) + ' kbits/s' : track.height + 'p';
137
131
  button.appendChild(span);
138
132
 
139
133
  if (!abrEnabled && track == selectedTrack) {
@@ -179,6 +173,8 @@ shaka.ui.ResolutionSelection = class extends shaka.ui.SettingsMenu {
179
173
  shaka.ui.Utils.focusOnTheChosenItem(this.menu);
180
174
  this.controls.dispatchEvent(
181
175
  new shaka.util.FakeEvent('resolutionselectionupdated'));
176
+
177
+ this.updateLocalizedStrings_();
182
178
  }
183
179
 
184
180
 
@@ -200,13 +196,15 @@ shaka.ui.ResolutionSelection = class extends shaka.ui.SettingsMenu {
200
196
  */
201
197
  updateLocalizedStrings_() {
202
198
  const LocIds = shaka.ui.Locales.Ids;
199
+ const locId = this.player.isAudioOnly() ?
200
+ LocIds.QUALITY : LocIds.RESOLUTION;
203
201
 
204
- this.button.ariaLabel = this.localization.resolve(LocIds.RESOLUTION);
205
- this.backButton.ariaLabel = this.localization.resolve(LocIds.RESOLUTION);
202
+ this.button.ariaLabel = this.localization.resolve(locId);
203
+ this.backButton.ariaLabel = this.localization.resolve(locId);
206
204
  this.backSpan.textContent =
207
- this.localization.resolve(LocIds.RESOLUTION);
205
+ this.localization.resolve(locId);
208
206
  this.nameSpan.textContent =
209
- this.localization.resolve(LocIds.RESOLUTION);
207
+ this.localization.resolve(locId);
210
208
  this.abrOnSpan_.textContent =
211
209
  this.localization.resolve(LocIds.AUTO_QUALITY);
212
210
 
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
  *