shaka-player 3.2.4 → 3.2.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 +129 -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 +147 -0
- package/.github/workflows/safari-homedir-launcher.sh +18 -0
- package/.github/workflows/selenium-lab-tests.yaml +92 -0
- package/AUTHORS +2 -0
- package/CHANGELOG.md +1596 -1556
- 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 +3 -3
- 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 +94 -29
- package/build/wrapper.template.js +2 -2
- package/demo/TengwarTelcontar.woff2 +0 -0
- package/demo/asset_card.js +1 -2
- package/demo/cast_receiver/index.html +1 -1
- package/demo/cast_receiver/receiver_app.css +14 -14
- package/demo/common/assets.js +2 -0
- package/demo/config.js +0 -1
- package/demo/custom.js +0 -1
- package/demo/customWarning.txt +2 -2
- package/demo/demo.less +29 -18
- package/demo/demo_uncompiled.js +1 -13
- package/demo/index.html +1 -1
- package/demo/main.js +3 -3
- package/dist/controls.css +2 -2
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +191 -194
- package/dist/demo.compiled.debug.map +4 -4
- package/dist/demo.compiled.js +191 -194
- package/dist/demo.compiled.map +4 -4
- package/dist/demo.css +1 -1
- package/dist/demo.css.map +1 -1
- package/dist/deps.js +225 -219
- package/dist/locales.js +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 +225 -224
- package/dist/shaka-player.compiled.debug.d.ts +225 -224
- package/dist/shaka-player.compiled.debug.externs.js +5 -3
- package/dist/shaka-player.compiled.debug.js +319 -323
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +5 -3
- package/dist/shaka-player.compiled.js +832 -833
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +267 -266
- package/dist/shaka-player.ui.debug.d.ts +267 -266
- package/dist/shaka-player.ui.debug.externs.js +5 -3
- package/dist/shaka-player.ui.debug.js +287 -291
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +5 -3
- package/dist/shaka-player.ui.js +981 -982
- 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/karma.conf.js +141 -30
- package/lib/abr/simple_abr_manager.js +12 -6
- package/lib/cast/cast_proxy.js +3 -4
- 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 +11 -14
- 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 +34 -20
- package/lib/hls/manifest_text_parser.js +3 -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 +10 -3
- 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/streaming_engine.js +6 -6
- package/lib/media/time_ranges_utils.js +1 -3
- package/lib/media/video_wrapper.js +1 -1
- package/lib/net/networking_engine.js +1 -1
- package/lib/offline/indexeddb/storage_mechanism.js +4 -2
- package/lib/offline/storage.js +4 -4
- package/lib/player.js +190 -114
- package/lib/polyfill/all.js +2 -3
- package/lib/polyfill/encryption_scheme.js +1 -1
- package/lib/polyfill/media_capabilities.js +3 -3
- package/lib/polyfill/mediasource.js +1 -1
- package/lib/text/cue.js +1 -1
- package/lib/text/simple_text_displayer.js +2 -1
- package/lib/text/ttml_text_parser.js +8 -5
- package/lib/text/ui_text_displayer.js +1 -1
- package/lib/util/buffer_utils.js +1 -3
- package/lib/util/config_utils.js +25 -0
- package/lib/util/ebml_parser.js +3 -3
- package/lib/util/error.js +8 -1
- package/lib/util/iterables.js +0 -46
- package/lib/util/manifest_parser_utils.js +1 -1
- package/lib/util/mime_utils.js +48 -1
- package/lib/util/mp4_box_parsers.js +1 -4
- package/lib/util/mp4_parser.js +5 -7
- package/lib/util/periods.js +13 -13
- package/lib/util/platform.js +3 -3
- package/lib/util/player_configuration.js +9 -14
- package/lib/util/pssh.js +1 -4
- package/lib/util/stream_utils.js +8 -5
- package/lib/util/string_utils.js +3 -5
- package/lib/util/uint8array_utils.js +3 -5
- package/lib/util/xml_utils.js +15 -7
- package/package.json +61 -36
- 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 +1 -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 +2 -15
- package/test/dash/dash_parser_manifest_unit.js +2 -40
- 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 +28 -14
- package/test/hls/hls_parser_unit.js +2 -15
- package/test/hls/manifest_text_parser_unit.js +19 -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 +4 -24
- package/test/media/manifest_parser_unit.js +0 -4
- package/test/media/media_source_engine_integration.js +1 -7
- package/test/media/media_source_engine_unit.js +5 -18
- 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 +1 -6
- package/test/media/region_timeline_unit.js +0 -3
- 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 -36
- package/test/media/streaming_engine_unit.js +11 -35
- 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 +1 -7
- 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 +2 -15
- package/test/offline/storage_integration.js +1 -25
- package/test/player_external.js +9 -11
- package/test/player_integration.js +27 -38
- 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 +81 -90
- package/test/player_unit.js +150 -38
- package/test/routing/walker_unit.js +0 -8
- package/test/test/assets/large_file.mpd +1 -1
- package/test/test/boot.js +84 -22
- package/test/test/externs/filters.js +4 -0
- 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 +40 -28
- 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 +0 -2
- package/test/test/util/ui_utils.js +0 -9
- package/test/test/util/util.js +5 -19
- 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 +0 -6
- 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 +2 -11
- 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 +1 -12
- 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/mime_utils_unit.js +54 -0
- 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 +93 -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 +3 -8
- 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/less/ad_controls.less +6 -6
- package/ui/less/buttons.less +6 -6
- package/ui/less/containers.less +9 -11
- package/ui/less/overflow_menu.less +4 -4
- package/ui/less/range_elements.less +7 -2
- package/ui/locales/sjn-translations.yaml +257 -0
- package/ui/locales/sjn.json +42 -0
- package/ui/seek_bar.js +2 -1
- package/.github/workflows/build_and_test.yaml +0 -73
- package/.github/workflows/release.yaml +0 -53
- package/docs/tutorials/gsoc-ideas-list.md +0 -3
- package/externs/svgelement.js +0 -18
|
@@ -4,22 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.Uri');
|
|
8
|
-
goog.require('shaka.Player');
|
|
9
|
-
goog.require('shaka.log');
|
|
10
|
-
goog.require('shaka.media.DrmEngine');
|
|
11
|
-
goog.require('shaka.media.TimeRangesUtils');
|
|
12
|
-
goog.require('shaka.test.FakeAbrManager');
|
|
13
|
-
goog.require('shaka.test.FakeTextDisplayer');
|
|
14
|
-
goog.require('shaka.test.Loader');
|
|
15
|
-
goog.require('shaka.test.TestScheme');
|
|
16
|
-
goog.require('shaka.test.UiUtils');
|
|
17
|
-
goog.require('shaka.test.Util');
|
|
18
|
-
goog.require('shaka.test.Waiter');
|
|
19
|
-
goog.require('shaka.util.EventManager');
|
|
20
|
-
goog.require('shaka.util.Functional');
|
|
21
|
-
goog.require('shaka.util.Iterables');
|
|
22
|
-
|
|
23
7
|
describe('Player', () => {
|
|
24
8
|
/** @type {!jasmine.Spy} */
|
|
25
9
|
let onErrorSpy;
|
|
@@ -53,6 +37,7 @@ describe('Player', () => {
|
|
|
53
37
|
// Grab event manager from the uncompiled library:
|
|
54
38
|
eventManager = new shaka.util.EventManager();
|
|
55
39
|
waiter = new shaka.test.Waiter(eventManager);
|
|
40
|
+
waiter.setPlayer(player);
|
|
56
41
|
|
|
57
42
|
onErrorSpy = jasmine.createSpy('onError');
|
|
58
43
|
onErrorSpy.and.callFake((event) => {
|
|
@@ -264,7 +249,7 @@ describe('Player', () => {
|
|
|
264
249
|
expect(variantTrack.language).toBe(textTrack.language);
|
|
265
250
|
});
|
|
266
251
|
|
|
267
|
-
// Repro for https://github.com/
|
|
252
|
+
// Repro for https://github.com/shaka-project/shaka-player/issues/1879.
|
|
268
253
|
it('appends cues when enabled initially', async () => {
|
|
269
254
|
let cues = [];
|
|
270
255
|
/** @const {!shaka.test.FakeTextDisplayer} */
|
|
@@ -321,7 +306,7 @@ describe('Player', () => {
|
|
|
321
306
|
expect(cues.length).toBeGreaterThan(0);
|
|
322
307
|
});
|
|
323
308
|
|
|
324
|
-
// https://github.com/
|
|
309
|
+
// https://github.com/shaka-project/shaka-player/issues/2553
|
|
325
310
|
it('does not change the selected track', async () => {
|
|
326
311
|
player.configure('streaming.alwaysStreamText', false);
|
|
327
312
|
await player.load('test:forced_subs_simulation_compiled');
|
|
@@ -447,7 +432,7 @@ describe('Player', () => {
|
|
|
447
432
|
expect(configuredTextDisplayer).toBe(textDisplayer);
|
|
448
433
|
});
|
|
449
434
|
|
|
450
|
-
// Regression test for https://github.com/
|
|
435
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/1187
|
|
451
436
|
it('does not throw on destroy', async () => {
|
|
452
437
|
await player.load('test:sintel_compiled');
|
|
453
438
|
video.play();
|
|
@@ -478,7 +463,7 @@ describe('Player', () => {
|
|
|
478
463
|
// and the track selection was ignored. Because this bug involved
|
|
479
464
|
// interactions between Player and StreamingEngine, it is an integration
|
|
480
465
|
// test and not a unit test.
|
|
481
|
-
// https://github.com/
|
|
466
|
+
// https://github.com/shaka-project/shaka-player/issues/1119
|
|
482
467
|
it('allows early selection of specific tracks', async () => {
|
|
483
468
|
/** @type {!jasmine.Spy} */
|
|
484
469
|
const streamingListener = jasmine.createSpy('listener');
|
|
@@ -513,7 +498,7 @@ describe('Player', () => {
|
|
|
513
498
|
// switchingPeriods_ in Player. Because this bug involved interactions
|
|
514
499
|
// between Player and StreamingEngine, it is an integration test and not a
|
|
515
500
|
// unit test.
|
|
516
|
-
// https://github.com/
|
|
501
|
+
// https://github.com/shaka-project/shaka-player/issues/1119
|
|
517
502
|
it('allows selection of tracks in subsequent loads', async () => {
|
|
518
503
|
/** @type {!jasmine.Spy} */
|
|
519
504
|
const streamingListener = jasmine.createSpy('listener');
|
|
@@ -611,7 +596,9 @@ describe('Player', () => {
|
|
|
611
596
|
eventManager.listen(video, 'waiting', checkOnEvent);
|
|
612
597
|
eventManager.listen(player, 'trackschanged', checkOnEvent);
|
|
613
598
|
|
|
614
|
-
const waiter =
|
|
599
|
+
const waiter = new shaka.test.Waiter(eventManager)
|
|
600
|
+
.setPlayer(player)
|
|
601
|
+
.timeoutAfter(10);
|
|
615
602
|
const canPlayThrough = waiter.waitForEvent(video, 'canplaythrough');
|
|
616
603
|
|
|
617
604
|
await player.load('test:sintel_compiled', 5);
|
|
@@ -678,7 +665,9 @@ describe('Player', () => {
|
|
|
678
665
|
eventManager.listen(player, 'error', Util.spyFunc(onErrorSpy));
|
|
679
666
|
/** @type {shaka.test.Waiter} */
|
|
680
667
|
const waiter = new shaka.test.Waiter(eventManager)
|
|
681
|
-
.
|
|
668
|
+
.setPlayer(player)
|
|
669
|
+
.timeoutAfter(20)
|
|
670
|
+
.failOnTimeout(true);
|
|
682
671
|
await waiter.waitForEnd(video);
|
|
683
672
|
|
|
684
673
|
// The stream should have transitioned to VOD by now.
|
|
@@ -686,7 +675,7 @@ describe('Player', () => {
|
|
|
686
675
|
|
|
687
676
|
// Check that the final seek range is as expected.
|
|
688
677
|
const seekRange = player.seekRange();
|
|
689
|
-
expect(seekRange.end).
|
|
678
|
+
expect(seekRange.end).toBeCloseTo(14);
|
|
690
679
|
});
|
|
691
680
|
});
|
|
692
681
|
|
|
@@ -703,6 +692,7 @@ describe('Player', () => {
|
|
|
703
692
|
player.addEventListener('buffering', Util.spyFunc(onBuffering));
|
|
704
693
|
|
|
705
694
|
waiter = new shaka.test.Waiter(eventManager)
|
|
695
|
+
.setPlayer(player)
|
|
706
696
|
.timeoutAfter(10)
|
|
707
697
|
.failOnTimeout(true);
|
|
708
698
|
});
|
|
@@ -816,8 +806,7 @@ describe('Player', () => {
|
|
|
816
806
|
}
|
|
817
807
|
|
|
818
808
|
async function waitUntilBuffered(amount) {
|
|
819
|
-
for (
|
|
820
|
-
shaka.util.Functional.ignored(_);
|
|
809
|
+
for (let i = 0; i < 25; i++) {
|
|
821
810
|
// We buffer from an internal segment, so this shouldn't take long to
|
|
822
811
|
// buffer.
|
|
823
812
|
await Util.delay(0.1); // eslint-disable-line no-await-in-loop
|
|
@@ -894,7 +883,9 @@ describe('Player', () => {
|
|
|
894
883
|
|
|
895
884
|
/** @type {shaka.test.Waiter} */
|
|
896
885
|
const waiter = new shaka.test.Waiter(eventManager)
|
|
897
|
-
.
|
|
886
|
+
.setPlayer(player)
|
|
887
|
+
.timeoutAfter(1)
|
|
888
|
+
.failOnTimeout(true);
|
|
898
889
|
|
|
899
890
|
await waiter.waitForPromise(abrEnabled, 'AbrManager enabled');
|
|
900
891
|
|
|
@@ -914,7 +905,9 @@ describe('Player', () => {
|
|
|
914
905
|
|
|
915
906
|
/** @type {shaka.test.Waiter} */
|
|
916
907
|
const waiter = new shaka.test.Waiter(eventManager)
|
|
917
|
-
.
|
|
908
|
+
.setPlayer(player)
|
|
909
|
+
.timeoutAfter(1)
|
|
910
|
+
.failOnTimeout(true);
|
|
918
911
|
|
|
919
912
|
await waiter.waitForPromise(abrEnabled, 'AbrManager enabled');
|
|
920
913
|
|
|
@@ -960,16 +953,16 @@ describe('Player', () => {
|
|
|
960
953
|
});
|
|
961
954
|
}); // describe('unloading')
|
|
962
955
|
|
|
963
|
-
describe('
|
|
964
|
-
it('
|
|
956
|
+
describe('addChaptersTrack', () => {
|
|
957
|
+
it('adds external chapters in vtt format', async () => {
|
|
965
958
|
await player.load('test:sintel_no_text_compiled');
|
|
966
959
|
const locationUri = new goog.Uri(location.href);
|
|
967
960
|
const partialUri1 = new goog.Uri('/base/test/test/assets/chapters.vtt');
|
|
968
961
|
const absoluteUri1 = locationUri.resolve(partialUri1);
|
|
969
962
|
await player.addChaptersTrack(absoluteUri1.toString(), 'en');
|
|
970
963
|
|
|
971
|
-
|
|
972
|
-
|
|
964
|
+
// Data should be available as soon as addChaptersTrack resolves.
|
|
965
|
+
// See https://github.com/shaka-project/shaka-player/issues/4186
|
|
973
966
|
const chapters = player.getChapters('en');
|
|
974
967
|
expect(chapters.length).toBe(3);
|
|
975
968
|
const chapter1 = chapters[0];
|
|
@@ -989,8 +982,6 @@ describe('Player', () => {
|
|
|
989
982
|
const absoluteUri2 = locationUri.resolve(partialUri2);
|
|
990
983
|
await player.addChaptersTrack(absoluteUri2.toString(), 'en');
|
|
991
984
|
|
|
992
|
-
await shaka.test.Util.delay(1.5);
|
|
993
|
-
|
|
994
985
|
const chaptersUpdated = player.getChapters('en');
|
|
995
986
|
expect(chaptersUpdated.length).toBe(6);
|
|
996
987
|
const chapterUpdated1 = chaptersUpdated[0];
|
|
@@ -1019,15 +1010,13 @@ describe('Player', () => {
|
|
|
1019
1010
|
expect(chapterUpdated6.endTime).toBe(61.349);
|
|
1020
1011
|
});
|
|
1021
1012
|
|
|
1022
|
-
it('
|
|
1013
|
+
it('adds external chapters in srt format', async () => {
|
|
1023
1014
|
await player.load('test:sintel_no_text_compiled');
|
|
1024
1015
|
const locationUri = new goog.Uri(location.href);
|
|
1025
1016
|
const partialUri = new goog.Uri('/base/test/test/assets/chapters.srt');
|
|
1026
1017
|
const absoluteUri = locationUri.resolve(partialUri);
|
|
1027
1018
|
await player.addChaptersTrack(absoluteUri.toString(), 'es');
|
|
1028
1019
|
|
|
1029
|
-
await shaka.test.Util.delay(1.5);
|
|
1030
|
-
|
|
1031
1020
|
const chapters = player.getChapters('es');
|
|
1032
1021
|
expect(chapters.length).toBe(3);
|
|
1033
1022
|
const chapter1 = chapters[0];
|
|
@@ -1043,5 +1032,5 @@ describe('Player', () => {
|
|
|
1043
1032
|
expect(chapter3.startTime).toBe(30);
|
|
1044
1033
|
expect(chapter3.endTime).toBe(61.349);
|
|
1045
1034
|
});
|
|
1046
|
-
}); // describe('
|
|
1035
|
+
}); // describe('addChaptersTrack')
|
|
1047
1036
|
});
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.Player');
|
|
8
|
-
goog.require('shaka.test.UiUtils');
|
|
9
|
-
goog.require('shaka.test.Util');
|
|
10
|
-
goog.require('shaka.util.Error');
|
|
11
|
-
|
|
12
7
|
describe('Player Load Graph', () => {
|
|
13
8
|
const SMALL_MP4_CONTENT_URI = '/base/test/test/assets/small.mp4';
|
|
14
9
|
|
|
@@ -124,7 +119,7 @@ describe('Player Load Graph', () => {
|
|
|
124
119
|
|
|
125
120
|
// There was a bug when calling unload before calling load would cause
|
|
126
121
|
// the load to continue before the (first) unload was complete.
|
|
127
|
-
// https://github.com/
|
|
122
|
+
// https://github.com/shaka-project/shaka-player/issues/612
|
|
128
123
|
it('load will wait for unload to finish', async () => {
|
|
129
124
|
createPlayer(/* attachedTo= */ null);
|
|
130
125
|
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.Player');
|
|
8
|
-
goog.require('shaka.test.UiUtils');
|
|
9
|
-
goog.require('shaka.test.Util');
|
|
10
|
-
goog.require('shaka.test.Waiter');
|
|
11
|
-
goog.require('shaka.util.EventManager');
|
|
12
|
-
|
|
13
7
|
describe('Player Src Equals', () => {
|
|
14
8
|
// This asset needs to be (1) long and (2) high bitrate so that we can
|
|
15
9
|
// invoke unbuffered seeks.
|
|
@@ -88,7 +82,7 @@ describe('Player Src Equals', () => {
|
|
|
88
82
|
expect(player.isBuffering()).toBeTruthy();
|
|
89
83
|
});
|
|
90
84
|
|
|
91
|
-
// A regression test for https://github.com/
|
|
85
|
+
// A regression test for https://github.com/shaka-project/shaka-player/issues/2523
|
|
92
86
|
it('detects subtitles in native HLS', async () => {
|
|
93
87
|
const supportsNativeHls =
|
|
94
88
|
video.canPlayType('application/vnd.apple.mpegurl') != '';
|
|
@@ -103,8 +97,8 @@ describe('Player Src Equals', () => {
|
|
|
103
97
|
});
|
|
104
98
|
|
|
105
99
|
// A regression test for
|
|
106
|
-
// https://github.com/
|
|
107
|
-
// and https://github.com/
|
|
100
|
+
// https://github.com/shaka-project/shaka-player/issues/2483#issuecomment-633412527
|
|
101
|
+
// and https://github.com/shaka-project/shaka-player/issues/2593
|
|
108
102
|
it('honors preferred audio and text languages', async () => {
|
|
109
103
|
const supportsNativeHls =
|
|
110
104
|
video.canPlayType('application/vnd.apple.mpegurl') != '';
|
|
@@ -4,13 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.Uri');
|
|
8
|
-
goog.require('shaka.Player');
|
|
9
|
-
goog.require('shaka.test.UiUtils');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.test.Waiter');
|
|
12
|
-
goog.require('shaka.util.EventManager');
|
|
13
|
-
|
|
14
7
|
// These tests are for testing Shaka Player's integration with
|
|
15
8
|
// |HTMLMediaElement.src=|. These tests are to verify that all |shaka.Player|
|
|
16
9
|
// public methods behaviour correctly when playing content video |src=|.
|
|
@@ -326,90 +319,88 @@ describe('Player Src Equals', () => {
|
|
|
326
319
|
expect(newTrack).toBeTruthy();
|
|
327
320
|
});
|
|
328
321
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
});
|
|
387
|
-
|
|
388
|
-
it('add external chapters in srt format', async () => {
|
|
389
|
-
await loadWithSrcEquals(SMALL_MP4_CONTENT_URI, /* startTime= */ null);
|
|
390
|
-
|
|
391
|
-
const locationUri = new goog.Uri(location.href);
|
|
392
|
-
const partialUri = new goog.Uri('/base/test/test/assets/chapters.srt');
|
|
393
|
-
const absoluteUri = locationUri.resolve(partialUri);
|
|
394
|
-
await player.addChaptersTrack(absoluteUri.toString(), 'es');
|
|
395
|
-
|
|
396
|
-
await shaka.test.Util.delay(1.5);
|
|
322
|
+
describe('addChaptersTrack', () => {
|
|
323
|
+
it('adds external chapters in vtt format', async () => {
|
|
324
|
+
await loadWithSrcEquals(SMALL_MP4_CONTENT_URI, /* startTime= */ null);
|
|
325
|
+
|
|
326
|
+
const locationUri = new goog.Uri(location.href);
|
|
327
|
+
const partialUri1 = new goog.Uri('/base/test/test/assets/chapters.vtt');
|
|
328
|
+
const absoluteUri1 = locationUri.resolve(partialUri1);
|
|
329
|
+
await player.addChaptersTrack(absoluteUri1.toString(), 'en');
|
|
330
|
+
|
|
331
|
+
// Data should be available as soon as addChaptersTrack resolves.
|
|
332
|
+
// See https://github.com/shaka-project/shaka-player/issues/4186
|
|
333
|
+
const chapters = player.getChapters('en');
|
|
334
|
+
expect(chapters.length).toBe(3);
|
|
335
|
+
const chapter1 = chapters[0];
|
|
336
|
+
expect(chapter1.title).toBe('Chapter 1');
|
|
337
|
+
expect(chapter1.startTime).toBe(0);
|
|
338
|
+
expect(chapter1.endTime).toBe(5);
|
|
339
|
+
const chapter2 = chapters[1];
|
|
340
|
+
expect(chapter2.title).toBe('Chapter 2');
|
|
341
|
+
expect(chapter2.startTime).toBe(5);
|
|
342
|
+
expect(chapter2.endTime).toBe(10);
|
|
343
|
+
const chapter3 = chapters[2];
|
|
344
|
+
expect(chapter3.title).toBe('Chapter 3');
|
|
345
|
+
expect(chapter3.startTime).toBe(10);
|
|
346
|
+
expect(chapter3.endTime).toBe(20);
|
|
347
|
+
|
|
348
|
+
const partialUri2 = new goog.Uri('/base/test/test/assets/chapters2.vtt');
|
|
349
|
+
const absoluteUri2 = locationUri.resolve(partialUri2);
|
|
350
|
+
await player.addChaptersTrack(absoluteUri2.toString(), 'en');
|
|
351
|
+
|
|
352
|
+
const chaptersUpdated = player.getChapters('en');
|
|
353
|
+
expect(chaptersUpdated.length).toBe(6);
|
|
354
|
+
const chapterUpdated1 = chaptersUpdated[0];
|
|
355
|
+
expect(chapterUpdated1.title).toBe('Chapter 1');
|
|
356
|
+
expect(chapterUpdated1.startTime).toBe(0);
|
|
357
|
+
expect(chapterUpdated1.endTime).toBe(5);
|
|
358
|
+
const chapterUpdated2 = chaptersUpdated[1];
|
|
359
|
+
expect(chapterUpdated2.title).toBe('Chapter 2');
|
|
360
|
+
expect(chapterUpdated2.startTime).toBe(5);
|
|
361
|
+
expect(chapterUpdated2.endTime).toBe(10);
|
|
362
|
+
const chapterUpdated3 = chaptersUpdated[2];
|
|
363
|
+
expect(chapterUpdated3.title).toBe('Chapter 3');
|
|
364
|
+
expect(chapterUpdated3.startTime).toBe(10);
|
|
365
|
+
expect(chapterUpdated3.endTime).toBe(20);
|
|
366
|
+
const chapterUpdated4 = chaptersUpdated[3];
|
|
367
|
+
expect(chapterUpdated4.title).toBe('Chapter 4');
|
|
368
|
+
expect(chapterUpdated4.startTime).toBe(20);
|
|
369
|
+
expect(chapterUpdated4.endTime).toBe(30);
|
|
370
|
+
const chapterUpdated5 = chaptersUpdated[4];
|
|
371
|
+
expect(chapterUpdated5.title).toBe('Chapter 5');
|
|
372
|
+
expect(chapterUpdated5.startTime).toBe(30);
|
|
373
|
+
expect(chapterUpdated5.endTime).toBe(40);
|
|
374
|
+
const chapterUpdated6 = chaptersUpdated[5];
|
|
375
|
+
expect(chapterUpdated6.title).toBe('Chapter 6');
|
|
376
|
+
expect(chapterUpdated6.startTime).toBe(40);
|
|
377
|
+
expect(chapterUpdated6.endTime).toBe(61.349);
|
|
378
|
+
});
|
|
397
379
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
380
|
+
it('add external chapters in srt format', async () => {
|
|
381
|
+
await loadWithSrcEquals(SMALL_MP4_CONTENT_URI, /* startTime= */ null);
|
|
382
|
+
|
|
383
|
+
const locationUri = new goog.Uri(location.href);
|
|
384
|
+
const partialUri = new goog.Uri('/base/test/test/assets/chapters.srt');
|
|
385
|
+
const absoluteUri = locationUri.resolve(partialUri);
|
|
386
|
+
await player.addChaptersTrack(absoluteUri.toString(), 'es');
|
|
387
|
+
|
|
388
|
+
const chapters = player.getChapters('es');
|
|
389
|
+
expect(chapters.length).toBe(3);
|
|
390
|
+
const chapter1 = chapters[0];
|
|
391
|
+
expect(chapter1.title).toBe('Chapter 1');
|
|
392
|
+
expect(chapter1.startTime).toBe(0);
|
|
393
|
+
expect(chapter1.endTime).toBe(5);
|
|
394
|
+
const chapter2 = chapters[1];
|
|
395
|
+
expect(chapter2.title).toBe('Chapter 2');
|
|
396
|
+
expect(chapter2.startTime).toBe(5);
|
|
397
|
+
expect(chapter2.endTime).toBe(30);
|
|
398
|
+
const chapter3 = chapters[2];
|
|
399
|
+
expect(chapter3.title).toBe('Chapter 3');
|
|
400
|
+
expect(chapter3.startTime).toBe(30);
|
|
401
|
+
expect(chapter3.endTime).toBe(61.349);
|
|
402
|
+
});
|
|
403
|
+
}); // describe('addChaptersTrack')
|
|
413
404
|
|
|
414
405
|
// Since we are not in-charge of streaming, calling |retryStreaming| should
|
|
415
406
|
// have no effect.
|