shaka-player 3.3.2 → 3.3.3

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 (328) 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 +145 -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 +1691 -1675
  14. package/CONTRIBUTING.md +2 -2
  15. package/CONTRIBUTORS +2 -0
  16. package/README.md +7 -7
  17. package/app-engine/README.md +9 -0
  18. package/app-engine/demo-version-index/README.md +14 -0
  19. package/app-engine/demo-version-index/app.yaml +2 -0
  20. package/app-engine/demo-version-index/main.py +162 -0
  21. package/app-engine/demo-version-index/requirements.txt +6 -0
  22. package/app-engine/demo-version-index/templates/index.html +114 -0
  23. package/app-engine/shaka-player-demo/README.md +18 -0
  24. package/app-engine/shaka-player-demo/app.yaml +61 -0
  25. package/app-engine/shaka-player-demo/main.py +95 -0
  26. package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
  27. package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
  28. package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
  29. package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
  30. package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
  31. package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
  32. package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
  33. package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
  34. package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
  35. package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
  36. package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
  37. package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
  38. package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
  39. package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
  40. package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
  41. package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
  42. package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
  43. package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
  44. package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
  45. package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
  46. package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
  47. package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
  48. package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
  49. package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
  50. package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
  51. package/app-engine/shaka-player-demo/posters/standard.png +0 -0
  52. package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
  53. package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
  54. package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
  55. package/app-engine/shaka-player-demo/posters.py +110 -0
  56. package/app-engine/shaka-player-demo/requirements.txt +5 -0
  57. package/app-engine/shaka-player-demo/time.txt +1 -0
  58. package/build/README.md +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/shaka-lab.yaml +163 -0
  65. package/build/shakaBuildHelpers.py +4 -29
  66. package/build/test.py +87 -28
  67. package/build/types/polyfill +1 -0
  68. package/build/wrapper.template.js +2 -2
  69. package/demo/TengwarTelcontar.woff2 +0 -0
  70. package/demo/asset_card.js +1 -2
  71. package/demo/cast_receiver/index.html +1 -1
  72. package/demo/cast_receiver/receiver_app.css +14 -14
  73. package/demo/common/assets.js +2 -0
  74. package/demo/config.js +0 -1
  75. package/demo/custom.js +0 -1
  76. package/demo/customWarning.txt +2 -2
  77. package/demo/demo.less +29 -18
  78. package/demo/demo_uncompiled.js +1 -13
  79. package/demo/index.html +1 -1
  80. package/demo/main.js +3 -3
  81. package/dist/controls.css +3 -3
  82. package/dist/controls.css.map +1 -1
  83. package/dist/demo.compiled.debug.js +191 -194
  84. package/dist/demo.compiled.debug.map +4 -4
  85. package/dist/demo.compiled.js +191 -194
  86. package/dist/demo.compiled.map +4 -4
  87. package/dist/demo.css +1 -1
  88. package/dist/demo.css.map +1 -1
  89. package/dist/deps.js +233 -226
  90. package/dist/locales.js +31 -31
  91. package/dist/receiver.compiled.debug.js +43 -45
  92. package/dist/receiver.compiled.debug.map +4 -4
  93. package/dist/receiver.compiled.js +43 -45
  94. package/dist/receiver.compiled.map +4 -4
  95. package/dist/shaka-player.compiled.d.ts +246 -236
  96. package/dist/shaka-player.compiled.debug.d.ts +246 -236
  97. package/dist/shaka-player.compiled.debug.externs.js +14 -3
  98. package/dist/shaka-player.compiled.debug.js +214 -222
  99. package/dist/shaka-player.compiled.debug.map +4 -4
  100. package/dist/shaka-player.compiled.externs.js +14 -3
  101. package/dist/shaka-player.compiled.js +845 -851
  102. package/dist/shaka-player.compiled.map +4 -4
  103. package/dist/shaka-player.ui.d.ts +290 -280
  104. package/dist/shaka-player.ui.debug.d.ts +290 -280
  105. package/dist/shaka-player.ui.debug.externs.js +14 -3
  106. package/dist/shaka-player.ui.debug.js +295 -303
  107. package/dist/shaka-player.ui.debug.map +4 -4
  108. package/dist/shaka-player.ui.externs.js +14 -3
  109. package/dist/shaka-player.ui.js +1000 -1006
  110. package/dist/shaka-player.ui.map +4 -4
  111. package/docs/design/REDESIGN.md +33 -33
  112. package/docs/design/bg-fetch.md +2 -2
  113. package/docs/design/codec_preferences.md +1 -1
  114. package/docs/design/dash-audio-channels.md +3 -3
  115. package/docs/design/dash-manifests.md +1 -1
  116. package/docs/design/gap-jumping.md +3 -3
  117. package/docs/design/preload.md +2 -2
  118. package/docs/tutorials/faq.md +8 -8
  119. package/docs/tutorials/index.json +1 -0
  120. package/docs/tutorials/plugins.md +3 -3
  121. package/docs/tutorials/selenium-grid-config.md +122 -0
  122. package/docs/tutorials/welcome.md +10 -2
  123. package/externs/cmcd.js +1 -1
  124. package/karma.conf.js +137 -30
  125. package/lib/abr/simple_abr_manager.js +12 -6
  126. package/lib/cast/cast_proxy.js +3 -4
  127. package/lib/cea/cea608_data_channel.js +2 -2
  128. package/lib/cea/cea708_service.js +5 -4
  129. package/lib/cea/mp4_cea_parser.js +11 -5
  130. package/lib/cea/sei_processor.js +6 -3
  131. package/lib/dash/dash_parser.js +9 -11
  132. package/lib/dash/mpd_utils.js +4 -5
  133. package/lib/dash/segment_list.js +1 -2
  134. package/lib/dash/segment_template.js +3 -3
  135. package/lib/hls/hls_parser.js +11 -9
  136. package/lib/hls/manifest_text_parser.js +3 -3
  137. package/lib/media/adaptation_set.js +1 -2
  138. package/lib/media/content_workarounds.js +2 -2
  139. package/lib/media/drm_engine.js +3 -2
  140. package/lib/media/media_source_engine.js +3 -2
  141. package/lib/media/mp4_segment_index_parser.js +1 -4
  142. package/lib/media/playhead.js +2 -2
  143. package/lib/media/presentation_timeline.js +18 -8
  144. package/lib/media/streaming_engine.js +6 -6
  145. package/lib/media/time_ranges_utils.js +1 -3
  146. package/lib/media/video_wrapper.js +1 -1
  147. package/lib/net/networking_engine.js +1 -1
  148. package/lib/offline/storage.js +4 -4
  149. package/lib/player.js +34 -16
  150. package/lib/polyfill/all.js +2 -3
  151. package/lib/polyfill/encryption_scheme.js +1 -1
  152. package/lib/polyfill/media_capabilities.js +3 -3
  153. package/lib/polyfill/mediasource.js +1 -1
  154. package/lib/polyfill/symbol.js +46 -0
  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/iterables.js +0 -46
  163. package/lib/util/mp4_box_parsers.js +1 -4
  164. package/lib/util/mp4_parser.js +5 -7
  165. package/lib/util/periods.js +10 -11
  166. package/lib/util/platform.js +3 -3
  167. package/lib/util/pssh.js +1 -4
  168. package/lib/util/stream_utils.js +4 -3
  169. package/lib/util/string_utils.js +3 -5
  170. package/lib/util/uint8array_utils.js +3 -5
  171. package/lib/util/xml_utils.js +15 -7
  172. package/package.json +61 -36
  173. package/roadmap.md +17 -17
  174. package/shaka-player.uncompiled.js +1 -0
  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 +2 -15
  191. package/test/dash/dash_parser_manifest_unit.js +2 -16
  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 +2 -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/quality_observer_unit.js +0 -4
  216. package/test/media/region_observer_unit.js +1 -6
  217. package/test/media/region_timeline_unit.js +0 -3
  218. package/test/media/segment_index_unit.js +0 -6
  219. package/test/media/segment_reference_unit.js +0 -3
  220. package/test/media/stall_detector_unit.js +0 -5
  221. package/test/media/streaming_engine_integration.js +9 -36
  222. package/test/media/streaming_engine_unit.js +11 -35
  223. package/test/media/time_ranges_utils_unit.js +0 -2
  224. package/test/media/transmuxer_integration.js +0 -6
  225. package/test/media/webm_segment_index_parser_unit.js +0 -4
  226. package/test/net/data_uri_plugin_unit.js +0 -7
  227. package/test/net/http_plugin_unit.js +0 -9
  228. package/test/net/networking_engine_unit.js +0 -11
  229. package/test/offline/download_progress_estimator_unit.js +0 -2
  230. package/test/offline/indexeddb_storage_unit.js +0 -6
  231. package/test/offline/manifest_convert_unit.js +0 -8
  232. package/test/offline/offline_integration.js +1 -10
  233. package/test/offline/offline_manifest_parser_unit.js +0 -6
  234. package/test/offline/offline_scheme_unit.js +0 -8
  235. package/test/offline/offline_uri_unit.js +0 -2
  236. package/test/offline/storage_compatibility_unit.js +1 -14
  237. package/test/offline/storage_integration.js +1 -27
  238. package/test/player_external.js +2 -10
  239. package/test/player_integration.js +22 -28
  240. package/test/player_load_graph_integration.js +1 -6
  241. package/test/player_src_equals_external.js +3 -9
  242. package/test/player_src_equals_integration.js +0 -7
  243. package/test/player_unit.js +52 -37
  244. package/test/routing/walker_unit.js +0 -8
  245. package/test/test/assets/large_file.mpd +1 -1
  246. package/test/test/boot.js +75 -22
  247. package/test/test/externs/jasmine.js +2 -2
  248. package/test/test/externs/karma.js +4 -0
  249. package/test/test/namespace.js +10 -0
  250. package/test/test/util/canned_idb.js +0 -8
  251. package/test/test/util/cea_utils.js +0 -6
  252. package/test/test/util/dash_parser_util.js +0 -13
  253. package/test/test/util/fake_ad.js +0 -3
  254. package/test/test/util/fake_ad_manager.js +0 -9
  255. package/test/test/util/fake_demo_main.js +0 -5
  256. package/test/test/util/fake_drm_engine.js +0 -6
  257. package/test/test/util/fake_media_source_engine.js +0 -7
  258. package/test/test/util/fake_networking_engine.js +0 -5
  259. package/test/test/util/fake_text_displayer.js +0 -5
  260. package/test/test/util/indexeddb_utils.js +1 -10
  261. package/test/test/util/jasmine_fetch.js +0 -1
  262. package/test/test/util/loader.js +0 -18
  263. package/test/test/util/manifest_generator.js +9 -14
  264. package/test/test/util/manifest_parser_util.js +0 -6
  265. package/test/test/util/offline_utils.js +0 -5
  266. package/test/test/util/simple_fakes.js +9 -26
  267. package/test/test/util/stream_generator.js +0 -14
  268. package/test/test/util/streaming_engine_util.js +0 -15
  269. package/test/test/util/test_scheme.js +1 -19
  270. package/test/test/util/ttml_utils.js +0 -2
  271. package/test/test/util/ui_utils.js +0 -9
  272. package/test/test/util/util.js +5 -19
  273. package/test/test/util/waiter.js +84 -43
  274. package/test/text/cue_integration.js +0 -4
  275. package/test/text/lrc_text_parser_unit.js +0 -4
  276. package/test/text/mp4_ttml_parser_unit.js +0 -6
  277. package/test/text/mp4_vtt_parser_unit.js +1 -7
  278. package/test/text/sbv_text_parser_unit.js +0 -4
  279. package/test/text/simple_text_displayer_unit.js +1 -8
  280. package/test/text/srt_text_parser_unit.js +0 -4
  281. package/test/text/ssa_text_parser_unit.js +0 -5
  282. package/test/text/text_engine_unit.js +2 -7
  283. package/test/text/text_track_integration.js +0 -2
  284. package/test/text/ttml_text_parser_unit.js +2 -11
  285. package/test/text/ui_text_displayer_unit.js +44 -41
  286. package/test/text/vtt_text_parser_unit.js +0 -9
  287. package/test/text/web_vtt_generator_unit.js +0 -3
  288. package/test/ui/ad_ui_unit.js +0 -11
  289. package/test/ui/localization_unit.js +0 -3
  290. package/test/ui/text_displayer_layout_unit.js +1 -12
  291. package/test/ui/ui_customization_unit.js +0 -6
  292. package/test/ui/ui_integration.js +0 -16
  293. package/test/ui/ui_unit.js +1 -17
  294. package/test/util/abortable_operation_unit.js +4 -9
  295. package/test/util/array_utils_unit.js +0 -2
  296. package/test/util/buffer_utils_unit.js +0 -2
  297. package/test/util/cmcd_manager_unit.js +0 -3
  298. package/test/util/data_view_reader_unit.js +0 -4
  299. package/test/util/ebml_parser_unit.js +0 -4
  300. package/test/util/event_manager_unit.js +0 -3
  301. package/test/util/fake_event_target_unit.js +0 -5
  302. package/test/util/functional_unit.js +1 -1
  303. package/test/util/iterables_unit.js +0 -64
  304. package/test/util/language_utils_unit.js +0 -3
  305. package/test/util/manifest_parser_utils_unit.js +0 -2
  306. package/test/util/mp4_box_parsers_unit.js +0 -5
  307. package/test/util/mp4_parser_unit.js +0 -4
  308. package/test/util/multi_map_unit.js +0 -3
  309. package/test/util/object_utils_unit.js +0 -2
  310. package/test/util/periods_unit.js +14 -7
  311. package/test/util/pssh_unit.js +0 -5
  312. package/test/util/state_history_unit.js +0 -2
  313. package/test/util/stream_utils_unit.js +3 -8
  314. package/test/util/string_utils_unit.js +0 -6
  315. package/test/util/text_parser_unit.js +0 -2
  316. package/test/util/xml_utils_unit.js +0 -4
  317. package/ui/less/ad_controls.less +4 -4
  318. package/ui/less/buttons.less +5 -5
  319. package/ui/less/containers.less +9 -11
  320. package/ui/less/overflow_menu.less +4 -4
  321. package/ui/less/range_elements.less +5 -0
  322. package/ui/less/tooltip.less +1 -1
  323. package/ui/locales/sjn-translations.yaml +257 -0
  324. package/ui/locales/sjn.json +42 -0
  325. package/.github/workflows/build_and_test.yaml +0 -73
  326. package/.github/workflows/release.yaml +0 -53
  327. package/externs/svgelement.js +0 -18
  328. package/externs/webcrypto.js +0 -18
@@ -13,7 +13,6 @@ goog.require('shaka.hls.Segment');
13
13
  goog.require('shaka.hls.Tag');
14
14
  goog.require('shaka.hls.Utils');
15
15
  goog.require('shaka.util.Error');
16
- goog.require('shaka.util.Iterables');
17
16
  goog.require('shaka.util.StringUtils');
18
17
  goog.require('shaka.util.TextParser');
19
18
 
@@ -82,8 +81,9 @@ shaka.hls.ManifestTextParser = class {
82
81
  const tags = [];
83
82
  // Initialize to "true" to skip the first element.
84
83
  skip = true;
85
- const enumerate = (it) => shaka.util.Iterables.enumerate(it);
86
- for (const {i, item: line, next} of enumerate(lines)) {
84
+ for (let i = 0; i < lines.length; i++) {
85
+ const line = lines[i];
86
+ const next = lines[i + 1];
87
87
  // Skip comments
88
88
  if (shaka.hls.Utils.isComment(line) || skip) {
89
89
  skip = false;
@@ -8,7 +8,6 @@ goog.provide('shaka.media.AdaptationSet');
8
8
 
9
9
  goog.require('goog.asserts');
10
10
  goog.require('shaka.log');
11
- goog.require('shaka.util.Iterables');
12
11
  goog.require('shaka.util.MimeUtils');
13
12
 
14
13
 
@@ -215,7 +214,7 @@ shaka.media.AdaptationSet = class {
215
214
  codecsA.sort();
216
215
  codecsB.sort();
217
216
 
218
- for (const i of shaka.util.Iterables.range(codecsA.length)) {
217
+ for (let i = 0; i < codecsA.length; i++) {
219
218
  if (codecsA[i] != codecsB[i]) {
220
219
  return false;
221
220
  }
@@ -31,7 +31,7 @@ shaka.media.ContentWorkarounds = class {
31
31
  *
32
32
  * @param {!BufferSource} initSegmentBuffer
33
33
  * @return {!Uint8Array}
34
- * @see https://github.com/google/shaka-player/issues/2759
34
+ * @see https://github.com/shaka-project/shaka-player/issues/2759
35
35
  */
36
36
  static fakeEncryption(initSegmentBuffer) {
37
37
  const ContentWorkarounds = shaka.media.ContentWorkarounds;
@@ -283,7 +283,7 @@ shaka.media.ContentWorkarounds = class {
283
283
  *
284
284
  * @const {!shaka.util.Lazy.<!Uint8Array>}
285
285
  * @private
286
- * @see https://github.com/google/shaka-player/issues/2759
286
+ * @see https://github.com/shaka-project/shaka-player/issues/2759
287
287
  */
288
288
  shaka.media.ContentWorkarounds.CANNED_SINF_BOX_ =
289
289
  new shaka.util.Lazy(() => new Uint8Array([
@@ -655,7 +655,7 @@ shaka.media.DrmEngine = class {
655
655
  // first MIME type even if the others are supported. To work around this,
656
656
  // we say that Edge supports everything.
657
657
  //
658
- // See https://github.com/google/shaka-player/issues/1495 for details.
658
+ // See https://github.com/shaka-project/shaka-player/issues/1495 for details.
659
659
  if (shaka.util.Platform.isLegacyEdge()) {
660
660
  return true;
661
661
  }
@@ -667,7 +667,8 @@ shaka.media.DrmEngine = class {
667
667
  // Some Tizen devices seem to misreport AC-3 support. This works around
668
668
  // the issue, by falling back to EC-3, which seems to be supported on the
669
669
  // same devices and be correctly reported in all cases we have observed.
670
- // See https://github.com/google/shaka-player/issues/2989 for details.
670
+ // See https://github.com/shaka-project/shaka-player/issues/2989 for
671
+ // details.
671
672
  const fallback = contentType.replace('ac-3', 'ec-3');
672
673
  return this.supportedTypes_.has(contentType) ||
673
674
  this.supportedTypes_.has(fallback);
@@ -830,7 +830,8 @@ shaka.media.MediaSourceEngine = class {
830
830
  * @private
831
831
  */
832
832
  setTimestampOffset_(contentType, timestampOffset) {
833
- // Work around for https://github.com/google/shaka-player/issues/1281:
833
+ // Work around for
834
+ // https://github.com/shaka-project/shaka-player/issues/1281:
834
835
  // TODO(https://bit.ly/2ttKiBU): follow up when this is fixed in Edge
835
836
  if (timestampOffset < 0) {
836
837
  // Try to prevent rounding errors in Edge from removing the first
@@ -1100,7 +1101,7 @@ shaka.media.MediaSourceEngine = class {
1100
1101
  // then insert fake encryption metadata for init segments that lack it.
1101
1102
  // The MP4 requirement is because we can currently only do this
1102
1103
  // transformation on MP4 containers.
1103
- // See: https://github.com/google/shaka-player/issues/2759
1104
+ // See: https://github.com/shaka-project/shaka-player/issues/2759
1104
1105
  if (isInitSegment &&
1105
1106
  encryptionExpected &&
1106
1107
  shaka.util.Platform.requiresEncryptionInfoInAllInitSegments() &&
@@ -11,8 +11,6 @@ goog.require('shaka.log');
11
11
  goog.require('shaka.media.InitSegmentReference');
12
12
  goog.require('shaka.media.SegmentReference');
13
13
  goog.require('shaka.util.Error');
14
- goog.require('shaka.util.Functional');
15
- goog.require('shaka.util.Iterables');
16
14
  goog.require('shaka.util.Mp4Parser');
17
15
 
18
16
 
@@ -123,8 +121,7 @@ shaka.media.Mp4SegmentIndexParser = class {
123
121
  let unscaledStartTime = earliestPresentationTime;
124
122
  let startByte = sidxOffset + box.size + firstOffset;
125
123
 
126
- for (const _ of shaka.util.Iterables.range(referenceCount)) {
127
- shaka.util.Functional.ignored(_);
124
+ for (let i = 0; i < referenceCount; i++) {
128
125
  // |chunk| is 1 bit for |referenceType|, and 31 bits for |referenceSize|.
129
126
  const chunk = box.reader.readUint32();
130
127
  const referenceType = (chunk & 0x80000000) >>> 31;
@@ -256,7 +256,7 @@ shaka.media.MediaSourcePlayhead = class {
256
256
  // We don't buffer when the livestream video is paused and the playhead time
257
257
  // is out of the seek range; thus, we do not clamp the current time when the
258
258
  // video is paused.
259
- // https://github.com/google/shaka-player/issues/1121
259
+ // https://github.com/shaka-project/shaka-player/issues/1121
260
260
  if (this.mediaElement_.readyState > 0 && !this.mediaElement_.paused) {
261
261
  return this.clampTime_(time);
262
262
  }
@@ -362,7 +362,7 @@ shaka.media.MediaSourcePlayhead = class {
362
362
  * presentation duration. Seeking to or starting at duration does not work
363
363
  * consistently across browsers.
364
364
  *
365
- * @see https://github.com/google/shaka-player/issues/979
365
+ * @see https://github.com/shaka-project/shaka-player/issues/979
366
366
  * @param {number} time
367
367
  * @return {number} The adjusted seek time.
368
368
  * @private
@@ -355,14 +355,23 @@ shaka.media.PresentationTimeline = class {
355
355
  * starting after this time should be assumed to be unavailable.
356
356
  *
357
357
  * @return {number} The current segment availability end time, in seconds,
358
- * relative to the start of the presentation. Always returns the
359
- * presentation's duration for video-on-demand.
358
+ * relative to the start of the presentation. For VOD, the availability
359
+ * end time is the content's duration. If the Player's playRangeEnd
360
+ * configuration is used, this can override the duration.
360
361
  * @export
361
362
  */
362
363
  getSegmentAvailabilityEnd() {
363
364
  if (!this.isLive() && !this.isInProgress()) {
364
365
  // It's a static manifest (can also be a dynamic->static conversion)
365
- return this.maxSegmentEndTime_ || this.duration_;
366
+ if (this.maxSegmentEndTime_) {
367
+ // If we know segment times, use the min of that and duration.
368
+ // Note that the playRangeEnd configuration changes this.duration_.
369
+ // See https://github.com/shaka-project/shaka-player/issues/4026
370
+ return Math.min(this.maxSegmentEndTime_, this.duration_);
371
+ } else {
372
+ // If we don't have segment times, use duration.
373
+ return this.duration_;
374
+ }
366
375
  }
367
376
  // Can be either live or "in-progress recording" (live with known duration)
368
377
  return Math.min(this.getLiveEdge_() + this.availabilityTimeOffset_,
@@ -389,10 +398,11 @@ shaka.media.PresentationTimeline = class {
389
398
  // For VOD, the offset and end time are ignored, and we just return the
390
399
  // earliest segment time. All segments are "safe" in VOD. However, we
391
400
  // should round up to the nearest millisecond to avoid issues like
392
- // https://github.com/google/shaka-player/issues/2831, in which we tried to
393
- // seek repeatedly to catch up to the seek range, and never actually
394
- // "arrived" within it. The video's currentTime is not as accurate as the
395
- // JS number representing the earliest segment time for some content.
401
+ // https://github.com/shaka-project/shaka-player/issues/2831, in which we
402
+ // tried to seek repeatedly to catch up to the seek range, and never
403
+ // actually "arrived" within it. The video's currentTime is not as
404
+ // accurate as the JS number representing the earliest segment time for
405
+ // some content.
396
406
  if (this.segmentAvailabilityDuration_ == Infinity) {
397
407
  return Math.ceil(earliestSegmentTime * 1e3) / 1e3;
398
408
  }
@@ -407,7 +417,7 @@ shaka.media.PresentationTimeline = class {
407
417
  // Add the offset to the availability start to ensure that we don't fall
408
418
  // outside the availability window while we buffer; we don't need to add the
409
419
  // offset to earliestSegmentTime since that won't change over time.
410
- // Also see: https://github.com/google/shaka-player/issues/692
420
+ // Also see: https://github.com/shaka-project/shaka-player/issues/692
411
421
  const desiredStart =
412
422
  Math.min(availabilityStart + offset, this.getSeekRangeEnd());
413
423
  return Math.max(earliestSegmentTime, desiredStart);
@@ -674,7 +674,7 @@ shaka.media.StreamingEngine = class {
674
674
 
675
675
  if (mediaState.waitingToClearBuffer) {
676
676
  // May not be performing an update, but an update will still happen.
677
- // See: https://github.com/google/shaka-player/issues/334
677
+ // See: https://github.com/shaka-project/shaka-player/issues/334
678
678
  shaka.log.debug(logPrefix, 'clear: already waiting');
679
679
  return;
680
680
  }
@@ -920,9 +920,9 @@ shaka.media.StreamingEngine = class {
920
920
  // buffering forever at the end.
921
921
  // We should only do this if the duration needs to shrink.
922
922
  // Growing it by less than 1ms can actually cause buffering on
923
- // replay, as in https://github.com/google/shaka-player/issues/979
923
+ // replay, as in https://github.com/shaka-project/shaka-player/issues/979
924
924
  // On some platforms, this can spuriously be 0, so ignore this case.
925
- // https://github.com/google/shaka-player/issues/1967,
925
+ // https://github.com/shaka-project/shaka-player/issues/1967,
926
926
  const duration = this.playerInterface_.mediaSourceEngine.getDuration();
927
927
  if (duration != 0 &&
928
928
  duration < this.manifest_.presentationTimeline.getDuration()) {
@@ -1718,7 +1718,7 @@ shaka.media.StreamingEngine = class {
1718
1718
  const bufferedBehind = presentationTime - startTime;
1719
1719
 
1720
1720
  const overflow = bufferedBehind - bufferBehind;
1721
- // See: https://github.com/google/shaka-player/issues/2982
1721
+ // See: https://github.com/shaka-project/shaka-player/issues/2982
1722
1722
  if (overflow <= 0.01) {
1723
1723
  shaka.log.v2(logPrefix,
1724
1724
  'buffer behind okay:',
@@ -2079,7 +2079,7 @@ shaka.media.StreamingEngine.MediaState_;
2079
2079
  * of the Period.
2080
2080
  *
2081
2081
  * NOTE: This was increased as part of the solution to
2082
- * https://github.com/google/shaka-player/issues/1281
2082
+ * https://github.com/shaka-project/shaka-player/issues/1281
2083
2083
  *
2084
2084
  * @const {number}
2085
2085
  * @private
@@ -2093,7 +2093,7 @@ shaka.media.StreamingEngine.APPEND_WINDOW_START_FUDGE_ = 0.1;
2093
2093
  * the Period. This rounding error could then create an artificial gap and a
2094
2094
  * stutter when the gap-jumping logic takes over.
2095
2095
  *
2096
- * https://github.com/google/shaka-player/issues/1597
2096
+ * https://github.com/shaka-project/shaka-player/issues/1597
2097
2097
  *
2098
2098
  * @const {number}
2099
2099
  * @private
@@ -6,8 +6,6 @@
6
6
 
7
7
  goog.provide('shaka.media.TimeRangesUtils');
8
8
 
9
- goog.require('shaka.util.Iterables');
10
-
11
9
 
12
10
  /**
13
11
  * @summary A set of utility functions for dealing with TimeRanges objects.
@@ -157,7 +155,7 @@ shaka.media.TimeRangesUtils = class {
157
155
  return [];
158
156
  }
159
157
  const ret = [];
160
- for (const i of shaka.util.Iterables.range(b.length)) {
158
+ for (let i = 0; i < b.length; i++) {
161
159
  ret.push({start: b.start(i), end: b.end(i)});
162
160
  }
163
161
  return ret;
@@ -141,7 +141,7 @@ shaka.media.VideoWrapper = class {
141
141
  // TODO: Need further investigation why it happens. Before and after
142
142
  // setting the current time, video.readyState is 1, video.paused is true,
143
143
  // and video.buffered's TimeRanges length is 0.
144
- // See: https://github.com/google/shaka-player/issues/1298
144
+ // See: https://github.com/shaka-project/shaka-player/issues/1298
145
145
  this.mover_.moveTo(
146
146
  this.video_.currentTime == 0 ?
147
147
  startTime :
@@ -431,7 +431,7 @@ shaka.net.NetworkingEngine = class extends shaka.util.FakeEventTarget {
431
431
  }
432
432
 
433
433
  // Schemes are meant to be case-insensitive.
434
- // See https://github.com/google/shaka-player/issues/2173
434
+ // See https://github.com/shaka-project/shaka-player/issues/2173
435
435
  // and https://tools.ietf.org/html/rfc3986#section-3.1
436
436
  scheme = scheme.toLowerCase();
437
437
 
@@ -804,10 +804,10 @@ shaka.offline.Storage = class {
804
804
  makeManifestDB_(drmEngine, manifest, uri, metadata, config, downloader) {
805
805
  const pendingContent = shaka.offline.StoredContentUtils.fromManifest(
806
806
  uri, manifest, /* size= */ 0, metadata);
807
- // In https://github.com/google/shaka-player/issues/2652, we found that this
808
- // callback would be removed by the compiler if we reference the config in
809
- // the onProgress closure below. Reading it into a local variable first
810
- // seems to work around this apparent compiler bug.
807
+ // In https://github.com/shaka-project/shaka-player/issues/2652, we found
808
+ // that this callback would be removed by the compiler if we reference the
809
+ // config in the onProgress closure below. Reading it into a local
810
+ // variable first seems to work around this apparent compiler bug.
811
811
  const progressCallback = config.offline.progressCallback;
812
812
 
813
813
  const onProgress = (progress, size) => {
package/lib/player.js CHANGED
@@ -2217,6 +2217,14 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
2217
2217
 
2218
2218
  this.playhead_ = new shaka.media.SrcEqualsPlayhead(has.mediaElement);
2219
2219
 
2220
+ // This flag is used below in the language preference setup and
2221
+ // track-management to check if this load was canceled before the necessary
2222
+ // events fired.
2223
+ let unloaded = false;
2224
+ this.cleanupOnUnload_.push(() => {
2225
+ unloaded = true;
2226
+ });
2227
+
2220
2228
  if (has.startTime != null) {
2221
2229
  this.playhead_.setStartTime(has.startTime);
2222
2230
  }
@@ -2244,7 +2252,8 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
2244
2252
 
2245
2253
  // Wait for the 'loadedmetadata' event to measure load() latency, but only
2246
2254
  // if preload is set in a way that would result in this event firing
2247
- // automatically. See https://github.com/google/shaka-player/issues/2483
2255
+ // automatically.
2256
+ // See https://github.com/shaka-project/shaka-player/issues/2483
2248
2257
  if (this.video_.preload != 'none') {
2249
2258
  this.eventManager_.listenOnce(this.video_, 'loadedmetadata', () => {
2250
2259
  const now = Date.now() / 1000;
@@ -2267,6 +2276,12 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
2267
2276
  }
2268
2277
  if (this.video_.textTracks) {
2269
2278
  this.eventManager_.listen(this.video_.textTracks, 'addtrack', (e) => {
2279
+ // If we have moved on to another piece of content while waiting for
2280
+ // the above event, we should not process tracks here.
2281
+ if (unloaded) {
2282
+ return;
2283
+ }
2284
+
2270
2285
  const trackEvent = /** @type {!TrackEvent} */(e);
2271
2286
  if (trackEvent.track) {
2272
2287
  const track = trackEvent.track;
@@ -2326,13 +2341,6 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
2326
2341
  fullyLoaded.resolve();
2327
2342
  });
2328
2343
 
2329
- // This flag is used below in the language preference setup to check if this
2330
- // load was canceled before the necessary events fire.
2331
- let unloaded = false;
2332
- this.cleanupOnUnload_.push(() => {
2333
- unloaded = true;
2334
- });
2335
-
2336
2344
  // We can't switch to preferred languages, though, until the data is loaded.
2337
2345
  shaka.util.MediaReadyState.waitForReadyState(this.video_,
2338
2346
  HTMLMediaElement.HAVE_CURRENT_DATA,
@@ -2487,12 +2495,16 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
2487
2495
  // In Safari the initial assignment does not always work, so we schedule
2488
2496
  // this process to be repeated several times to ensure that it has been put
2489
2497
  // in the correct mode.
2490
- new shaka.util.Timer(() => {
2498
+ const timer = new shaka.util.Timer(() => {
2491
2499
  const textTracks = this.getMetadataTracks_();
2492
2500
  for (const textTrack of textTracks) {
2493
2501
  textTrack.mode = 'hidden';
2494
2502
  }
2495
- }).tickNow().tickAfter(/* seconds= */ 0.5);
2503
+ }).tickNow().tickAfter(0.5);
2504
+
2505
+ this.cleanupOnUnload_.push(() => {
2506
+ timer.stop();
2507
+ });
2496
2508
  }
2497
2509
 
2498
2510
 
@@ -2560,12 +2572,16 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
2560
2572
  // In Safari the initial assignment does not always work, so we schedule
2561
2573
  // this process to be repeated several times to ensure that it has been put
2562
2574
  // in the correct mode.
2563
- new shaka.util.Timer(() => {
2575
+ const timer = new shaka.util.Timer(() => {
2564
2576
  const chaptersTracks = this.getChaptersTracks_();
2565
2577
  for (const chaptersTrack of chaptersTracks) {
2566
2578
  chaptersTrack.mode = 'hidden';
2567
2579
  }
2568
- }).tickNow().tickAfter(/* seconds= */ 0.5);
2580
+ }).tickNow().tickAfter(0.5);
2581
+
2582
+ this.cleanupOnUnload_.push(() => {
2583
+ timer.stop();
2584
+ });
2569
2585
  }
2570
2586
 
2571
2587
  /**
@@ -3704,7 +3720,8 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
3704
3720
  this.streamingEngine_.switchTextStream(stream);
3705
3721
  this.onTextChanged_();
3706
3722
 
3707
- // Workaround for https://github.com/google/shaka-player/issues/1299
3723
+ // Workaround for
3724
+ // https://github.com/shaka-project/shaka-player/issues/1299
3708
3725
  // When track is selected, back-propagate the language to
3709
3726
  // currentTextLanguage_.
3710
3727
  this.currentTextLanguage_ = stream.language;
@@ -3780,7 +3797,8 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
3780
3797
  this.switchVariant_(variant, /* fromAdaptation= */ false, clearBuffer,
3781
3798
  safeMargin);
3782
3799
 
3783
- // Workaround for https://github.com/google/shaka-player/issues/1299
3800
+ // Workaround for
3801
+ // https://github.com/shaka-project/shaka-player/issues/1299
3784
3802
  // When track is selected, back-propagate the language to
3785
3803
  // currentAudioLanguage_.
3786
3804
  this.currentAdaptationSetCriteria_ = new shaka.media.ExampleBasedCriteria(
@@ -5252,7 +5270,7 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
5252
5270
  // If the playback rate changes while seeking, Edge will cache the playback
5253
5271
  // rate and use it after seeking.
5254
5272
  //
5255
- // https://github.com/google/shaka-player/issues/951
5273
+ // https://github.com/shaka-project/shaka-player/issues/951
5256
5274
  if (newRate == 0) {
5257
5275
  return;
5258
5276
  }
@@ -6558,7 +6576,7 @@ shaka.Player.TYPICAL_BUFFERING_THRESHOLD_ = 0.5;
6558
6576
  * @define {string} A version number taken from git at compile time.
6559
6577
  * @export
6560
6578
  */
6561
- shaka.Player.version = 'v3.3.2-uncompiled'; // x-release-please-version
6579
+ shaka.Player.version = 'v3.3.3-uncompiled';
6562
6580
 
6563
6581
  // Initialize the deprecation system using the version string we just set
6564
6582
  // on the player.
@@ -7,7 +7,6 @@
7
7
  goog.provide('shaka.polyfill');
8
8
 
9
9
  goog.require('shaka.log');
10
- goog.require('shaka.util.Iterables');
11
10
 
12
11
 
13
12
  /**
@@ -40,8 +39,8 @@ shaka.polyfill = class {
40
39
  */
41
40
  static register(polyfill, priority) {
42
41
  const newItem = {priority: priority || 0, callback: polyfill};
43
- const enumerate = (it) => shaka.util.Iterables.enumerate(it);
44
- for (const {i, item} of enumerate(shaka.polyfill.polyfills_)) {
42
+ for (let i = 0; i < shaka.polyfill.polyfills_.length; i++) {
43
+ const item = shaka.polyfill.polyfills_[i];
45
44
  if (item.priority < newItem.priority) {
46
45
  shaka.polyfill.polyfills_.splice(i, 0, newItem);
47
46
  return;
@@ -12,7 +12,7 @@ goog.require('shaka.polyfill');
12
12
  * @summary A polyfill to add support for EncryptionScheme queries in EME.
13
13
  * @see https://wicg.github.io/encrypted-media-encryption-scheme/
14
14
  * @see https://github.com/w3c/encrypted-media/pull/457
15
- * @see https://github.com/google/eme-encryption-scheme-polyfill
15
+ * @see https://github.com/shaka-project/eme-encryption-scheme-polyfill
16
16
  * @export
17
17
  */
18
18
  shaka.polyfill.EncryptionScheme = class {
@@ -29,12 +29,12 @@ shaka.polyfill.MediaCapabilities = class {
29
29
  // TODO: re-evaluate MediaCapabilities in the future versions of Chromecast.
30
30
  // Since MediaCapabilities implementation is buggy in Apple browsers, we
31
31
  // should always install polyfill for Apple browsers.
32
- // See: https://github.com/google/shaka-player/issues/3530
32
+ // See: https://github.com/shaka-project/shaka-player/issues/3530
33
33
  // TODO: re-evaluate MediaCapabilities in the future versions of Apple
34
34
  // Browsers.
35
35
  // Since MediaCapabilities implementation is buggy in PS5 browsers, we
36
36
  // should always install polyfill for PS5 browsers.
37
- // See: https://github.com/google/shaka-player/issues/3582
37
+ // See: https://github.com/shaka-project/shaka-player/issues/3582
38
38
  // TODO: re-evaluate MediaCapabilities in the future versions of PS5
39
39
  // Browsers.
40
40
  if (!shaka.util.Platform.isChromecast() &&
@@ -54,7 +54,7 @@ shaka.polyfill.MediaCapabilities = class {
54
54
 
55
55
  // Keep the patched MediaCapabilities object from being garbage-collected in
56
56
  // Safari.
57
- // See https://github.com/google/shaka-player/issues/3696#issuecomment-1009472718
57
+ // See https://github.com/shaka-project/shaka-player/issues/3696#issuecomment-1009472718
58
58
  shaka.polyfill.MediaCapabilities.originalMcap =
59
59
  navigator.mediaCapabilities;
60
60
 
@@ -39,7 +39,7 @@ shaka.polyfill.MediaSource = class {
39
39
  shaka.polyfill.MediaSource.patchCastIsTypeSupported_();
40
40
  } else if (safariVersion) {
41
41
  // TS content is broken on Safari in general.
42
- // See https://github.com/google/shaka-player/issues/743
42
+ // See https://github.com/shaka-project/shaka-player/issues/743
43
43
  // and https://bugs.webkit.org/show_bug.cgi?id=165342
44
44
  shaka.polyfill.MediaSource.rejectTsContent_();
45
45
 
@@ -0,0 +1,46 @@
1
+ /*! @license
2
+ * Shaka Player
3
+ * Copyright 2016 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ goog.provide('shaka.polyfill.Symbol');
7
+
8
+ goog.require('shaka.log');
9
+ goog.require('shaka.polyfill');
10
+
11
+ /**
12
+ * @summary A polyfill to provide Symbol.prototype.description in all browsers.
13
+ * See: https://caniuse.com/mdn-javascript_builtins_symbol_description
14
+ * @export
15
+ */
16
+ shaka.polyfill.Symbol = class {
17
+ /**
18
+ * Install the polyfill if needed.
19
+ * @export
20
+ */
21
+ static install() {
22
+ shaka.log.debug('Symbol.install');
23
+
24
+ // eslint-disable-next-line no-restricted-syntax
25
+ const proto = Symbol.prototype;
26
+
27
+ if (!('description' in proto)) {
28
+ Object.defineProperty(proto, 'description', {
29
+ get: shaka.polyfill.Symbol.getSymbolDescription_,
30
+ });
31
+ }
32
+ }
33
+
34
+ /**
35
+ * @this {Symbol}
36
+ * @return {(string|undefined)}
37
+ * @private
38
+ */
39
+ static getSymbolDescription_() {
40
+ const m = /\((.*)\)/.exec(this.toString());
41
+ return m ? m[1] : undefined;
42
+ }
43
+ };
44
+
45
+
46
+ shaka.polyfill.register(shaka.polyfill.Symbol.install);
package/lib/text/cue.js CHANGED
@@ -294,7 +294,7 @@ shaka.text.Cue = class {
294
294
  // Compare the start time, end time and payload of the cues first for
295
295
  // performance optimization. We can avoid the more expensive recursive
296
296
  // checks if the top-level properties don't match.
297
- // See: https://github.com/google/shaka-player/issues/3018
297
+ // See: https://github.com/shaka-project/shaka-player/issues/3018
298
298
  if (cue1.startTime != cue2.startTime || cue1.endTime != cue2.endTime ||
299
299
  cue1.payload != cue2.payload) {
300
300
  return false;
@@ -178,7 +178,8 @@ shaka.text.SimpleTextDisplayer = class {
178
178
  // The browser will display cues with identical time ranges from the
179
179
  // bottom up. Reversing the order of equal cues means the first one
180
180
  // parsed will be at the top, as you would expect.
181
- // See https://github.com/google/shaka-player/issues/848 for more info.
181
+ // See https://github.com/shaka-project/shaka-player/issues/848 for
182
+ // more info.
182
183
  // However, this ordering behavior is part of VTTCue's "line" field.
183
184
  // Some platforms don't have a real VTTCue and use a polyfill instead.
184
185
  // When VTTCue is polyfilled or does not support "line", we should _not_
@@ -536,8 +536,10 @@ shaka.text.TtmlTextParser = class {
536
536
 
537
537
  cue.textAlign = Cue.textAlign[align.toUpperCase()];
538
538
  } else {
539
- // Default value is START: https://bit.ly/32OGmvo
540
- cue.textAlign = Cue.textAlign.START;
539
+ // Default value is START in the TTML spec: https://bit.ly/32OGmvo
540
+ // But to make the subtitle render consitent with other players and the
541
+ // shaka.text.Cue we use CENTER
542
+ cue.textAlign = Cue.textAlign.CENTER;
541
543
  }
542
544
 
543
545
  const displayAlign = TtmlTextParser.getStyleAttribute_(
@@ -558,7 +560,7 @@ shaka.text.TtmlTextParser = class {
558
560
  // Background color should not be set on a container. If this is a nested
559
561
  // cue, you can set the background. If it's a top-level that happens to
560
562
  // also be a leaf, you can set the background.
561
- // See https://github.com/google/shaka-player/issues/2623
563
+ // See https://github.com/shaka-project/shaka-player/issues/2623
562
564
  // This used to be handled in the displayer, but that is confusing. The Cue
563
565
  // structure should reflect what you want to happen in the displayer, and
564
566
  // the displayer shouldn't have to know about TTML.
@@ -942,8 +944,9 @@ shaka.text.TtmlTextParser = class {
942
944
  let ret = null;
943
945
  const XmlUtils = shaka.util.XmlUtils;
944
946
  while (element) {
945
- ret = nsName ? XmlUtils.getAttributeNS(element, nsName, attributeName)
946
- : element.getAttribute(attributeName);
947
+ ret = nsName ?
948
+ XmlUtils.getAttributeNS(element, nsName, attributeName) :
949
+ element.getAttribute(attributeName);
947
950
  if (ret) {
948
951
  break;
949
952
  }
@@ -108,7 +108,7 @@ shaka.text.UITextDisplayer = class {
108
108
  append(cues) {
109
109
  // Clone the cues list for performace optimization. We can avoid the cues
110
110
  // list growing during the comparisons for duplicate cues.
111
- // See: https://github.com/google/shaka-player/issues/3018
111
+ // See: https://github.com/shaka-project/shaka-player/issues/3018
112
112
  const cuesList = [...this.cues_];
113
113
  for (const cue of cues) {
114
114
  // When a VTT cue spans a segment boundary, the cue will be duplicated
@@ -6,8 +6,6 @@
6
6
 
7
7
  goog.provide('shaka.util.BufferUtils');
8
8
 
9
- goog.require('shaka.util.Iterables');
10
-
11
9
 
12
10
  /**
13
11
  * @summary A set of BufferSource utility functions.
@@ -45,7 +43,7 @@ shaka.util.BufferUtils = class {
45
43
 
46
44
  const uint8A = shaka.util.BufferUtils.toUint8(arr1);
47
45
  const uint8B = shaka.util.BufferUtils.toUint8(arr2);
48
- for (const i of shaka.util.Iterables.range(arr1.byteLength)) {
46
+ for (let i = 0; i < arr1.byteLength; i++) {
49
47
  if (uint8A[i] != uint8B[i]) {
50
48
  return false;
51
49
  }
@@ -11,7 +11,6 @@ goog.require('goog.asserts');
11
11
  goog.require('shaka.util.BufferUtils');
12
12
  goog.require('shaka.util.DataViewReader');
13
13
  goog.require('shaka.util.Error');
14
- goog.require('shaka.util.Iterables');
15
14
 
16
15
 
17
16
  /**
@@ -157,7 +156,8 @@ shaka.util.EbmlParser = class {
157
156
  }
158
157
 
159
158
  let value = 0;
160
- for (const {item, i} of shaka.util.Iterables.enumerate(vint)) {
159
+ for (let i = 0; i < vint.length; i++) {
160
+ const item = vint[i];
161
161
  if (i == 0) {
162
162
  // Mask out the first few bits of |vint|'s first byte to get the most
163
163
  // significant bits of |vint|'s value. If |vint| is 8 bytes wide then
@@ -267,7 +267,7 @@ shaka.util.EbmlElement = class {
267
267
 
268
268
  let value = 0;
269
269
 
270
- for (const i of shaka.util.Iterables.range(this.dataView_.byteLength)) {
270
+ for (let i = 0; i < this.dataView_.byteLength; i++) {
271
271
  const chunk = this.dataView_.getUint8(i);
272
272
  value = (256 * value) + chunk;
273
273
  }