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
@@ -4,15 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- goog.require('shaka.test.TtmlUtils');
8
- goog.require('shaka.test.Util');
9
- goog.require('shaka.text.Cue');
10
- goog.require('shaka.text.CueRegion');
11
- goog.require('shaka.text.TtmlTextParser');
12
- goog.require('shaka.util.BufferUtils');
13
- goog.require('shaka.util.Error');
14
- goog.require('shaka.util.StringUtils');
15
-
16
7
  describe('TtmlTextParser', () => {
17
8
  const Cue = shaka.text.Cue;
18
9
  const CueRegion = shaka.text.CueRegion;
@@ -22,14 +13,14 @@ describe('TtmlTextParser', () => {
22
13
  it('supports no cues', () => {
23
14
  verifyHelper([],
24
15
  '<tt></tt>',
25
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
16
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
26
17
  {});
27
18
  });
28
19
 
29
20
  it('supports empty text string', () => {
30
21
  verifyHelper([],
31
22
  '',
32
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
23
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
33
24
  {});
34
25
  });
35
26
 
@@ -37,7 +28,7 @@ describe('TtmlTextParser', () => {
37
28
  verifyHelper(
38
29
  [],
39
30
  '<tt><body><div> \r\n </div></body></tt>',
40
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
31
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
41
32
  {});
42
33
  });
43
34
 
@@ -64,7 +55,7 @@ describe('TtmlTextParser', () => {
64
55
  },
65
56
  ],
66
57
  '<tt xml:space="default">' + ttBody + '</tt>',
67
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
58
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
68
59
  {startTime: 62.03, endTime: 62.05});
69
60
  // When xml:space="preserve", take them into account.
70
61
  verifyHelper(
@@ -90,7 +81,7 @@ describe('TtmlTextParser', () => {
90
81
  },
91
82
  ],
92
83
  '<tt xml:space="preserve">' + ttBody + '</tt>',
93
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
84
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
94
85
  {startTime: 62.03, endTime: 62.05});
95
86
  // The default value for xml:space is "default".
96
87
  verifyHelper(
@@ -106,7 +97,7 @@ describe('TtmlTextParser', () => {
106
97
  },
107
98
  ],
108
99
  '<tt>' + ttBody + '</tt>',
109
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
100
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
110
101
  {startTime: 62.03, endTime: 62.05});
111
102
 
112
103
  // Any other value is rejected as an error.
@@ -137,7 +128,7 @@ describe('TtmlTextParser', () => {
137
128
  },
138
129
  ],
139
130
  '<tt>' + ttBody + '</tt>',
140
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
131
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
141
132
  {startTime: 62.03, endTime: 62.05});
142
133
  });
143
134
 
@@ -207,7 +198,7 @@ describe('TtmlTextParser', () => {
207
198
  '<span>First cue</span><br /><span>Second cue</span>' +
208
199
  '</p>' +
209
200
  '</div></body></tt>',
210
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
201
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
211
202
  {startTime: 62.05, endTime: 3723.2});
212
203
  });
213
204
 
@@ -243,7 +234,7 @@ describe('TtmlTextParser', () => {
243
234
  'First cue<br />Second cue' +
244
235
  '</p>' +
245
236
  '</div></body></tt>',
246
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
237
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
247
238
  {startTime: 62.05, endTime: 3723.2});
248
239
  });
249
240
 
@@ -302,7 +293,7 @@ describe('TtmlTextParser', () => {
302
293
  '</span>' +
303
294
  '</p>' +
304
295
  '</div></body></tt>',
305
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
296
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
306
297
  {startTime: 62.05, endTime: 3723.2});
307
298
  });
308
299
 
@@ -321,7 +312,7 @@ describe('TtmlTextParser', () => {
321
312
  '<div><p begin="01:02.05" end="01:02:03.200">' +
322
313
  '<span>Test</span></p></div>' +
323
314
  '</body></tt>',
324
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
315
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
325
316
  {startTime: 62.05, endTime: 3723.2});
326
317
  });
327
318
 
@@ -351,7 +342,7 @@ describe('TtmlTextParser', () => {
351
342
  '<p><div begin="01:02.05" end="01:02:03.200" ' +
352
343
  'smpte:backgroundImage="#img_0"></div></p>' +
353
344
  '</div></body></tt>',
354
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
345
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
355
346
  {startTime: 62.05, endTime: 3723.2});
356
347
  });
357
348
 
@@ -363,7 +354,7 @@ describe('TtmlTextParser', () => {
363
354
  '<tt><body><div>' +
364
355
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
365
356
  '</div></body></tt>',
366
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
357
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
367
358
  {startTime: 62.05, endTime: 3723.2});
368
359
  });
369
360
 
@@ -375,7 +366,7 @@ describe('TtmlTextParser', () => {
375
366
  '<tt><body><div>' +
376
367
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
377
368
  '</div></body></tt>',
378
- {periodStart: 7, segmentStart: 0, segmentEnd: 0},
369
+ {periodStart: 7, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
379
370
  {startTime: 69.05, endTime: 3730.2});
380
371
  });
381
372
 
@@ -398,7 +389,7 @@ describe('TtmlTextParser', () => {
398
389
  '<tt><body><div>' +
399
390
  '<p begin="01:02.05" end="01:02:03.200"><span>Nested cue</span></p>' +
400
391
  '</div></body></tt>',
401
- {periodStart: 7, segmentStart: 0, segmentEnd: 0},
392
+ {periodStart: 7, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
402
393
  {startTime: 69.05, endTime: 3730.2});
403
394
  });
404
395
 
@@ -410,7 +401,7 @@ describe('TtmlTextParser', () => {
410
401
  '<tt><body><div>' +
411
402
  '<p begin="59.45m30ms" end="1.5h2.3s">Test</p>' +
412
403
  '</div></body></tt>',
413
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
404
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
414
405
  {startTime: 3567.03, endTime: 5402.3});
415
406
  });
416
407
 
@@ -424,7 +415,7 @@ describe('TtmlTextParser', () => {
424
415
  '<body><div>' +
425
416
  '<p begin="00:10:15:15" end="00:11:02:30">Test</p>' +
426
417
  '</div></body></tt>',
427
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
418
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
428
419
  {startTime: 615.5, endTime: 663});
429
420
  });
430
421
 
@@ -438,7 +429,7 @@ describe('TtmlTextParser', () => {
438
429
  '<body><div>' +
439
430
  '<p begin="00:10:15:15" end="00:11:02:30">Test</p>' +
440
431
  '</div></body></tt>',
441
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
432
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
442
433
  {startTime: 615.5, endTime: 663});
443
434
  });
444
435
 
@@ -456,7 +447,7 @@ describe('TtmlTextParser', () => {
456
447
  '<body><div>' +
457
448
  '<p begin="00:10:15:15.1" end="00:11:02:29.2">Test</p>' +
458
449
  '</div></body></tt>',
459
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
450
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
460
451
  {startTime: Util.closeTo(615.5 + 1 / 60), endTime: 663});
461
452
  });
462
453
 
@@ -470,7 +461,7 @@ describe('TtmlTextParser', () => {
470
461
  '<body><div>' +
471
462
  '<p begin="75f" end="300.3f">Test</p>' +
472
463
  '</div></body></tt>',
473
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
464
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
474
465
  {startTime: 2.5, endTime: Util.closeTo(10.01)});
475
466
  });
476
467
 
@@ -484,7 +475,7 @@ describe('TtmlTextParser', () => {
484
475
  '<body><div>' +
485
476
  '<p begin="50t" end="60.2t">Test</p>' +
486
477
  '</div></body></tt>',
487
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
478
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
488
479
  {startTime: 5, endTime: Util.closeTo(6.02)});
489
480
  });
490
481
 
@@ -496,7 +487,7 @@ describe('TtmlTextParser', () => {
496
487
  '<tt><body><div>' +
497
488
  '<p begin="01:02.05" dur="5s">Test</p>' +
498
489
  '</div></body></tt>',
499
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
490
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
500
491
  {startTime: 62.05, endTime: 67.05});
501
492
  });
502
493
 
@@ -506,7 +497,7 @@ describe('TtmlTextParser', () => {
506
497
  '<tt><body><div>' +
507
498
  '<!-- text-based TTML -->' +
508
499
  '</div></body></tt>',
509
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
500
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
510
501
  {});
511
502
  });
512
503
 
@@ -526,7 +517,7 @@ describe('TtmlTextParser', () => {
526
517
  '<body region="subtitleArea"><div>' +
527
518
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
528
519
  '</div></body></tt>',
529
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
520
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
530
521
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
531
522
  {startTime: 62.05, endTime: 3723.2});
532
523
  });
@@ -548,7 +539,7 @@ describe('TtmlTextParser', () => {
548
539
  '<body region="subtitleArea"><div>' +
549
540
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
550
541
  '</div></body></tt>',
551
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
542
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
552
543
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
553
544
  {startTime: 62.05, endTime: 3723.2});
554
545
  });
@@ -570,7 +561,7 @@ describe('TtmlTextParser', () => {
570
561
  '<body region="subtitleArea"><div>' +
571
562
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
572
563
  '</div></body></tt>',
573
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
564
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
574
565
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
575
566
  {startTime: 62.05, endTime: 3723.2});
576
567
  });
@@ -595,7 +586,7 @@ describe('TtmlTextParser', () => {
595
586
  '<body region="subtitleArea"><div>' +
596
587
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
597
588
  '</div></body></tt>',
598
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
589
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
599
590
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
600
591
  {startTime: 62.05, endTime: 3723.2});
601
592
  });
@@ -620,7 +611,7 @@ describe('TtmlTextParser', () => {
620
611
  '<body region="subtitleArea"><div>' +
621
612
  '<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
622
613
  '</div></body></tt>',
623
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
614
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
624
615
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
625
616
  {startTime: 62.05, endTime: 3723.2});
626
617
  });
@@ -641,7 +632,7 @@ describe('TtmlTextParser', () => {
641
632
  '<body region="subtitleArea"><div>' +
642
633
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
643
634
  '</div></body></tt>',
644
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
635
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
645
636
  {
646
637
  region: {
647
638
  id: 'subtitleArea',
@@ -670,7 +661,7 @@ describe('TtmlTextParser', () => {
670
661
  '<body region="subtitleArea"><div>' +
671
662
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
672
663
  '</div></body></tt>',
673
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
664
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
674
665
  {
675
666
  region: {
676
667
  viewportAnchorX: 50,
@@ -698,7 +689,7 @@ describe('TtmlTextParser', () => {
698
689
  '<body region="subtitleArea"><div>' +
699
690
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
700
691
  '</div></body></tt>',
701
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
692
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
702
693
  {
703
694
  region: {
704
695
  viewportAnchorX: 50,
@@ -727,7 +718,7 @@ describe('TtmlTextParser', () => {
727
718
  '<body region="subtitleArea"><div>' +
728
719
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
729
720
  '</div></body></tt>',
730
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
721
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
731
722
  {
732
723
  region: {
733
724
  id: 'subtitleArea',
@@ -763,7 +754,7 @@ describe('TtmlTextParser', () => {
763
754
  '<body region="subtitleArea"><div>' +
764
755
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
765
756
  '</div></body></tt>',
766
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
757
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
767
758
  {
768
759
  region: {
769
760
  id: 'subtitleArea',
@@ -799,7 +790,7 @@ describe('TtmlTextParser', () => {
799
790
  '<body region="subtitleArea"><div>' +
800
791
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
801
792
  '</div></body></tt>',
802
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
793
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
803
794
  {
804
795
  region: {
805
796
  id: 'subtitleArea',
@@ -836,7 +827,7 @@ describe('TtmlTextParser', () => {
836
827
  '<body region="subtitleArea"><div>' +
837
828
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
838
829
  '</div></body></tt>',
839
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
830
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
840
831
  {
841
832
  region: {
842
833
  id: 'subtitleArea',
@@ -873,7 +864,7 @@ describe('TtmlTextParser', () => {
873
864
  '<body region="subtitleArea"><div>' +
874
865
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
875
866
  '</div></body></tt>',
876
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
867
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
877
868
  {
878
869
  region: {
879
870
  id: 'subtitleArea',
@@ -911,7 +902,7 @@ describe('TtmlTextParser', () => {
911
902
  '<body region="subtitleArea"><div>' +
912
903
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
913
904
  '</div></body></tt>',
914
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
905
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
915
906
  {
916
907
  region: {
917
908
  id: 'subtitleArea',
@@ -948,7 +939,7 @@ describe('TtmlTextParser', () => {
948
939
  '<body region="subtitleArea"><div>' +
949
940
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
950
941
  '</div></body></tt>',
951
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
942
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
952
943
  {
953
944
  region: {
954
945
  id: 'subtitleArea',
@@ -977,7 +968,7 @@ describe('TtmlTextParser', () => {
977
968
  '<body region="subtitleArea"><div>' +
978
969
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
979
970
  '</div></body></tt>',
980
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
971
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
981
972
  {
982
973
  region: {
983
974
  viewportAnchorX: 50,
@@ -1005,7 +996,7 @@ describe('TtmlTextParser', () => {
1005
996
  '<body region="subtitleArea"><div>' +
1006
997
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1007
998
  '</div></body></tt>',
1008
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
999
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1009
1000
  {
1010
1001
  region: {
1011
1002
  viewportAnchorX: 50,
@@ -1035,7 +1026,7 @@ describe('TtmlTextParser', () => {
1035
1026
  '<body region="subtitleArea"><div>' +
1036
1027
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1037
1028
  '</div></body></tt>',
1038
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1029
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1039
1030
  {
1040
1031
  region: {
1041
1032
  id: 'subtitleArea',
@@ -1067,7 +1058,7 @@ describe('TtmlTextParser', () => {
1067
1058
  '<body region="subtitleArea"><div>' +
1068
1059
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1069
1060
  '</div></body></tt>',
1070
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1061
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1071
1062
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1072
1063
  {startTime: 62.05, endTime: 3723.2});
1073
1064
 
@@ -1088,7 +1079,7 @@ describe('TtmlTextParser', () => {
1088
1079
  '<body region="subtitleArea"><div>' +
1089
1080
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1090
1081
  '</div></body></tt>',
1091
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1082
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1092
1083
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1093
1084
  {startTime: 62.05, endTime: 3723.2});
1094
1085
 
@@ -1109,7 +1100,7 @@ describe('TtmlTextParser', () => {
1109
1100
  '<body region="subtitleArea"><div>' +
1110
1101
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1111
1102
  '</div></body></tt>',
1112
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1103
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1113
1104
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1114
1105
  {startTime: 62.05, endTime: 3723.2});
1115
1106
 
@@ -1130,7 +1121,7 @@ describe('TtmlTextParser', () => {
1130
1121
  '<body region="subtitleArea"><div>' +
1131
1122
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1132
1123
  '</div></body></tt>',
1133
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1124
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1134
1125
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1135
1126
  {startTime: 62.05, endTime: 3723.2});
1136
1127
 
@@ -1151,7 +1142,7 @@ describe('TtmlTextParser', () => {
1151
1142
  '<body region="subtitleArea"><div>' +
1152
1143
  '<p begin="01:02.05" end="01:02:03.200">Test</p>' +
1153
1144
  '</div></body></tt>',
1154
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1145
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1155
1146
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1156
1147
  {startTime: 62.05, endTime: 3723.2});
1157
1148
  });
@@ -1169,7 +1160,7 @@ describe('TtmlTextParser', () => {
1169
1160
  '<div></div>' +
1170
1161
  '</body>' +
1171
1162
  '</tt>',
1172
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1163
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1173
1164
  {startTime: 62.05, endTime: 3723.2});
1174
1165
 
1175
1166
  verifyHelper(
@@ -1184,7 +1175,7 @@ describe('TtmlTextParser', () => {
1184
1175
  '</div>' +
1185
1176
  '</body>' +
1186
1177
  '</tt>',
1187
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1178
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1188
1179
  {startTime: 62.05, endTime: 3723.2});
1189
1180
 
1190
1181
  verifyHelper(
@@ -1197,7 +1188,7 @@ describe('TtmlTextParser', () => {
1197
1188
  '<div></div>' +
1198
1189
  '</body>' +
1199
1190
  '</tt>',
1200
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1191
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1201
1192
  {});
1202
1193
  });
1203
1194
 
@@ -1214,7 +1205,7 @@ describe('TtmlTextParser', () => {
1214
1205
  '</div>' +
1215
1206
  '</body>' +
1216
1207
  '</tt>',
1217
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1208
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1218
1209
  {startTime: 62.05, endTime: 3723.2});
1219
1210
  });
1220
1211
 
@@ -1237,7 +1228,7 @@ describe('TtmlTextParser', () => {
1237
1228
  '<body><div smpte:backgroundImage="#img_0">' +
1238
1229
  '<p begin="01:02.05" end="01:02:03.200"></p>' +
1239
1230
  '</div></body></tt>',
1240
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1231
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1241
1232
  {startTime: 62.05, endTime: 3723.2},
1242
1233
  {
1243
1234
  startTime: 62.05,
@@ -1260,7 +1251,7 @@ describe('TtmlTextParser', () => {
1260
1251
  '<body><div begin="00:00.00" end="01:02.05" '+
1261
1252
  'smpte:backgroundImage="#img_0"></div>' +
1262
1253
  '</body></tt>',
1263
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1254
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1264
1255
  {startTime: 0, endTime: 62.05},
1265
1256
  {
1266
1257
  startTime: 0,
@@ -1291,7 +1282,7 @@ describe('TtmlTextParser', () => {
1291
1282
  '<p begin="01:02.05" end="01:02:03.200" ' +
1292
1283
  'smpte:backgroundImage="#img_0" />' +
1293
1284
  '</div></body></tt>',
1294
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1285
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1295
1286
  {startTime: 62.05, endTime: 3723.2});
1296
1287
  });
1297
1288
 
@@ -1320,7 +1311,7 @@ describe('TtmlTextParser', () => {
1320
1311
  '<tt><body><div>' +
1321
1312
  '<p begin="01:02.05" end="01:02:03.200">Line1<br/>Line2</p>' +
1322
1313
  '</div></body></tt>',
1323
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1314
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1324
1315
  {startTime: 62.05, endTime: 3723.2});
1325
1316
 
1326
1317
  verifyHelper(
@@ -1354,7 +1345,7 @@ describe('TtmlTextParser', () => {
1354
1345
  '<span>Line1<br/>Line2</span>' +
1355
1346
  '</p>' +
1356
1347
  '</div></body></tt>',
1357
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1348
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1358
1349
  {startTime: 62.05, endTime: 3723.2});
1359
1350
  });
1360
1351
 
@@ -1382,7 +1373,7 @@ describe('TtmlTextParser', () => {
1382
1373
  '<body><div>' +
1383
1374
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1384
1375
  '</div></body></tt>',
1385
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1376
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1386
1377
  {startTime: 1, endTime: 2});
1387
1378
  });
1388
1379
 
@@ -1408,7 +1399,7 @@ describe('TtmlTextParser', () => {
1408
1399
  '<body region="subtitleArea"><div>' +
1409
1400
  '<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
1410
1401
  '</div></body></tt>',
1411
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1402
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1412
1403
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1413
1404
  {startTime: 62.05, endTime: 3723.2});
1414
1405
  });
@@ -1456,7 +1447,7 @@ describe('TtmlTextParser', () => {
1456
1447
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1457
1448
  '<p begin="00:02.00" end="00:04.00" style="s2">Test 2</p>' +
1458
1449
  '</div></body></tt>',
1459
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1450
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1460
1451
  {startTime: 1, endTime: 4, region: {id: 'subtitleArea'}},
1461
1452
  {startTime: 1, endTime: 4});
1462
1453
  });
@@ -1481,7 +1472,7 @@ describe('TtmlTextParser', () => {
1481
1472
  '<body region="subtitleArea"><div>' +
1482
1473
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1483
1474
  '</div></body></tt>',
1484
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1475
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1485
1476
  {startTime: 1, endTime: 2});
1486
1477
  });
1487
1478
 
@@ -1503,7 +1494,7 @@ describe('TtmlTextParser', () => {
1503
1494
  '<body region="subtitleArea"><div>' +
1504
1495
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1505
1496
  '</div></body></tt>',
1506
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1497
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1507
1498
  {startTime: 1, endTime: 2});
1508
1499
  });
1509
1500
 
@@ -1540,7 +1531,7 @@ describe('TtmlTextParser', () => {
1540
1531
  '<span style="s1">Test</span>' +
1541
1532
  '</p>' +
1542
1533
  '</div></body></tt>',
1543
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1534
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1544
1535
  {startTime: 1, endTime: 2});
1545
1536
  });
1546
1537
 
@@ -1564,7 +1555,7 @@ describe('TtmlTextParser', () => {
1564
1555
  '<body region="subtitleArea"><div>' +
1565
1556
  '<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
1566
1557
  '</div></body></tt>',
1567
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1558
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1568
1559
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1569
1560
  {startTime: 62.05, endTime: 3723.2});
1570
1561
  });
@@ -1592,7 +1583,7 @@ describe('TtmlTextParser', () => {
1592
1583
  '<body region="subtitleArea"><div>' +
1593
1584
  '<p begin="01:02.05" end="01:02:03.200" style="s2">Test</p>' +
1594
1585
  '</div></body></tt>',
1595
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1586
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1596
1587
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1597
1588
  {startTime: 62.05, endTime: 3723.2});
1598
1589
  });
@@ -1617,7 +1608,7 @@ describe('TtmlTextParser', () => {
1617
1608
  '<body><div>' +
1618
1609
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1619
1610
  '</div></body></tt>',
1620
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1611
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1621
1612
  {startTime: 1, endTime: 2});
1622
1613
  });
1623
1614
 
@@ -1645,7 +1636,7 @@ describe('TtmlTextParser', () => {
1645
1636
  '<body><div>' +
1646
1637
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1647
1638
  '</div></body></tt>',
1648
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1639
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1649
1640
  {startTime: 1, endTime: 2});
1650
1641
  });
1651
1642
 
@@ -1674,7 +1665,7 @@ describe('TtmlTextParser', () => {
1674
1665
  '<body><div>' +
1675
1666
  '<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
1676
1667
  '</div></body></tt>',
1677
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1668
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1678
1669
  {startTime: 1, endTime: 2});
1679
1670
  });
1680
1671
 
@@ -1699,7 +1690,7 @@ describe('TtmlTextParser', () => {
1699
1690
  '<body region="subtitleArea"><div>' +
1700
1691
  '<p begin="01:02.05" end="01:02:03.200" style="s2">Test</p>' +
1701
1692
  '</div></body></tt>',
1702
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1693
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1703
1694
  {startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
1704
1695
  {startTime: 62.05, endTime: 3723.2});
1705
1696
  });
@@ -1714,11 +1705,11 @@ describe('TtmlTextParser', () => {
1714
1705
  '<p begin="00:01.00" end="00:02.00">First cue</p>' +
1715
1706
  '<p begin="00:03.00" end="00:04.00">Second cue</p>' +
1716
1707
  '</div></body></tt>',
1717
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1708
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1718
1709
  {startTime: 1, endTime: 4});
1719
1710
  });
1720
1711
 
1721
- // Regression test for https://github.com/google/shaka-player/issues/2478
1712
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/2478
1722
1713
  it('supports nested cues with only non-ASCII characters', () => {
1723
1714
  verifyHelper(
1724
1715
  [
@@ -1738,7 +1729,7 @@ describe('TtmlTextParser', () => {
1738
1729
  '<tt><body><div>' +
1739
1730
  '<p begin="01:02.05" end="01:02:03.200"><span>äöü</span></p>' +
1740
1731
  '</div></body></tt>',
1741
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1732
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1742
1733
  {startTime: 62.05, endTime: 3723.2});
1743
1734
  });
1744
1735
 
@@ -1755,7 +1746,7 @@ describe('TtmlTextParser', () => {
1755
1746
  '<p begin="3s" end="4s">First cue</p>' +
1756
1747
  '<p begin="4s" end="5s">Second cue</p>' +
1757
1748
  '</div></body></tt>',
1758
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1749
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1759
1750
  {startTime: 1, endTime: Infinity},
1760
1751
  {startTime: 3, endTime: Infinity});
1761
1752
 
@@ -1780,7 +1771,7 @@ describe('TtmlTextParser', () => {
1780
1771
  '<span begin="5s" end="6s">Second cue</span>' +
1781
1772
  '</p>' +
1782
1773
  '</div></body></tt>',
1783
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1774
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1784
1775
  {startTime: 1, endTime: Infinity},
1785
1776
  {startTime: 3, endTime: Infinity});
1786
1777
  });
@@ -1796,7 +1787,7 @@ describe('TtmlTextParser', () => {
1796
1787
  '<p begin="3s" end="4s">First cue</p>' +
1797
1788
  '<p begin="4s">Second cue</p>' +
1798
1789
  '</div></body></tt>',
1799
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1790
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1800
1791
  {startTime: 1, endTime: 30},
1801
1792
  {startTime: 3, endTime: 30});
1802
1793
  });
@@ -1811,7 +1802,7 @@ describe('TtmlTextParser', () => {
1811
1802
  '<p begin="1s">First cue</p>' +
1812
1803
  '<p begin="2s">Second cue</p>' +
1813
1804
  '</div></body></tt>',
1814
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1805
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1815
1806
  {startTime: 1, endTime: Infinity});
1816
1807
  });
1817
1808
 
@@ -1883,7 +1874,7 @@ describe('TtmlTextParser', () => {
1883
1874
  ' <span style="spanStyle">Test with spanStyle</span>' +
1884
1875
  ' </p>' +
1885
1876
  '</div></body></tt>',
1886
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1877
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1887
1878
  {startTime: 0, endTime: 60});
1888
1879
  });
1889
1880
 
@@ -1915,12 +1906,12 @@ describe('TtmlTextParser', () => {
1915
1906
  '<body><div><p begin="00:00" end="01:00" region="r1">' +
1916
1907
  '<span>Hello!</span>' +
1917
1908
  '</p></div></body></tt>',
1918
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1909
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1919
1910
  {startTime: 0, endTime: 60},
1920
1911
  );
1921
1912
  });
1922
1913
 
1923
- // Regression test for https://github.com/google/shaka-player/issues/3743
1914
+ // Regression test for https://github.com/shaka-project/shaka-player/issues/3743
1924
1915
  it('inherits styles from other styles on nestedCues', () => {
1925
1916
  verifyHelper(
1926
1917
  [
@@ -1977,7 +1968,7 @@ describe('TtmlTextParser', () => {
1977
1968
  ' A<br/>B' +
1978
1969
  ' </p>' +
1979
1970
  '</div></body></tt>',
1980
- {periodStart: 0, segmentStart: 0, segmentEnd: 0},
1971
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0},
1981
1972
  {startTime: 0, endTime: 60});
1982
1973
  });
1983
1974
 
@@ -2018,7 +2009,7 @@ describe('TtmlTextParser', () => {
2018
2009
  expect(() => {
2019
2010
  new shaka.text.TtmlTextParser().parseMedia(
2020
2011
  shaka.util.BufferUtils.toUint8(data),
2021
- {periodStart: 0, segmentStart: 0, segmentEnd: 0});
2012
+ {periodStart: 0, segmentStart: 0, segmentEnd: 0, vttOffset: 0});
2022
2013
  }).toThrow(error);
2023
2014
  }
2024
2015
  });