shaka-player 3.2.2 → 3.2.5
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/.csslintrc +11 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
- package/.github/workflows/build-and-test.yaml +130 -0
- package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +56 -0
- package/.github/workflows/custom-actions/set-commit-status/action.yaml +41 -0
- package/.github/workflows/demo-version-index.yaml +29 -0
- package/.github/workflows/nightly-demo.yaml +42 -0
- package/.github/workflows/release-please.yaml +145 -0
- package/.github/workflows/safari-homedir-launcher.sh +18 -0
- package/.github/workflows/selenium-lab-tests.yaml +93 -0
- package/AUTHORS +2 -0
- package/CHANGELOG.md +1598 -1525
- package/CONTRIBUTING.md +2 -2
- package/CONTRIBUTORS +2 -0
- package/README.md +7 -7
- package/app-engine/README.md +9 -0
- package/app-engine/demo-version-index/README.md +14 -0
- package/app-engine/demo-version-index/app.yaml +2 -0
- package/app-engine/demo-version-index/main.py +162 -0
- package/app-engine/demo-version-index/requirements.txt +6 -0
- package/app-engine/demo-version-index/templates/index.html +114 -0
- package/app-engine/shaka-player-demo/README.md +18 -0
- package/app-engine/shaka-player-demo/app.yaml +61 -0
- package/app-engine/shaka-player-demo/main.py +95 -0
- package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
- package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
- package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
- package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
- package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
- package/app-engine/shaka-player-demo/posters/standard.png +0 -0
- package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
- package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
- package/app-engine/shaka-player-demo/posters.py +110 -0
- package/app-engine/shaka-player-demo/requirements.txt +5 -0
- package/app-engine/shaka-player-demo/time.txt +1 -0
- package/build/README.md +1 -1
- package/build/checkversion.py +1 -1
- package/build/conformance.textproto +13 -0
- package/build/docker/Dockerfile +20 -0
- package/build/docker/docker-compose.yml +10 -0
- package/build/gendeps.py +18 -15
- package/build/shaka-lab.yaml +163 -0
- package/build/shakaBuildHelpers.py +4 -29
- package/build/test.py +93 -28
- package/build/wrapper.template.js +2 -2
- package/demo/TengwarTelcontar.woff2 +0 -0
- package/demo/asset_card.js +1 -2
- package/demo/cast_receiver/index.html +1 -1
- package/demo/cast_receiver/receiver_app.css +14 -14
- package/demo/common/assets.js +2 -0
- package/demo/config.js +0 -1
- package/demo/custom.js +0 -1
- package/demo/customWarning.txt +2 -2
- package/demo/demo.less +29 -18
- package/demo/demo_uncompiled.js +1 -13
- package/demo/index.html +1 -1
- package/demo/main.js +3 -3
- package/dist/controls.css +2 -2
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +191 -194
- package/dist/demo.compiled.debug.map +4 -4
- package/dist/demo.compiled.js +191 -194
- package/dist/demo.compiled.map +4 -4
- package/dist/demo.css +1 -1
- package/dist/demo.css.map +1 -1
- package/dist/deps.js +225 -219
- package/dist/locales.js +31 -31
- package/dist/receiver.compiled.debug.js +43 -45
- package/dist/receiver.compiled.debug.map +4 -4
- package/dist/receiver.compiled.js +43 -45
- package/dist/receiver.compiled.map +4 -4
- package/dist/shaka-player.compiled.d.ts +247 -227
- package/dist/shaka-player.compiled.debug.d.ts +247 -227
- package/dist/shaka-player.compiled.debug.externs.js +43 -16
- package/dist/shaka-player.compiled.debug.js +384 -388
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +43 -16
- package/dist/shaka-player.compiled.js +818 -817
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +291 -280
- package/dist/shaka-player.ui.debug.d.ts +291 -280
- package/dist/shaka-player.ui.debug.externs.js +45 -27
- package/dist/shaka-player.ui.debug.js +389 -394
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +45 -27
- package/dist/shaka-player.ui.js +964 -965
- package/dist/shaka-player.ui.map +4 -4
- package/docs/design/REDESIGN.md +33 -33
- package/docs/design/codec_preferences.md +1 -1
- package/docs/design/dash-audio-channels.md +3 -3
- package/docs/design/dash-manifests.md +1 -1
- package/docs/design/gap-jumping.md +3 -3
- package/docs/design/preload.md +2 -2
- package/docs/tutorials/faq.md +8 -8
- package/docs/tutorials/index.json +1 -0
- package/docs/tutorials/plugins.md +3 -3
- package/docs/tutorials/selenium-grid-config.md +122 -0
- package/docs/tutorials/welcome.md +10 -2
- package/externs/shaka/player.js +8 -0
- package/externs/shaka/text.js +10 -0
- package/karma.conf.js +156 -45
- package/lib/abr/simple_abr_manager.js +12 -6
- package/lib/ads/ad_manager.js +1 -0
- package/lib/cast/cast_proxy.js +6 -4
- package/lib/cast/cast_receiver.js +3 -0
- package/lib/cea/cea608_data_channel.js +2 -2
- package/lib/cea/cea708_service.js +5 -4
- package/lib/cea/mp4_cea_parser.js +11 -5
- package/lib/cea/sei_processor.js +6 -3
- package/lib/dash/dash_parser.js +43 -31
- package/lib/dash/mpd_utils.js +4 -5
- package/lib/dash/segment_list.js +1 -2
- package/lib/dash/segment_template.js +3 -3
- package/lib/hls/hls_parser.js +41 -9
- package/lib/hls/manifest_text_parser.js +4 -3
- package/lib/media/adaptation_set.js +1 -2
- package/lib/media/content_workarounds.js +2 -2
- package/lib/media/drm_engine.js +3 -2
- package/lib/media/media_source_engine.js +3 -2
- package/lib/media/mp4_segment_index_parser.js +1 -4
- package/lib/media/playhead.js +2 -2
- package/lib/media/presentation_timeline.js +18 -8
- package/lib/media/region_observer.js +39 -33
- package/lib/media/region_timeline.js +17 -19
- package/lib/media/segment_index.js +2 -1
- package/lib/media/segment_reference.js +19 -1
- package/lib/media/streaming_engine.js +12 -9
- package/lib/media/time_ranges_utils.js +1 -3
- package/lib/media/video_wrapper.js +1 -1
- package/lib/net/networking_engine.js +5 -1
- package/lib/offline/storage.js +12 -13
- package/lib/player.js +77 -36
- package/lib/polyfill/all.js +2 -3
- package/lib/polyfill/encryption_scheme.js +1 -1
- package/lib/polyfill/media_capabilities.js +32 -17
- package/lib/polyfill/mediasource.js +1 -1
- package/lib/text/cue.js +7 -1
- package/lib/text/simple_text_displayer.js +2 -1
- package/lib/text/ttml_text_parser.js +92 -63
- package/lib/text/ui_text_displayer.js +18 -12
- package/lib/util/buffer_utils.js +1 -3
- package/lib/util/ebml_parser.js +3 -3
- package/lib/util/error.js +1 -1
- package/lib/util/fake_event_target.js +21 -1
- package/lib/util/iterables.js +0 -46
- package/lib/util/mp4_box_parsers.js +1 -4
- package/lib/util/mp4_parser.js +5 -7
- package/lib/util/periods.js +8 -9
- package/lib/util/platform.js +3 -3
- package/lib/util/pssh.js +1 -4
- package/lib/util/stream_utils.js +88 -11
- package/lib/util/string_utils.js +3 -5
- package/lib/util/uint8array_utils.js +3 -5
- package/lib/util/xml_utils.js +34 -7
- package/package.json +62 -40
- package/roadmap.md +17 -17
- package/test/abr/simple_abr_manager_unit.js +3 -8
- package/test/ads/ad_manager_unit.js +0 -6
- package/test/cast/cast_proxy_unit.js +0 -8
- package/test/cast/cast_receiver_integration.js +1 -18
- package/test/cast/cast_receiver_unit.js +1 -9
- package/test/cast/cast_sender_unit.js +0 -6
- package/test/cast/cast_utils_unit.js +0 -13
- package/test/cea/cea608_memory_unit.js +0 -5
- package/test/cea/cea708_service_unit.js +0 -7
- package/test/cea/cea708_window_unit.js +0 -5
- package/test/cea/cea_decoder_unit.js +0 -6
- package/test/cea/dtvcc_packet_builder_unit.js +0 -3
- package/test/cea/dtvcc_packet_unit.js +0 -5
- package/test/cea/mp4_cea_parser_unit.js +0 -4
- package/test/dash/dash_parser_content_protection_unit.js +1 -10
- package/test/dash/dash_parser_live_unit.js +45 -15
- package/test/dash/dash_parser_manifest_unit.js +37 -18
- package/test/dash/dash_parser_segment_base_unit.js +1 -8
- package/test/dash/dash_parser_segment_list_unit.js +1 -7
- package/test/dash/dash_parser_segment_template_unit.js +0 -9
- package/test/dash/mpd_utils_unit.js +3 -11
- package/test/demo/demo_unit.js +0 -5
- package/test/deprecate/enforcer_unit.js +0 -4
- package/test/deprecate/version_unit.js +0 -2
- package/test/hls/hls_live_unit.js +2 -14
- package/test/hls/hls_parser_unit.js +76 -15
- package/test/hls/manifest_text_parser_unit.js +0 -10
- package/test/media/adaptation_set_criteria_unit.js +3 -7
- package/test/media/adaptation_set_unit.js +0 -2
- package/test/media/buffering_observer_unit.js +1 -4
- package/test/media/closed_caption_parser_unit.js +0 -3
- package/test/media/drm_engine_integration.js +2 -15
- package/test/media/drm_engine_unit.js +7 -27
- package/test/media/manifest_parser_unit.js +0 -4
- package/test/media/media_source_engine_integration.js +0 -7
- package/test/media/media_source_engine_unit.js +1 -14
- package/test/media/mp4_segment_index_parser_unit.js +0 -4
- package/test/media/play_rate_controller_unit.js +0 -4
- package/test/media/playhead_unit.js +8 -16
- package/test/media/presentation_timeline_unit.js +4 -7
- package/test/media/region_observer_unit.js +40 -10
- package/test/media/region_timeline_unit.js +40 -25
- package/test/media/segment_index_unit.js +0 -6
- package/test/media/segment_reference_unit.js +0 -3
- package/test/media/stall_detector_unit.js +0 -5
- package/test/media/streaming_engine_integration.js +11 -37
- package/test/media/streaming_engine_unit.js +155 -34
- package/test/media/time_ranges_utils_unit.js +0 -2
- package/test/media/transmuxer_integration.js +0 -6
- package/test/media/webm_segment_index_parser_unit.js +0 -4
- package/test/net/data_uri_plugin_unit.js +0 -7
- package/test/net/http_plugin_unit.js +0 -9
- package/test/net/networking_engine_unit.js +0 -11
- package/test/offline/download_progress_estimator_unit.js +0 -2
- package/test/offline/indexeddb_storage_unit.js +0 -6
- package/test/offline/manifest_convert_unit.js +0 -8
- package/test/offline/offline_integration.js +1 -10
- package/test/offline/offline_manifest_parser_unit.js +0 -6
- package/test/offline/offline_scheme_unit.js +0 -8
- package/test/offline/offline_uri_unit.js +0 -2
- package/test/offline/storage_compatibility_unit.js +1 -14
- package/test/offline/storage_integration.js +1 -25
- package/test/player_external.js +2 -10
- package/test/player_integration.js +62 -36
- package/test/player_load_graph_integration.js +1 -6
- package/test/player_src_equals_external.js +3 -9
- package/test/player_src_equals_integration.js +41 -15
- package/test/player_unit.js +71 -46
- package/test/routing/walker_unit.js +0 -8
- package/test/test/assets/chapters.vtt +2 -2
- package/test/test/assets/chapters2.vtt +10 -0
- package/test/test/assets/large_file.mpd +1 -1
- package/test/test/boot.js +75 -22
- package/test/test/externs/jasmine.js +2 -2
- package/test/test/externs/karma.js +4 -0
- package/test/test/namespace.js +10 -0
- package/test/test/util/canned_idb.js +0 -8
- package/test/test/util/cea_utils.js +0 -6
- package/test/test/util/dash_parser_util.js +0 -13
- package/test/test/util/fake_ad.js +0 -3
- package/test/test/util/fake_ad_manager.js +0 -9
- package/test/test/util/fake_demo_main.js +0 -5
- package/test/test/util/fake_drm_engine.js +0 -6
- package/test/test/util/fake_media_source_engine.js +0 -7
- package/test/test/util/fake_networking_engine.js +0 -5
- package/test/test/util/fake_text_displayer.js +0 -5
- package/test/test/util/indexeddb_utils.js +1 -10
- package/test/test/util/jasmine_fetch.js +0 -1
- package/test/test/util/loader.js +0 -18
- package/test/test/util/manifest_generator.js +9 -14
- package/test/test/util/manifest_parser_util.js +0 -6
- package/test/test/util/offline_utils.js +0 -5
- package/test/test/util/simple_fakes.js +9 -26
- package/test/test/util/stream_generator.js +0 -14
- package/test/test/util/streaming_engine_util.js +0 -15
- package/test/test/util/test_scheme.js +1 -19
- package/test/test/util/ttml_utils.js +79 -0
- package/test/test/util/ui_utils.js +0 -9
- package/test/test/util/util.js +15 -26
- package/test/test/util/waiter.js +84 -43
- package/test/text/cue_integration.js +0 -4
- package/test/text/lrc_text_parser_unit.js +0 -4
- package/test/text/mp4_ttml_parser_unit.js +10 -23
- package/test/text/mp4_vtt_parser_unit.js +1 -7
- package/test/text/sbv_text_parser_unit.js +0 -4
- package/test/text/simple_text_displayer_unit.js +1 -8
- package/test/text/srt_text_parser_unit.js +0 -4
- package/test/text/ssa_text_parser_unit.js +0 -5
- package/test/text/text_engine_unit.js +2 -7
- package/test/text/text_track_integration.js +0 -2
- package/test/text/ttml_text_parser_unit.js +495 -237
- package/test/text/ui_text_displayer_unit.js +44 -41
- package/test/text/vtt_text_parser_unit.js +0 -9
- package/test/text/web_vtt_generator_unit.js +0 -3
- package/test/ui/ad_ui_unit.js +0 -11
- package/test/ui/localization_unit.js +0 -3
- package/test/ui/text_displayer_layout_unit.js +9 -19
- package/test/ui/ui_customization_unit.js +0 -6
- package/test/ui/ui_integration.js +0 -16
- package/test/ui/ui_unit.js +1 -17
- package/test/util/abortable_operation_unit.js +4 -9
- package/test/util/array_utils_unit.js +0 -2
- package/test/util/buffer_utils_unit.js +0 -2
- package/test/util/data_view_reader_unit.js +0 -4
- package/test/util/ebml_parser_unit.js +0 -4
- package/test/util/event_manager_unit.js +0 -3
- package/test/util/fake_event_target_unit.js +0 -5
- package/test/util/functional_unit.js +1 -1
- package/test/util/iterables_unit.js +0 -64
- package/test/util/language_utils_unit.js +0 -3
- package/test/util/manifest_parser_utils_unit.js +0 -2
- package/test/util/mp4_box_parsers_unit.js +0 -5
- package/test/util/mp4_parser_unit.js +0 -4
- package/test/util/multi_map_unit.js +0 -3
- package/test/util/object_utils_unit.js +0 -2
- package/test/util/periods_unit.js +14 -7
- package/test/util/pssh_unit.js +0 -5
- package/test/util/state_history_unit.js +0 -2
- package/test/util/stream_utils_unit.js +39 -38
- package/test/util/string_utils_unit.js +0 -6
- package/test/util/text_parser_unit.js +0 -2
- package/test/util/xml_utils_unit.js +0 -4
- package/ui/controls.js +3 -0
- package/ui/less/ad_controls.less +4 -4
- package/ui/less/buttons.less +5 -9
- package/ui/less/containers.less +5 -7
- package/ui/less/overflow_menu.less +4 -4
- package/ui/less/range_elements.less +5 -0
- package/ui/locales/sjn-translations.yaml +257 -0
- package/ui/locales/sjn.json +42 -0
- package/ui/localization.js +12 -36
- package/ui/text_selection.js +1 -0
- package/externs/media_capabilities.js +0 -16
- package/externs/svgelement.js +0 -18
|
@@ -4,14 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.Util');
|
|
8
|
-
goog.require('shaka.text.Cue');
|
|
9
|
-
goog.require('shaka.text.CueRegion');
|
|
10
|
-
goog.require('shaka.text.TtmlTextParser');
|
|
11
|
-
goog.require('shaka.util.BufferUtils');
|
|
12
|
-
goog.require('shaka.util.Error');
|
|
13
|
-
goog.require('shaka.util.StringUtils');
|
|
14
|
-
|
|
15
7
|
describe('TtmlTextParser', () => {
|
|
16
8
|
const Cue = shaka.text.Cue;
|
|
17
9
|
const CueRegion = shaka.text.CueRegion;
|
|
@@ -21,20 +13,23 @@ describe('TtmlTextParser', () => {
|
|
|
21
13
|
it('supports no cues', () => {
|
|
22
14
|
verifyHelper([],
|
|
23
15
|
'<tt></tt>',
|
|
24
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
16
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
17
|
+
{});
|
|
25
18
|
});
|
|
26
19
|
|
|
27
20
|
it('supports empty text string', () => {
|
|
28
21
|
verifyHelper([],
|
|
29
22
|
'',
|
|
30
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
23
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
24
|
+
{});
|
|
31
25
|
});
|
|
32
26
|
|
|
33
27
|
it('supports div with no cues but whitespace', () => {
|
|
34
28
|
verifyHelper(
|
|
35
29
|
[],
|
|
36
30
|
'<tt><body><div> \r\n </div></body></tt>',
|
|
37
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
31
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
32
|
+
{});
|
|
38
33
|
});
|
|
39
34
|
|
|
40
35
|
it('supports xml:space', () => {
|
|
@@ -60,7 +55,8 @@ describe('TtmlTextParser', () => {
|
|
|
60
55
|
},
|
|
61
56
|
],
|
|
62
57
|
'<tt xml:space="default">' + ttBody + '</tt>',
|
|
63
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
58
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
59
|
+
{startTime: 62.03, endTime: 62.05});
|
|
64
60
|
// When xml:space="preserve", take them into account.
|
|
65
61
|
verifyHelper(
|
|
66
62
|
[
|
|
@@ -85,7 +81,8 @@ describe('TtmlTextParser', () => {
|
|
|
85
81
|
},
|
|
86
82
|
],
|
|
87
83
|
'<tt xml:space="preserve">' + ttBody + '</tt>',
|
|
88
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
84
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
85
|
+
{startTime: 62.03, endTime: 62.05});
|
|
89
86
|
// The default value for xml:space is "default".
|
|
90
87
|
verifyHelper(
|
|
91
88
|
[
|
|
@@ -100,7 +97,8 @@ describe('TtmlTextParser', () => {
|
|
|
100
97
|
},
|
|
101
98
|
],
|
|
102
99
|
'<tt>' + ttBody + '</tt>',
|
|
103
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
100
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
101
|
+
{startTime: 62.03, endTime: 62.05});
|
|
104
102
|
|
|
105
103
|
// Any other value is rejected as an error.
|
|
106
104
|
errorHelper(shaka.util.Error.Code.INVALID_XML,
|
|
@@ -130,7 +128,8 @@ describe('TtmlTextParser', () => {
|
|
|
130
128
|
},
|
|
131
129
|
],
|
|
132
130
|
'<tt>' + ttBody + '</tt>',
|
|
133
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
131
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
132
|
+
{startTime: 62.03, endTime: 62.05});
|
|
134
133
|
});
|
|
135
134
|
|
|
136
135
|
it('rejects invalid ttml', () => {
|
|
@@ -199,7 +198,8 @@ describe('TtmlTextParser', () => {
|
|
|
199
198
|
'<span>First cue</span><br /><span>Second cue</span>' +
|
|
200
199
|
'</p>' +
|
|
201
200
|
'</div></body></tt>',
|
|
202
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
201
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
202
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
203
203
|
});
|
|
204
204
|
|
|
205
205
|
it('supports anonymous spans as nestedCues of paragraphs', () => {
|
|
@@ -234,7 +234,8 @@ describe('TtmlTextParser', () => {
|
|
|
234
234
|
'First cue<br />Second cue' +
|
|
235
235
|
'</p>' +
|
|
236
236
|
'</div></body></tt>',
|
|
237
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
237
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
238
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
238
239
|
});
|
|
239
240
|
|
|
240
241
|
it('supports multiple levels of nestedCues', () => {
|
|
@@ -292,7 +293,8 @@ describe('TtmlTextParser', () => {
|
|
|
292
293
|
'</span>' +
|
|
293
294
|
'</p>' +
|
|
294
295
|
'</div></body></tt>',
|
|
295
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
296
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
297
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
296
298
|
});
|
|
297
299
|
|
|
298
300
|
it('inherits timing information of nested cues if unprovided', () => {
|
|
@@ -307,9 +309,11 @@ describe('TtmlTextParser', () => {
|
|
|
307
309
|
},
|
|
308
310
|
],
|
|
309
311
|
'<tt><body>' +
|
|
310
|
-
'<div><
|
|
312
|
+
'<div><p begin="01:02.05" end="01:02:03.200">' +
|
|
313
|
+
'<span>Test</span></p></div>' +
|
|
311
314
|
'</body></tt>',
|
|
312
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
315
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
316
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
313
317
|
});
|
|
314
318
|
|
|
315
319
|
it('does not discard cues with image subcues', () => {
|
|
@@ -334,11 +338,12 @@ describe('TtmlTextParser', () => {
|
|
|
334
338
|
'<metadata>' +
|
|
335
339
|
'<smpte:image imageType="PNG" encoding="Base64" xml:id="img_0">' +
|
|
336
340
|
'base64EncodedImage</smpte:image>' +
|
|
337
|
-
'</metadata><body>' +
|
|
338
|
-
'<
|
|
339
|
-
'smpte:backgroundImage="#img_0"></div></
|
|
340
|
-
'</body></tt>',
|
|
341
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
341
|
+
'</metadata><body><div>' +
|
|
342
|
+
'<p><div begin="01:02.05" end="01:02:03.200" ' +
|
|
343
|
+
'smpte:backgroundImage="#img_0"></div></p>' +
|
|
344
|
+
'</div></body></tt>',
|
|
345
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
346
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
342
347
|
});
|
|
343
348
|
|
|
344
349
|
it('supports colon formatted time', () => {
|
|
@@ -349,7 +354,8 @@ describe('TtmlTextParser', () => {
|
|
|
349
354
|
'<tt><body><div>' +
|
|
350
355
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
351
356
|
'</div></body></tt>',
|
|
352
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
357
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
358
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
353
359
|
});
|
|
354
360
|
|
|
355
361
|
it('accounts for offset', () => {
|
|
@@ -360,7 +366,8 @@ describe('TtmlTextParser', () => {
|
|
|
360
366
|
'<tt><body><div>' +
|
|
361
367
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
362
368
|
'</div></body></tt>',
|
|
363
|
-
{periodStart: 7, segmentStart: 0, segmentEnd: 0}
|
|
369
|
+
{periodStart: 7, segmentStart: 0, segmentEnd: 0},
|
|
370
|
+
{startTime: 69.05, endTime: 3730.2});
|
|
364
371
|
});
|
|
365
372
|
|
|
366
373
|
it('supports nested cues with an offset', () => {
|
|
@@ -382,7 +389,8 @@ describe('TtmlTextParser', () => {
|
|
|
382
389
|
'<tt><body><div>' +
|
|
383
390
|
'<p begin="01:02.05" end="01:02:03.200"><span>Nested cue</span></p>' +
|
|
384
391
|
'</div></body></tt>',
|
|
385
|
-
{periodStart: 7, segmentStart: 0, segmentEnd: 0}
|
|
392
|
+
{periodStart: 7, segmentStart: 0, segmentEnd: 0},
|
|
393
|
+
{startTime: 69.05, endTime: 3730.2});
|
|
386
394
|
});
|
|
387
395
|
|
|
388
396
|
it('supports time in 0.00h 0.00m 0.00s format', () => {
|
|
@@ -393,7 +401,8 @@ describe('TtmlTextParser', () => {
|
|
|
393
401
|
'<tt><body><div>' +
|
|
394
402
|
'<p begin="59.45m30ms" end="1.5h2.3s">Test</p>' +
|
|
395
403
|
'</div></body></tt>',
|
|
396
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
404
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
405
|
+
{startTime: 3567.03, endTime: 5402.3});
|
|
397
406
|
});
|
|
398
407
|
|
|
399
408
|
it('supports time with frame rate', () => {
|
|
@@ -406,7 +415,8 @@ describe('TtmlTextParser', () => {
|
|
|
406
415
|
'<body><div>' +
|
|
407
416
|
'<p begin="00:10:15:15" end="00:11:02:30">Test</p>' +
|
|
408
417
|
'</div></body></tt>',
|
|
409
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
418
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
419
|
+
{startTime: 615.5, endTime: 663});
|
|
410
420
|
});
|
|
411
421
|
|
|
412
422
|
it('supports time with frame rate multiplier', () => {
|
|
@@ -419,7 +429,8 @@ describe('TtmlTextParser', () => {
|
|
|
419
429
|
'<body><div>' +
|
|
420
430
|
'<p begin="00:10:15:15" end="00:11:02:30">Test</p>' +
|
|
421
431
|
'</div></body></tt>',
|
|
422
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
432
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
433
|
+
{startTime: 615.5, endTime: 663});
|
|
423
434
|
});
|
|
424
435
|
|
|
425
436
|
it('supports time with subframes', () => {
|
|
@@ -436,7 +447,8 @@ describe('TtmlTextParser', () => {
|
|
|
436
447
|
'<body><div>' +
|
|
437
448
|
'<p begin="00:10:15:15.1" end="00:11:02:29.2">Test</p>' +
|
|
438
449
|
'</div></body></tt>',
|
|
439
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
450
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
451
|
+
{startTime: Util.closeTo(615.5 + 1 / 60), endTime: 663});
|
|
440
452
|
});
|
|
441
453
|
|
|
442
454
|
it('supports time in frame format', () => {
|
|
@@ -449,7 +461,8 @@ describe('TtmlTextParser', () => {
|
|
|
449
461
|
'<body><div>' +
|
|
450
462
|
'<p begin="75f" end="300.3f">Test</p>' +
|
|
451
463
|
'</div></body></tt>',
|
|
452
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
464
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
465
|
+
{startTime: 2.5, endTime: Util.closeTo(10.01)});
|
|
453
466
|
});
|
|
454
467
|
|
|
455
468
|
it('supports time in tick format', () => {
|
|
@@ -462,7 +475,8 @@ describe('TtmlTextParser', () => {
|
|
|
462
475
|
'<body><div>' +
|
|
463
476
|
'<p begin="50t" end="60.2t">Test</p>' +
|
|
464
477
|
'</div></body></tt>',
|
|
465
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
478
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
479
|
+
{startTime: 5, endTime: Util.closeTo(6.02)});
|
|
466
480
|
});
|
|
467
481
|
|
|
468
482
|
it('supports time with duration', () => {
|
|
@@ -473,7 +487,8 @@ describe('TtmlTextParser', () => {
|
|
|
473
487
|
'<tt><body><div>' +
|
|
474
488
|
'<p begin="01:02.05" dur="5s">Test</p>' +
|
|
475
489
|
'</div></body></tt>',
|
|
476
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
490
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
491
|
+
{startTime: 62.05, endTime: 67.05});
|
|
477
492
|
});
|
|
478
493
|
|
|
479
494
|
it('supports comments in the body', () => {
|
|
@@ -482,7 +497,29 @@ describe('TtmlTextParser', () => {
|
|
|
482
497
|
'<tt><body><div>' +
|
|
483
498
|
'<!-- text-based TTML -->' +
|
|
484
499
|
'</div></body></tt>',
|
|
485
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
500
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
501
|
+
{});
|
|
502
|
+
});
|
|
503
|
+
|
|
504
|
+
it('does not inherit regions', () => {
|
|
505
|
+
verifyHelper(
|
|
506
|
+
[
|
|
507
|
+
{
|
|
508
|
+
startTime: 62.05,
|
|
509
|
+
endTime: 3723.2,
|
|
510
|
+
payload: 'Test',
|
|
511
|
+
},
|
|
512
|
+
],
|
|
513
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
514
|
+
'<layout>' +
|
|
515
|
+
'<region xml:id="subtitleArea" />' +
|
|
516
|
+
'</layout>' +
|
|
517
|
+
'<body region="subtitleArea"><div>' +
|
|
518
|
+
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
519
|
+
'</div></body></tt>',
|
|
520
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
521
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
522
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
486
523
|
});
|
|
487
524
|
|
|
488
525
|
it('parses alignment from textAlign attribute of a region', () => {
|
|
@@ -502,7 +539,9 @@ describe('TtmlTextParser', () => {
|
|
|
502
539
|
'<body region="subtitleArea"><div>' +
|
|
503
540
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
504
541
|
'</div></body></tt>',
|
|
505
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
542
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
543
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
544
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
506
545
|
});
|
|
507
546
|
|
|
508
547
|
it('allows non-standard namespace names', () => {
|
|
@@ -522,7 +561,9 @@ describe('TtmlTextParser', () => {
|
|
|
522
561
|
'<body region="subtitleArea"><div>' +
|
|
523
562
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
524
563
|
'</div></body></tt>',
|
|
525
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
564
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
565
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
566
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
526
567
|
});
|
|
527
568
|
|
|
528
569
|
it('parses alignment from <style> block with id on region', () => {
|
|
@@ -545,7 +586,9 @@ describe('TtmlTextParser', () => {
|
|
|
545
586
|
'<body region="subtitleArea"><div>' +
|
|
546
587
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
547
588
|
'</div></body></tt>',
|
|
548
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
589
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
590
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
591
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
549
592
|
});
|
|
550
593
|
|
|
551
594
|
it('parses alignment from <style> block with id on p', () => {
|
|
@@ -568,7 +611,9 @@ describe('TtmlTextParser', () => {
|
|
|
568
611
|
'<body region="subtitleArea"><div>' +
|
|
569
612
|
'<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
|
|
570
613
|
'</div></body></tt>',
|
|
571
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
614
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
615
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
616
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
572
617
|
});
|
|
573
618
|
|
|
574
619
|
it('supports region settings for horizontal text', () => {
|
|
@@ -578,13 +623,6 @@ describe('TtmlTextParser', () => {
|
|
|
578
623
|
startTime: 62.05,
|
|
579
624
|
endTime: 3723.2,
|
|
580
625
|
payload: 'Test',
|
|
581
|
-
region: {
|
|
582
|
-
id: 'subtitleArea',
|
|
583
|
-
viewportAnchorX: 50,
|
|
584
|
-
viewportAnchorY: 16,
|
|
585
|
-
width: 100,
|
|
586
|
-
height: 100,
|
|
587
|
-
},
|
|
588
626
|
},
|
|
589
627
|
],
|
|
590
628
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -594,7 +632,18 @@ describe('TtmlTextParser', () => {
|
|
|
594
632
|
'<body region="subtitleArea"><div>' +
|
|
595
633
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
596
634
|
'</div></body></tt>',
|
|
597
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
635
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
636
|
+
{
|
|
637
|
+
region: {
|
|
638
|
+
id: 'subtitleArea',
|
|
639
|
+
viewportAnchorX: 50,
|
|
640
|
+
viewportAnchorY: 16,
|
|
641
|
+
width: 100,
|
|
642
|
+
height: 100,
|
|
643
|
+
},
|
|
644
|
+
startTime: 62.05,
|
|
645
|
+
endTime: 3723.2,
|
|
646
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
598
647
|
|
|
599
648
|
verifyHelper(
|
|
600
649
|
[
|
|
@@ -602,12 +651,6 @@ describe('TtmlTextParser', () => {
|
|
|
602
651
|
startTime: 62.05,
|
|
603
652
|
endTime: 3723.2,
|
|
604
653
|
payload: 'Test',
|
|
605
|
-
region: {
|
|
606
|
-
viewportAnchorX: 50,
|
|
607
|
-
viewportAnchorY: 16,
|
|
608
|
-
width: 100,
|
|
609
|
-
height: 100,
|
|
610
|
-
},
|
|
611
654
|
},
|
|
612
655
|
],
|
|
613
656
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -618,7 +661,17 @@ describe('TtmlTextParser', () => {
|
|
|
618
661
|
'<body region="subtitleArea"><div>' +
|
|
619
662
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
620
663
|
'</div></body></tt>',
|
|
621
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
664
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
665
|
+
{
|
|
666
|
+
region: {
|
|
667
|
+
viewportAnchorX: 50,
|
|
668
|
+
viewportAnchorY: 16,
|
|
669
|
+
width: 100,
|
|
670
|
+
height: 100,
|
|
671
|
+
},
|
|
672
|
+
startTime: 62.05,
|
|
673
|
+
endTime: 3723.2,
|
|
674
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
622
675
|
|
|
623
676
|
verifyHelper(
|
|
624
677
|
[
|
|
@@ -626,12 +679,6 @@ describe('TtmlTextParser', () => {
|
|
|
626
679
|
startTime: 62.05,
|
|
627
680
|
endTime: 3723.2,
|
|
628
681
|
payload: 'Test',
|
|
629
|
-
region: {
|
|
630
|
-
viewportAnchorX: 50,
|
|
631
|
-
viewportAnchorY: 16,
|
|
632
|
-
width: 100,
|
|
633
|
-
height: 100,
|
|
634
|
-
},
|
|
635
682
|
},
|
|
636
683
|
],
|
|
637
684
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -642,7 +689,17 @@ describe('TtmlTextParser', () => {
|
|
|
642
689
|
'<body region="subtitleArea"><div>' +
|
|
643
690
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
644
691
|
'</div></body></tt>',
|
|
645
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
692
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
693
|
+
{
|
|
694
|
+
region: {
|
|
695
|
+
viewportAnchorX: 50,
|
|
696
|
+
viewportAnchorY: 16,
|
|
697
|
+
width: 100,
|
|
698
|
+
height: 100,
|
|
699
|
+
},
|
|
700
|
+
startTime: 62.05,
|
|
701
|
+
endTime: 3723.2,
|
|
702
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
646
703
|
});
|
|
647
704
|
|
|
648
705
|
it('supports region settings in pixels (origin)', () => {
|
|
@@ -652,19 +709,6 @@ describe('TtmlTextParser', () => {
|
|
|
652
709
|
startTime: 62.05,
|
|
653
710
|
endTime: 3723.2,
|
|
654
711
|
payload: 'Test',
|
|
655
|
-
region: {
|
|
656
|
-
id: 'subtitleArea',
|
|
657
|
-
viewportAnchorX: 50,
|
|
658
|
-
viewportAnchorY: 16,
|
|
659
|
-
regionAnchorX: 0,
|
|
660
|
-
regionAnchorY: 0,
|
|
661
|
-
width: 100,
|
|
662
|
-
height: 100,
|
|
663
|
-
heightUnits: CueRegion.units.PERCENTAGE,
|
|
664
|
-
widthUnits: CueRegion.units.PERCENTAGE,
|
|
665
|
-
viewportAnchorUnits: CueRegion.units.PX,
|
|
666
|
-
scroll: CueRegion.scrollMode.NONE,
|
|
667
|
-
},
|
|
668
712
|
},
|
|
669
713
|
],
|
|
670
714
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -674,7 +718,24 @@ describe('TtmlTextParser', () => {
|
|
|
674
718
|
'<body region="subtitleArea"><div>' +
|
|
675
719
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
676
720
|
'</div></body></tt>',
|
|
677
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
721
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
722
|
+
{
|
|
723
|
+
region: {
|
|
724
|
+
id: 'subtitleArea',
|
|
725
|
+
viewportAnchorX: 50,
|
|
726
|
+
viewportAnchorY: 16,
|
|
727
|
+
regionAnchorX: 0,
|
|
728
|
+
regionAnchorY: 0,
|
|
729
|
+
width: 100,
|
|
730
|
+
height: 100,
|
|
731
|
+
heightUnits: CueRegion.units.PERCENTAGE,
|
|
732
|
+
widthUnits: CueRegion.units.PERCENTAGE,
|
|
733
|
+
viewportAnchorUnits: CueRegion.units.PX,
|
|
734
|
+
scroll: CueRegion.scrollMode.NONE,
|
|
735
|
+
},
|
|
736
|
+
startTime: 62.05,
|
|
737
|
+
endTime: 3723.2,
|
|
738
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
678
739
|
});
|
|
679
740
|
|
|
680
741
|
it('supports region settings in pixels (extent)', () => {
|
|
@@ -684,19 +745,6 @@ describe('TtmlTextParser', () => {
|
|
|
684
745
|
startTime: 62.05,
|
|
685
746
|
endTime: 3723.2,
|
|
686
747
|
payload: 'Test',
|
|
687
|
-
region: {
|
|
688
|
-
id: 'subtitleArea',
|
|
689
|
-
viewportAnchorX: 0,
|
|
690
|
-
viewportAnchorY: 0,
|
|
691
|
-
regionAnchorX: 0,
|
|
692
|
-
regionAnchorY: 0,
|
|
693
|
-
width: 50,
|
|
694
|
-
height: 16,
|
|
695
|
-
heightUnits: CueRegion.units.PX,
|
|
696
|
-
widthUnits: CueRegion.units.PX,
|
|
697
|
-
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
698
|
-
scroll: CueRegion.scrollMode.NONE,
|
|
699
|
-
},
|
|
700
748
|
},
|
|
701
749
|
],
|
|
702
750
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -706,7 +754,24 @@ describe('TtmlTextParser', () => {
|
|
|
706
754
|
'<body region="subtitleArea"><div>' +
|
|
707
755
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
708
756
|
'</div></body></tt>',
|
|
709
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
757
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
758
|
+
{
|
|
759
|
+
region: {
|
|
760
|
+
id: 'subtitleArea',
|
|
761
|
+
viewportAnchorX: 0,
|
|
762
|
+
viewportAnchorY: 0,
|
|
763
|
+
regionAnchorX: 0,
|
|
764
|
+
regionAnchorY: 0,
|
|
765
|
+
width: 50,
|
|
766
|
+
height: 16,
|
|
767
|
+
heightUnits: CueRegion.units.PX,
|
|
768
|
+
widthUnits: CueRegion.units.PX,
|
|
769
|
+
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
770
|
+
scroll: CueRegion.scrollMode.NONE,
|
|
771
|
+
},
|
|
772
|
+
startTime: 62.05,
|
|
773
|
+
endTime: 3723.2,
|
|
774
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
710
775
|
});
|
|
711
776
|
|
|
712
777
|
it('supports region settings in pixels: origin (with global extent)', () => {
|
|
@@ -716,19 +781,6 @@ describe('TtmlTextParser', () => {
|
|
|
716
781
|
startTime: 62.05,
|
|
717
782
|
endTime: 3723.2,
|
|
718
783
|
payload: 'Test',
|
|
719
|
-
region: {
|
|
720
|
-
id: 'subtitleArea',
|
|
721
|
-
viewportAnchorX: 10,
|
|
722
|
-
viewportAnchorY: 10,
|
|
723
|
-
regionAnchorX: 0,
|
|
724
|
-
regionAnchorY: 0,
|
|
725
|
-
width: 100,
|
|
726
|
-
height: 100,
|
|
727
|
-
heightUnits: CueRegion.units.PERCENTAGE,
|
|
728
|
-
widthUnits: CueRegion.units.PERCENTAGE,
|
|
729
|
-
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
730
|
-
scroll: CueRegion.scrollMode.NONE,
|
|
731
|
-
},
|
|
732
784
|
},
|
|
733
785
|
],
|
|
734
786
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling" tts:extent="1920px 1080px">' +
|
|
@@ -738,7 +790,24 @@ describe('TtmlTextParser', () => {
|
|
|
738
790
|
'<body region="subtitleArea"><div>' +
|
|
739
791
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
740
792
|
'</div></body></tt>',
|
|
741
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
793
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
794
|
+
{
|
|
795
|
+
region: {
|
|
796
|
+
id: 'subtitleArea',
|
|
797
|
+
viewportAnchorX: 10,
|
|
798
|
+
viewportAnchorY: 10,
|
|
799
|
+
regionAnchorX: 0,
|
|
800
|
+
regionAnchorY: 0,
|
|
801
|
+
width: 100,
|
|
802
|
+
height: 100,
|
|
803
|
+
heightUnits: CueRegion.units.PERCENTAGE,
|
|
804
|
+
widthUnits: CueRegion.units.PERCENTAGE,
|
|
805
|
+
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
806
|
+
scroll: CueRegion.scrollMode.NONE,
|
|
807
|
+
},
|
|
808
|
+
startTime: 62.05,
|
|
809
|
+
endTime: 3723.2,
|
|
810
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
742
811
|
});
|
|
743
812
|
|
|
744
813
|
it('supports region settings in pixels: extent (with global extent)', () => {
|
|
@@ -748,19 +817,6 @@ describe('TtmlTextParser', () => {
|
|
|
748
817
|
startTime: 62.05,
|
|
749
818
|
endTime: 3723.2,
|
|
750
819
|
payload: 'Test',
|
|
751
|
-
region: {
|
|
752
|
-
id: 'subtitleArea',
|
|
753
|
-
viewportAnchorX: 0,
|
|
754
|
-
viewportAnchorY: 0,
|
|
755
|
-
regionAnchorX: 0,
|
|
756
|
-
regionAnchorY: 0,
|
|
757
|
-
width: 30,
|
|
758
|
-
height: 30,
|
|
759
|
-
heightUnits: CueRegion.units.PERCENTAGE,
|
|
760
|
-
widthUnits: CueRegion.units.PERCENTAGE,
|
|
761
|
-
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
762
|
-
scroll: CueRegion.scrollMode.NONE,
|
|
763
|
-
},
|
|
764
820
|
},
|
|
765
821
|
],
|
|
766
822
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling" tts:extent="1920px 1080px">' +
|
|
@@ -771,7 +827,24 @@ describe('TtmlTextParser', () => {
|
|
|
771
827
|
'<body region="subtitleArea"><div>' +
|
|
772
828
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
773
829
|
'</div></body></tt>',
|
|
774
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
830
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
831
|
+
{
|
|
832
|
+
region: {
|
|
833
|
+
id: 'subtitleArea',
|
|
834
|
+
viewportAnchorX: 0,
|
|
835
|
+
viewportAnchorY: 0,
|
|
836
|
+
regionAnchorX: 0,
|
|
837
|
+
regionAnchorY: 0,
|
|
838
|
+
width: 30,
|
|
839
|
+
height: 30,
|
|
840
|
+
heightUnits: CueRegion.units.PERCENTAGE,
|
|
841
|
+
widthUnits: CueRegion.units.PERCENTAGE,
|
|
842
|
+
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
843
|
+
scroll: CueRegion.scrollMode.NONE,
|
|
844
|
+
},
|
|
845
|
+
startTime: 62.05,
|
|
846
|
+
endTime: 3723.2,
|
|
847
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
775
848
|
});
|
|
776
849
|
|
|
777
850
|
it('supports region settings in percentage (origin)', () => {
|
|
@@ -781,29 +854,34 @@ describe('TtmlTextParser', () => {
|
|
|
781
854
|
startTime: 62.05,
|
|
782
855
|
endTime: 3723.2,
|
|
783
856
|
payload: 'Test',
|
|
784
|
-
region: {
|
|
785
|
-
id: 'subtitleArea',
|
|
786
|
-
viewportAnchorX: 50,
|
|
787
|
-
viewportAnchorY: 16,
|
|
788
|
-
regionAnchorX: 0,
|
|
789
|
-
regionAnchorY: 0,
|
|
790
|
-
width: 100,
|
|
791
|
-
height: 100,
|
|
792
|
-
heightUnits: CueRegion.units.PERCENTAGE,
|
|
793
|
-
widthUnits: CueRegion.units.PERCENTAGE,
|
|
794
|
-
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
795
|
-
scroll: CueRegion.scrollMode.NONE,
|
|
796
|
-
},
|
|
797
857
|
},
|
|
798
858
|
],
|
|
799
|
-
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling"
|
|
859
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling" ' +
|
|
860
|
+
'tts:extent="1920px 1080px">' +
|
|
800
861
|
'<layout>' +
|
|
801
862
|
'<region xml:id="subtitleArea" tts:origin="50% 16%"/>' +
|
|
802
863
|
'</layout>' +
|
|
803
864
|
'<body region="subtitleArea"><div>' +
|
|
804
865
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
805
866
|
'</div></body></tt>',
|
|
806
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
867
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
868
|
+
{
|
|
869
|
+
region: {
|
|
870
|
+
id: 'subtitleArea',
|
|
871
|
+
viewportAnchorX: 50,
|
|
872
|
+
viewportAnchorY: 16,
|
|
873
|
+
regionAnchorX: 0,
|
|
874
|
+
regionAnchorY: 0,
|
|
875
|
+
width: 100,
|
|
876
|
+
height: 100,
|
|
877
|
+
heightUnits: CueRegion.units.PERCENTAGE,
|
|
878
|
+
widthUnits: CueRegion.units.PERCENTAGE,
|
|
879
|
+
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
880
|
+
scroll: CueRegion.scrollMode.NONE,
|
|
881
|
+
},
|
|
882
|
+
startTime: 62.05,
|
|
883
|
+
endTime: 3723.2,
|
|
884
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
807
885
|
});
|
|
808
886
|
|
|
809
887
|
it('supports region settings in percentage (extent)', () => {
|
|
@@ -813,22 +891,10 @@ describe('TtmlTextParser', () => {
|
|
|
813
891
|
startTime: 62.05,
|
|
814
892
|
endTime: 3723.2,
|
|
815
893
|
payload: 'Test',
|
|
816
|
-
region: {
|
|
817
|
-
id: 'subtitleArea',
|
|
818
|
-
viewportAnchorX: 0,
|
|
819
|
-
viewportAnchorY: 0,
|
|
820
|
-
regionAnchorX: 0,
|
|
821
|
-
regionAnchorY: 0,
|
|
822
|
-
width: 50,
|
|
823
|
-
height: 16,
|
|
824
|
-
heightUnits: CueRegion.units.PERCENTAGE,
|
|
825
|
-
widthUnits: CueRegion.units.PERCENTAGE,
|
|
826
|
-
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
827
|
-
scroll: CueRegion.scrollMode.NONE,
|
|
828
|
-
},
|
|
829
894
|
},
|
|
830
895
|
],
|
|
831
|
-
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling"
|
|
896
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling" ' +
|
|
897
|
+
'tts:extent="1920px 1080px">' +
|
|
832
898
|
'<layout>' +
|
|
833
899
|
'<region xml:id="subtitleArea" tts:extent="50% 16%" ' +
|
|
834
900
|
'tts:writingMode="lrtb" />' +
|
|
@@ -836,7 +902,24 @@ describe('TtmlTextParser', () => {
|
|
|
836
902
|
'<body region="subtitleArea"><div>' +
|
|
837
903
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
838
904
|
'</div></body></tt>',
|
|
839
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
905
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
906
|
+
{
|
|
907
|
+
region: {
|
|
908
|
+
id: 'subtitleArea',
|
|
909
|
+
viewportAnchorX: 0,
|
|
910
|
+
viewportAnchorY: 0,
|
|
911
|
+
regionAnchorX: 0,
|
|
912
|
+
regionAnchorY: 0,
|
|
913
|
+
width: 50,
|
|
914
|
+
height: 16,
|
|
915
|
+
heightUnits: CueRegion.units.PERCENTAGE,
|
|
916
|
+
widthUnits: CueRegion.units.PERCENTAGE,
|
|
917
|
+
viewportAnchorUnits: CueRegion.units.PERCENTAGE,
|
|
918
|
+
scroll: CueRegion.scrollMode.NONE,
|
|
919
|
+
},
|
|
920
|
+
startTime: 62.05,
|
|
921
|
+
endTime: 3723.2,
|
|
922
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
840
923
|
});
|
|
841
924
|
|
|
842
925
|
it('supports region settings for vertical text', () => {
|
|
@@ -846,13 +929,6 @@ describe('TtmlTextParser', () => {
|
|
|
846
929
|
startTime: 62.05,
|
|
847
930
|
endTime: 3723.2,
|
|
848
931
|
payload: 'Test',
|
|
849
|
-
region: {
|
|
850
|
-
id: 'subtitleArea',
|
|
851
|
-
viewportAnchorX: 50,
|
|
852
|
-
viewportAnchorY: 16,
|
|
853
|
-
width: 100,
|
|
854
|
-
height: 100,
|
|
855
|
-
},
|
|
856
932
|
},
|
|
857
933
|
],
|
|
858
934
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -863,7 +939,18 @@ describe('TtmlTextParser', () => {
|
|
|
863
939
|
'<body region="subtitleArea"><div>' +
|
|
864
940
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
865
941
|
'</div></body></tt>',
|
|
866
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
942
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
943
|
+
{
|
|
944
|
+
region: {
|
|
945
|
+
id: 'subtitleArea',
|
|
946
|
+
viewportAnchorX: 50,
|
|
947
|
+
viewportAnchorY: 16,
|
|
948
|
+
width: 100,
|
|
949
|
+
height: 100,
|
|
950
|
+
},
|
|
951
|
+
startTime: 62.05,
|
|
952
|
+
endTime: 3723.2,
|
|
953
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
867
954
|
|
|
868
955
|
verifyHelper(
|
|
869
956
|
[
|
|
@@ -871,12 +958,6 @@ describe('TtmlTextParser', () => {
|
|
|
871
958
|
startTime: 62.05,
|
|
872
959
|
endTime: 3723.2,
|
|
873
960
|
payload: 'Test',
|
|
874
|
-
region: {
|
|
875
|
-
viewportAnchorX: 50,
|
|
876
|
-
viewportAnchorY: 16,
|
|
877
|
-
width: 100,
|
|
878
|
-
height: 100,
|
|
879
|
-
},
|
|
880
961
|
},
|
|
881
962
|
],
|
|
882
963
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -887,7 +968,17 @@ describe('TtmlTextParser', () => {
|
|
|
887
968
|
'<body region="subtitleArea"><div>' +
|
|
888
969
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
889
970
|
'</div></body></tt>',
|
|
890
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
971
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
972
|
+
{
|
|
973
|
+
region: {
|
|
974
|
+
viewportAnchorX: 50,
|
|
975
|
+
viewportAnchorY: 16,
|
|
976
|
+
width: 100,
|
|
977
|
+
height: 100,
|
|
978
|
+
},
|
|
979
|
+
startTime: 62.05,
|
|
980
|
+
endTime: 3723.2,
|
|
981
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
891
982
|
|
|
892
983
|
verifyHelper(
|
|
893
984
|
[
|
|
@@ -895,12 +986,6 @@ describe('TtmlTextParser', () => {
|
|
|
895
986
|
startTime: 62.05,
|
|
896
987
|
endTime: 3723.2,
|
|
897
988
|
payload: 'Test',
|
|
898
|
-
region: {
|
|
899
|
-
viewportAnchorX: 50,
|
|
900
|
-
viewportAnchorY: 16,
|
|
901
|
-
width: 100,
|
|
902
|
-
height: 100,
|
|
903
|
-
},
|
|
904
989
|
},
|
|
905
990
|
],
|
|
906
991
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -911,7 +996,17 @@ describe('TtmlTextParser', () => {
|
|
|
911
996
|
'<body region="subtitleArea"><div>' +
|
|
912
997
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
913
998
|
'</div></body></tt>',
|
|
914
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
999
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1000
|
+
{
|
|
1001
|
+
region: {
|
|
1002
|
+
viewportAnchorX: 50,
|
|
1003
|
+
viewportAnchorY: 16,
|
|
1004
|
+
width: 100,
|
|
1005
|
+
height: 100,
|
|
1006
|
+
},
|
|
1007
|
+
startTime: 62.05,
|
|
1008
|
+
endTime: 3723.2,
|
|
1009
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
915
1010
|
});
|
|
916
1011
|
|
|
917
1012
|
it('supports percentages containing decimals', () => {
|
|
@@ -921,13 +1016,6 @@ describe('TtmlTextParser', () => {
|
|
|
921
1016
|
startTime: 62.05,
|
|
922
1017
|
endTime: 3723.2,
|
|
923
1018
|
payload: 'Test',
|
|
924
|
-
region: {
|
|
925
|
-
id: 'subtitleArea',
|
|
926
|
-
viewportAnchorX: 12.2,
|
|
927
|
-
viewportAnchorY: 50.005,
|
|
928
|
-
width: 100,
|
|
929
|
-
height: 100,
|
|
930
|
-
},
|
|
931
1019
|
},
|
|
932
1020
|
],
|
|
933
1021
|
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
@@ -938,7 +1026,18 @@ describe('TtmlTextParser', () => {
|
|
|
938
1026
|
'<body region="subtitleArea"><div>' +
|
|
939
1027
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
940
1028
|
'</div></body></tt>',
|
|
941
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1029
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1030
|
+
{
|
|
1031
|
+
region: {
|
|
1032
|
+
id: 'subtitleArea',
|
|
1033
|
+
viewportAnchorX: 12.2,
|
|
1034
|
+
viewportAnchorY: 50.005,
|
|
1035
|
+
width: 100,
|
|
1036
|
+
height: 100,
|
|
1037
|
+
},
|
|
1038
|
+
startTime: 62.05,
|
|
1039
|
+
endTime: 3723.2,
|
|
1040
|
+
}, {startTime: 62.05, endTime: 3723.2});
|
|
942
1041
|
});
|
|
943
1042
|
|
|
944
1043
|
it('supports writingMode setting', () => {
|
|
@@ -959,7 +1058,9 @@ describe('TtmlTextParser', () => {
|
|
|
959
1058
|
'<body region="subtitleArea"><div>' +
|
|
960
1059
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
961
1060
|
'</div></body></tt>',
|
|
962
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1061
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1062
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1063
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
963
1064
|
|
|
964
1065
|
verifyHelper(
|
|
965
1066
|
[
|
|
@@ -978,7 +1079,9 @@ describe('TtmlTextParser', () => {
|
|
|
978
1079
|
'<body region="subtitleArea"><div>' +
|
|
979
1080
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
980
1081
|
'</div></body></tt>',
|
|
981
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1082
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1083
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1084
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
982
1085
|
|
|
983
1086
|
verifyHelper(
|
|
984
1087
|
[
|
|
@@ -997,7 +1100,9 @@ describe('TtmlTextParser', () => {
|
|
|
997
1100
|
'<body region="subtitleArea"><div>' +
|
|
998
1101
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
999
1102
|
'</div></body></tt>',
|
|
1000
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1103
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1104
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1105
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1001
1106
|
|
|
1002
1107
|
verifyHelper(
|
|
1003
1108
|
[
|
|
@@ -1016,7 +1121,9 @@ describe('TtmlTextParser', () => {
|
|
|
1016
1121
|
'<body region="subtitleArea"><div>' +
|
|
1017
1122
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
1018
1123
|
'</div></body></tt>',
|
|
1019
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1124
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1125
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1126
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1020
1127
|
|
|
1021
1128
|
verifyHelper(
|
|
1022
1129
|
[
|
|
@@ -1035,7 +1142,9 @@ describe('TtmlTextParser', () => {
|
|
|
1035
1142
|
'<body region="subtitleArea"><div>' +
|
|
1036
1143
|
'<p begin="01:02.05" end="01:02:03.200">Test</p>' +
|
|
1037
1144
|
'</div></body></tt>',
|
|
1038
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1145
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1146
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1147
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1039
1148
|
});
|
|
1040
1149
|
|
|
1041
1150
|
it('disregards empty divs and ps', () => {
|
|
@@ -1051,7 +1160,8 @@ describe('TtmlTextParser', () => {
|
|
|
1051
1160
|
'<div></div>' +
|
|
1052
1161
|
'</body>' +
|
|
1053
1162
|
'</tt>',
|
|
1054
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1163
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1164
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1055
1165
|
|
|
1056
1166
|
verifyHelper(
|
|
1057
1167
|
[
|
|
@@ -1065,7 +1175,8 @@ describe('TtmlTextParser', () => {
|
|
|
1065
1175
|
'</div>' +
|
|
1066
1176
|
'</body>' +
|
|
1067
1177
|
'</tt>',
|
|
1068
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1178
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1179
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1069
1180
|
|
|
1070
1181
|
verifyHelper(
|
|
1071
1182
|
[],
|
|
@@ -1077,7 +1188,8 @@ describe('TtmlTextParser', () => {
|
|
|
1077
1188
|
'<div></div>' +
|
|
1078
1189
|
'</body>' +
|
|
1079
1190
|
'</tt>',
|
|
1080
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1191
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1192
|
+
{});
|
|
1081
1193
|
});
|
|
1082
1194
|
|
|
1083
1195
|
it('should let empty paragraphs with begin or end attributes through', () => {
|
|
@@ -1093,7 +1205,8 @@ describe('TtmlTextParser', () => {
|
|
|
1093
1205
|
'</div>' +
|
|
1094
1206
|
'</body>' +
|
|
1095
1207
|
'</tt>',
|
|
1096
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1208
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1209
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1097
1210
|
});
|
|
1098
1211
|
|
|
1099
1212
|
it('supports smpte:backgroundImage attribute', () => {
|
|
@@ -1103,7 +1216,6 @@ describe('TtmlTextParser', () => {
|
|
|
1103
1216
|
startTime: 62.05,
|
|
1104
1217
|
endTime: 3723.2,
|
|
1105
1218
|
payload: '',
|
|
1106
|
-
backgroundImage: 'data:image/png;base64,base64EncodedImage',
|
|
1107
1219
|
},
|
|
1108
1220
|
],
|
|
1109
1221
|
'<tt ' +
|
|
@@ -1116,19 +1228,19 @@ describe('TtmlTextParser', () => {
|
|
|
1116
1228
|
'<body><div smpte:backgroundImage="#img_0">' +
|
|
1117
1229
|
'<p begin="01:02.05" end="01:02:03.200"></p>' +
|
|
1118
1230
|
'</div></body></tt>',
|
|
1119
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1231
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1232
|
+
{startTime: 62.05, endTime: 3723.2},
|
|
1233
|
+
{
|
|
1234
|
+
startTime: 62.05,
|
|
1235
|
+
endTime: 3723.2,
|
|
1236
|
+
backgroundImage: 'data:image/png;base64,base64EncodedImage',
|
|
1237
|
+
isContainer: false,
|
|
1238
|
+
});
|
|
1120
1239
|
});
|
|
1121
1240
|
|
|
1122
1241
|
it('supports smpte:backgroundImage attribute in div element', () => {
|
|
1123
1242
|
verifyHelper(
|
|
1124
|
-
[
|
|
1125
|
-
{
|
|
1126
|
-
startTime: 0,
|
|
1127
|
-
endTime: 62.05,
|
|
1128
|
-
payload: '',
|
|
1129
|
-
backgroundImage: 'data:image/png;base64,base64EncodedImage',
|
|
1130
|
-
},
|
|
1131
|
-
],
|
|
1243
|
+
[],
|
|
1132
1244
|
'<tt ' +
|
|
1133
1245
|
'xmlns:ttm="http://www.w3.org/ns/ttml#metadata" ' +
|
|
1134
1246
|
'xmlns:smpte="http://www.smpte-ra.org/schemas/2052-1/2010/smpte-tt">' +
|
|
@@ -1139,7 +1251,14 @@ describe('TtmlTextParser', () => {
|
|
|
1139
1251
|
'<body><div begin="00:00.00" end="01:02.05" '+
|
|
1140
1252
|
'smpte:backgroundImage="#img_0"></div>' +
|
|
1141
1253
|
'</body></tt>',
|
|
1142
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1254
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1255
|
+
{startTime: 0, endTime: 62.05},
|
|
1256
|
+
{
|
|
1257
|
+
startTime: 0,
|
|
1258
|
+
endTime: 62.05,
|
|
1259
|
+
backgroundImage: 'data:image/png;base64,base64EncodedImage',
|
|
1260
|
+
isContainer: false,
|
|
1261
|
+
});
|
|
1143
1262
|
});
|
|
1144
1263
|
|
|
1145
1264
|
it('supports smpte:backgroundImage attribute alt namespace', () => {
|
|
@@ -1163,7 +1282,8 @@ describe('TtmlTextParser', () => {
|
|
|
1163
1282
|
'<p begin="01:02.05" end="01:02:03.200" ' +
|
|
1164
1283
|
'smpte:backgroundImage="#img_0" />' +
|
|
1165
1284
|
'</div></body></tt>',
|
|
1166
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1285
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1286
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1167
1287
|
});
|
|
1168
1288
|
|
|
1169
1289
|
it('inserts line breaks for <br> tags', () => {
|
|
@@ -1191,7 +1311,8 @@ describe('TtmlTextParser', () => {
|
|
|
1191
1311
|
'<tt><body><div>' +
|
|
1192
1312
|
'<p begin="01:02.05" end="01:02:03.200">Line1<br/>Line2</p>' +
|
|
1193
1313
|
'</div></body></tt>',
|
|
1194
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1314
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1315
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1195
1316
|
|
|
1196
1317
|
verifyHelper(
|
|
1197
1318
|
[{
|
|
@@ -1224,7 +1345,36 @@ describe('TtmlTextParser', () => {
|
|
|
1224
1345
|
'<span>Line1<br/>Line2</span>' +
|
|
1225
1346
|
'</p>' +
|
|
1226
1347
|
'</div></body></tt>',
|
|
1227
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1348
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1349
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1350
|
+
});
|
|
1351
|
+
|
|
1352
|
+
it('allows old-standard namespace', () => {
|
|
1353
|
+
verifyHelper(
|
|
1354
|
+
[
|
|
1355
|
+
{
|
|
1356
|
+
startTime: 1,
|
|
1357
|
+
endTime: 2,
|
|
1358
|
+
payload: 'Test',
|
|
1359
|
+
cellResolution: {
|
|
1360
|
+
columns: 60,
|
|
1361
|
+
rows: 20,
|
|
1362
|
+
},
|
|
1363
|
+
fontSize: '67%',
|
|
1364
|
+
},
|
|
1365
|
+
],
|
|
1366
|
+
'<tt ' +
|
|
1367
|
+
'xmlns:ttp="http://www.w3.org/2006/10/ttaf1#parameter" ' +
|
|
1368
|
+
'xmlns:tts="http://www.w3.org/2006/10/ttaf1#styling" ' +
|
|
1369
|
+
'ttp:cellResolution="60 20">' +
|
|
1370
|
+
'<styling>' +
|
|
1371
|
+
'<style xml:id="s1" tts:fontSize="67%"/>' +
|
|
1372
|
+
'</styling>' +
|
|
1373
|
+
'<body><div>' +
|
|
1374
|
+
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1375
|
+
'</div></body></tt>',
|
|
1376
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1377
|
+
{startTime: 1, endTime: 2});
|
|
1228
1378
|
});
|
|
1229
1379
|
|
|
1230
1380
|
it('parses cue alignment from textAlign attribute', () => {
|
|
@@ -1249,7 +1399,9 @@ describe('TtmlTextParser', () => {
|
|
|
1249
1399
|
'<body region="subtitleArea"><div>' +
|
|
1250
1400
|
'<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
|
|
1251
1401
|
'</div></body></tt>',
|
|
1252
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1402
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1403
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1404
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1253
1405
|
});
|
|
1254
1406
|
|
|
1255
1407
|
it('parses text style information', () => {
|
|
@@ -1292,7 +1444,9 @@ describe('TtmlTextParser', () => {
|
|
|
1292
1444
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1293
1445
|
'<p begin="00:02.00" end="00:04.00" style="s2">Test 2</p>' +
|
|
1294
1446
|
'</div></body></tt>',
|
|
1295
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1447
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1448
|
+
{startTime: 1, endTime: 4, region: {id: 'subtitleArea'}},
|
|
1449
|
+
{startTime: 1, endTime: 4});
|
|
1296
1450
|
});
|
|
1297
1451
|
|
|
1298
1452
|
// Regression test for #2623
|
|
@@ -1328,7 +1482,8 @@ describe('TtmlTextParser', () => {
|
|
|
1328
1482
|
'<span style="s1">Test</span>' +
|
|
1329
1483
|
'</p>' +
|
|
1330
1484
|
'</div></body></tt>',
|
|
1331
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1485
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1486
|
+
{startTime: 1, endTime: 2});
|
|
1332
1487
|
});
|
|
1333
1488
|
|
|
1334
1489
|
it('parses wrapping option', () => {
|
|
@@ -1351,7 +1506,9 @@ describe('TtmlTextParser', () => {
|
|
|
1351
1506
|
'<body region="subtitleArea"><div>' +
|
|
1352
1507
|
'<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
|
|
1353
1508
|
'</div></body></tt>',
|
|
1354
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1509
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1510
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1511
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1355
1512
|
});
|
|
1356
1513
|
|
|
1357
1514
|
it('parses text decoration', () => {
|
|
@@ -1377,7 +1534,9 @@ describe('TtmlTextParser', () => {
|
|
|
1377
1534
|
'<body region="subtitleArea"><div>' +
|
|
1378
1535
|
'<p begin="01:02.05" end="01:02:03.200" style="s2">Test</p>' +
|
|
1379
1536
|
'</div></body></tt>',
|
|
1380
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1537
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1538
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1539
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1381
1540
|
});
|
|
1382
1541
|
|
|
1383
1542
|
it('cues should have default cellResolution', () => {
|
|
@@ -1400,7 +1559,8 @@ describe('TtmlTextParser', () => {
|
|
|
1400
1559
|
'<body><div>' +
|
|
1401
1560
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1402
1561
|
'</div></body></tt>',
|
|
1403
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1562
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1563
|
+
{startTime: 1, endTime: 2});
|
|
1404
1564
|
});
|
|
1405
1565
|
|
|
1406
1566
|
it('parses cellResolution', () => {
|
|
@@ -1427,7 +1587,8 @@ describe('TtmlTextParser', () => {
|
|
|
1427
1587
|
'<body><div>' +
|
|
1428
1588
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1429
1589
|
'</div></body></tt>',
|
|
1430
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1590
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1591
|
+
{startTime: 1, endTime: 2});
|
|
1431
1592
|
});
|
|
1432
1593
|
|
|
1433
1594
|
it('parses line padding', () => {
|
|
@@ -1455,7 +1616,8 @@ describe('TtmlTextParser', () => {
|
|
|
1455
1616
|
'<body><div>' +
|
|
1456
1617
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1457
1618
|
'</div></body></tt>',
|
|
1458
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1619
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1620
|
+
{startTime: 1, endTime: 2});
|
|
1459
1621
|
});
|
|
1460
1622
|
|
|
1461
1623
|
it('chooses style on element over style on region', () => {
|
|
@@ -1479,7 +1641,9 @@ describe('TtmlTextParser', () => {
|
|
|
1479
1641
|
'<body region="subtitleArea"><div>' +
|
|
1480
1642
|
'<p begin="01:02.05" end="01:02:03.200" style="s2">Test</p>' +
|
|
1481
1643
|
'</div></body></tt>',
|
|
1482
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1644
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1645
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1646
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1483
1647
|
});
|
|
1484
1648
|
|
|
1485
1649
|
it('can parse multiple cues', () => {
|
|
@@ -1492,10 +1656,11 @@ describe('TtmlTextParser', () => {
|
|
|
1492
1656
|
'<p begin="00:01.00" end="00:02.00">First cue</p>' +
|
|
1493
1657
|
'<p begin="00:03.00" end="00:04.00">Second cue</p>' +
|
|
1494
1658
|
'</div></body></tt>',
|
|
1495
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1659
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1660
|
+
{startTime: 1, endTime: 4});
|
|
1496
1661
|
});
|
|
1497
1662
|
|
|
1498
|
-
// Regression test for https://github.com/
|
|
1663
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/2478
|
|
1499
1664
|
it('supports nested cues with only non-ASCII characters', () => {
|
|
1500
1665
|
verifyHelper(
|
|
1501
1666
|
[
|
|
@@ -1515,7 +1680,8 @@ describe('TtmlTextParser', () => {
|
|
|
1515
1680
|
'<tt><body><div>' +
|
|
1516
1681
|
'<p begin="01:02.05" end="01:02:03.200"><span>äöü</span></p>' +
|
|
1517
1682
|
'</div></body></tt>',
|
|
1518
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1683
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1684
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1519
1685
|
});
|
|
1520
1686
|
|
|
1521
1687
|
it('supports timing on multiple levels', () => {
|
|
@@ -1531,7 +1697,9 @@ describe('TtmlTextParser', () => {
|
|
|
1531
1697
|
'<p begin="3s" end="4s">First cue</p>' +
|
|
1532
1698
|
'<p begin="4s" end="5s">Second cue</p>' +
|
|
1533
1699
|
'</div></body></tt>',
|
|
1534
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1700
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1701
|
+
{startTime: 1, endTime: Infinity},
|
|
1702
|
+
{startTime: 3, endTime: Infinity});
|
|
1535
1703
|
|
|
1536
1704
|
verifyHelper(
|
|
1537
1705
|
[{
|
|
@@ -1554,7 +1722,9 @@ describe('TtmlTextParser', () => {
|
|
|
1554
1722
|
'<span begin="5s" end="6s">Second cue</span>' +
|
|
1555
1723
|
'</p>' +
|
|
1556
1724
|
'</div></body></tt>',
|
|
1557
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1725
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1726
|
+
{startTime: 1, endTime: Infinity},
|
|
1727
|
+
{startTime: 3, endTime: Infinity});
|
|
1558
1728
|
});
|
|
1559
1729
|
|
|
1560
1730
|
it('gets end time from parent directly if missing', () => {
|
|
@@ -1568,7 +1738,9 @@ describe('TtmlTextParser', () => {
|
|
|
1568
1738
|
'<p begin="3s" end="4s">First cue</p>' +
|
|
1569
1739
|
'<p begin="4s">Second cue</p>' +
|
|
1570
1740
|
'</div></body></tt>',
|
|
1571
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1741
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1742
|
+
{startTime: 1, endTime: 30},
|
|
1743
|
+
{startTime: 3, endTime: 30});
|
|
1572
1744
|
});
|
|
1573
1745
|
|
|
1574
1746
|
it('supports never-ending cues', () => {
|
|
@@ -1581,7 +1753,8 @@ describe('TtmlTextParser', () => {
|
|
|
1581
1753
|
'<p begin="1s">First cue</p>' +
|
|
1582
1754
|
'<p begin="2s">Second cue</p>' +
|
|
1583
1755
|
'</div></body></tt>',
|
|
1584
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1756
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1757
|
+
{startTime: 1, endTime: Infinity});
|
|
1585
1758
|
});
|
|
1586
1759
|
|
|
1587
1760
|
// Regression test for b/159050711
|
|
@@ -1597,8 +1770,8 @@ describe('TtmlTextParser', () => {
|
|
|
1597
1770
|
// Styles from regionStyle should apply only to the nested cue.
|
|
1598
1771
|
backgroundColor: '',
|
|
1599
1772
|
color: '',
|
|
1600
|
-
displayAlign: Cue.displayAlign.
|
|
1601
|
-
textAlign: Cue.textAlign.
|
|
1773
|
+
displayAlign: Cue.displayAlign.CENTER,
|
|
1774
|
+
textAlign: Cue.textAlign.CENTER,
|
|
1602
1775
|
|
|
1603
1776
|
nestedCues: [
|
|
1604
1777
|
{
|
|
@@ -1623,7 +1796,7 @@ describe('TtmlTextParser', () => {
|
|
|
1623
1796
|
// Styles inherited from backgroundStyle via regionStyle via
|
|
1624
1797
|
// spanStyle
|
|
1625
1798
|
displayAlign: Cue.displayAlign.CENTER,
|
|
1626
|
-
textAlign: Cue.textAlign.
|
|
1799
|
+
textAlign: Cue.textAlign.END,
|
|
1627
1800
|
},
|
|
1628
1801
|
],
|
|
1629
1802
|
},
|
|
@@ -1637,7 +1810,7 @@ describe('TtmlTextParser', () => {
|
|
|
1637
1810
|
// spanStyle inherits attributes from regionStyle
|
|
1638
1811
|
' <style xml:id="pStyle" tts:fontSize="15px" />' +
|
|
1639
1812
|
' <style xml:id="spanStyle" style="regionStyle" ' +
|
|
1640
|
-
' tts:backgroundColor="white" />' +
|
|
1813
|
+
' tts:backgroundColor="white" tts:textAlign="end" />' +
|
|
1641
1814
|
// regionStyle inherits attributes from backgroundStyle
|
|
1642
1815
|
' <style xml:id="regionStyle" style="backgroundStyle" ' +
|
|
1643
1816
|
' tts:backgroundColor="transparent" tts:color="blue" />' +
|
|
@@ -1652,32 +1825,117 @@ describe('TtmlTextParser', () => {
|
|
|
1652
1825
|
' <span style="spanStyle">Test with spanStyle</span>' +
|
|
1653
1826
|
' </p>' +
|
|
1654
1827
|
'</div></body></tt>',
|
|
1655
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1828
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1829
|
+
{startTime: 0, endTime: 60});
|
|
1830
|
+
});
|
|
1831
|
+
|
|
1832
|
+
it('inherits alignment from parent regions', () => {
|
|
1833
|
+
verifyHelper(
|
|
1834
|
+
[
|
|
1835
|
+
{
|
|
1836
|
+
startTime: 0,
|
|
1837
|
+
endTime: 60,
|
|
1838
|
+
payload: '',
|
|
1839
|
+
fontSize: '',
|
|
1840
|
+
textAlign: Cue.textAlign.END,
|
|
1841
|
+
displayAlign: Cue.displayAlign.CENTER,
|
|
1842
|
+
nestedCues: [
|
|
1843
|
+
{
|
|
1844
|
+
startTime: 0,
|
|
1845
|
+
endTime: 60,
|
|
1846
|
+
payload: 'Hello!',
|
|
1847
|
+
textAlign: Cue.textAlign.END,
|
|
1848
|
+
displayAlign: Cue.displayAlign.CENTER,
|
|
1849
|
+
},
|
|
1850
|
+
],
|
|
1851
|
+
},
|
|
1852
|
+
],
|
|
1853
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
1854
|
+
'<head><layout>' +
|
|
1855
|
+
'<region xml:id="r1" tts:textAlign="end" tts:displayAlign="center" />' +
|
|
1856
|
+
'</layout></head>' +
|
|
1857
|
+
'<body><div><p begin="00:00" end="01:00" region="r1">' +
|
|
1858
|
+
'<span>Hello!</span>' +
|
|
1859
|
+
'</p></div></body></tt>',
|
|
1860
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1861
|
+
{startTime: 0, endTime: 60},
|
|
1862
|
+
);
|
|
1863
|
+
});
|
|
1864
|
+
|
|
1865
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/3743
|
|
1866
|
+
it('inherits styles from other styles on nestedCues', () => {
|
|
1867
|
+
verifyHelper(
|
|
1868
|
+
[
|
|
1869
|
+
{
|
|
1870
|
+
// p element
|
|
1871
|
+
startTime: 0,
|
|
1872
|
+
endTime: 60,
|
|
1873
|
+
payload: '',
|
|
1874
|
+
fontSize: '',
|
|
1875
|
+
nestedCues: [
|
|
1876
|
+
{
|
|
1877
|
+
startTime: 0,
|
|
1878
|
+
endTime: 60,
|
|
1879
|
+
payload: 'A',
|
|
1880
|
+
fontSize: '16px',
|
|
1881
|
+
},
|
|
1882
|
+
{
|
|
1883
|
+
startTime: 0,
|
|
1884
|
+
endTime: 60,
|
|
1885
|
+
payload: '',
|
|
1886
|
+
fontSize: '',
|
|
1887
|
+
},
|
|
1888
|
+
{
|
|
1889
|
+
startTime: 0,
|
|
1890
|
+
endTime: 60,
|
|
1891
|
+
payload: 'B',
|
|
1892
|
+
fontSize: '16px',
|
|
1893
|
+
},
|
|
1894
|
+
],
|
|
1895
|
+
},
|
|
1896
|
+
],
|
|
1897
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
1898
|
+
'<head>' +
|
|
1899
|
+
' <styling>' +
|
|
1900
|
+
' <style tts:backgroundColor="rgba(0,0,0,100)" ' +
|
|
1901
|
+
' tts:displayAlign="center" ' +
|
|
1902
|
+
' tts:extent="80% 10%" ' +
|
|
1903
|
+
' tts:fontFamily="proportionalSansSerif" ' +
|
|
1904
|
+
' tts:fontSize="16px" ' +
|
|
1905
|
+
' tts:origin="10% 85%" ' +
|
|
1906
|
+
' tts:textAlign="center" ' +
|
|
1907
|
+
' xml:id="backgroundStyle"/>' +
|
|
1908
|
+
' <style style="backgroundStyle" ' +
|
|
1909
|
+
' tts:backgroundColor="transparent" ' +
|
|
1910
|
+
' tts:color="white" ' +
|
|
1911
|
+
' xml:id="speakerStyle"/>' +
|
|
1912
|
+
' </styling>' +
|
|
1913
|
+
' <layout>' +
|
|
1914
|
+
' <region style="speakerStyle" tts:zIndex="1" xml:id="speaker"/>' +
|
|
1915
|
+
' </layout>' +
|
|
1916
|
+
'</head>' +
|
|
1917
|
+
'<body><div>' +
|
|
1918
|
+
' <p begin="00:00" end="01:00" region="speaker">' +
|
|
1919
|
+
' A<br/>B' +
|
|
1920
|
+
' </p>' +
|
|
1921
|
+
'</div></body></tt>',
|
|
1922
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1923
|
+
{startTime: 0, endTime: 60});
|
|
1656
1924
|
});
|
|
1657
1925
|
|
|
1658
1926
|
/**
|
|
1659
1927
|
* @param {!Array} cues
|
|
1660
1928
|
* @param {string} text
|
|
1661
1929
|
* @param {shaka.extern.TextParser.TimeContext} time
|
|
1930
|
+
* @param {!Object} bodyProperties
|
|
1931
|
+
* @param {Object=} divProperties
|
|
1662
1932
|
*/
|
|
1663
|
-
function verifyHelper(cues, text, time) {
|
|
1933
|
+
function verifyHelper(cues, text, time, bodyProperties, divProperties) {
|
|
1664
1934
|
const data =
|
|
1665
1935
|
shaka.util.BufferUtils.toUint8(shaka.util.StringUtils.toUTF8(text));
|
|
1666
1936
|
const result = new shaka.text.TtmlTextParser().parseMedia(data, time);
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
if (cue.region) {
|
|
1670
|
-
cue.region = jasmine.objectContaining(cue.region);
|
|
1671
|
-
}
|
|
1672
|
-
|
|
1673
|
-
if (cue.nestedCues) {
|
|
1674
|
-
cue.nestedCues = cue.nestedCues.map(mapExpected);
|
|
1675
|
-
}
|
|
1676
|
-
|
|
1677
|
-
return jasmine.objectContaining(cue);
|
|
1678
|
-
};
|
|
1679
|
-
const expected = cues.map(mapExpected);
|
|
1680
|
-
expect(result).toEqual(expected);
|
|
1937
|
+
shaka.test.TtmlUtils.verifyHelper(
|
|
1938
|
+
cues, result, bodyProperties, divProperties);
|
|
1681
1939
|
}
|
|
1682
1940
|
|
|
1683
1941
|
|