shaka-player 3.2.1 → 3.3.1
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.
- package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
- package/.github/ISSUE_TEMPLATE/feature_request.md +1 -1
- package/.github/ISSUE_TEMPLATE/question.md +1 -1
- package/AUTHORS +9 -5
- package/CHANGELOG.md +358 -0
- package/CONTRIBUTORS +7 -2
- package/build/conformance.textproto +183 -169
- package/build/generateExterns.js +1 -1
- package/build/types/core +3 -0
- package/build/types/offline +1 -0
- package/build/types/polyfill +1 -0
- package/build/types/ui +2 -0
- package/demo/common/assets.js +19 -1
- package/demo/common/message_ids.js +13 -1
- package/demo/config.js +31 -1
- package/demo/index.html +1 -1
- package/demo/locales/en.json +12 -0
- package/demo/locales/source.json +48 -0
- package/dist/controls.css +26 -2
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +20 -17
- package/dist/demo.compiled.debug.map +3 -3
- package/dist/demo.compiled.js +20 -17
- package/dist/demo.compiled.map +3 -3
- package/dist/deps.js +19 -12
- package/dist/locales.js +39 -37
- package/dist/receiver.compiled.debug.js +12 -10
- package/dist/receiver.compiled.debug.map +3 -3
- package/dist/receiver.compiled.js +12 -10
- package/dist/receiver.compiled.map +3 -3
- package/dist/shaka-player.compiled.d.ts +231 -18
- package/dist/shaka-player.compiled.debug.d.ts +231 -18
- package/dist/shaka-player.compiled.debug.externs.js +279 -8
- package/dist/shaka-player.compiled.debug.js +512 -449
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +279 -8
- package/dist/shaka-player.compiled.js +854 -821
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +247 -19
- package/dist/shaka-player.ui.debug.d.ts +247 -19
- package/dist/shaka-player.ui.debug.externs.js +307 -9
- package/dist/shaka-player.ui.debug.js +662 -580
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +307 -9
- package/dist/shaka-player.ui.js +1047 -1000
- package/dist/shaka-player.ui.map +4 -4
- package/docs/design/bg-fetch-after.gv +29 -0
- package/docs/design/bg-fetch-after.gv.png +0 -0
- package/docs/design/bg-fetch-before.gv +18 -0
- package/docs/design/bg-fetch-before.gv.png +0 -0
- package/docs/design/bg-fetch.md +134 -0
- package/docs/tutorials/blob-url.md +15 -0
- package/docs/tutorials/fairplay.md +1 -1
- package/docs/tutorials/index.json +1 -0
- package/docs/tutorials/ui-customization.md +66 -0
- package/docs/tutorials/ui.md +5 -5
- package/externs/cmcd.js +186 -0
- package/externs/ima.js +3 -0
- package/externs/shaka/ads.js +5 -0
- package/externs/shaka/manifest.js +12 -1
- package/externs/shaka/manifest_parser.js +10 -1
- package/externs/shaka/net.js +20 -4
- package/externs/shaka/offline.js +31 -2
- package/externs/shaka/player.js +138 -5
- package/externs/shaka/text.js +24 -0
- package/externs/webcrypto.js +18 -0
- package/karma.conf.js +1 -0
- package/lib/abr/ewma.js +14 -0
- package/lib/abr/ewma_bandwidth_estimator.js +16 -2
- package/lib/abr/simple_abr_manager.js +6 -0
- package/lib/ads/client_side_ad.js +8 -0
- package/lib/ads/client_side_ad_manager.js +54 -90
- package/lib/ads/server_side_ad.js +7 -0
- package/lib/ads/server_side_ad_manager.js +7 -10
- package/lib/cast/cast_proxy.js +3 -2
- package/lib/cast/cast_receiver.js +2 -1
- package/lib/cast/cast_sender.js +2 -2
- package/lib/cast/cast_utils.js +1 -0
- package/lib/dash/dash_parser.js +141 -16
- package/lib/dash/segment_base.js +25 -1
- package/lib/dash/segment_list.js +19 -10
- package/lib/dash/segment_template.js +24 -11
- package/lib/hls/hls_parser.js +146 -40
- package/lib/media/drm_engine.js +7 -0
- package/lib/media/gap_jumping_controller.js +4 -2
- package/lib/media/media_source_engine.js +1 -2
- package/lib/media/quality_observer.js +291 -0
- package/lib/media/segment_index.js +8 -1
- package/lib/media/segment_reference.js +37 -4
- package/lib/media/streaming_engine.js +49 -7
- package/lib/net/http_fetch_plugin.js +31 -11
- package/lib/net/http_plugin_utils.js +1 -0
- package/lib/net/http_xhr_plugin.js +40 -14
- package/lib/net/networking_engine.js +83 -19
- package/lib/offline/download_info.js +68 -0
- package/lib/offline/download_manager.js +13 -5
- package/lib/offline/indexeddb/base_storage_cell.js +35 -0
- package/lib/offline/indexeddb/storage_mechanism.js +1 -1
- package/lib/offline/indexeddb/v5_storage_cell.js +5 -0
- package/lib/offline/storage.js +393 -284
- package/lib/offline/stored_content_utils.js +2 -0
- package/lib/player.js +249 -43
- package/lib/polyfill/media_capabilities.js +36 -15
- package/lib/polyfill/mediasource.js +6 -0
- package/lib/polyfill/orientation.js +1 -1
- package/lib/polyfill/patchedmediakeys_apple.js +4 -4
- package/lib/polyfill/patchedmediakeys_ms.js +4 -4
- package/lib/polyfill/patchedmediakeys_webkit.js +4 -4
- package/lib/polyfill/random_uuid.js +52 -0
- package/lib/text/cue.js +18 -0
- package/lib/text/mp4_ttml_parser.js +3 -0
- package/lib/text/text_engine.js +14 -2
- package/lib/text/ttml_text_parser.js +114 -60
- package/lib/text/ui_text_displayer.js +95 -41
- package/lib/util/cmcd_manager.js +672 -0
- package/lib/util/error.js +6 -0
- package/lib/util/fake_event.js +53 -7
- package/lib/util/language_utils.js +12 -0
- package/lib/util/mutex.js +52 -0
- package/lib/util/periods.js +102 -65
- package/lib/util/platform.js +13 -1
- package/lib/util/player_configuration.js +18 -0
- package/lib/util/stream_utils.js +99 -10
- package/lib/util/xml_utils.js +19 -0
- package/package.json +2 -2
- package/shaka-player.uncompiled.js +3 -0
- package/test/cast/cast_proxy_unit.js +12 -6
- package/test/cast/cast_utils_unit.js +1 -1
- package/test/dash/dash_parser_content_protection_unit.js +2 -0
- package/test/dash/dash_parser_live_unit.js +101 -1
- package/test/dash/dash_parser_manifest_unit.js +222 -2
- package/test/dash/dash_parser_segment_base_unit.js +2 -0
- package/test/dash/dash_parser_segment_list_unit.js +2 -1
- package/test/dash/dash_parser_segment_template_unit.js +2 -1
- package/test/hls/hls_live_unit.js +2 -0
- package/test/hls/hls_parser_unit.js +7 -1
- package/test/media/closed_caption_parser_unit.js +6 -1
- package/test/media/drm_engine_unit.js +47 -3
- package/test/media/quality_observer_unit.js +139 -0
- package/test/media/segment_reference_unit.js +16 -1
- package/test/media/streaming_engine_integration.js +4 -2
- package/test/media/streaming_engine_unit.js +147 -0
- package/test/net/http_plugin_unit.js +20 -15
- package/test/offline/storage_integration.js +108 -4
- package/test/player_integration.js +178 -8
- package/test/player_src_equals_integration.js +41 -8
- package/test/player_unit.js +19 -9
- package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
- package/test/test/assets/3675/dash_0.mpd +30 -0
- package/test/test/assets/3675/dash_1.mpd +30 -0
- package/test/test/assets/3675/dash_2.mpd +30 -0
- package/test/test/assets/3675/dash_3.mpd +30 -0
- package/test/test/assets/3675/dash_4.mpd +30 -0
- package/test/test/assets/3675/dash_5.mpd +26 -0
- package/test/test/assets/3675/init-stream0.m4s +0 -0
- package/test/test/assets/chapters.vtt +2 -2
- package/test/test/assets/chapters2.vtt +10 -0
- package/test/test/util/dash_parser_util.js +4 -0
- package/test/test/util/fake_ad.js +7 -0
- package/test/test/util/fake_ad_manager.js +1 -1
- package/test/test/util/fake_drm_engine.js +9 -2
- package/test/test/util/manifest_generator.js +3 -2
- package/test/test/util/test_scheme.js +14 -1
- package/test/test/util/ttml_utils.js +81 -0
- package/test/text/mp4_ttml_parser_unit.js +11 -18
- package/test/text/ttml_text_parser_unit.js +552 -227
- package/test/text/ui_text_displayer_unit.js +29 -17
- package/test/ui/localization_unit.js +15 -14
- package/test/ui/text_displayer_layout_unit.js +13 -1
- package/test/ui/ui_unit.js +250 -0
- package/test/util/cmcd_manager_unit.js +291 -0
- package/test/util/stream_utils_unit.js +45 -4
- package/third_party/closure-uri/uri.js +21 -0
- package/ui/airplay_button.js +1 -0
- package/ui/audio_language_selection.js +7 -0
- package/ui/cast_button.js +3 -3
- package/ui/context_menu.js +109 -0
- package/ui/controls.js +45 -13
- package/ui/controls.less +1 -0
- package/ui/enums.js +4 -0
- package/ui/externs/ui.js +28 -1
- package/ui/fast_forward_button.js +14 -5
- package/ui/fullscreen_button.js +1 -0
- package/ui/less/buttons.less +0 -4
- package/ui/less/containers.less +77 -7
- package/ui/less/overflow_menu.less +0 -10
- package/ui/less/tooltip.less +97 -0
- package/ui/locales/en.json +1 -0
- package/ui/locales/ru.json +6 -6
- package/ui/locales/source.json +4 -0
- package/ui/localization.js +28 -51
- package/ui/loop_button.js +5 -0
- package/ui/mute_button.js +2 -1
- package/ui/overflow_menu.js +5 -25
- package/ui/pip_button.js +7 -3
- package/ui/play_button.js +2 -2
- package/ui/playback_rate_selection.js +8 -9
- package/ui/resolution_selection.js +7 -0
- package/ui/rewind_button.js +15 -6
- package/ui/seek_bar.js +4 -2
- package/ui/settings_menu.js +36 -4
- package/ui/small_play_button.js +1 -0
- package/ui/statistics_button.js +253 -0
- package/ui/text_selection.js +12 -4
- package/ui/ui.js +30 -0
- package/ui/volume_bar.js +1 -1
- package/externs/media_capabilities.js +0 -16
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
goog.require('shaka.test.TtmlUtils');
|
|
7
8
|
goog.require('shaka.test.Util');
|
|
8
9
|
goog.require('shaka.text.Cue');
|
|
9
10
|
goog.require('shaka.text.CueRegion');
|
|
@@ -21,20 +22,23 @@ describe('TtmlTextParser', () => {
|
|
|
21
22
|
it('supports no cues', () => {
|
|
22
23
|
verifyHelper([],
|
|
23
24
|
'<tt></tt>',
|
|
24
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
25
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
26
|
+
{});
|
|
25
27
|
});
|
|
26
28
|
|
|
27
29
|
it('supports empty text string', () => {
|
|
28
30
|
verifyHelper([],
|
|
29
31
|
'',
|
|
30
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
32
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
33
|
+
{});
|
|
31
34
|
});
|
|
32
35
|
|
|
33
36
|
it('supports div with no cues but whitespace', () => {
|
|
34
37
|
verifyHelper(
|
|
35
38
|
[],
|
|
36
39
|
'<tt><body><div> \r\n </div></body></tt>',
|
|
37
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
40
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
41
|
+
{});
|
|
38
42
|
});
|
|
39
43
|
|
|
40
44
|
it('supports xml:space', () => {
|
|
@@ -60,7 +64,8 @@ describe('TtmlTextParser', () => {
|
|
|
60
64
|
},
|
|
61
65
|
],
|
|
62
66
|
'<tt xml:space="default">' + ttBody + '</tt>',
|
|
63
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
67
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
68
|
+
{startTime: 62.03, endTime: 62.05});
|
|
64
69
|
// When xml:space="preserve", take them into account.
|
|
65
70
|
verifyHelper(
|
|
66
71
|
[
|
|
@@ -85,7 +90,8 @@ describe('TtmlTextParser', () => {
|
|
|
85
90
|
},
|
|
86
91
|
],
|
|
87
92
|
'<tt xml:space="preserve">' + ttBody + '</tt>',
|
|
88
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
93
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
94
|
+
{startTime: 62.03, endTime: 62.05});
|
|
89
95
|
// The default value for xml:space is "default".
|
|
90
96
|
verifyHelper(
|
|
91
97
|
[
|
|
@@ -100,7 +106,8 @@ describe('TtmlTextParser', () => {
|
|
|
100
106
|
},
|
|
101
107
|
],
|
|
102
108
|
'<tt>' + ttBody + '</tt>',
|
|
103
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
109
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
110
|
+
{startTime: 62.03, endTime: 62.05});
|
|
104
111
|
|
|
105
112
|
// Any other value is rejected as an error.
|
|
106
113
|
errorHelper(shaka.util.Error.Code.INVALID_XML,
|
|
@@ -130,7 +137,8 @@ describe('TtmlTextParser', () => {
|
|
|
130
137
|
},
|
|
131
138
|
],
|
|
132
139
|
'<tt>' + ttBody + '</tt>',
|
|
133
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
140
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
141
|
+
{startTime: 62.03, endTime: 62.05});
|
|
134
142
|
});
|
|
135
143
|
|
|
136
144
|
it('rejects invalid ttml', () => {
|
|
@@ -199,7 +207,8 @@ describe('TtmlTextParser', () => {
|
|
|
199
207
|
'<span>First cue</span><br /><span>Second cue</span>' +
|
|
200
208
|
'</p>' +
|
|
201
209
|
'</div></body></tt>',
|
|
202
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
210
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
211
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
203
212
|
});
|
|
204
213
|
|
|
205
214
|
it('supports anonymous spans as nestedCues of paragraphs', () => {
|
|
@@ -234,7 +243,8 @@ describe('TtmlTextParser', () => {
|
|
|
234
243
|
'First cue<br />Second cue' +
|
|
235
244
|
'</p>' +
|
|
236
245
|
'</div></body></tt>',
|
|
237
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
246
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
247
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
238
248
|
});
|
|
239
249
|
|
|
240
250
|
it('supports multiple levels of nestedCues', () => {
|
|
@@ -292,7 +302,8 @@ describe('TtmlTextParser', () => {
|
|
|
292
302
|
'</span>' +
|
|
293
303
|
'</p>' +
|
|
294
304
|
'</div></body></tt>',
|
|
295
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
305
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
306
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
296
307
|
});
|
|
297
308
|
|
|
298
309
|
it('inherits timing information of nested cues if unprovided', () => {
|
|
@@ -307,9 +318,11 @@ describe('TtmlTextParser', () => {
|
|
|
307
318
|
},
|
|
308
319
|
],
|
|
309
320
|
'<tt><body>' +
|
|
310
|
-
'<div><
|
|
321
|
+
'<div><p begin="01:02.05" end="01:02:03.200">' +
|
|
322
|
+
'<span>Test</span></p></div>' +
|
|
311
323
|
'</body></tt>',
|
|
312
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
324
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
325
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
313
326
|
});
|
|
314
327
|
|
|
315
328
|
it('does not discard cues with image subcues', () => {
|
|
@@ -334,11 +347,12 @@ describe('TtmlTextParser', () => {
|
|
|
334
347
|
'<metadata>' +
|
|
335
348
|
'<smpte:image imageType="PNG" encoding="Base64" xml:id="img_0">' +
|
|
336
349
|
'base64EncodedImage</smpte:image>' +
|
|
337
|
-
'</metadata><body>' +
|
|
338
|
-
'<
|
|
339
|
-
'smpte:backgroundImage="#img_0"></div></
|
|
340
|
-
'</body></tt>',
|
|
341
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
350
|
+
'</metadata><body><div>' +
|
|
351
|
+
'<p><div begin="01:02.05" end="01:02:03.200" ' +
|
|
352
|
+
'smpte:backgroundImage="#img_0"></div></p>' +
|
|
353
|
+
'</div></body></tt>',
|
|
354
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
355
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
342
356
|
});
|
|
343
357
|
|
|
344
358
|
it('supports colon formatted time', () => {
|
|
@@ -349,7 +363,8 @@ describe('TtmlTextParser', () => {
|
|
|
349
363
|
'<tt><body><div>' +
|
|
350
364
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
351
365
|
'</div></body></tt>',
|
|
352
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
366
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
367
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
353
368
|
});
|
|
354
369
|
|
|
355
370
|
it('accounts for offset', () => {
|
|
@@ -360,7 +375,8 @@ describe('TtmlTextParser', () => {
|
|
|
360
375
|
'<tt><body><div>' +
|
|
361
376
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
362
377
|
'</div></body></tt>',
|
|
363
|
-
{periodStart: 7, segmentStart: 0, segmentEnd: 0}
|
|
378
|
+
{periodStart: 7, segmentStart: 0, segmentEnd: 0},
|
|
379
|
+
{startTime: 69.05, endTime: 3730.2});
|
|
364
380
|
});
|
|
365
381
|
|
|
366
382
|
it('supports nested cues with an offset', () => {
|
|
@@ -382,7 +398,8 @@ describe('TtmlTextParser', () => {
|
|
|
382
398
|
'<tt><body><div>' +
|
|
383
399
|
'<p begin="01:02.05" end="01:02:03.200"><span>Nested cue</span></p>' +
|
|
384
400
|
'</div></body></tt>',
|
|
385
|
-
{periodStart: 7, segmentStart: 0, segmentEnd: 0}
|
|
401
|
+
{periodStart: 7, segmentStart: 0, segmentEnd: 0},
|
|
402
|
+
{startTime: 69.05, endTime: 3730.2});
|
|
386
403
|
});
|
|
387
404
|
|
|
388
405
|
it('supports time in 0.00h 0.00m 0.00s format', () => {
|
|
@@ -393,7 +410,8 @@ describe('TtmlTextParser', () => {
|
|
|
393
410
|
'<tt><body><div>' +
|
|
394
411
|
'<p begin="59.45m30ms" end="1.5h2.3s">Test</p>' +
|
|
395
412
|
'</div></body></tt>',
|
|
396
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
413
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
414
|
+
{startTime: 3567.03, endTime: 5402.3});
|
|
397
415
|
});
|
|
398
416
|
|
|
399
417
|
it('supports time with frame rate', () => {
|
|
@@ -406,7 +424,8 @@ describe('TtmlTextParser', () => {
|
|
|
406
424
|
'<body><div>' +
|
|
407
425
|
'<p begin="00:10:15:15" end="00:11:02:30">Test</p>' +
|
|
408
426
|
'</div></body></tt>',
|
|
409
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
427
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
428
|
+
{startTime: 615.5, endTime: 663});
|
|
410
429
|
});
|
|
411
430
|
|
|
412
431
|
it('supports time with frame rate multiplier', () => {
|
|
@@ -419,7 +438,8 @@ describe('TtmlTextParser', () => {
|
|
|
419
438
|
'<body><div>' +
|
|
420
439
|
'<p begin="00:10:15:15" end="00:11:02:30">Test</p>' +
|
|
421
440
|
'</div></body></tt>',
|
|
422
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
441
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
442
|
+
{startTime: 615.5, endTime: 663});
|
|
423
443
|
});
|
|
424
444
|
|
|
425
445
|
it('supports time with subframes', () => {
|
|
@@ -436,7 +456,8 @@ describe('TtmlTextParser', () => {
|
|
|
436
456
|
'<body><div>' +
|
|
437
457
|
'<p begin="00:10:15:15.1" end="00:11:02:29.2">Test</p>' +
|
|
438
458
|
'</div></body></tt>',
|
|
439
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
459
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
460
|
+
{startTime: Util.closeTo(615.5 + 1 / 60), endTime: 663});
|
|
440
461
|
});
|
|
441
462
|
|
|
442
463
|
it('supports time in frame format', () => {
|
|
@@ -449,7 +470,8 @@ describe('TtmlTextParser', () => {
|
|
|
449
470
|
'<body><div>' +
|
|
450
471
|
'<p begin="75f" end="300.3f">Test</p>' +
|
|
451
472
|
'</div></body></tt>',
|
|
452
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
473
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
474
|
+
{startTime: 2.5, endTime: Util.closeTo(10.01)});
|
|
453
475
|
});
|
|
454
476
|
|
|
455
477
|
it('supports time in tick format', () => {
|
|
@@ -462,7 +484,8 @@ describe('TtmlTextParser', () => {
|
|
|
462
484
|
'<body><div>' +
|
|
463
485
|
'<p begin="50t" end="60.2t">Test</p>' +
|
|
464
486
|
'</div></body></tt>',
|
|
465
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
487
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
488
|
+
{startTime: 5, endTime: Util.closeTo(6.02)});
|
|
466
489
|
});
|
|
467
490
|
|
|
468
491
|
it('supports time with duration', () => {
|
|
@@ -473,7 +496,39 @@ describe('TtmlTextParser', () => {
|
|
|
473
496
|
'<tt><body><div>' +
|
|
474
497
|
'<p begin="01:02.05" dur="5s">Test</p>' +
|
|
475
498
|
'</div></body></tt>',
|
|
476
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
499
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
500
|
+
{startTime: 62.05, endTime: 67.05});
|
|
501
|
+
});
|
|
502
|
+
|
|
503
|
+
it('supports comments in the body', () => {
|
|
504
|
+
verifyHelper(
|
|
505
|
+
[],
|
|
506
|
+
'<tt><body><div>' +
|
|
507
|
+
'<!-- text-based TTML -->' +
|
|
508
|
+
'</div></body></tt>',
|
|
509
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
510
|
+
{});
|
|
511
|
+
});
|
|
512
|
+
|
|
513
|
+
it('does not inherit regions', () => {
|
|
514
|
+
verifyHelper(
|
|
515
|
+
[
|
|
516
|
+
{
|
|
517
|
+
startTime: 62.05,
|
|
518
|
+
endTime: 3723.2,
|
|
519
|
+
payload: 'Test',
|
|
520
|
+
},
|
|
521
|
+
],
|
|
522
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
523
|
+
'<layout>' +
|
|
524
|
+
'<region xml:id="subtitleArea" />' +
|
|
525
|
+
'</layout>' +
|
|
526
|
+
'<body region="subtitleArea"><div>' +
|
|
527
|
+
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
528
|
+
'</div></body></tt>',
|
|
529
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
530
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
531
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
477
532
|
});
|
|
478
533
|
|
|
479
534
|
it('parses alignment from textAlign attribute of a region', () => {
|
|
@@ -493,7 +548,9 @@ describe('TtmlTextParser', () => {
|
|
|
493
548
|
'<body region="subtitleArea"><div>' +
|
|
494
549
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
495
550
|
'</div></body></tt>',
|
|
496
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
551
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
552
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
553
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
497
554
|
});
|
|
498
555
|
|
|
499
556
|
it('allows non-standard namespace names', () => {
|
|
@@ -513,7 +570,9 @@ describe('TtmlTextParser', () => {
|
|
|
513
570
|
'<body region="subtitleArea"><div>' +
|
|
514
571
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
515
572
|
'</div></body></tt>',
|
|
516
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
573
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
574
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
575
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
517
576
|
});
|
|
518
577
|
|
|
519
578
|
it('parses alignment from <style> block with id on region', () => {
|
|
@@ -536,7 +595,9 @@ describe('TtmlTextParser', () => {
|
|
|
536
595
|
'<body region="subtitleArea"><div>' +
|
|
537
596
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
538
597
|
'</div></body></tt>',
|
|
539
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
598
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
599
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
600
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
540
601
|
});
|
|
541
602
|
|
|
542
603
|
it('parses alignment from <style> block with id on p', () => {
|
|
@@ -559,7 +620,9 @@ describe('TtmlTextParser', () => {
|
|
|
559
620
|
'<body region="subtitleArea"><div>' +
|
|
560
621
|
'<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
|
|
561
622
|
'</div></body></tt>',
|
|
562
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
623
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
624
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
625
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
563
626
|
});
|
|
564
627
|
|
|
565
628
|
it('supports region settings for horizontal text', () => {
|
|
@@ -569,13 +632,6 @@ describe('TtmlTextParser', () => {
|
|
|
569
632
|
startTime: 62.05,
|
|
570
633
|
endTime: 3723.2,
|
|
571
634
|
payload: 'Test',
|
|
572
|
-
region: {
|
|
573
|
-
id: 'subtitleArea',
|
|
574
|
-
viewportAnchorX: 50,
|
|
575
|
-
viewportAnchorY: 16,
|
|
576
|
-
width: 100,
|
|
577
|
-
height: 100,
|
|
578
|
-
},
|
|
579
635
|
},
|
|
580
636
|
],
|
|
581
637
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -585,7 +641,18 @@ describe('TtmlTextParser', () => {
|
|
|
585
641
|
'<body region="subtitleArea"><div>' +
|
|
586
642
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
587
643
|
'</div></body></tt>',
|
|
588
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
644
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
645
|
+
{
|
|
646
|
+
region: {
|
|
647
|
+
id: 'subtitleArea',
|
|
648
|
+
viewportAnchorX: 50,
|
|
649
|
+
viewportAnchorY: 16,
|
|
650
|
+
width: 100,
|
|
651
|
+
height: 100,
|
|
652
|
+
},
|
|
653
|
+
startTime: 62.05,
|
|
654
|
+
endTime: 3723.2,
|
|
655
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
589
656
|
|
|
590
657
|
verifyHelper(
|
|
591
658
|
[
|
|
@@ -593,12 +660,6 @@ describe('TtmlTextParser', () => {
|
|
|
593
660
|
startTime: 62.05,
|
|
594
661
|
endTime: 3723.2,
|
|
595
662
|
payload: 'Test',
|
|
596
|
-
region: {
|
|
597
|
-
viewportAnchorX: 50,
|
|
598
|
-
viewportAnchorY: 16,
|
|
599
|
-
width: 100,
|
|
600
|
-
height: 100,
|
|
601
|
-
},
|
|
602
663
|
},
|
|
603
664
|
],
|
|
604
665
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -609,7 +670,17 @@ describe('TtmlTextParser', () => {
|
|
|
609
670
|
'<body region="subtitleArea"><div>' +
|
|
610
671
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
611
672
|
'</div></body></tt>',
|
|
612
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
673
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
674
|
+
{
|
|
675
|
+
region: {
|
|
676
|
+
viewportAnchorX: 50,
|
|
677
|
+
viewportAnchorY: 16,
|
|
678
|
+
width: 100,
|
|
679
|
+
height: 100,
|
|
680
|
+
},
|
|
681
|
+
startTime: 62.05,
|
|
682
|
+
endTime: 3723.2,
|
|
683
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
613
684
|
|
|
614
685
|
verifyHelper(
|
|
615
686
|
[
|
|
@@ -617,12 +688,6 @@ describe('TtmlTextParser', () => {
|
|
|
617
688
|
startTime: 62.05,
|
|
618
689
|
endTime: 3723.2,
|
|
619
690
|
payload: 'Test',
|
|
620
|
-
region: {
|
|
621
|
-
viewportAnchorX: 50,
|
|
622
|
-
viewportAnchorY: 16,
|
|
623
|
-
width: 100,
|
|
624
|
-
height: 100,
|
|
625
|
-
},
|
|
626
691
|
},
|
|
627
692
|
],
|
|
628
693
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -633,7 +698,17 @@ describe('TtmlTextParser', () => {
|
|
|
633
698
|
'<body region="subtitleArea"><div>' +
|
|
634
699
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
635
700
|
'</div></body></tt>',
|
|
636
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
701
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
702
|
+
{
|
|
703
|
+
region: {
|
|
704
|
+
viewportAnchorX: 50,
|
|
705
|
+
viewportAnchorY: 16,
|
|
706
|
+
width: 100,
|
|
707
|
+
height: 100,
|
|
708
|
+
},
|
|
709
|
+
startTime: 62.05,
|
|
710
|
+
endTime: 3723.2,
|
|
711
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
637
712
|
});
|
|
638
713
|
|
|
639
714
|
it('supports region settings in pixels (origin)', () => {
|
|
@@ -643,19 +718,6 @@ describe('TtmlTextParser', () => {
|
|
|
643
718
|
startTime: 62.05,
|
|
644
719
|
endTime: 3723.2,
|
|
645
720
|
payload: 'Test',
|
|
646
|
-
region: {
|
|
647
|
-
id: 'subtitleArea',
|
|
648
|
-
viewportAnchorX: 50,
|
|
649
|
-
viewportAnchorY: 16,
|
|
650
|
-
regionAnchorX: 0,
|
|
651
|
-
regionAnchorY: 0,
|
|
652
|
-
width: 100,
|
|
653
|
-
height: 100,
|
|
654
|
-
heightUnits: CueRegion.units.PERCENTAGE,
|
|
655
|
-
widthUnits: CueRegion.units.PERCENTAGE,
|
|
656
|
-
viewportAnchorUnits: CueRegion.units.PX,
|
|
657
|
-
scroll: CueRegion.scrollMode.NONE,
|
|
658
|
-
},
|
|
659
721
|
},
|
|
660
722
|
],
|
|
661
723
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -665,7 +727,24 @@ describe('TtmlTextParser', () => {
|
|
|
665
727
|
'<body region="subtitleArea"><div>' +
|
|
666
728
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
667
729
|
'</div></body></tt>',
|
|
668
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
730
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
731
|
+
{
|
|
732
|
+
region: {
|
|
733
|
+
id: 'subtitleArea',
|
|
734
|
+
viewportAnchorX: 50,
|
|
735
|
+
viewportAnchorY: 16,
|
|
736
|
+
regionAnchorX: 0,
|
|
737
|
+
regionAnchorY: 0,
|
|
738
|
+
width: 100,
|
|
739
|
+
height: 100,
|
|
740
|
+
heightUnits: CueRegion.units.PERCENTAGE,
|
|
741
|
+
widthUnits: CueRegion.units.PERCENTAGE,
|
|
742
|
+
viewportAnchorUnits: CueRegion.units.PX,
|
|
743
|
+
scroll: CueRegion.scrollMode.NONE,
|
|
744
|
+
},
|
|
745
|
+
startTime: 62.05,
|
|
746
|
+
endTime: 3723.2,
|
|
747
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
669
748
|
});
|
|
670
749
|
|
|
671
750
|
it('supports region settings in pixels (extent)', () => {
|
|
@@ -675,19 +754,6 @@ describe('TtmlTextParser', () => {
|
|
|
675
754
|
startTime: 62.05,
|
|
676
755
|
endTime: 3723.2,
|
|
677
756
|
payload: 'Test',
|
|
678
|
-
region: {
|
|
679
|
-
id: 'subtitleArea',
|
|
680
|
-
viewportAnchorX: 0,
|
|
681
|
-
viewportAnchorY: 0,
|
|
682
|
-
regionAnchorX: 0,
|
|
683
|
-
regionAnchorY: 0,
|
|
684
|
-
width: 50,
|
|
685
|
-
height: 16,
|
|
686
|
-
heightUnits: CueRegion.units.PX,
|
|
687
|
-
widthUnits: CueRegion.units.PX,
|
|
688
|
-
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
689
|
-
scroll: CueRegion.scrollMode.NONE,
|
|
690
|
-
},
|
|
691
757
|
},
|
|
692
758
|
],
|
|
693
759
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -697,7 +763,24 @@ describe('TtmlTextParser', () => {
|
|
|
697
763
|
'<body region="subtitleArea"><div>' +
|
|
698
764
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
699
765
|
'</div></body></tt>',
|
|
700
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
766
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
767
|
+
{
|
|
768
|
+
region: {
|
|
769
|
+
id: 'subtitleArea',
|
|
770
|
+
viewportAnchorX: 0,
|
|
771
|
+
viewportAnchorY: 0,
|
|
772
|
+
regionAnchorX: 0,
|
|
773
|
+
regionAnchorY: 0,
|
|
774
|
+
width: 50,
|
|
775
|
+
height: 16,
|
|
776
|
+
heightUnits: CueRegion.units.PX,
|
|
777
|
+
widthUnits: CueRegion.units.PX,
|
|
778
|
+
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
779
|
+
scroll: CueRegion.scrollMode.NONE,
|
|
780
|
+
},
|
|
781
|
+
startTime: 62.05,
|
|
782
|
+
endTime: 3723.2,
|
|
783
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
701
784
|
});
|
|
702
785
|
|
|
703
786
|
it('supports region settings in pixels: origin (with global extent)', () => {
|
|
@@ -707,19 +790,6 @@ describe('TtmlTextParser', () => {
|
|
|
707
790
|
startTime: 62.05,
|
|
708
791
|
endTime: 3723.2,
|
|
709
792
|
payload: 'Test',
|
|
710
|
-
region: {
|
|
711
|
-
id: 'subtitleArea',
|
|
712
|
-
viewportAnchorX: 10,
|
|
713
|
-
viewportAnchorY: 10,
|
|
714
|
-
regionAnchorX: 0,
|
|
715
|
-
regionAnchorY: 0,
|
|
716
|
-
width: 100,
|
|
717
|
-
height: 100,
|
|
718
|
-
heightUnits: CueRegion.units.PERCENTAGE,
|
|
719
|
-
widthUnits: CueRegion.units.PERCENTAGE,
|
|
720
|
-
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
721
|
-
scroll: CueRegion.scrollMode.NONE,
|
|
722
|
-
},
|
|
723
793
|
},
|
|
724
794
|
],
|
|
725
795
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling" tts:extent="1920px 1080px">' +
|
|
@@ -729,7 +799,24 @@ describe('TtmlTextParser', () => {
|
|
|
729
799
|
'<body region="subtitleArea"><div>' +
|
|
730
800
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
731
801
|
'</div></body></tt>',
|
|
732
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
802
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
803
|
+
{
|
|
804
|
+
region: {
|
|
805
|
+
id: 'subtitleArea',
|
|
806
|
+
viewportAnchorX: 10,
|
|
807
|
+
viewportAnchorY: 10,
|
|
808
|
+
regionAnchorX: 0,
|
|
809
|
+
regionAnchorY: 0,
|
|
810
|
+
width: 100,
|
|
811
|
+
height: 100,
|
|
812
|
+
heightUnits: CueRegion.units.PERCENTAGE,
|
|
813
|
+
widthUnits: CueRegion.units.PERCENTAGE,
|
|
814
|
+
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
815
|
+
scroll: CueRegion.scrollMode.NONE,
|
|
816
|
+
},
|
|
817
|
+
startTime: 62.05,
|
|
818
|
+
endTime: 3723.2,
|
|
819
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
733
820
|
});
|
|
734
821
|
|
|
735
822
|
it('supports region settings in pixels: extent (with global extent)', () => {
|
|
@@ -739,19 +826,6 @@ describe('TtmlTextParser', () => {
|
|
|
739
826
|
startTime: 62.05,
|
|
740
827
|
endTime: 3723.2,
|
|
741
828
|
payload: 'Test',
|
|
742
|
-
region: {
|
|
743
|
-
id: 'subtitleArea',
|
|
744
|
-
viewportAnchorX: 0,
|
|
745
|
-
viewportAnchorY: 0,
|
|
746
|
-
regionAnchorX: 0,
|
|
747
|
-
regionAnchorY: 0,
|
|
748
|
-
width: 30,
|
|
749
|
-
height: 30,
|
|
750
|
-
heightUnits: CueRegion.units.PERCENTAGE,
|
|
751
|
-
widthUnits: CueRegion.units.PERCENTAGE,
|
|
752
|
-
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
753
|
-
scroll: CueRegion.scrollMode.NONE,
|
|
754
|
-
},
|
|
755
829
|
},
|
|
756
830
|
],
|
|
757
831
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling" tts:extent="1920px 1080px">' +
|
|
@@ -762,7 +836,24 @@ describe('TtmlTextParser', () => {
|
|
|
762
836
|
'<body region="subtitleArea"><div>' +
|
|
763
837
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
764
838
|
'</div></body></tt>',
|
|
765
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
839
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
840
|
+
{
|
|
841
|
+
region: {
|
|
842
|
+
id: 'subtitleArea',
|
|
843
|
+
viewportAnchorX: 0,
|
|
844
|
+
viewportAnchorY: 0,
|
|
845
|
+
regionAnchorX: 0,
|
|
846
|
+
regionAnchorY: 0,
|
|
847
|
+
width: 30,
|
|
848
|
+
height: 30,
|
|
849
|
+
heightUnits: CueRegion.units.PERCENTAGE,
|
|
850
|
+
widthUnits: CueRegion.units.PERCENTAGE,
|
|
851
|
+
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
852
|
+
scroll: CueRegion.scrollMode.NONE,
|
|
853
|
+
},
|
|
854
|
+
startTime: 62.05,
|
|
855
|
+
endTime: 3723.2,
|
|
856
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
766
857
|
});
|
|
767
858
|
|
|
768
859
|
it('supports region settings in percentage (origin)', () => {
|
|
@@ -772,29 +863,34 @@ describe('TtmlTextParser', () => {
|
|
|
772
863
|
startTime: 62.05,
|
|
773
864
|
endTime: 3723.2,
|
|
774
865
|
payload: 'Test',
|
|
775
|
-
region: {
|
|
776
|
-
id: 'subtitleArea',
|
|
777
|
-
viewportAnchorX: 50,
|
|
778
|
-
viewportAnchorY: 16,
|
|
779
|
-
regionAnchorX: 0,
|
|
780
|
-
regionAnchorY: 0,
|
|
781
|
-
width: 100,
|
|
782
|
-
height: 100,
|
|
783
|
-
heightUnits: CueRegion.units.PERCENTAGE,
|
|
784
|
-
widthUnits: CueRegion.units.PERCENTAGE,
|
|
785
|
-
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
786
|
-
scroll: CueRegion.scrollMode.NONE,
|
|
787
|
-
},
|
|
788
866
|
},
|
|
789
867
|
],
|
|
790
|
-
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling"
|
|
868
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling" ' +
|
|
869
|
+
'tts:extent="1920px 1080px">' +
|
|
791
870
|
'<layout>' +
|
|
792
871
|
'<region xml:id="subtitleArea" tts:origin="50% 16%"/>' +
|
|
793
872
|
'</layout>' +
|
|
794
873
|
'<body region="subtitleArea"><div>' +
|
|
795
874
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
796
875
|
'</div></body></tt>',
|
|
797
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
876
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
877
|
+
{
|
|
878
|
+
region: {
|
|
879
|
+
id: 'subtitleArea',
|
|
880
|
+
viewportAnchorX: 50,
|
|
881
|
+
viewportAnchorY: 16,
|
|
882
|
+
regionAnchorX: 0,
|
|
883
|
+
regionAnchorY: 0,
|
|
884
|
+
width: 100,
|
|
885
|
+
height: 100,
|
|
886
|
+
heightUnits: CueRegion.units.PERCENTAGE,
|
|
887
|
+
widthUnits: CueRegion.units.PERCENTAGE,
|
|
888
|
+
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
889
|
+
scroll: CueRegion.scrollMode.NONE,
|
|
890
|
+
},
|
|
891
|
+
startTime: 62.05,
|
|
892
|
+
endTime: 3723.2,
|
|
893
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
798
894
|
});
|
|
799
895
|
|
|
800
896
|
it('supports region settings in percentage (extent)', () => {
|
|
@@ -804,22 +900,10 @@ describe('TtmlTextParser', () => {
|
|
|
804
900
|
startTime: 62.05,
|
|
805
901
|
endTime: 3723.2,
|
|
806
902
|
payload: 'Test',
|
|
807
|
-
region: {
|
|
808
|
-
id: 'subtitleArea',
|
|
809
|
-
viewportAnchorX: 0,
|
|
810
|
-
viewportAnchorY: 0,
|
|
811
|
-
regionAnchorX: 0,
|
|
812
|
-
regionAnchorY: 0,
|
|
813
|
-
width: 50,
|
|
814
|
-
height: 16,
|
|
815
|
-
heightUnits: CueRegion.units.PERCENTAGE,
|
|
816
|
-
widthUnits: CueRegion.units.PERCENTAGE,
|
|
817
|
-
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
818
|
-
scroll: CueRegion.scrollMode.NONE,
|
|
819
|
-
},
|
|
820
903
|
},
|
|
821
904
|
],
|
|
822
|
-
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling"
|
|
905
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling" ' +
|
|
906
|
+
'tts:extent="1920px 1080px">' +
|
|
823
907
|
'<layout>' +
|
|
824
908
|
'<region xml:id="subtitleArea" tts:extent="50% 16%" ' +
|
|
825
909
|
'tts:writingMode="lrtb" />' +
|
|
@@ -827,7 +911,24 @@ describe('TtmlTextParser', () => {
|
|
|
827
911
|
'<body region="subtitleArea"><div>' +
|
|
828
912
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
829
913
|
'</div></body></tt>',
|
|
830
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
914
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
915
|
+
{
|
|
916
|
+
region: {
|
|
917
|
+
id: 'subtitleArea',
|
|
918
|
+
viewportAnchorX: 0,
|
|
919
|
+
viewportAnchorY: 0,
|
|
920
|
+
regionAnchorX: 0,
|
|
921
|
+
regionAnchorY: 0,
|
|
922
|
+
width: 50,
|
|
923
|
+
height: 16,
|
|
924
|
+
heightUnits: CueRegion.units.PERCENTAGE,
|
|
925
|
+
widthUnits: CueRegion.units.PERCENTAGE,
|
|
926
|
+
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
927
|
+
scroll: CueRegion.scrollMode.NONE,
|
|
928
|
+
},
|
|
929
|
+
startTime: 62.05,
|
|
930
|
+
endTime: 3723.2,
|
|
931
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
831
932
|
});
|
|
832
933
|
|
|
833
934
|
it('supports region settings for vertical text', () => {
|
|
@@ -837,13 +938,6 @@ describe('TtmlTextParser', () => {
|
|
|
837
938
|
startTime: 62.05,
|
|
838
939
|
endTime: 3723.2,
|
|
839
940
|
payload: 'Test',
|
|
840
|
-
region: {
|
|
841
|
-
id: 'subtitleArea',
|
|
842
|
-
viewportAnchorX: 50,
|
|
843
|
-
viewportAnchorY: 16,
|
|
844
|
-
width: 100,
|
|
845
|
-
height: 100,
|
|
846
|
-
},
|
|
847
941
|
},
|
|
848
942
|
],
|
|
849
943
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -854,7 +948,18 @@ describe('TtmlTextParser', () => {
|
|
|
854
948
|
'<body region="subtitleArea"><div>' +
|
|
855
949
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
856
950
|
'</div></body></tt>',
|
|
857
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
951
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
952
|
+
{
|
|
953
|
+
region: {
|
|
954
|
+
id: 'subtitleArea',
|
|
955
|
+
viewportAnchorX: 50,
|
|
956
|
+
viewportAnchorY: 16,
|
|
957
|
+
width: 100,
|
|
958
|
+
height: 100,
|
|
959
|
+
},
|
|
960
|
+
startTime: 62.05,
|
|
961
|
+
endTime: 3723.2,
|
|
962
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
858
963
|
|
|
859
964
|
verifyHelper(
|
|
860
965
|
[
|
|
@@ -862,12 +967,6 @@ describe('TtmlTextParser', () => {
|
|
|
862
967
|
startTime: 62.05,
|
|
863
968
|
endTime: 3723.2,
|
|
864
969
|
payload: 'Test',
|
|
865
|
-
region: {
|
|
866
|
-
viewportAnchorX: 50,
|
|
867
|
-
viewportAnchorY: 16,
|
|
868
|
-
width: 100,
|
|
869
|
-
height: 100,
|
|
870
|
-
},
|
|
871
970
|
},
|
|
872
971
|
],
|
|
873
972
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -878,7 +977,17 @@ describe('TtmlTextParser', () => {
|
|
|
878
977
|
'<body region="subtitleArea"><div>' +
|
|
879
978
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
880
979
|
'</div></body></tt>',
|
|
881
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
980
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
981
|
+
{
|
|
982
|
+
region: {
|
|
983
|
+
viewportAnchorX: 50,
|
|
984
|
+
viewportAnchorY: 16,
|
|
985
|
+
width: 100,
|
|
986
|
+
height: 100,
|
|
987
|
+
},
|
|
988
|
+
startTime: 62.05,
|
|
989
|
+
endTime: 3723.2,
|
|
990
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
882
991
|
|
|
883
992
|
verifyHelper(
|
|
884
993
|
[
|
|
@@ -886,12 +995,6 @@ describe('TtmlTextParser', () => {
|
|
|
886
995
|
startTime: 62.05,
|
|
887
996
|
endTime: 3723.2,
|
|
888
997
|
payload: 'Test',
|
|
889
|
-
region: {
|
|
890
|
-
viewportAnchorX: 50,
|
|
891
|
-
viewportAnchorY: 16,
|
|
892
|
-
width: 100,
|
|
893
|
-
height: 100,
|
|
894
|
-
},
|
|
895
998
|
},
|
|
896
999
|
],
|
|
897
1000
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -902,7 +1005,17 @@ describe('TtmlTextParser', () => {
|
|
|
902
1005
|
'<body region="subtitleArea"><div>' +
|
|
903
1006
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
904
1007
|
'</div></body></tt>',
|
|
905
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1008
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1009
|
+
{
|
|
1010
|
+
region: {
|
|
1011
|
+
viewportAnchorX: 50,
|
|
1012
|
+
viewportAnchorY: 16,
|
|
1013
|
+
width: 100,
|
|
1014
|
+
height: 100,
|
|
1015
|
+
},
|
|
1016
|
+
startTime: 62.05,
|
|
1017
|
+
endTime: 3723.2,
|
|
1018
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
906
1019
|
});
|
|
907
1020
|
|
|
908
1021
|
it('supports percentages containing decimals', () => {
|
|
@@ -912,13 +1025,6 @@ describe('TtmlTextParser', () => {
|
|
|
912
1025
|
startTime: 62.05,
|
|
913
1026
|
endTime: 3723.2,
|
|
914
1027
|
payload: 'Test',
|
|
915
|
-
region: {
|
|
916
|
-
id: 'subtitleArea',
|
|
917
|
-
viewportAnchorX: 12.2,
|
|
918
|
-
viewportAnchorY: 50.005,
|
|
919
|
-
width: 100,
|
|
920
|
-
height: 100,
|
|
921
|
-
},
|
|
922
1028
|
},
|
|
923
1029
|
],
|
|
924
1030
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -929,7 +1035,18 @@ describe('TtmlTextParser', () => {
|
|
|
929
1035
|
'<body region="subtitleArea"><div>' +
|
|
930
1036
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
931
1037
|
'</div></body></tt>',
|
|
932
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1038
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1039
|
+
{
|
|
1040
|
+
region: {
|
|
1041
|
+
id: 'subtitleArea',
|
|
1042
|
+
viewportAnchorX: 12.2,
|
|
1043
|
+
viewportAnchorY: 50.005,
|
|
1044
|
+
width: 100,
|
|
1045
|
+
height: 100,
|
|
1046
|
+
},
|
|
1047
|
+
startTime: 62.05,
|
|
1048
|
+
endTime: 3723.2,
|
|
1049
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
933
1050
|
});
|
|
934
1051
|
|
|
935
1052
|
it('supports writingMode setting', () => {
|
|
@@ -950,7 +1067,9 @@ describe('TtmlTextParser', () => {
|
|
|
950
1067
|
'<body region="subtitleArea"><div>' +
|
|
951
1068
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
952
1069
|
'</div></body></tt>',
|
|
953
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1070
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1071
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1072
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
954
1073
|
|
|
955
1074
|
verifyHelper(
|
|
956
1075
|
[
|
|
@@ -969,7 +1088,9 @@ describe('TtmlTextParser', () => {
|
|
|
969
1088
|
'<body region="subtitleArea"><div>' +
|
|
970
1089
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
971
1090
|
'</div></body></tt>',
|
|
972
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1091
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1092
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1093
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
973
1094
|
|
|
974
1095
|
verifyHelper(
|
|
975
1096
|
[
|
|
@@ -988,7 +1109,9 @@ describe('TtmlTextParser', () => {
|
|
|
988
1109
|
'<body region="subtitleArea"><div>' +
|
|
989
1110
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
990
1111
|
'</div></body></tt>',
|
|
991
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1112
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1113
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1114
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
992
1115
|
|
|
993
1116
|
verifyHelper(
|
|
994
1117
|
[
|
|
@@ -1007,7 +1130,9 @@ describe('TtmlTextParser', () => {
|
|
|
1007
1130
|
'<body region="subtitleArea"><div>' +
|
|
1008
1131
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
1009
1132
|
'</div></body></tt>',
|
|
1010
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1133
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1134
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1135
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1011
1136
|
|
|
1012
1137
|
verifyHelper(
|
|
1013
1138
|
[
|
|
@@ -1026,7 +1151,9 @@ describe('TtmlTextParser', () => {
|
|
|
1026
1151
|
'<body region="subtitleArea"><div>' +
|
|
1027
1152
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
1028
1153
|
'</div></body></tt>',
|
|
1029
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1154
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1155
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1156
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1030
1157
|
});
|
|
1031
1158
|
|
|
1032
1159
|
it('disregards empty divs and ps', () => {
|
|
@@ -1042,7 +1169,8 @@ describe('TtmlTextParser', () => {
|
|
|
1042
1169
|
'<div></div>' +
|
|
1043
1170
|
'</body>' +
|
|
1044
1171
|
'</tt>',
|
|
1045
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1172
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1173
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1046
1174
|
|
|
1047
1175
|
verifyHelper(
|
|
1048
1176
|
[
|
|
@@ -1056,7 +1184,8 @@ describe('TtmlTextParser', () => {
|
|
|
1056
1184
|
'</div>' +
|
|
1057
1185
|
'</body>' +
|
|
1058
1186
|
'</tt>',
|
|
1059
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1187
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1188
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1060
1189
|
|
|
1061
1190
|
verifyHelper(
|
|
1062
1191
|
[],
|
|
@@ -1068,7 +1197,8 @@ describe('TtmlTextParser', () => {
|
|
|
1068
1197
|
'<div></div>' +
|
|
1069
1198
|
'</body>' +
|
|
1070
1199
|
'</tt>',
|
|
1071
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1200
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1201
|
+
{});
|
|
1072
1202
|
});
|
|
1073
1203
|
|
|
1074
1204
|
it('should let empty paragraphs with begin or end attributes through', () => {
|
|
@@ -1084,7 +1214,8 @@ describe('TtmlTextParser', () => {
|
|
|
1084
1214
|
'</div>' +
|
|
1085
1215
|
'</body>' +
|
|
1086
1216
|
'</tt>',
|
|
1087
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1217
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1218
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1088
1219
|
});
|
|
1089
1220
|
|
|
1090
1221
|
it('supports smpte:backgroundImage attribute', () => {
|
|
@@ -1094,7 +1225,6 @@ describe('TtmlTextParser', () => {
|
|
|
1094
1225
|
startTime: 62.05,
|
|
1095
1226
|
endTime: 3723.2,
|
|
1096
1227
|
payload: '',
|
|
1097
|
-
backgroundImage: 'data:image/png;base64,base64EncodedImage',
|
|
1098
1228
|
},
|
|
1099
1229
|
],
|
|
1100
1230
|
'<tt ' +
|
|
@@ -1107,19 +1237,19 @@ describe('TtmlTextParser', () => {
|
|
|
1107
1237
|
'<body><div smpte:backgroundImage="#img_0">' +
|
|
1108
1238
|
'<p begin="01:02.05" end="01:02:03.200"></p>' +
|
|
1109
1239
|
'</div></body></tt>',
|
|
1110
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1240
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1241
|
+
{startTime: 62.05, endTime: 3723.2},
|
|
1242
|
+
{
|
|
1243
|
+
startTime: 62.05,
|
|
1244
|
+
endTime: 3723.2,
|
|
1245
|
+
backgroundImage: 'data:image/png;base64,base64EncodedImage',
|
|
1246
|
+
isContainer: false,
|
|
1247
|
+
});
|
|
1111
1248
|
});
|
|
1112
1249
|
|
|
1113
1250
|
it('supports smpte:backgroundImage attribute in div element', () => {
|
|
1114
1251
|
verifyHelper(
|
|
1115
|
-
[
|
|
1116
|
-
{
|
|
1117
|
-
startTime: 0,
|
|
1118
|
-
endTime: 62.05,
|
|
1119
|
-
payload: '',
|
|
1120
|
-
backgroundImage: 'data:image/png;base64,base64EncodedImage',
|
|
1121
|
-
},
|
|
1122
|
-
],
|
|
1252
|
+
[],
|
|
1123
1253
|
'<tt ' +
|
|
1124
1254
|
'xmlns:ttm="http://www.w3.org/ns/ttml#metadata" ' +
|
|
1125
1255
|
'xmlns:smpte="http://www.smpte-ra.org/schemas/2052-1/2010/smpte-tt">' +
|
|
@@ -1130,7 +1260,14 @@ describe('TtmlTextParser', () => {
|
|
|
1130
1260
|
'<body><div begin="00:00.00" end="01:02.05" '+
|
|
1131
1261
|
'smpte:backgroundImage="#img_0"></div>' +
|
|
1132
1262
|
'</body></tt>',
|
|
1133
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1263
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1264
|
+
{startTime: 0, endTime: 62.05},
|
|
1265
|
+
{
|
|
1266
|
+
startTime: 0,
|
|
1267
|
+
endTime: 62.05,
|
|
1268
|
+
backgroundImage: 'data:image/png;base64,base64EncodedImage',
|
|
1269
|
+
isContainer: false,
|
|
1270
|
+
});
|
|
1134
1271
|
});
|
|
1135
1272
|
|
|
1136
1273
|
it('supports smpte:backgroundImage attribute alt namespace', () => {
|
|
@@ -1154,7 +1291,8 @@ describe('TtmlTextParser', () => {
|
|
|
1154
1291
|
'<p begin="01:02.05" end="01:02:03.200" ' +
|
|
1155
1292
|
'smpte:backgroundImage="#img_0" />' +
|
|
1156
1293
|
'</div></body></tt>',
|
|
1157
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1294
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1295
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1158
1296
|
});
|
|
1159
1297
|
|
|
1160
1298
|
it('inserts line breaks for <br> tags', () => {
|
|
@@ -1182,7 +1320,8 @@ describe('TtmlTextParser', () => {
|
|
|
1182
1320
|
'<tt><body><div>' +
|
|
1183
1321
|
'<p begin="01:02.05" end="01:02:03.200">Line1<br/>Line2</p>' +
|
|
1184
1322
|
'</div></body></tt>',
|
|
1185
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1323
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1324
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1186
1325
|
|
|
1187
1326
|
verifyHelper(
|
|
1188
1327
|
[{
|
|
@@ -1215,7 +1354,36 @@ describe('TtmlTextParser', () => {
|
|
|
1215
1354
|
'<span>Line1<br/>Line2</span>' +
|
|
1216
1355
|
'</p>' +
|
|
1217
1356
|
'</div></body></tt>',
|
|
1218
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1357
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1358
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1359
|
+
});
|
|
1360
|
+
|
|
1361
|
+
it('allows old-standard namespace', () => {
|
|
1362
|
+
verifyHelper(
|
|
1363
|
+
[
|
|
1364
|
+
{
|
|
1365
|
+
startTime: 1,
|
|
1366
|
+
endTime: 2,
|
|
1367
|
+
payload: 'Test',
|
|
1368
|
+
cellResolution: {
|
|
1369
|
+
columns: 60,
|
|
1370
|
+
rows: 20,
|
|
1371
|
+
},
|
|
1372
|
+
fontSize: '67%',
|
|
1373
|
+
},
|
|
1374
|
+
],
|
|
1375
|
+
'<tt ' +
|
|
1376
|
+
'xmlns:ttp="http://www.w3.org/2006/10/ttaf1#parameter" ' +
|
|
1377
|
+
'xmlns:tts="http://www.w3.org/2006/10/ttaf1#styling" ' +
|
|
1378
|
+
'ttp:cellResolution="60 20">' +
|
|
1379
|
+
'<styling>' +
|
|
1380
|
+
'<style xml:id="s1" tts:fontSize="67%"/>' +
|
|
1381
|
+
'</styling>' +
|
|
1382
|
+
'<body><div>' +
|
|
1383
|
+
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1384
|
+
'</div></body></tt>',
|
|
1385
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1386
|
+
{startTime: 1, endTime: 2});
|
|
1219
1387
|
});
|
|
1220
1388
|
|
|
1221
1389
|
it('parses cue alignment from textAlign attribute', () => {
|
|
@@ -1240,7 +1408,9 @@ describe('TtmlTextParser', () => {
|
|
|
1240
1408
|
'<body region="subtitleArea"><div>' +
|
|
1241
1409
|
'<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
|
|
1242
1410
|
'</div></body></tt>',
|
|
1243
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1411
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1412
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1413
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1244
1414
|
});
|
|
1245
1415
|
|
|
1246
1416
|
it('parses text style information', () => {
|
|
@@ -1257,6 +1427,8 @@ describe('TtmlTextParser', () => {
|
|
|
1257
1427
|
fontStyle: Cue.fontStyle.ITALIC,
|
|
1258
1428
|
lineHeight: '20px',
|
|
1259
1429
|
fontSize: '10em',
|
|
1430
|
+
textStrokeColor: 'blue',
|
|
1431
|
+
textStrokeWidth: '3px',
|
|
1260
1432
|
},
|
|
1261
1433
|
{
|
|
1262
1434
|
startTime: 2,
|
|
@@ -1268,6 +1440,7 @@ describe('TtmlTextParser', () => {
|
|
|
1268
1440
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
1269
1441
|
'<styling>' +
|
|
1270
1442
|
'<style xml:id="s1" tts:color="red" ' +
|
|
1443
|
+
'tts:textOutline="blue 3px" ' +
|
|
1271
1444
|
'tts:backgroundColor="blue" ' +
|
|
1272
1445
|
'tts:fontWeight="bold" ' +
|
|
1273
1446
|
'tts:fontFamily="Times New Roman" ' +
|
|
@@ -1283,7 +1456,55 @@ describe('TtmlTextParser', () => {
|
|
|
1283
1456
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1284
1457
|
'<p begin="00:02.00" end="00:04.00" style="s2">Test 2</p>' +
|
|
1285
1458
|
'</div></body></tt>',
|
|
1286
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1459
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1460
|
+
{startTime: 1, endTime: 4, region: {id: 'subtitleArea'}},
|
|
1461
|
+
{startTime: 1, endTime: 4});
|
|
1462
|
+
});
|
|
1463
|
+
|
|
1464
|
+
it('uses text color if tts:textOutline does not specify color', () => {
|
|
1465
|
+
verifyHelper(
|
|
1466
|
+
[
|
|
1467
|
+
{
|
|
1468
|
+
startTime: 1,
|
|
1469
|
+
endTime: 2,
|
|
1470
|
+
payload: 'Test',
|
|
1471
|
+
color: 'red',
|
|
1472
|
+
textStrokeColor: 'red',
|
|
1473
|
+
textStrokeWidth: '3px',
|
|
1474
|
+
},
|
|
1475
|
+
],
|
|
1476
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
1477
|
+
'<styling>' +
|
|
1478
|
+
'<style xml:id="s1" tts:color="red" ' +
|
|
1479
|
+
'tts:textOutline="3px" />' +
|
|
1480
|
+
'</styling>' +
|
|
1481
|
+
'<body region="subtitleArea"><div>' +
|
|
1482
|
+
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1483
|
+
'</div></body></tt>',
|
|
1484
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1485
|
+
{startTime: 1, endTime: 2});
|
|
1486
|
+
});
|
|
1487
|
+
|
|
1488
|
+
it('does not add an outline if tts:textOutline only contains color', () => {
|
|
1489
|
+
verifyHelper(
|
|
1490
|
+
[
|
|
1491
|
+
{
|
|
1492
|
+
startTime: 1,
|
|
1493
|
+
endTime: 2,
|
|
1494
|
+
payload: 'Test',
|
|
1495
|
+
color: 'red',
|
|
1496
|
+
},
|
|
1497
|
+
],
|
|
1498
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
1499
|
+
'<styling>' +
|
|
1500
|
+
'<style xml:id="s1" tts:color="red" ' +
|
|
1501
|
+
'tts:textOutline="blue" />' +
|
|
1502
|
+
'</styling>' +
|
|
1503
|
+
'<body region="subtitleArea"><div>' +
|
|
1504
|
+
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1505
|
+
'</div></body></tt>',
|
|
1506
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1507
|
+
{startTime: 1, endTime: 2});
|
|
1287
1508
|
});
|
|
1288
1509
|
|
|
1289
1510
|
// Regression test for #2623
|
|
@@ -1319,7 +1540,8 @@ describe('TtmlTextParser', () => {
|
|
|
1319
1540
|
'<span style="s1">Test</span>' +
|
|
1320
1541
|
'</p>' +
|
|
1321
1542
|
'</div></body></tt>',
|
|
1322
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1543
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1544
|
+
{startTime: 1, endTime: 2});
|
|
1323
1545
|
});
|
|
1324
1546
|
|
|
1325
1547
|
it('parses wrapping option', () => {
|
|
@@ -1342,7 +1564,9 @@ describe('TtmlTextParser', () => {
|
|
|
1342
1564
|
'<body region="subtitleArea"><div>' +
|
|
1343
1565
|
'<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
|
|
1344
1566
|
'</div></body></tt>',
|
|
1345
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1567
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1568
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1569
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1346
1570
|
});
|
|
1347
1571
|
|
|
1348
1572
|
it('parses text decoration', () => {
|
|
@@ -1368,7 +1592,9 @@ describe('TtmlTextParser', () => {
|
|
|
1368
1592
|
'<body region="subtitleArea"><div>' +
|
|
1369
1593
|
'<p begin="01:02.05" end="01:02:03.200" style="s2">Test</p>' +
|
|
1370
1594
|
'</div></body></tt>',
|
|
1371
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1595
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1596
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1597
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1372
1598
|
});
|
|
1373
1599
|
|
|
1374
1600
|
it('cues should have default cellResolution', () => {
|
|
@@ -1391,7 +1617,8 @@ describe('TtmlTextParser', () => {
|
|
|
1391
1617
|
'<body><div>' +
|
|
1392
1618
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1393
1619
|
'</div></body></tt>',
|
|
1394
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1620
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1621
|
+
{startTime: 1, endTime: 2});
|
|
1395
1622
|
});
|
|
1396
1623
|
|
|
1397
1624
|
it('parses cellResolution', () => {
|
|
@@ -1418,7 +1645,8 @@ describe('TtmlTextParser', () => {
|
|
|
1418
1645
|
'<body><div>' +
|
|
1419
1646
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1420
1647
|
'</div></body></tt>',
|
|
1421
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1648
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1649
|
+
{startTime: 1, endTime: 2});
|
|
1422
1650
|
});
|
|
1423
1651
|
|
|
1424
1652
|
it('parses line padding', () => {
|
|
@@ -1446,7 +1674,8 @@ describe('TtmlTextParser', () => {
|
|
|
1446
1674
|
'<body><div>' +
|
|
1447
1675
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1448
1676
|
'</div></body></tt>',
|
|
1449
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1677
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1678
|
+
{startTime: 1, endTime: 2});
|
|
1450
1679
|
});
|
|
1451
1680
|
|
|
1452
1681
|
it('chooses style on element over style on region', () => {
|
|
@@ -1470,7 +1699,9 @@ describe('TtmlTextParser', () => {
|
|
|
1470
1699
|
'<body region="subtitleArea"><div>' +
|
|
1471
1700
|
'<p begin="01:02.05" end="01:02:03.200" style="s2">Test</p>' +
|
|
1472
1701
|
'</div></body></tt>',
|
|
1473
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1702
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1703
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1704
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1474
1705
|
});
|
|
1475
1706
|
|
|
1476
1707
|
it('can parse multiple cues', () => {
|
|
@@ -1483,7 +1714,8 @@ describe('TtmlTextParser', () => {
|
|
|
1483
1714
|
'<p begin="00:01.00" end="00:02.00">First cue</p>' +
|
|
1484
1715
|
'<p begin="00:03.00" end="00:04.00">Second cue</p>' +
|
|
1485
1716
|
'</div></body></tt>',
|
|
1486
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1717
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1718
|
+
{startTime: 1, endTime: 4});
|
|
1487
1719
|
});
|
|
1488
1720
|
|
|
1489
1721
|
// Regression test for https://github.com/google/shaka-player/issues/2478
|
|
@@ -1506,7 +1738,8 @@ describe('TtmlTextParser', () => {
|
|
|
1506
1738
|
'<tt><body><div>' +
|
|
1507
1739
|
'<p begin="01:02.05" end="01:02:03.200"><span>äöü</span></p>' +
|
|
1508
1740
|
'</div></body></tt>',
|
|
1509
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1741
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1742
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1510
1743
|
});
|
|
1511
1744
|
|
|
1512
1745
|
it('supports timing on multiple levels', () => {
|
|
@@ -1522,7 +1755,9 @@ describe('TtmlTextParser', () => {
|
|
|
1522
1755
|
'<p begin="3s" end="4s">First cue</p>' +
|
|
1523
1756
|
'<p begin="4s" end="5s">Second cue</p>' +
|
|
1524
1757
|
'</div></body></tt>',
|
|
1525
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1758
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1759
|
+
{startTime: 1, endTime: Infinity},
|
|
1760
|
+
{startTime: 3, endTime: Infinity});
|
|
1526
1761
|
|
|
1527
1762
|
verifyHelper(
|
|
1528
1763
|
[{
|
|
@@ -1545,7 +1780,9 @@ describe('TtmlTextParser', () => {
|
|
|
1545
1780
|
'<span begin="5s" end="6s">Second cue</span>' +
|
|
1546
1781
|
'</p>' +
|
|
1547
1782
|
'</div></body></tt>',
|
|
1548
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1783
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1784
|
+
{startTime: 1, endTime: Infinity},
|
|
1785
|
+
{startTime: 3, endTime: Infinity});
|
|
1549
1786
|
});
|
|
1550
1787
|
|
|
1551
1788
|
it('gets end time from parent directly if missing', () => {
|
|
@@ -1559,7 +1796,9 @@ describe('TtmlTextParser', () => {
|
|
|
1559
1796
|
'<p begin="3s" end="4s">First cue</p>' +
|
|
1560
1797
|
'<p begin="4s">Second cue</p>' +
|
|
1561
1798
|
'</div></body></tt>',
|
|
1562
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1799
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1800
|
+
{startTime: 1, endTime: 30},
|
|
1801
|
+
{startTime: 3, endTime: 30});
|
|
1563
1802
|
});
|
|
1564
1803
|
|
|
1565
1804
|
it('supports never-ending cues', () => {
|
|
@@ -1572,7 +1811,8 @@ describe('TtmlTextParser', () => {
|
|
|
1572
1811
|
'<p begin="1s">First cue</p>' +
|
|
1573
1812
|
'<p begin="2s">Second cue</p>' +
|
|
1574
1813
|
'</div></body></tt>',
|
|
1575
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1814
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1815
|
+
{startTime: 1, endTime: Infinity});
|
|
1576
1816
|
});
|
|
1577
1817
|
|
|
1578
1818
|
// Regression test for b/159050711
|
|
@@ -1588,8 +1828,8 @@ describe('TtmlTextParser', () => {
|
|
|
1588
1828
|
// Styles from regionStyle should apply only to the nested cue.
|
|
1589
1829
|
backgroundColor: '',
|
|
1590
1830
|
color: '',
|
|
1591
|
-
displayAlign: Cue.displayAlign.
|
|
1592
|
-
textAlign: Cue.textAlign.
|
|
1831
|
+
displayAlign: Cue.displayAlign.CENTER,
|
|
1832
|
+
textAlign: Cue.textAlign.CENTER,
|
|
1593
1833
|
|
|
1594
1834
|
nestedCues: [
|
|
1595
1835
|
{
|
|
@@ -1614,7 +1854,7 @@ describe('TtmlTextParser', () => {
|
|
|
1614
1854
|
// Styles inherited from backgroundStyle via regionStyle via
|
|
1615
1855
|
// spanStyle
|
|
1616
1856
|
displayAlign: Cue.displayAlign.CENTER,
|
|
1617
|
-
textAlign: Cue.textAlign.
|
|
1857
|
+
textAlign: Cue.textAlign.END,
|
|
1618
1858
|
},
|
|
1619
1859
|
],
|
|
1620
1860
|
},
|
|
@@ -1628,7 +1868,7 @@ describe('TtmlTextParser', () => {
|
|
|
1628
1868
|
// spanStyle inherits attributes from regionStyle
|
|
1629
1869
|
' <style xml:id="pStyle" tts:fontSize="15px" />' +
|
|
1630
1870
|
' <style xml:id="spanStyle" style="regionStyle" ' +
|
|
1631
|
-
' tts:backgroundColor="white" />' +
|
|
1871
|
+
' tts:backgroundColor="white" tts:textAlign="end" />' +
|
|
1632
1872
|
// regionStyle inherits attributes from backgroundStyle
|
|
1633
1873
|
' <style xml:id="regionStyle" style="backgroundStyle" ' +
|
|
1634
1874
|
' tts:backgroundColor="transparent" tts:color="blue" />' +
|
|
@@ -1643,32 +1883,117 @@ describe('TtmlTextParser', () => {
|
|
|
1643
1883
|
' <span style="spanStyle">Test with spanStyle</span>' +
|
|
1644
1884
|
' </p>' +
|
|
1645
1885
|
'</div></body></tt>',
|
|
1646
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1886
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1887
|
+
{startTime: 0, endTime: 60});
|
|
1888
|
+
});
|
|
1889
|
+
|
|
1890
|
+
it('inherits alignment from parent regions', () => {
|
|
1891
|
+
verifyHelper(
|
|
1892
|
+
[
|
|
1893
|
+
{
|
|
1894
|
+
startTime: 0,
|
|
1895
|
+
endTime: 60,
|
|
1896
|
+
payload: '',
|
|
1897
|
+
fontSize: '',
|
|
1898
|
+
textAlign: Cue.textAlign.END,
|
|
1899
|
+
displayAlign: Cue.displayAlign.CENTER,
|
|
1900
|
+
nestedCues: [
|
|
1901
|
+
{
|
|
1902
|
+
startTime: 0,
|
|
1903
|
+
endTime: 60,
|
|
1904
|
+
payload: 'Hello!',
|
|
1905
|
+
textAlign: Cue.textAlign.END,
|
|
1906
|
+
displayAlign: Cue.displayAlign.CENTER,
|
|
1907
|
+
},
|
|
1908
|
+
],
|
|
1909
|
+
},
|
|
1910
|
+
],
|
|
1911
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
1912
|
+
'<head><layout>' +
|
|
1913
|
+
'<region xml:id="r1" tts:textAlign="end" tts:displayAlign="center" />' +
|
|
1914
|
+
'</layout></head>' +
|
|
1915
|
+
'<body><div><p begin="00:00" end="01:00" region="r1">' +
|
|
1916
|
+
'<span>Hello!</span>' +
|
|
1917
|
+
'</p></div></body></tt>',
|
|
1918
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1919
|
+
{startTime: 0, endTime: 60},
|
|
1920
|
+
);
|
|
1921
|
+
});
|
|
1922
|
+
|
|
1923
|
+
// Regression test for https://github.com/google/shaka-player/issues/3743
|
|
1924
|
+
it('inherits styles from other styles on nestedCues', () => {
|
|
1925
|
+
verifyHelper(
|
|
1926
|
+
[
|
|
1927
|
+
{
|
|
1928
|
+
// p element
|
|
1929
|
+
startTime: 0,
|
|
1930
|
+
endTime: 60,
|
|
1931
|
+
payload: '',
|
|
1932
|
+
fontSize: '',
|
|
1933
|
+
nestedCues: [
|
|
1934
|
+
{
|
|
1935
|
+
startTime: 0,
|
|
1936
|
+
endTime: 60,
|
|
1937
|
+
payload: 'A',
|
|
1938
|
+
fontSize: '16px',
|
|
1939
|
+
},
|
|
1940
|
+
{
|
|
1941
|
+
startTime: 0,
|
|
1942
|
+
endTime: 60,
|
|
1943
|
+
payload: '',
|
|
1944
|
+
fontSize: '',
|
|
1945
|
+
},
|
|
1946
|
+
{
|
|
1947
|
+
startTime: 0,
|
|
1948
|
+
endTime: 60,
|
|
1949
|
+
payload: 'B',
|
|
1950
|
+
fontSize: '16px',
|
|
1951
|
+
},
|
|
1952
|
+
],
|
|
1953
|
+
},
|
|
1954
|
+
],
|
|
1955
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
1956
|
+
'<head>' +
|
|
1957
|
+
' <styling>' +
|
|
1958
|
+
' <style tts:backgroundColor="rgba(0,0,0,100)" ' +
|
|
1959
|
+
' tts:displayAlign="center" ' +
|
|
1960
|
+
' tts:extent="80% 10%" ' +
|
|
1961
|
+
' tts:fontFamily="proportionalSansSerif" ' +
|
|
1962
|
+
' tts:fontSize="16px" ' +
|
|
1963
|
+
' tts:origin="10% 85%" ' +
|
|
1964
|
+
' tts:textAlign="center" ' +
|
|
1965
|
+
' xml:id="backgroundStyle"/>' +
|
|
1966
|
+
' <style style="backgroundStyle" ' +
|
|
1967
|
+
' tts:backgroundColor="transparent" ' +
|
|
1968
|
+
' tts:color="white" ' +
|
|
1969
|
+
' xml:id="speakerStyle"/>' +
|
|
1970
|
+
' </styling>' +
|
|
1971
|
+
' <layout>' +
|
|
1972
|
+
' <region style="speakerStyle" tts:zIndex="1" xml:id="speaker"/>' +
|
|
1973
|
+
' </layout>' +
|
|
1974
|
+
'</head>' +
|
|
1975
|
+
'<body><div>' +
|
|
1976
|
+
' <p begin="00:00" end="01:00" region="speaker">' +
|
|
1977
|
+
' A<br/>B' +
|
|
1978
|
+
' </p>' +
|
|
1979
|
+
'</div></body></tt>',
|
|
1980
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1981
|
+
{startTime: 0, endTime: 60});
|
|
1647
1982
|
});
|
|
1648
1983
|
|
|
1649
1984
|
/**
|
|
1650
1985
|
* @param {!Array} cues
|
|
1651
1986
|
* @param {string} text
|
|
1652
1987
|
* @param {shaka.extern.TextParser.TimeContext} time
|
|
1988
|
+
* @param {!Object} bodyProperties
|
|
1989
|
+
* @param {Object=} divProperties
|
|
1653
1990
|
*/
|
|
1654
|
-
function verifyHelper(cues, text, time) {
|
|
1991
|
+
function verifyHelper(cues, text, time, bodyProperties, divProperties) {
|
|
1655
1992
|
const data =
|
|
1656
1993
|
shaka.util.BufferUtils.toUint8(shaka.util.StringUtils.toUTF8(text));
|
|
1657
1994
|
const result = new shaka.text.TtmlTextParser().parseMedia(data, time);
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
if (cue.region) {
|
|
1661
|
-
cue.region = jasmine.objectContaining(cue.region);
|
|
1662
|
-
}
|
|
1663
|
-
|
|
1664
|
-
if (cue.nestedCues) {
|
|
1665
|
-
cue.nestedCues = cue.nestedCues.map(mapExpected);
|
|
1666
|
-
}
|
|
1667
|
-
|
|
1668
|
-
return jasmine.objectContaining(cue);
|
|
1669
|
-
};
|
|
1670
|
-
const expected = cues.map(mapExpected);
|
|
1671
|
-
expect(result).toEqual(expected);
|
|
1995
|
+
shaka.test.TtmlUtils.verifyHelper(
|
|
1996
|
+
cues, result, bodyProperties, divProperties);
|
|
1672
1997
|
}
|
|
1673
1998
|
|
|
1674
1999
|
|