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,30 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.log');
|
|
9
|
-
goog.require('shaka.media.InitSegmentReference');
|
|
10
|
-
goog.require('shaka.media.SegmentReference');
|
|
11
|
-
goog.require('shaka.media.StreamingEngine');
|
|
12
|
-
goog.require('shaka.net.NetworkingEngine');
|
|
13
|
-
goog.require('shaka.net.NetworkingEngine.PendingRequest');
|
|
14
|
-
goog.require('shaka.test.FakeNetworkingEngine');
|
|
15
|
-
goog.require('shaka.test.FakeMediaSourceEngine');
|
|
16
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
17
|
-
goog.require('shaka.test.StreamingEngineUtil');
|
|
18
|
-
goog.require('shaka.test.Util');
|
|
19
|
-
goog.require('shaka.util.AbortableOperation');
|
|
20
|
-
goog.require('shaka.util.Error');
|
|
21
|
-
goog.require('shaka.util.Iterables');
|
|
22
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
23
|
-
goog.require('shaka.util.MimeUtils');
|
|
24
|
-
goog.require('shaka.util.PlayerConfiguration');
|
|
25
|
-
goog.require('shaka.util.PublicPromise');
|
|
26
|
-
goog.require('shaka.util.Uint8ArrayUtils');
|
|
27
|
-
goog.requireType('shaka.media.PresentationTimeline');
|
|
28
|
-
goog.requireType('shaka.test.FakeNetworkingEngine');
|
|
29
|
-
goog.requireType('shaka.test.FakePresentationTimeline');
|
|
30
|
-
|
|
31
7
|
describe('StreamingEngine', () => {
|
|
32
8
|
const Util = shaka.test.Util;
|
|
33
9
|
const ContentType = shaka.util.ManifestParserUtils.ContentType;
|
|
@@ -97,6 +73,9 @@ describe('StreamingEngine', () => {
|
|
|
97
73
|
/** @type {!shaka.media.StreamingEngine} */
|
|
98
74
|
let streamingEngine;
|
|
99
75
|
|
|
76
|
+
/** @type {function(function(), number)} */
|
|
77
|
+
let realSetTimeout;
|
|
78
|
+
|
|
100
79
|
/**
|
|
101
80
|
* Runs the fake event loop.
|
|
102
81
|
* @param {function()=} callback An optional callback that is executed
|
|
@@ -116,6 +95,7 @@ describe('StreamingEngine', () => {
|
|
|
116
95
|
}
|
|
117
96
|
|
|
118
97
|
beforeAll(() => {
|
|
98
|
+
realSetTimeout = window.setTimeout;
|
|
119
99
|
jasmine.clock().install();
|
|
120
100
|
jasmine.clock().mockDate();
|
|
121
101
|
});
|
|
@@ -280,7 +260,7 @@ describe('StreamingEngine', () => {
|
|
|
280
260
|
};
|
|
281
261
|
|
|
282
262
|
const segmentsInFirstPeriod = 12;
|
|
283
|
-
for (
|
|
263
|
+
for (let i = 0; i < segmentsInFirstPeriod; i++) {
|
|
284
264
|
segmentData[ContentType.AUDIO].segments.push(
|
|
285
265
|
makeBuffer(segmentSizes[ContentType.AUDIO]));
|
|
286
266
|
segmentData[ContentType.VIDEO].segments.push(
|
|
@@ -294,7 +274,7 @@ describe('StreamingEngine', () => {
|
|
|
294
274
|
}
|
|
295
275
|
|
|
296
276
|
const segmentsInSecondPeriod = 2;
|
|
297
|
-
for (
|
|
277
|
+
for (let i = 0; i < segmentsInSecondPeriod; i++) {
|
|
298
278
|
segmentData[ContentType.AUDIO].segments.push(
|
|
299
279
|
makeBuffer(segmentSizes[ContentType.AUDIO]));
|
|
300
280
|
segmentData[ContentType.VIDEO].segments.push(
|
|
@@ -647,7 +627,7 @@ describe('StreamingEngine', () => {
|
|
|
647
627
|
// should be buffered. Those segment numbers are 1-based, and this array
|
|
648
628
|
// is 0-based, so we expect i >= 9 to be downloaded.
|
|
649
629
|
const segments = mediaSourceEngine.segments;
|
|
650
|
-
for (
|
|
630
|
+
for (let i = 0; i < 14; i++) {
|
|
651
631
|
expect(segments[ContentType.AUDIO][i]).withContext(i).toBe(i >= 9);
|
|
652
632
|
expect(segments[ContentType.VIDEO][i]).withContext(i).toBe(i >= 9);
|
|
653
633
|
expect(segments[ContentType.TEXT][i]).withContext(i).toBe(i >= 9);
|
|
@@ -753,7 +733,7 @@ describe('StreamingEngine', () => {
|
|
|
753
733
|
expect(timeline.setDuration).toHaveBeenCalledWith(35);
|
|
754
734
|
});
|
|
755
735
|
|
|
756
|
-
// https://github.com/
|
|
736
|
+
// https://github.com/shaka-project/shaka-player/issues/979
|
|
757
737
|
it('does not expand the timeline duration', async () => {
|
|
758
738
|
setupVod();
|
|
759
739
|
mediaSourceEngine = new shaka.test.FakeMediaSourceEngine(segmentData);
|
|
@@ -779,7 +759,7 @@ describe('StreamingEngine', () => {
|
|
|
779
759
|
expect(timeline.setDuration).not.toHaveBeenCalled();
|
|
780
760
|
});
|
|
781
761
|
|
|
782
|
-
// https://github.com/
|
|
762
|
+
// https://github.com/shaka-project/shaka-player/issues/1967
|
|
783
763
|
it('does not change duration when 0', async () => {
|
|
784
764
|
setupVod();
|
|
785
765
|
mediaSourceEngine = new shaka.test.FakeMediaSourceEngine(segmentData);
|
|
@@ -824,6 +804,53 @@ describe('StreamingEngine', () => {
|
|
|
824
804
|
.toHaveBeenCalledWith('video', 0, lt20, gt40);
|
|
825
805
|
});
|
|
826
806
|
|
|
807
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/3717
|
|
808
|
+
it('applies fudge factors for the duration', async () => {
|
|
809
|
+
setupVod();
|
|
810
|
+
|
|
811
|
+
// In #3717, the duration was just barely large enough to encompass an
|
|
812
|
+
// additional segment, but that segment didn't exist, so playback never
|
|
813
|
+
// completed. Here, we set the duration to just beyond the 3rd segment, and
|
|
814
|
+
// we make the 4th segment fail when requested.
|
|
815
|
+
const duration = 30.000000005;
|
|
816
|
+
timeline.getDuration.and.returnValue(duration);
|
|
817
|
+
|
|
818
|
+
const targetUri = '1_video_3'; // The URI of the 4th video segment.
|
|
819
|
+
failRequestsForTarget(netEngine, targetUri);
|
|
820
|
+
|
|
821
|
+
mediaSourceEngine = new shaka.test.FakeMediaSourceEngine(segmentData);
|
|
822
|
+
createStreamingEngine();
|
|
823
|
+
|
|
824
|
+
// Here we go!
|
|
825
|
+
streamingEngine.switchVariant(variant);
|
|
826
|
+
streamingEngine.switchTextStream(textStream);
|
|
827
|
+
await streamingEngine.start();
|
|
828
|
+
playing = true;
|
|
829
|
+
await runTest();
|
|
830
|
+
|
|
831
|
+
// The end of the stream should have been reached, and the 4th segment from
|
|
832
|
+
// each type should never have been requested.
|
|
833
|
+
expect(mediaSourceEngine.endOfStream).toHaveBeenCalled();
|
|
834
|
+
|
|
835
|
+
const segmentType = shaka.net.NetworkingEngine.RequestType.SEGMENT;
|
|
836
|
+
|
|
837
|
+
netEngine.expectRequest('0_audio_0', segmentType);
|
|
838
|
+
netEngine.expectRequest('0_video_0', segmentType);
|
|
839
|
+
netEngine.expectRequest('0_text_0', segmentType);
|
|
840
|
+
|
|
841
|
+
netEngine.expectRequest('0_audio_1', segmentType);
|
|
842
|
+
netEngine.expectRequest('0_video_1', segmentType);
|
|
843
|
+
netEngine.expectRequest('0_text_1', segmentType);
|
|
844
|
+
|
|
845
|
+
netEngine.expectRequest('1_audio_2', segmentType);
|
|
846
|
+
netEngine.expectRequest('1_video_2', segmentType);
|
|
847
|
+
netEngine.expectRequest('1_text_2', segmentType);
|
|
848
|
+
|
|
849
|
+
netEngine.expectNoRequest('1_audio_3', segmentType);
|
|
850
|
+
netEngine.expectNoRequest('1_video_3', segmentType);
|
|
851
|
+
netEngine.expectNoRequest('1_text_3', segmentType);
|
|
852
|
+
});
|
|
853
|
+
|
|
827
854
|
it('does not buffer one media type ahead of another', async () => {
|
|
828
855
|
setupVod();
|
|
829
856
|
mediaSourceEngine = new shaka.test.FakeMediaSourceEngine(segmentData);
|
|
@@ -880,7 +907,7 @@ describe('StreamingEngine', () => {
|
|
|
880
907
|
expect(mediaSourceEngine.appendBuffer).toHaveBeenCalled();
|
|
881
908
|
});
|
|
882
909
|
|
|
883
|
-
// https://github.com/
|
|
910
|
+
// https://github.com/shaka-project/shaka-player/issues/2957
|
|
884
911
|
it('plays with fewer text segments', async () => {
|
|
885
912
|
setupVod();
|
|
886
913
|
|
|
@@ -1042,7 +1069,7 @@ describe('StreamingEngine', () => {
|
|
|
1042
1069
|
expect(mediaSourceEngine.resetCaptionParser).not.toHaveBeenCalled();
|
|
1043
1070
|
});
|
|
1044
1071
|
|
|
1045
|
-
// See https://github.com/
|
|
1072
|
+
// See https://github.com/shaka-project/shaka-player/issues/2956
|
|
1046
1073
|
it('works with fast variant switches during update', async () => {
|
|
1047
1074
|
// Delay the appendBuffer call until later so we are waiting for this to
|
|
1048
1075
|
// finish when we switch.
|
|
@@ -1391,6 +1418,66 @@ describe('StreamingEngine', () => {
|
|
|
1391
1418
|
});
|
|
1392
1419
|
});
|
|
1393
1420
|
|
|
1421
|
+
it('into unbuffered regions when nothing is buffered ' +
|
|
1422
|
+
'and mediaState is performing an update', async () => {
|
|
1423
|
+
// Here we go!
|
|
1424
|
+
streamingEngine.switchVariant(variant);
|
|
1425
|
+
streamingEngine.switchTextStream(textStream);
|
|
1426
|
+
// ensure init source buffer promise does not resolve before seeked()
|
|
1427
|
+
// so mediaState remains in "performingUpdate" state
|
|
1428
|
+
const initSourceBufferPromise = new shaka.util.PublicPromise();
|
|
1429
|
+
mediaSourceEngine.setStreamProperties.and
|
|
1430
|
+
.returnValue(initSourceBufferPromise);
|
|
1431
|
+
await streamingEngine.start();
|
|
1432
|
+
playing = true;
|
|
1433
|
+
|
|
1434
|
+
// tick to trigger mediaState updates
|
|
1435
|
+
jasmine.clock().tick(1);
|
|
1436
|
+
// give a chance for fetchAndAppend_ to be invoked
|
|
1437
|
+
// by async onUpdate_ callback
|
|
1438
|
+
await Util.shortDelay(realSetTimeout);
|
|
1439
|
+
|
|
1440
|
+
// Nothing is buffered yet.
|
|
1441
|
+
expect(mediaSourceEngine.segments).toEqual({
|
|
1442
|
+
audio: [false, false, false, false],
|
|
1443
|
+
video: [false, false, false, false],
|
|
1444
|
+
text: [false, false, false, false],
|
|
1445
|
+
});
|
|
1446
|
+
|
|
1447
|
+
// Seek forward to an unbuffered region in the first Period.
|
|
1448
|
+
presentationTimeInSeconds = 15;
|
|
1449
|
+
streamingEngine.seeked();
|
|
1450
|
+
|
|
1451
|
+
// resolve initSourceBufferPromise after seeked(), waitingToClearBuffer
|
|
1452
|
+
// should have been set, so this will now trigger the actual flush of
|
|
1453
|
+
// the buffer
|
|
1454
|
+
initSourceBufferPromise.resolve();
|
|
1455
|
+
mediaSourceEngine.setStreamProperties.and
|
|
1456
|
+
.returnValue(Promise.resolve());
|
|
1457
|
+
|
|
1458
|
+
// allow mediaState update to resolve
|
|
1459
|
+
await Util.shortDelay(realSetTimeout);
|
|
1460
|
+
|
|
1461
|
+
onTick.and.callFake(() => {
|
|
1462
|
+
expect(mediaSourceEngine.clear).toHaveBeenCalled();
|
|
1463
|
+
onTick.and.stub();
|
|
1464
|
+
});
|
|
1465
|
+
|
|
1466
|
+
await runTest(Util.spyFunc(onTick));
|
|
1467
|
+
|
|
1468
|
+
// Verify buffers.
|
|
1469
|
+
expect(mediaSourceEngine.initSegments).toEqual({
|
|
1470
|
+
audio: [false, true],
|
|
1471
|
+
video: [false, true],
|
|
1472
|
+
text: [],
|
|
1473
|
+
});
|
|
1474
|
+
expect(mediaSourceEngine.segments).toEqual({
|
|
1475
|
+
audio: [false, true, true, true],
|
|
1476
|
+
video: [false, true, true, true],
|
|
1477
|
+
text: [false, true, true, true],
|
|
1478
|
+
});
|
|
1479
|
+
});
|
|
1480
|
+
|
|
1394
1481
|
it('into unbuffered regions near segment start', async () => {
|
|
1395
1482
|
// Here we go!
|
|
1396
1483
|
streamingEngine.switchVariant(variant);
|
|
@@ -1550,7 +1637,7 @@ describe('StreamingEngine', () => {
|
|
|
1550
1637
|
});
|
|
1551
1638
|
});
|
|
1552
1639
|
|
|
1553
|
-
// https://github.com/
|
|
1640
|
+
// https://github.com/shaka-project/shaka-player/issues/2670
|
|
1554
1641
|
it('rapid unbuffered seeks', async () => {
|
|
1555
1642
|
// This test simulates rapid dragging of the seek bar, as in #2670.
|
|
1556
1643
|
// In that issue, we would buffer the wrong segments due to a race
|
|
@@ -1689,7 +1776,7 @@ describe('StreamingEngine', () => {
|
|
|
1689
1776
|
|
|
1690
1777
|
// Since we performed an unbuffered seek into the second Period, the
|
|
1691
1778
|
// first 12 segments should not be buffered.
|
|
1692
|
-
for (
|
|
1779
|
+
for (let i = 0; i < 14; i++) {
|
|
1693
1780
|
expect(mediaSourceEngine.segments[ContentType.AUDIO][i]).toBe(i >= 12);
|
|
1694
1781
|
expect(mediaSourceEngine.segments[ContentType.VIDEO][i]).toBe(i >= 12);
|
|
1695
1782
|
expect(mediaSourceEngine.segments[ContentType.TEXT][i]).toBe(i >= 12);
|
|
@@ -2491,7 +2578,7 @@ describe('StreamingEngine', () => {
|
|
|
2491
2578
|
// should be buffered. Those segment numbers are 1-based, and this array
|
|
2492
2579
|
// is 0-based, so we expect i >= 9 to be downloaded.
|
|
2493
2580
|
const segments = mediaSourceEngine.segments;
|
|
2494
|
-
for (
|
|
2581
|
+
for (let i = 0; i < 14; i++) {
|
|
2495
2582
|
expect(segments[ContentType.AUDIO][i]).withContext(i).toBe(i >= 9);
|
|
2496
2583
|
expect(segments[ContentType.VIDEO][i]).withContext(i).toBe(i >= 9);
|
|
2497
2584
|
expect(segments[ContentType.TEXT][i]).withContext(i).toBe(i >= 9);
|
|
@@ -3390,6 +3477,40 @@ describe('StreamingEngine', () => {
|
|
|
3390
3477
|
segmentAvailability.end++;
|
|
3391
3478
|
}
|
|
3392
3479
|
|
|
3480
|
+
/**
|
|
3481
|
+
* @param {!shaka.test.FakeNetworkingEngine} netEngine A NetworkingEngine
|
|
3482
|
+
* look-alike.
|
|
3483
|
+
* @param {string} targetUri
|
|
3484
|
+
* @param {shaka.util.Error.Code=} errorCode
|
|
3485
|
+
*/
|
|
3486
|
+
function failRequestsForTarget(
|
|
3487
|
+
netEngine, targetUri, errorCode=shaka.util.Error.Code.BAD_HTTP_STATUS) {
|
|
3488
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
3489
|
+
const originalNetEngineRequest = netEngine.request.bind(netEngine);
|
|
3490
|
+
|
|
3491
|
+
netEngine.request = jasmine.createSpy('request').and.callFake(
|
|
3492
|
+
(requestType, request) => {
|
|
3493
|
+
if (request.uris[0] == targetUri) {
|
|
3494
|
+
const data = [targetUri];
|
|
3495
|
+
|
|
3496
|
+
if (errorCode == shaka.util.Error.Code.BAD_HTTP_STATUS) {
|
|
3497
|
+
data.push(404);
|
|
3498
|
+
data.push('');
|
|
3499
|
+
}
|
|
3500
|
+
|
|
3501
|
+
// The compiler still sees the error code parameter as potentially
|
|
3502
|
+
// undefined, even though we gave it a default value.
|
|
3503
|
+
goog.asserts.assert(errorCode != undefined, 'Undefined error code');
|
|
3504
|
+
|
|
3505
|
+
return shaka.util.AbortableOperation.failed(new shaka.util.Error(
|
|
3506
|
+
shaka.util.Error.Severity.CRITICAL,
|
|
3507
|
+
shaka.util.Error.Category.NETWORK,
|
|
3508
|
+
errorCode, data));
|
|
3509
|
+
}
|
|
3510
|
+
return originalNetEngineRequest(requestType, request);
|
|
3511
|
+
});
|
|
3512
|
+
}
|
|
3513
|
+
|
|
3393
3514
|
/**
|
|
3394
3515
|
* @param {!shaka.test.FakeNetworkingEngine} netEngine A NetworkingEngine
|
|
3395
3516
|
* look-alike.
|
|
@@ -3,12 +3,6 @@
|
|
|
3
3
|
* Copyright 2016 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
goog.require('goog.asserts');
|
|
7
|
-
goog.require('shaka.media.Transmuxer');
|
|
8
|
-
goog.require('shaka.test.Util');
|
|
9
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
10
|
-
goog.require('shaka.util.Mp4BoxParsers');
|
|
11
|
-
goog.require('shaka.util.Mp4Parser');
|
|
12
6
|
|
|
13
7
|
describe('Transmuxer', () => {
|
|
14
8
|
const ContentType = shaka.util.ManifestParserUtils.ContentType;
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.media.WebmSegmentIndexParser');
|
|
8
|
-
goog.require('shaka.test.Util');
|
|
9
|
-
goog.require('shaka.util.Error');
|
|
10
|
-
|
|
11
7
|
describe('WebmSegmentIndexParser', () => {
|
|
12
8
|
const indexSegmentUri = '/base/test/test/assets/index-segment.webm';
|
|
13
9
|
const initSegmentUri = '/base/test/test/assets/init-segment.webm';
|
|
@@ -4,13 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.net.DataUriPlugin');
|
|
8
|
-
goog.require('shaka.net.NetworkingEngine');
|
|
9
|
-
goog.require('shaka.net.NetworkingEngine.RequestType');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.util.Error');
|
|
12
|
-
goog.require('shaka.util.StringUtils');
|
|
13
|
-
|
|
14
7
|
describe('DataUriPlugin', () => {
|
|
15
8
|
const retryParameters = shaka.net.NetworkingEngine.defaultRetryParameters();
|
|
16
9
|
|
|
@@ -4,15 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
goog.require('shaka.net.HttpFetchPlugin');
|
|
9
|
-
goog.require('shaka.net.HttpXHRPlugin');
|
|
10
|
-
goog.require('shaka.net.NetworkingEngine');
|
|
11
|
-
goog.require('shaka.net.NetworkingEngine.RequestType');
|
|
12
|
-
goog.require('shaka.test.Util');
|
|
13
|
-
goog.require('shaka.util.BufferUtils');
|
|
14
|
-
goog.require('shaka.util.Error');
|
|
15
|
-
|
|
16
7
|
/**
|
|
17
8
|
* Add a set of http plugin tests, for the given scheme plugin.
|
|
18
9
|
*
|
|
@@ -4,17 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.net.Backoff');
|
|
8
|
-
goog.require('shaka.net.NetworkingEngine');
|
|
9
|
-
goog.require('shaka.net.NetworkingEngine.RequestType');
|
|
10
|
-
goog.require('shaka.test.StatusPromise');
|
|
11
|
-
goog.require('shaka.test.Util');
|
|
12
|
-
goog.require('shaka.util.AbortableOperation');
|
|
13
|
-
goog.require('shaka.util.Error');
|
|
14
|
-
goog.require('shaka.util.Networking');
|
|
15
|
-
goog.require('shaka.util.PublicPromise');
|
|
16
|
-
goog.requireType('shaka.net.NetworkingEngine.PendingRequest');
|
|
17
|
-
|
|
18
7
|
describe('NetworkingEngine', /** @suppress {accessControls} */ () => {
|
|
19
8
|
const StatusPromise = shaka.test.StatusPromise;
|
|
20
9
|
const Util = shaka.test.Util;
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.offline.indexeddb.V5StorageCell');
|
|
8
|
-
goog.require('shaka.test.IndexedDBUtils');
|
|
9
|
-
goog.require('shaka.test.OfflineUtils');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.util.Error');
|
|
12
|
-
|
|
13
7
|
filterDescribe('IndexeddbStorageCell', () => window.indexedDB, () => {
|
|
14
8
|
const IndexedDBUtils = shaka.test.IndexedDBUtils;
|
|
15
9
|
const OfflineUtils = shaka.test.OfflineUtils;
|
|
@@ -4,14 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.media.InitSegmentReference');
|
|
8
|
-
goog.require('shaka.media.PresentationTimeline');
|
|
9
|
-
goog.require('shaka.media.SegmentIndex');
|
|
10
|
-
goog.require('shaka.offline.ManifestConverter');
|
|
11
|
-
goog.require('shaka.offline.OfflineUri');
|
|
12
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
13
|
-
goog.requireType('shaka.media.SegmentReference');
|
|
14
|
-
|
|
15
7
|
describe('ManifestConverter', () => {
|
|
16
8
|
describe('createVariants', () => {
|
|
17
9
|
const audioType = 'audio';
|
|
@@ -4,16 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.Player');
|
|
9
|
-
goog.require('shaka.offline.Storage');
|
|
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.util.EventManager');
|
|
15
|
-
goog.require('shaka.util.Platform');
|
|
16
|
-
|
|
17
7
|
/** @return {boolean} */
|
|
18
8
|
const supportsStorage = () => shaka.offline.Storage.support();
|
|
19
9
|
|
|
@@ -45,6 +35,7 @@ filterDescribe('Offline', supportsStorage, () => {
|
|
|
45
35
|
|
|
46
36
|
eventManager = new shaka.util.EventManager();
|
|
47
37
|
waiter = new shaka.test.Waiter(eventManager);
|
|
38
|
+
waiter.setPlayer(player);
|
|
48
39
|
|
|
49
40
|
// Make sure we are starting with a blank slate.
|
|
50
41
|
await shaka.offline.Storage.deleteAll();
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.offline.OfflineManifestParser');
|
|
8
|
-
goog.require('shaka.offline.OfflineUri');
|
|
9
|
-
goog.require('shaka.offline.StorageMuxer');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.util.Error');
|
|
12
|
-
|
|
13
7
|
/** @return {boolean} */
|
|
14
8
|
const offlineManifestParserSupport = () => shaka.offline.StorageMuxer.support();
|
|
15
9
|
filterDescribe('OfflineManifestParser', offlineManifestParserSupport, () => {
|
|
@@ -4,14 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.net.NetworkingEngine');
|
|
8
|
-
goog.require('shaka.net.NetworkingEngine.RequestType');
|
|
9
|
-
goog.require('shaka.offline.OfflineScheme');
|
|
10
|
-
goog.require('shaka.offline.OfflineUri');
|
|
11
|
-
goog.require('shaka.offline.StorageMuxer');
|
|
12
|
-
goog.require('shaka.test.Util');
|
|
13
|
-
goog.require('shaka.util.Error');
|
|
14
|
-
|
|
15
7
|
/** @return {boolean} */
|
|
16
8
|
const offlineSchemeSupport = () => shaka.offline.StorageMuxer.support();
|
|
17
9
|
filterDescribe('OfflineScheme', offlineSchemeSupport, () => {
|
|
@@ -4,19 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.offline.ManifestConverter');
|
|
9
|
-
goog.require('shaka.offline.indexeddb.V1StorageCell');
|
|
10
|
-
goog.require('shaka.offline.indexeddb.V2StorageCell');
|
|
11
|
-
goog.require('shaka.offline.indexeddb.V5StorageCell');
|
|
12
|
-
goog.require('shaka.test.CannedIDB');
|
|
13
|
-
goog.require('shaka.test.IndexedDBUtils');
|
|
14
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
15
|
-
goog.require('shaka.test.Util');
|
|
16
|
-
goog.require('shaka.util.Error');
|
|
17
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
18
|
-
goog.require('shaka.util.StringUtils');
|
|
19
|
-
|
|
20
7
|
// All of the database dumps referenced below were originally made from the
|
|
21
8
|
// "Heliocentrism" content in our demo app.
|
|
22
9
|
// https://storage.googleapis.com/shaka-demo-assets/heliocentrism/heliocentrism.mpd
|
|
@@ -80,7 +67,7 @@ const compatibilityTestsMetadata = [
|
|
|
80
67
|
// This is the v4 version of the database as written by v2.5.0 - v2.5.9. A
|
|
81
68
|
// bug in v2.5 caused the stream metadata from all periods to be written to
|
|
82
69
|
// each period. This was corrected in v2.5.10.
|
|
83
|
-
// See https://github.com/
|
|
70
|
+
// See https://github.com/shaka-project/shaka-player/issues/2389
|
|
84
71
|
name: 'v4-broken',
|
|
85
72
|
dbImagePath: '/base/test/test/assets/db-dump-v4-broken.json',
|
|
86
73
|
manifestKey: 1,
|
|
@@ -4,32 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.Player');
|
|
9
|
-
goog.require('shaka.media.DrmEngine');
|
|
10
|
-
goog.require('shaka.media.ManifestParser');
|
|
11
|
-
goog.require('shaka.media.SegmentIndex');
|
|
12
|
-
goog.require('shaka.net.NetworkingEngine.RequestType');
|
|
13
|
-
goog.require('shaka.offline.ManifestConverter');
|
|
14
|
-
goog.require('shaka.offline.OfflineUri');
|
|
15
|
-
goog.require('shaka.offline.Storage');
|
|
16
|
-
goog.require('shaka.offline.StorageMuxer');
|
|
17
|
-
goog.require('shaka.test.FakeDrmEngine');
|
|
18
|
-
goog.require('shaka.test.FakeManifestParser');
|
|
19
|
-
goog.require('shaka.test.FakeNetworkingEngine');
|
|
20
|
-
goog.require('shaka.test.Loader');
|
|
21
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
22
|
-
goog.require('shaka.test.TestScheme');
|
|
23
|
-
goog.require('shaka.test.Util');
|
|
24
|
-
goog.require('shaka.util.AbortableOperation');
|
|
25
|
-
goog.require('shaka.util.BufferUtils');
|
|
26
|
-
goog.require('shaka.util.Error');
|
|
27
|
-
goog.require('shaka.util.EventManager');
|
|
28
|
-
goog.require('shaka.util.PlayerConfiguration');
|
|
29
|
-
goog.require('shaka.util.PublicPromise');
|
|
30
|
-
goog.require('shaka.util.Uint8ArrayUtils');
|
|
31
|
-
goog.requireType('shaka.media.SegmentReference');
|
|
32
|
-
|
|
33
7
|
/** @return {boolean} */
|
|
34
8
|
function storageSupport() {
|
|
35
9
|
return shaka.offline.Storage.support();
|
|
@@ -1323,7 +1297,7 @@ filterDescribe('Storage', storageSupport, () => {
|
|
|
1323
1297
|
const testSchemeMimeType = 'application/x-test-manifest';
|
|
1324
1298
|
const manifestUri = 'test:sintel';
|
|
1325
1299
|
|
|
1326
|
-
// Regression test for https://github.com/
|
|
1300
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/2781
|
|
1327
1301
|
it('does not cache failures or cancellations', async () => {
|
|
1328
1302
|
/** @type {shaka.offline.Storage} */
|
|
1329
1303
|
const storage = new shaka.offline.Storage();
|
package/test/player_external.js
CHANGED
|
@@ -4,15 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('ShakaDemoAssetInfo');
|
|
8
|
-
goog.require('shaka.test.Loader');
|
|
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
|
-
goog.requireType('shaka.Player');
|
|
14
|
-
goog.requireType('shaka.net.NetworkingEngine.RequestType');
|
|
15
|
-
|
|
16
7
|
describe('Player', () => {
|
|
17
8
|
const Util = shaka.test.Util;
|
|
18
9
|
const Feature = shakaAssets.Feature;
|
|
@@ -48,6 +39,7 @@ describe('Player', () => {
|
|
|
48
39
|
// Grab event manager from the uncompiled library:
|
|
49
40
|
eventManager = new shaka.util.EventManager();
|
|
50
41
|
waiter = new shaka.test.Waiter(eventManager);
|
|
42
|
+
waiter.setPlayer(player);
|
|
51
43
|
|
|
52
44
|
onErrorSpy = jasmine.createSpy('onError');
|
|
53
45
|
onErrorSpy.and.callFake((event) => fail(event.detail));
|
|
@@ -117,7 +109,7 @@ describe('Player', () => {
|
|
|
117
109
|
|
|
118
110
|
// Make sure we don't get stuck on gaps that only appear in some
|
|
119
111
|
// browsers (Safari, Firefox).
|
|
120
|
-
// TODO(https://github.com/
|
|
112
|
+
// TODO(https://github.com/shaka-project/shaka-player/issues/1702):
|
|
121
113
|
// Is this necessary because of a bug in Shaka Player?
|
|
122
114
|
player.configure('streaming.jumpLargeGaps', true);
|
|
123
115
|
|