shaka-player 3.3.0 → 3.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.csslintrc +11 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
- package/.github/pull_request_template.md +6 -34
- 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 +1722 -1640
- 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 +196 -169
- 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/types/polyfill +1 -0
- 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 +3 -3
- 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 +233 -226
- package/dist/locales.js +30 -30
- 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 +272 -238
- package/dist/shaka-player.compiled.debug.d.ts +272 -238
- package/dist/shaka-player.compiled.debug.externs.js +53 -16
- package/dist/shaka-player.compiled.debug.js +393 -394
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +53 -16
- package/dist/shaka-player.compiled.js +840 -843
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +318 -293
- package/dist/shaka-player.ui.debug.d.ts +318 -293
- package/dist/shaka-player.ui.debug.externs.js +55 -27
- package/dist/shaka-player.ui.debug.js +415 -417
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +55 -27
- package/dist/shaka-player.ui.js +997 -1000
- package/dist/shaka-player.ui.map +4 -4
- package/docs/design/REDESIGN.md +33 -33
- package/docs/design/bg-fetch.md +2 -2
- 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/cmcd.js +186 -0
- 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 +40 -30
- 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/quality_observer.js +17 -34
- 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 +87 -41
- 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/polyfill/symbol.js +46 -0
- 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/cmcd_manager.js +47 -201
- 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 +10 -11
- 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/shaka-player.uncompiled.js +1 -0
- 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 +4 -17
- 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/quality_observer_unit.js +4 -5
- 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 -27
- package/test/player_external.js +2 -10
- package/test/player_integration.js +63 -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 +499 -239
- 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/cmcd_manager_unit.js +29 -18
- 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/third_party/closure-uri/uri.js +21 -0
- package/ui/controls.js +3 -0
- package/ui/less/ad_controls.less +4 -4
- package/ui/less/buttons.less +5 -5
- package/ui/less/containers.less +9 -11
- package/ui/less/overflow_menu.less +4 -4
- package/ui/less/range_elements.less +5 -0
- package/ui/less/tooltip.less +1 -1
- 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
- package/externs/webcrypto.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', () => {
|
|
@@ -1295,7 +1447,9 @@ describe('TtmlTextParser', () => {
|
|
|
1295
1447
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1296
1448
|
'<p begin="00:02.00" end="00:04.00" style="s2">Test 2</p>' +
|
|
1297
1449
|
'</div></body></tt>',
|
|
1298
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1450
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1451
|
+
{startTime: 1, endTime: 4, region: {id: 'subtitleArea'}},
|
|
1452
|
+
{startTime: 1, endTime: 4});
|
|
1299
1453
|
});
|
|
1300
1454
|
|
|
1301
1455
|
it('uses text color if tts:textOutline does not specify color', () => {
|
|
@@ -1318,7 +1472,8 @@ describe('TtmlTextParser', () => {
|
|
|
1318
1472
|
'<body region="subtitleArea"><div>' +
|
|
1319
1473
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1320
1474
|
'</div></body></tt>',
|
|
1321
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1475
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1476
|
+
{startTime: 1, endTime: 2});
|
|
1322
1477
|
});
|
|
1323
1478
|
|
|
1324
1479
|
it('does not add an outline if tts:textOutline only contains color', () => {
|
|
@@ -1339,7 +1494,8 @@ describe('TtmlTextParser', () => {
|
|
|
1339
1494
|
'<body region="subtitleArea"><div>' +
|
|
1340
1495
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1341
1496
|
'</div></body></tt>',
|
|
1342
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1497
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1498
|
+
{startTime: 1, endTime: 2});
|
|
1343
1499
|
});
|
|
1344
1500
|
|
|
1345
1501
|
// Regression test for #2623
|
|
@@ -1375,7 +1531,8 @@ describe('TtmlTextParser', () => {
|
|
|
1375
1531
|
'<span style="s1">Test</span>' +
|
|
1376
1532
|
'</p>' +
|
|
1377
1533
|
'</div></body></tt>',
|
|
1378
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1534
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1535
|
+
{startTime: 1, endTime: 2});
|
|
1379
1536
|
});
|
|
1380
1537
|
|
|
1381
1538
|
it('parses wrapping option', () => {
|
|
@@ -1398,7 +1555,9 @@ describe('TtmlTextParser', () => {
|
|
|
1398
1555
|
'<body region="subtitleArea"><div>' +
|
|
1399
1556
|
'<p begin="01:02.05" end="01:02:03.200" style="s1">Test</p>' +
|
|
1400
1557
|
'</div></body></tt>',
|
|
1401
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1558
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1559
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1560
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1402
1561
|
});
|
|
1403
1562
|
|
|
1404
1563
|
it('parses text decoration', () => {
|
|
@@ -1424,7 +1583,9 @@ describe('TtmlTextParser', () => {
|
|
|
1424
1583
|
'<body region="subtitleArea"><div>' +
|
|
1425
1584
|
'<p begin="01:02.05" end="01:02:03.200" style="s2">Test</p>' +
|
|
1426
1585
|
'</div></body></tt>',
|
|
1427
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1586
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1587
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1588
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1428
1589
|
});
|
|
1429
1590
|
|
|
1430
1591
|
it('cues should have default cellResolution', () => {
|
|
@@ -1447,7 +1608,8 @@ describe('TtmlTextParser', () => {
|
|
|
1447
1608
|
'<body><div>' +
|
|
1448
1609
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1449
1610
|
'</div></body></tt>',
|
|
1450
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1611
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1612
|
+
{startTime: 1, endTime: 2});
|
|
1451
1613
|
});
|
|
1452
1614
|
|
|
1453
1615
|
it('parses cellResolution', () => {
|
|
@@ -1474,7 +1636,8 @@ describe('TtmlTextParser', () => {
|
|
|
1474
1636
|
'<body><div>' +
|
|
1475
1637
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1476
1638
|
'</div></body></tt>',
|
|
1477
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1639
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1640
|
+
{startTime: 1, endTime: 2});
|
|
1478
1641
|
});
|
|
1479
1642
|
|
|
1480
1643
|
it('parses line padding', () => {
|
|
@@ -1502,7 +1665,8 @@ describe('TtmlTextParser', () => {
|
|
|
1502
1665
|
'<body><div>' +
|
|
1503
1666
|
'<p begin="00:01.00" end="00:02.00" style="s1">Test</p>' +
|
|
1504
1667
|
'</div></body></tt>',
|
|
1505
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1668
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1669
|
+
{startTime: 1, endTime: 2});
|
|
1506
1670
|
});
|
|
1507
1671
|
|
|
1508
1672
|
it('chooses style on element over style on region', () => {
|
|
@@ -1526,7 +1690,9 @@ describe('TtmlTextParser', () => {
|
|
|
1526
1690
|
'<body region="subtitleArea"><div>' +
|
|
1527
1691
|
'<p begin="01:02.05" end="01:02:03.200" style="s2">Test</p>' +
|
|
1528
1692
|
'</div></body></tt>',
|
|
1529
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1693
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1694
|
+
{startTime: 62.05, endTime: 3723.2, region: {id: 'subtitleArea'}},
|
|
1695
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1530
1696
|
});
|
|
1531
1697
|
|
|
1532
1698
|
it('can parse multiple cues', () => {
|
|
@@ -1539,10 +1705,11 @@ describe('TtmlTextParser', () => {
|
|
|
1539
1705
|
'<p begin="00:01.00" end="00:02.00">First cue</p>' +
|
|
1540
1706
|
'<p begin="00:03.00" end="00:04.00">Second cue</p>' +
|
|
1541
1707
|
'</div></body></tt>',
|
|
1542
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1708
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1709
|
+
{startTime: 1, endTime: 4});
|
|
1543
1710
|
});
|
|
1544
1711
|
|
|
1545
|
-
// Regression test for https://github.com/
|
|
1712
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/2478
|
|
1546
1713
|
it('supports nested cues with only non-ASCII characters', () => {
|
|
1547
1714
|
verifyHelper(
|
|
1548
1715
|
[
|
|
@@ -1562,7 +1729,8 @@ describe('TtmlTextParser', () => {
|
|
|
1562
1729
|
'<tt><body><div>' +
|
|
1563
1730
|
'<p begin="01:02.05" end="01:02:03.200"><span>äöü</span></p>' +
|
|
1564
1731
|
'</div></body></tt>',
|
|
1565
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1732
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1733
|
+
{startTime: 62.05, endTime: 3723.2});
|
|
1566
1734
|
});
|
|
1567
1735
|
|
|
1568
1736
|
it('supports timing on multiple levels', () => {
|
|
@@ -1578,7 +1746,9 @@ describe('TtmlTextParser', () => {
|
|
|
1578
1746
|
'<p begin="3s" end="4s">First cue</p>' +
|
|
1579
1747
|
'<p begin="4s" end="5s">Second cue</p>' +
|
|
1580
1748
|
'</div></body></tt>',
|
|
1581
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1749
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1750
|
+
{startTime: 1, endTime: Infinity},
|
|
1751
|
+
{startTime: 3, endTime: Infinity});
|
|
1582
1752
|
|
|
1583
1753
|
verifyHelper(
|
|
1584
1754
|
[{
|
|
@@ -1601,7 +1771,9 @@ describe('TtmlTextParser', () => {
|
|
|
1601
1771
|
'<span begin="5s" end="6s">Second cue</span>' +
|
|
1602
1772
|
'</p>' +
|
|
1603
1773
|
'</div></body></tt>',
|
|
1604
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1774
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1775
|
+
{startTime: 1, endTime: Infinity},
|
|
1776
|
+
{startTime: 3, endTime: Infinity});
|
|
1605
1777
|
});
|
|
1606
1778
|
|
|
1607
1779
|
it('gets end time from parent directly if missing', () => {
|
|
@@ -1615,7 +1787,9 @@ describe('TtmlTextParser', () => {
|
|
|
1615
1787
|
'<p begin="3s" end="4s">First cue</p>' +
|
|
1616
1788
|
'<p begin="4s">Second cue</p>' +
|
|
1617
1789
|
'</div></body></tt>',
|
|
1618
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1790
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1791
|
+
{startTime: 1, endTime: 30},
|
|
1792
|
+
{startTime: 3, endTime: 30});
|
|
1619
1793
|
});
|
|
1620
1794
|
|
|
1621
1795
|
it('supports never-ending cues', () => {
|
|
@@ -1628,7 +1802,8 @@ describe('TtmlTextParser', () => {
|
|
|
1628
1802
|
'<p begin="1s">First cue</p>' +
|
|
1629
1803
|
'<p begin="2s">Second cue</p>' +
|
|
1630
1804
|
'</div></body></tt>',
|
|
1631
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1805
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1806
|
+
{startTime: 1, endTime: Infinity});
|
|
1632
1807
|
});
|
|
1633
1808
|
|
|
1634
1809
|
// Regression test for b/159050711
|
|
@@ -1644,8 +1819,8 @@ describe('TtmlTextParser', () => {
|
|
|
1644
1819
|
// Styles from regionStyle should apply only to the nested cue.
|
|
1645
1820
|
backgroundColor: '',
|
|
1646
1821
|
color: '',
|
|
1647
|
-
displayAlign: Cue.displayAlign.
|
|
1648
|
-
textAlign: Cue.textAlign.
|
|
1822
|
+
displayAlign: Cue.displayAlign.CENTER,
|
|
1823
|
+
textAlign: Cue.textAlign.CENTER,
|
|
1649
1824
|
|
|
1650
1825
|
nestedCues: [
|
|
1651
1826
|
{
|
|
@@ -1670,7 +1845,7 @@ describe('TtmlTextParser', () => {
|
|
|
1670
1845
|
// Styles inherited from backgroundStyle via regionStyle via
|
|
1671
1846
|
// spanStyle
|
|
1672
1847
|
displayAlign: Cue.displayAlign.CENTER,
|
|
1673
|
-
textAlign: Cue.textAlign.
|
|
1848
|
+
textAlign: Cue.textAlign.END,
|
|
1674
1849
|
},
|
|
1675
1850
|
],
|
|
1676
1851
|
},
|
|
@@ -1684,7 +1859,7 @@ describe('TtmlTextParser', () => {
|
|
|
1684
1859
|
// spanStyle inherits attributes from regionStyle
|
|
1685
1860
|
' <style xml:id="pStyle" tts:fontSize="15px" />' +
|
|
1686
1861
|
' <style xml:id="spanStyle" style="regionStyle" ' +
|
|
1687
|
-
' tts:backgroundColor="white" />' +
|
|
1862
|
+
' tts:backgroundColor="white" tts:textAlign="end" />' +
|
|
1688
1863
|
// regionStyle inherits attributes from backgroundStyle
|
|
1689
1864
|
' <style xml:id="regionStyle" style="backgroundStyle" ' +
|
|
1690
1865
|
' tts:backgroundColor="transparent" tts:color="blue" />' +
|
|
@@ -1699,32 +1874,117 @@ describe('TtmlTextParser', () => {
|
|
|
1699
1874
|
' <span style="spanStyle">Test with spanStyle</span>' +
|
|
1700
1875
|
' </p>' +
|
|
1701
1876
|
'</div></body></tt>',
|
|
1702
|
-
{periodStart: 0, segmentStart: 0, segmentEnd: 0}
|
|
1877
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1878
|
+
{startTime: 0, endTime: 60});
|
|
1879
|
+
});
|
|
1880
|
+
|
|
1881
|
+
it('inherits alignment from parent regions', () => {
|
|
1882
|
+
verifyHelper(
|
|
1883
|
+
[
|
|
1884
|
+
{
|
|
1885
|
+
startTime: 0,
|
|
1886
|
+
endTime: 60,
|
|
1887
|
+
payload: '',
|
|
1888
|
+
fontSize: '',
|
|
1889
|
+
textAlign: Cue.textAlign.END,
|
|
1890
|
+
displayAlign: Cue.displayAlign.CENTER,
|
|
1891
|
+
nestedCues: [
|
|
1892
|
+
{
|
|
1893
|
+
startTime: 0,
|
|
1894
|
+
endTime: 60,
|
|
1895
|
+
payload: 'Hello!',
|
|
1896
|
+
textAlign: Cue.textAlign.END,
|
|
1897
|
+
displayAlign: Cue.displayAlign.CENTER,
|
|
1898
|
+
},
|
|
1899
|
+
],
|
|
1900
|
+
},
|
|
1901
|
+
],
|
|
1902
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
1903
|
+
'<head><layout>' +
|
|
1904
|
+
'<region xml:id="r1" tts:textAlign="end" tts:displayAlign="center" />' +
|
|
1905
|
+
'</layout></head>' +
|
|
1906
|
+
'<body><div><p begin="00:00" end="01:00" region="r1">' +
|
|
1907
|
+
'<span>Hello!</span>' +
|
|
1908
|
+
'</p></div></body></tt>',
|
|
1909
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1910
|
+
{startTime: 0, endTime: 60},
|
|
1911
|
+
);
|
|
1912
|
+
});
|
|
1913
|
+
|
|
1914
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/3743
|
|
1915
|
+
it('inherits styles from other styles on nestedCues', () => {
|
|
1916
|
+
verifyHelper(
|
|
1917
|
+
[
|
|
1918
|
+
{
|
|
1919
|
+
// p element
|
|
1920
|
+
startTime: 0,
|
|
1921
|
+
endTime: 60,
|
|
1922
|
+
payload: '',
|
|
1923
|
+
fontSize: '',
|
|
1924
|
+
nestedCues: [
|
|
1925
|
+
{
|
|
1926
|
+
startTime: 0,
|
|
1927
|
+
endTime: 60,
|
|
1928
|
+
payload: 'A',
|
|
1929
|
+
fontSize: '16px',
|
|
1930
|
+
},
|
|
1931
|
+
{
|
|
1932
|
+
startTime: 0,
|
|
1933
|
+
endTime: 60,
|
|
1934
|
+
payload: '',
|
|
1935
|
+
fontSize: '',
|
|
1936
|
+
},
|
|
1937
|
+
{
|
|
1938
|
+
startTime: 0,
|
|
1939
|
+
endTime: 60,
|
|
1940
|
+
payload: 'B',
|
|
1941
|
+
fontSize: '16px',
|
|
1942
|
+
},
|
|
1943
|
+
],
|
|
1944
|
+
},
|
|
1945
|
+
],
|
|
1946
|
+
'<tt xmlns:tts="http://www.w3.org/ns/ttml#styling">' +
|
|
1947
|
+
'<head>' +
|
|
1948
|
+
' <styling>' +
|
|
1949
|
+
' <style tts:backgroundColor="rgba(0,0,0,100)" ' +
|
|
1950
|
+
' tts:displayAlign="center" ' +
|
|
1951
|
+
' tts:extent="80% 10%" ' +
|
|
1952
|
+
' tts:fontFamily="proportionalSansSerif" ' +
|
|
1953
|
+
' tts:fontSize="16px" ' +
|
|
1954
|
+
' tts:origin="10% 85%" ' +
|
|
1955
|
+
' tts:textAlign="center" ' +
|
|
1956
|
+
' xml:id="backgroundStyle"/>' +
|
|
1957
|
+
' <style style="backgroundStyle" ' +
|
|
1958
|
+
' tts:backgroundColor="transparent" ' +
|
|
1959
|
+
' tts:color="white" ' +
|
|
1960
|
+
' xml:id="speakerStyle"/>' +
|
|
1961
|
+
' </styling>' +
|
|
1962
|
+
' <layout>' +
|
|
1963
|
+
' <region style="speakerStyle" tts:zIndex="1" xml:id="speaker"/>' +
|
|
1964
|
+
' </layout>' +
|
|
1965
|
+
'</head>' +
|
|
1966
|
+
'<body><div>' +
|
|
1967
|
+
' <p begin="00:00" end="01:00" region="speaker">' +
|
|
1968
|
+
' A<br/>B' +
|
|
1969
|
+
' </p>' +
|
|
1970
|
+
'</div></body></tt>',
|
|
1971
|
+
{periodStart: 0, segmentStart: 0, segmentEnd: 0},
|
|
1972
|
+
{startTime: 0, endTime: 60});
|
|
1703
1973
|
});
|
|
1704
1974
|
|
|
1705
1975
|
/**
|
|
1706
1976
|
* @param {!Array} cues
|
|
1707
1977
|
* @param {string} text
|
|
1708
1978
|
* @param {shaka.extern.TextParser.TimeContext} time
|
|
1979
|
+
* @param {!Object} bodyProperties
|
|
1980
|
+
* @param {Object=} divProperties
|
|
1709
1981
|
*/
|
|
1710
|
-
function verifyHelper(cues, text, time) {
|
|
1982
|
+
function verifyHelper(cues, text, time, bodyProperties, divProperties) {
|
|
1711
1983
|
const data =
|
|
1712
1984
|
shaka.util.BufferUtils.toUint8(shaka.util.StringUtils.toUTF8(text));
|
|
1713
1985
|
const result = new shaka.text.TtmlTextParser().parseMedia(data, time);
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
if (cue.region) {
|
|
1717
|
-
cue.region = jasmine.objectContaining(cue.region);
|
|
1718
|
-
}
|
|
1719
|
-
|
|
1720
|
-
if (cue.nestedCues) {
|
|
1721
|
-
cue.nestedCues = cue.nestedCues.map(mapExpected);
|
|
1722
|
-
}
|
|
1723
|
-
|
|
1724
|
-
return jasmine.objectContaining(cue);
|
|
1725
|
-
};
|
|
1726
|
-
const expected = cues.map(mapExpected);
|
|
1727
|
-
expect(result).toEqual(expected);
|
|
1986
|
+
shaka.test.TtmlUtils.verifyHelper(
|
|
1987
|
+
cues, result, bodyProperties, divProperties);
|
|
1728
1988
|
}
|
|
1729
1989
|
|
|
1730
1990
|
|