shaka-player 3.1.4 → 3.1.7
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 +1540 -1474
- 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 +224 -218
- 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 +237 -222
- package/dist/shaka-player.compiled.debug.d.ts +237 -222
- package/dist/shaka-player.compiled.debug.externs.js +20 -3
- package/dist/shaka-player.compiled.debug.js +361 -365
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +20 -3
- package/dist/shaka-player.compiled.js +811 -815
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +281 -275
- package/dist/shaka-player.ui.debug.d.ts +281 -275
- package/dist/shaka-player.ui.debug.externs.js +34 -26
- package/dist/shaka-player.ui.debug.js +384 -389
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +34 -26
- package/dist/shaka-player.ui.js +945 -950
- 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/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 +3 -3
- package/lib/cea/cea608_memory.js +1 -1
- package/lib/cea/cea708_service.js +6 -5
- package/lib/cea/cea_decoder.js +1 -1
- package/lib/cea/i_caption_decoder.js +2 -3
- 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 +11 -9
- package/lib/hls/manifest_text_parser.js +4 -3
- package/lib/media/adaptation_set.js +1 -2
- package/lib/media/closed_caption_parser.js +0 -1
- 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/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 +14 -15
- package/lib/player.js +52 -22
- 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/routing/walker.js +2 -3
- package/lib/text/cue.js +7 -1
- package/lib/text/simple_text_displayer.js +2 -1
- package/lib/text/text_engine.js +1 -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 +60 -8
- 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 +3 -17
- package/test/media/drm_engine_unit.js +7 -26
- 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 +21 -28
- 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 +0 -7
- package/test/player_unit.js +57 -42
- package/test/routing/walker_unit.js +0 -8
- 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 +38 -37
- 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,10 +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.UITextDisplayer');
|
|
10
|
-
|
|
11
7
|
describe('UITextDisplayer', () => {
|
|
12
8
|
/** @type {!HTMLElement} */
|
|
13
9
|
let videoContainer;
|
|
@@ -65,7 +61,18 @@ describe('UITextDisplayer', () => {
|
|
|
65
61
|
document.body.removeChild(videoContainer);
|
|
66
62
|
});
|
|
67
63
|
|
|
68
|
-
|
|
64
|
+
/**
|
|
65
|
+
* @suppress {visibility}
|
|
66
|
+
* "suppress visibility" has function scope, so this is a mini-function that
|
|
67
|
+
* exists solely to suppress visibility rules for these actions.
|
|
68
|
+
*/
|
|
69
|
+
function updateCaptions() {
|
|
70
|
+
// Rather than wait for a timer, which can be unreliable on Safari when the
|
|
71
|
+
// device is heavily loaded, trigger the update explicitly.
|
|
72
|
+
textDisplayer.updateCaptions_();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
it('correctly displays styles for cues', () => {
|
|
69
76
|
/** @type {!shaka.text.Cue} */
|
|
70
77
|
const cue = new shaka.text.Cue(0, 100, 'Captain\'s log.');
|
|
71
78
|
cue.color = 'green';
|
|
@@ -81,8 +88,7 @@ describe('UITextDisplayer', () => {
|
|
|
81
88
|
|
|
82
89
|
textDisplayer.setTextVisibility(true);
|
|
83
90
|
textDisplayer.append([cue]);
|
|
84
|
-
|
|
85
|
-
await shaka.test.Util.delay(0.5);
|
|
91
|
+
updateCaptions();
|
|
86
92
|
|
|
87
93
|
const textContainer = videoContainer.querySelector('.shaka-text-container');
|
|
88
94
|
const captions = textContainer.querySelector('div');
|
|
@@ -114,7 +120,7 @@ describe('UITextDisplayer', () => {
|
|
|
114
120
|
.toEqual(jasmine.objectContaining({'background-color': 'black'}));
|
|
115
121
|
});
|
|
116
122
|
|
|
117
|
-
it('correctly displays styles for nested cues',
|
|
123
|
+
it('correctly displays styles for nested cues', () => {
|
|
118
124
|
/** @type {!shaka.text.Cue} */
|
|
119
125
|
const cue = new shaka.text.Cue(0, 100, '');
|
|
120
126
|
const nestedCue = new shaka.text.Cue(0, 100, 'Captain\'s log.');
|
|
@@ -131,8 +137,7 @@ describe('UITextDisplayer', () => {
|
|
|
131
137
|
|
|
132
138
|
textDisplayer.setTextVisibility(true);
|
|
133
139
|
textDisplayer.append([cue]);
|
|
134
|
-
|
|
135
|
-
await shaka.test.Util.delay(0.5);
|
|
140
|
+
updateCaptions();
|
|
136
141
|
|
|
137
142
|
// Verify styles applied to the nested cues.
|
|
138
143
|
const textContainer = videoContainer.querySelector('.shaka-text-container');
|
|
@@ -165,7 +170,7 @@ describe('UITextDisplayer', () => {
|
|
|
165
170
|
.toEqual(jasmine.objectContaining({'background-color': 'black'}));
|
|
166
171
|
});
|
|
167
172
|
|
|
168
|
-
it('correctly displays styles for cellResolution units',
|
|
173
|
+
it('correctly displays styles for cellResolution units', () => {
|
|
169
174
|
/** @type {!shaka.text.Cue} */
|
|
170
175
|
const cue = new shaka.text.Cue(0, 100, 'Captain\'s log.');
|
|
171
176
|
cue.fontSize = '0.80c';
|
|
@@ -177,8 +182,7 @@ describe('UITextDisplayer', () => {
|
|
|
177
182
|
|
|
178
183
|
textDisplayer.setTextVisibility(true);
|
|
179
184
|
textDisplayer.append([cue]);
|
|
180
|
-
|
|
181
|
-
await shaka.test.Util.delay(0.5);
|
|
185
|
+
updateCaptions();
|
|
182
186
|
|
|
183
187
|
// Expected value is calculated based on ttp:cellResolution="60 20"
|
|
184
188
|
// videoContainerHeight=450px and tts:fontSize="0.80c" on the default style.
|
|
@@ -200,7 +204,7 @@ describe('UITextDisplayer', () => {
|
|
|
200
204
|
}));
|
|
201
205
|
});
|
|
202
206
|
|
|
203
|
-
it('correctly displays styles for percentages units',
|
|
207
|
+
it('correctly displays styles for percentages units', () => {
|
|
204
208
|
/** @type {!shaka.text.Cue} */
|
|
205
209
|
const cue = new shaka.text.Cue(0, 100, 'Captain\'s log.');
|
|
206
210
|
cue.fontSize = '90%';
|
|
@@ -211,8 +215,7 @@ describe('UITextDisplayer', () => {
|
|
|
211
215
|
|
|
212
216
|
textDisplayer.setTextVisibility(true);
|
|
213
217
|
textDisplayer.append([cue]);
|
|
214
|
-
|
|
215
|
-
await shaka.test.Util.delay(0.5);
|
|
218
|
+
updateCaptions();
|
|
216
219
|
|
|
217
220
|
// Expected value is calculated based on ttp:cellResolution="32 15"
|
|
218
221
|
// videoContainerHeight=450px and tts:fontSize="90%" on the default style.
|
|
@@ -225,15 +228,15 @@ describe('UITextDisplayer', () => {
|
|
|
225
228
|
jasmine.objectContaining({'font-size': expectedFontSize}));
|
|
226
229
|
});
|
|
227
230
|
|
|
228
|
-
it('does not display duplicate cues',
|
|
231
|
+
it('does not display duplicate cues', () => {
|
|
229
232
|
// These are identical.
|
|
230
233
|
const cue1 = new shaka.text.Cue(0, 100, 'Captain\'s log.');
|
|
231
234
|
const cue2 = new shaka.text.Cue(0, 100, 'Captain\'s log.');
|
|
232
235
|
|
|
233
236
|
textDisplayer.setTextVisibility(true);
|
|
234
237
|
textDisplayer.append([cue1]);
|
|
235
|
-
|
|
236
|
-
|
|
238
|
+
updateCaptions();
|
|
239
|
+
|
|
237
240
|
/** @type {Element} */
|
|
238
241
|
const textContainer = videoContainer.querySelector('.shaka-text-container');
|
|
239
242
|
let captions = textContainer.querySelectorAll('div');
|
|
@@ -241,14 +244,14 @@ describe('UITextDisplayer', () => {
|
|
|
241
244
|
expect(captions.length).toBe(1);
|
|
242
245
|
|
|
243
246
|
textDisplayer.append([cue2]);
|
|
244
|
-
|
|
245
|
-
|
|
247
|
+
updateCaptions();
|
|
248
|
+
|
|
246
249
|
captions = textContainer.querySelectorAll('div');
|
|
247
250
|
// Expect textContainer to display one cue without duplication.
|
|
248
251
|
expect(captions.length).toBe(1);
|
|
249
252
|
});
|
|
250
253
|
|
|
251
|
-
it('does not mistake cues with nested cues as duplicates',
|
|
254
|
+
it('does not mistake cues with nested cues as duplicates', () => {
|
|
252
255
|
// These are not identical, but might look like it at the top level.
|
|
253
256
|
const cue1 = new shaka.text.Cue(0, 100, '');
|
|
254
257
|
cue1.nestedCues = [
|
|
@@ -265,8 +268,8 @@ describe('UITextDisplayer', () => {
|
|
|
265
268
|
|
|
266
269
|
textDisplayer.setTextVisibility(true);
|
|
267
270
|
textDisplayer.append([cue1]);
|
|
268
|
-
|
|
269
|
-
|
|
271
|
+
updateCaptions();
|
|
272
|
+
|
|
270
273
|
/** @type {Element} */
|
|
271
274
|
const textContainer = videoContainer.querySelector('.shaka-text-container');
|
|
272
275
|
let captions = textContainer.querySelectorAll('div');
|
|
@@ -274,15 +277,15 @@ describe('UITextDisplayer', () => {
|
|
|
274
277
|
expect(captions.length).toBe(1);
|
|
275
278
|
|
|
276
279
|
textDisplayer.append([cue2, cue3]);
|
|
277
|
-
|
|
278
|
-
|
|
280
|
+
updateCaptions();
|
|
281
|
+
|
|
279
282
|
captions = textContainer.querySelectorAll('div');
|
|
280
283
|
// Expect textContainer to display all three cues, since they are not truly
|
|
281
284
|
// duplicates.
|
|
282
285
|
expect(captions.length).toBe(3);
|
|
283
286
|
});
|
|
284
287
|
|
|
285
|
-
it('does not mistake cues with different styles duplicates',
|
|
288
|
+
it('does not mistake cues with different styles duplicates', () => {
|
|
286
289
|
// These all have the same text and timing, but different styles.
|
|
287
290
|
const cue1 = new shaka.text.Cue(0, 100, 'Hello!');
|
|
288
291
|
cue1.color = 'green';
|
|
@@ -296,8 +299,8 @@ describe('UITextDisplayer', () => {
|
|
|
296
299
|
|
|
297
300
|
textDisplayer.setTextVisibility(true);
|
|
298
301
|
textDisplayer.append([cue1]);
|
|
299
|
-
|
|
300
|
-
|
|
302
|
+
updateCaptions();
|
|
303
|
+
|
|
301
304
|
/** @type {Element} */
|
|
302
305
|
const textContainer = videoContainer.querySelector('.shaka-text-container');
|
|
303
306
|
let captions = textContainer.querySelectorAll('div');
|
|
@@ -305,20 +308,20 @@ describe('UITextDisplayer', () => {
|
|
|
305
308
|
expect(captions.length).toBe(1);
|
|
306
309
|
|
|
307
310
|
textDisplayer.append([cue2, cue3]);
|
|
308
|
-
|
|
309
|
-
|
|
311
|
+
updateCaptions();
|
|
312
|
+
|
|
310
313
|
captions = textContainer.querySelectorAll('div');
|
|
311
314
|
// Expect textContainer to display all three cues, since they are not truly
|
|
312
315
|
// duplicates.
|
|
313
316
|
expect(captions.length).toBe(3);
|
|
314
317
|
});
|
|
315
318
|
|
|
316
|
-
it('hides currently displayed cue when removed',
|
|
319
|
+
it('hides currently displayed cue when removed', () => {
|
|
317
320
|
const cue = new shaka.text.Cue(0, 50, 'One');
|
|
318
321
|
textDisplayer.setTextVisibility(true);
|
|
319
322
|
textDisplayer.append([cue]);
|
|
320
323
|
video.currentTime = 10;
|
|
321
|
-
|
|
324
|
+
updateCaptions();
|
|
322
325
|
const textContainer = videoContainer.querySelector('.shaka-text-container');
|
|
323
326
|
|
|
324
327
|
let cueElements = textContainer.querySelectorAll('div');
|
|
@@ -331,7 +334,7 @@ describe('UITextDisplayer', () => {
|
|
|
331
334
|
expect(cueElements.length).toBe(0);
|
|
332
335
|
});
|
|
333
336
|
|
|
334
|
-
it('hides and shows nested cues at appropriate times',
|
|
337
|
+
it('hides and shows nested cues at appropriate times', () => {
|
|
335
338
|
const parentCue1 = new shaka.text.Cue(0, 100, '');
|
|
336
339
|
const cue1 = new shaka.text.Cue(0, 50, 'One');
|
|
337
340
|
parentCue1.nestedCues.push(cue1);
|
|
@@ -348,7 +351,7 @@ describe('UITextDisplayer', () => {
|
|
|
348
351
|
textDisplayer.append([parentCue1, parentCue2]);
|
|
349
352
|
|
|
350
353
|
video.currentTime = 10;
|
|
351
|
-
|
|
354
|
+
updateCaptions();
|
|
352
355
|
/** @type {Element} */
|
|
353
356
|
const textContainer = videoContainer.querySelector('.shaka-text-container');
|
|
354
357
|
let parentCueElements = textContainer.querySelectorAll('div');
|
|
@@ -357,38 +360,38 @@ describe('UITextDisplayer', () => {
|
|
|
357
360
|
expect(parentCueElements[0].textContent).toBe('One');
|
|
358
361
|
|
|
359
362
|
video.currentTime = 35;
|
|
360
|
-
|
|
363
|
+
updateCaptions();
|
|
361
364
|
parentCueElements = textContainer.querySelectorAll('div');
|
|
362
365
|
expect(parentCueElements.length).toBe(1);
|
|
363
366
|
expect(parentCueElements[0].textContent).toBe('OneTwo');
|
|
364
367
|
|
|
365
368
|
video.currentTime = 60;
|
|
366
|
-
|
|
369
|
+
updateCaptions();
|
|
367
370
|
parentCueElements = textContainer.querySelectorAll('div');
|
|
368
371
|
expect(parentCueElements.length).toBe(1);
|
|
369
372
|
expect(parentCueElements[0].textContent).toBe('TwoThree');
|
|
370
373
|
|
|
371
374
|
video.currentTime = 85;
|
|
372
|
-
|
|
375
|
+
updateCaptions();
|
|
373
376
|
parentCueElements = textContainer.querySelectorAll('div');
|
|
374
377
|
expect(parentCueElements.length).toBe(1);
|
|
375
378
|
expect(parentCueElements[0].textContent).toBe('Three');
|
|
376
379
|
|
|
377
380
|
video.currentTime = 95;
|
|
378
|
-
|
|
381
|
+
updateCaptions();
|
|
379
382
|
parentCueElements = textContainer.querySelectorAll('div');
|
|
380
383
|
expect(parentCueElements.length).toBe(2);
|
|
381
384
|
expect(parentCueElements[0].textContent).toBe('Three');
|
|
382
385
|
expect(parentCueElements[1].textContent).toBe('Four');
|
|
383
386
|
|
|
384
387
|
video.currentTime = 105;
|
|
385
|
-
|
|
388
|
+
updateCaptions();
|
|
386
389
|
parentCueElements = textContainer.querySelectorAll('div');
|
|
387
390
|
expect(parentCueElements.length).toBe(1);
|
|
388
391
|
expect(parentCueElements[0].textContent).toBe('Four');
|
|
389
392
|
|
|
390
393
|
video.currentTime = 150;
|
|
391
|
-
|
|
394
|
+
updateCaptions();
|
|
392
395
|
parentCueElements = textContainer.querySelectorAll('div');
|
|
393
396
|
expect(parentCueElements.length).toBe(1);
|
|
394
397
|
expect(parentCueElements[0].textContent).toBe('');
|
|
@@ -4,15 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.log');
|
|
8
|
-
goog.require('shaka.test.Util');
|
|
9
|
-
goog.require('shaka.text.Cue');
|
|
10
|
-
goog.require('shaka.text.CueRegion');
|
|
11
|
-
goog.require('shaka.text.VttTextParser');
|
|
12
|
-
goog.require('shaka.util.BufferUtils');
|
|
13
|
-
goog.require('shaka.util.Error');
|
|
14
|
-
goog.require('shaka.util.StringUtils');
|
|
15
|
-
|
|
16
7
|
describe('VttTextParser', () => {
|
|
17
8
|
const Cue = shaka.text.Cue;
|
|
18
9
|
const CueRegion = shaka.text.CueRegion;
|
package/test/ui/ad_ui_unit.js
CHANGED
|
@@ -4,17 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.Player');
|
|
8
|
-
goog.require('shaka.ads.AdManager');
|
|
9
|
-
goog.require('shaka.test.FakeAd');
|
|
10
|
-
goog.require('shaka.test.FakeAdManager');
|
|
11
|
-
goog.require('shaka.test.UiUtils');
|
|
12
|
-
goog.require('shaka.test.Util');
|
|
13
|
-
goog.require('shaka.test.Waiter');
|
|
14
|
-
goog.require('shaka.ui.Locales');
|
|
15
|
-
goog.require('shaka.util.EventManager');
|
|
16
|
-
goog.requireType('shaka.ui.Localization');
|
|
17
|
-
|
|
18
7
|
describe('Ad UI', () => {
|
|
19
8
|
const UiUtils = shaka.test.UiUtils;
|
|
20
9
|
/** @type {!HTMLLinkElement} */
|
|
@@ -4,17 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.Player');
|
|
8
|
-
goog.require('shaka.test.FakeVideo');
|
|
9
|
-
goog.require('shaka.test.UiUtils');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.test.Waiter');
|
|
12
|
-
goog.require('shaka.text.Cue');
|
|
13
|
-
goog.require('shaka.text.SimpleTextDisplayer');
|
|
14
|
-
goog.require('shaka.text.UITextDisplayer');
|
|
15
|
-
goog.require('shaka.ui.Overlay');
|
|
16
|
-
goog.require('shaka.util.EventManager');
|
|
17
|
-
|
|
18
7
|
// TODO: Move this suite to the text/ folder where it belongs
|
|
19
8
|
const supportsScreenshots = () => shaka.test.Util.supportsScreenshots();
|
|
20
9
|
filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
|
|
@@ -34,11 +23,8 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
|
|
|
34
23
|
*/
|
|
35
24
|
let beforeScreenshot;
|
|
36
25
|
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
// to have this change tolerance in our tests. So far, all past bugs in our
|
|
40
|
-
// implementation that we have tests for would exceed this threshold by a lot.
|
|
41
|
-
const threshold = 160; // px
|
|
26
|
+
// A minimum similarity score for screenshots, between 0 and 1.
|
|
27
|
+
const minSimilarity = 0.95;
|
|
42
28
|
|
|
43
29
|
const originalCast = window.chrome && window.chrome.cast;
|
|
44
30
|
|
|
@@ -196,6 +182,7 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
|
|
|
196
182
|
|
|
197
183
|
// The video must be played a little now, after the cues were appended,
|
|
198
184
|
// but before the screenshot.
|
|
185
|
+
video.playbackRate = 1;
|
|
199
186
|
video.play();
|
|
200
187
|
await waiter.failOnTimeout(false).timeoutAfter(5)
|
|
201
188
|
.waitForMovement(video);
|
|
@@ -203,10 +190,13 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
|
|
|
203
190
|
|
|
204
191
|
// Seek to a time when cues should be showing.
|
|
205
192
|
video.currentTime = time;
|
|
193
|
+
// Get into a playing state, but without movement.
|
|
194
|
+
video.playbackRate = 0;
|
|
195
|
+
video.play();
|
|
206
196
|
|
|
207
197
|
// Add a short delay to ensure that the system has caught up and that
|
|
208
198
|
// native text displayers have been updated by the browser.
|
|
209
|
-
await Util.
|
|
199
|
+
await Util.delay(0.1);
|
|
210
200
|
};
|
|
211
201
|
});
|
|
212
202
|
|
|
@@ -415,7 +405,7 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
|
|
|
415
405
|
await checkScreenshot(prefix, 'flat-cue-bg');
|
|
416
406
|
});
|
|
417
407
|
|
|
418
|
-
// https://github.com/
|
|
408
|
+
// https://github.com/shaka-project/shaka-player/issues/2761
|
|
419
409
|
it('deeply-nested cues', async () => {
|
|
420
410
|
const makeCue = (text, fg = '', bg = '', nestedCues = []) => {
|
|
421
411
|
const cue = new shaka.text.Cue(0, 1, text);
|
|
@@ -475,6 +465,6 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
|
|
|
475
465
|
return Util.checkScreenshot(
|
|
476
466
|
/* element= */ videoContainer,
|
|
477
467
|
prefix + '-' + baseName,
|
|
478
|
-
|
|
468
|
+
minSimilarity);
|
|
479
469
|
}
|
|
480
470
|
});
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.test.UiUtils');
|
|
9
|
-
goog.require('shaka.test.Waiter');
|
|
10
|
-
goog.require('shaka.util.EventManager');
|
|
11
|
-
goog.requireType('shaka.ui.Overlay');
|
|
12
|
-
|
|
13
7
|
describe('UI Customization', () => {
|
|
14
8
|
const UiUtils = shaka.test.UiUtils;
|
|
15
9
|
/** @type {!HTMLLinkElement} */
|
|
@@ -4,22 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('mozilla.LanguageMapping');
|
|
9
|
-
goog.require('shaka.test.Loader');
|
|
10
|
-
goog.require('shaka.test.TestScheme');
|
|
11
|
-
goog.require('shaka.test.UiUtils');
|
|
12
|
-
goog.require('shaka.test.Util');
|
|
13
|
-
goog.require('shaka.test.Waiter');
|
|
14
|
-
goog.require('shaka.ui.Element');
|
|
15
|
-
goog.require('shaka.util.Dom');
|
|
16
|
-
goog.require('shaka.util.EventManager');
|
|
17
|
-
goog.require('shaka.util.Iterables');
|
|
18
|
-
goog.requireType('shaka.Player');
|
|
19
|
-
goog.requireType('shaka.ui.Controls');
|
|
20
|
-
goog.requireType('shaka.ui.Overlay');
|
|
21
|
-
|
|
22
|
-
|
|
23
7
|
describe('UI', () => {
|
|
24
8
|
const Util = shaka.test.Util;
|
|
25
9
|
const UiUtils = shaka.test.UiUtils;
|
package/test/ui/ui_unit.js
CHANGED
|
@@ -4,21 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.media.ManifestParser');
|
|
9
|
-
goog.require('shaka.test.FakeManifestParser');
|
|
10
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
11
|
-
goog.require('shaka.test.UiUtils');
|
|
12
|
-
goog.require('shaka.test.Util');
|
|
13
|
-
goog.require('shaka.ui.OverflowMenu');
|
|
14
|
-
goog.require('shaka.ui.ResolutionSelection');
|
|
15
|
-
goog.require('shaka.util.Functional');
|
|
16
|
-
goog.require('shaka.util.Iterables');
|
|
17
|
-
goog.require('shaka.util.Platform');
|
|
18
|
-
goog.requireType('shaka.Player');
|
|
19
|
-
goog.requireType('shaka.ui.Controls');
|
|
20
|
-
goog.requireType('shaka.ui.Overlay');
|
|
21
|
-
|
|
22
7
|
describe('UI', () => {
|
|
23
8
|
const UiUtils = shaka.test.UiUtils;
|
|
24
9
|
const Util = shaka.test.Util;
|
|
@@ -137,8 +122,7 @@ describe('UI', () => {
|
|
|
137
122
|
// Four is just a random number I (ismena) came up with to test a
|
|
138
123
|
// multi-video use case. It could be replaces with any other
|
|
139
124
|
// (reasonable) number.
|
|
140
|
-
for (
|
|
141
|
-
shaka.util.Functional.ignored(_);
|
|
125
|
+
for (let i = 0; i < 4; i++) {
|
|
142
126
|
const video = /** @type {!HTMLVideoElement} */
|
|
143
127
|
(document.createElement('video'));
|
|
144
128
|
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.Util');
|
|
8
|
-
goog.require('shaka.util.AbortableOperation');
|
|
9
|
-
goog.require('shaka.util.Error');
|
|
10
|
-
goog.require('shaka.util.PublicPromise');
|
|
11
|
-
|
|
12
7
|
describe('AbortableOperation', () => {
|
|
13
8
|
const Util = shaka.test.Util;
|
|
14
9
|
|
|
@@ -392,10 +387,10 @@ describe('AbortableOperation', () => {
|
|
|
392
387
|
expect(value).toBe(500);
|
|
393
388
|
}).finally((ok) => {
|
|
394
389
|
expect(ok).toBe(true);
|
|
395
|
-
// The bug https://github.com/
|
|
396
|
-
// expectation fail because some stages were skipped.
|
|
397
|
-
// check, the test would pass, even though the bug shows
|
|
398
|
-
// basic functionality of 'chain'.
|
|
390
|
+
// The bug https://github.com/shaka-project/shaka-player/issues/1260
|
|
391
|
+
// makes this expectation fail because some stages were skipped.
|
|
392
|
+
// Without this check, the test would pass, even though the bug shows
|
|
393
|
+
// up first in the basic functionality of 'chain'.
|
|
399
394
|
expect(values).toEqual([100, 200, 300, 400, 500]);
|
|
400
395
|
});
|
|
401
396
|
await op.promise;
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.Util');
|
|
8
|
-
goog.require('shaka.util.EbmlParser');
|
|
9
|
-
goog.require('shaka.util.Error');
|
|
10
|
-
|
|
11
7
|
describe('EbmlParser', /** @suppress {accessControls} */ () => {
|
|
12
8
|
const Util = shaka.test.Util;
|
|
13
9
|
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.log');
|
|
8
|
-
goog.require('shaka.test.Util');
|
|
9
|
-
goog.require('shaka.util.FakeEvent');
|
|
10
|
-
goog.require('shaka.util.FakeEventTarget');
|
|
11
|
-
|
|
12
7
|
describe('FakeEventTarget', () => {
|
|
13
8
|
const Util = shaka.test.Util;
|
|
14
9
|
const originalLogError = shaka.log.error;
|
|
@@ -73,7 +73,7 @@ describe('Functional', () => {
|
|
|
73
73
|
expect(obj.val).toBe(1);
|
|
74
74
|
});
|
|
75
75
|
|
|
76
|
-
// Regression test for https://github.com/
|
|
76
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/2958
|
|
77
77
|
it('supports ES6 classes', () => {
|
|
78
78
|
const obj = Functional.callFactory(Es6Class);
|
|
79
79
|
expect(obj.val).toBe(1);
|
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.util.Iterables');
|
|
8
|
-
|
|
9
7
|
describe('Iterables', () => {
|
|
10
8
|
const Iterables = shaka.util.Iterables;
|
|
11
9
|
|
|
@@ -67,66 +65,4 @@ describe('Iterables', () => {
|
|
|
67
65
|
expect(Iterables.filter(input, (x) => x < 0)).toEqual([]);
|
|
68
66
|
});
|
|
69
67
|
});
|
|
70
|
-
|
|
71
|
-
describe('enumerate', () => {
|
|
72
|
-
function enumerate(it) {
|
|
73
|
-
return Array.from(Iterables.enumerate(it));
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
it('works with no items', () => {
|
|
77
|
-
expect(enumerate([])).toEqual([]);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('works with one item', () => {
|
|
81
|
-
expect(enumerate([999]))
|
|
82
|
-
.toEqual([{i: 0, item: 999, prev: undefined, next: undefined}]);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it('works with special values', () => {
|
|
86
|
-
expect(enumerate([[]]))
|
|
87
|
-
.toEqual([{i: 0, item: [], prev: undefined, next: undefined}]);
|
|
88
|
-
expect(enumerate([0]))
|
|
89
|
-
.toEqual([{i: 0, item: 0, prev: undefined, next: undefined}]);
|
|
90
|
-
expect(enumerate([null]))
|
|
91
|
-
.toEqual([{i: 0, item: null, prev: undefined, next: undefined}]);
|
|
92
|
-
expect(enumerate([undefined]))
|
|
93
|
-
.toEqual([{i: 0, item: undefined, prev: undefined, next: undefined}]);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it('works with two items', () => {
|
|
97
|
-
expect(enumerate([888, 999]))
|
|
98
|
-
.toEqual([
|
|
99
|
-
{i: 0, item: 888, prev: undefined, next: 999},
|
|
100
|
-
{i: 1, item: 999, prev: 888, next: undefined},
|
|
101
|
-
]);
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it('works with three items', () => {
|
|
105
|
-
expect(enumerate([777, 888, 999]))
|
|
106
|
-
.toEqual([
|
|
107
|
-
{i: 0, item: 777, prev: undefined, next: 888},
|
|
108
|
-
{i: 1, item: 888, prev: 777, next: 999},
|
|
109
|
-
{i: 2, item: 999, prev: 888, next: undefined},
|
|
110
|
-
]);
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
it('keeps references', () => {
|
|
114
|
-
const expected = [
|
|
115
|
-
{a: 'x'},
|
|
116
|
-
{b: 'y'},
|
|
117
|
-
{c: 'z'},
|
|
118
|
-
];
|
|
119
|
-
const actual = enumerate(expected);
|
|
120
|
-
|
|
121
|
-
expect(actual[0].item).toBe(expected[0]);
|
|
122
|
-
expect(actual[0].next).toBe(expected[1]);
|
|
123
|
-
|
|
124
|
-
expect(actual[1].prev).toBe(expected[0]);
|
|
125
|
-
expect(actual[1].item).toBe(expected[1]);
|
|
126
|
-
expect(actual[1].next).toBe(expected[2]);
|
|
127
|
-
|
|
128
|
-
expect(actual[2].prev).toBe(expected[1]);
|
|
129
|
-
expect(actual[2].item).toBe(expected[2]);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
68
|
});
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.test.Util');
|
|
9
|
-
goog.require('shaka.util.Mp4BoxParsers');
|
|
10
|
-
goog.require('shaka.util.Mp4Parser');
|
|
11
|
-
|
|
12
7
|
describe('Mp4BoxParsers', () => {
|
|
13
8
|
const videoInitSegmentUri = '/base/test/test/assets/sintel-video-init.mp4';
|
|
14
9
|
const videoSegmentUri = '/base/test/test/assets/sintel-video-segment.mp4';
|