shaka-player 3.3.2 → 4.0.0
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 +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 +37 -0
- package/.github/workflows/nightly-demo.yaml +42 -0
- package/.github/workflows/release-please.yaml +168 -0
- package/.github/workflows/safari-homedir-launcher.sh +18 -0
- package/.github/workflows/selenium-lab-tests.yaml +92 -0
- package/.github/workflows/sync-labels.yaml +33 -0
- package/.github/workflows/update-issues.yaml +29 -0
- package/.github/workflows/validate-pr-title.yaml +35 -0
- package/AUTHORS +3 -0
- package/CHANGELOG.md +1866 -1675
- package/CONTRIBUTING.md +2 -2
- package/CONTRIBUTORS +3 -0
- package/README.md +16 -13
- 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 +28 -0
- package/app-engine/demo-version-index/generate.py +164 -0
- package/app-engine/demo-version-index/main.py +11 -0
- package/app-engine/demo-version-index/requirements.txt +5 -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/compiler.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 +161 -0
- package/build/shakaBuildHelpers.py +4 -29
- package/build/test.py +94 -29
- package/build/types/core +0 -1
- package/build/types/polyfill +1 -3
- 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/asset.js +17 -1
- package/demo/common/assets.js +31 -0
- package/demo/common/message_ids.js +6 -3
- package/demo/config.js +10 -12
- package/demo/custom.js +39 -1
- package/demo/customWarning.txt +2 -2
- package/demo/demo.less +29 -18
- package/demo/demo_uncompiled.js +1 -13
- package/demo/demo_utils.js +0 -1
- package/demo/index.html +1 -1
- package/demo/locales/en.json +6 -3
- package/demo/locales/source.json +22 -10
- package/demo/main.js +12 -9
- package/demo/search.js +2 -1
- package/dist/controls.css +3 -3
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +236 -232
- package/dist/demo.compiled.debug.map +4 -4
- package/dist/demo.compiled.js +236 -232
- package/dist/demo.compiled.map +4 -4
- package/dist/demo.css +1 -1
- package/dist/demo.css.map +1 -1
- package/dist/deps.js +229 -226
- package/dist/locales.js +34 -32
- package/dist/receiver.compiled.debug.js +75 -73
- package/dist/receiver.compiled.debug.map +4 -4
- package/dist/receiver.compiled.js +75 -73
- package/dist/receiver.compiled.map +4 -4
- package/dist/shaka-player.compiled.d.ts +321 -314
- package/dist/shaka-player.compiled.debug.d.ts +321 -314
- package/dist/shaka-player.compiled.debug.externs.js +140 -129
- package/dist/shaka-player.compiled.debug.js +527 -592
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +140 -129
- package/dist/shaka-player.compiled.js +836 -860
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +367 -358
- package/dist/shaka-player.ui.debug.d.ts +367 -358
- package/dist/shaka-player.ui.debug.externs.js +148 -129
- package/dist/shaka-player.ui.debug.js +586 -649
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +148 -129
- package/dist/shaka-player.ui.js +1008 -1028
- 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/config.md +0 -2
- package/docs/tutorials/drm-config.md +5 -0
- package/docs/tutorials/fairplay.md +7 -22
- package/docs/tutorials/faq.md +8 -19
- package/docs/tutorials/index.json +3 -8
- package/docs/tutorials/plugins.md +4 -6
- package/docs/tutorials/selenium-grid-config.md +122 -0
- package/docs/tutorials/upgrade.md +83 -11
- package/docs/tutorials/welcome.md +10 -2
- package/externs/cmcd.js +1 -1
- package/externs/polyfill.js +15 -0
- package/externs/shaka/manifest.js +5 -1
- package/externs/shaka/net.js +12 -0
- package/externs/shaka/offline.js +5 -1
- package/externs/shaka/player.js +39 -32
- package/externs/shaka/text.js +12 -12
- package/externs/sourcebuffer.js +15 -0
- package/karma.conf.js +137 -30
- package/lib/abr/simple_abr_manager.js +12 -6
- package/lib/ads/client_side_ad.js +13 -2
- package/lib/ads/client_side_ad_manager.js +22 -4
- package/lib/cast/cast_proxy.js +3 -4
- package/lib/cast/cast_utils.js +0 -1
- 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/content_protection.js +85 -5
- package/lib/dash/dash_parser.js +10 -12
- 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 +386 -749
- package/lib/hls/manifest_text_parser.js +5 -6
- package/lib/media/adaptation_set.js +1 -2
- package/lib/media/content_workarounds.js +2 -2
- package/lib/media/drm_engine.js +105 -55
- package/lib/media/gap_jumping_controller.js +10 -45
- package/lib/media/media_source_engine.js +90 -17
- package/lib/media/mp4_segment_index_parser.js +1 -4
- package/lib/media/playhead.js +4 -7
- package/lib/media/presentation_timeline.js +19 -10
- package/lib/media/segment_index.js +13 -46
- package/lib/media/segment_reference.js +47 -1
- package/lib/media/streaming_engine.js +35 -17
- package/lib/media/time_ranges_utils.js +5 -12
- package/lib/media/video_wrapper.js +1 -1
- package/lib/net/networking_engine.js +4 -1
- package/lib/offline/indexeddb/v1_storage_cell.js +1 -0
- package/lib/offline/indexeddb/v2_storage_cell.js +1 -0
- package/lib/offline/manifest_converter.js +1 -0
- package/lib/offline/storage.js +104 -136
- package/lib/player.js +50 -216
- package/lib/polyfill/all.js +2 -3
- package/lib/polyfill/encryption_scheme.js +1 -1
- package/lib/polyfill/media_capabilities.js +15 -9
- package/lib/polyfill/mediasource.js +0 -28
- package/lib/polyfill/patchedmediakeys_nop.js +2 -0
- package/lib/polyfill/patchedmediakeys_webkit.js +2 -0
- package/lib/polyfill/symbol.js +46 -0
- package/lib/text/cue.js +1 -7
- package/lib/text/lrc_text_parser.js +8 -0
- package/lib/text/mp4_ttml_parser.js +8 -0
- package/lib/text/mp4_vtt_parser.js +8 -0
- package/lib/text/sbv_text_parser.js +8 -0
- package/lib/text/simple_text_displayer.js +3 -8
- package/lib/text/srt_text_parser.js +8 -0
- package/lib/text/ssa_text_parser.js +8 -0
- package/lib/text/text_engine.js +19 -3
- package/lib/text/ttml_text_parser.js +16 -5
- package/lib/text/ui_text_displayer.js +2 -8
- package/lib/text/vtt_text_parser.js +24 -2
- package/lib/text/web_vtt_generator.js +1 -7
- package/lib/util/buffer_utils.js +1 -3
- package/lib/util/ebml_parser.js +3 -3
- package/lib/util/error.js +10 -14
- package/lib/util/fairplay_utils.js +109 -0
- package/lib/util/functional.js +0 -42
- package/lib/util/iterables.js +0 -46
- package/lib/util/mime_utils.js +2 -0
- 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 +48 -3
- package/lib/util/player_configuration.js +12 -6
- package/lib/util/pssh.js +24 -8
- package/lib/util/stream_utils.js +96 -25
- package/lib/util/string_utils.js +3 -5
- package/lib/util/uint8array_utils.js +3 -21
- package/lib/util/xml_utils.js +16 -8
- package/package.json +61 -36
- package/roadmap.md +27 -27
- package/shaka-player.uncompiled.js +1 -3
- 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 +45 -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 +3 -13
- package/test/dash/mpd_utils_unit.js +3 -11
- package/test/demo/demo_unit.js +2 -6
- package/test/deprecate/enforcer_unit.js +0 -4
- package/test/deprecate/version_unit.js +0 -2
- package/test/hls/hls_live_unit.js +101 -234
- package/test/hls/hls_parser_unit.js +517 -447
- 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 +90 -144
- package/test/media/manifest_parser_unit.js +0 -4
- package/test/media/media_source_engine_integration.js +26 -10
- package/test/media/media_source_engine_unit.js +8 -20
- 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 +35 -207
- package/test/media/presentation_timeline_unit.js +4 -7
- package/test/media/quality_observer_unit.js +0 -4
- 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 +15 -31
- 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 +13 -75
- package/test/media/streaming_engine_unit.js +14 -37
- package/test/media/time_ranges_utils_unit.js +0 -7
- 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 +34 -12
- package/test/offline/offline_integration.js +1 -10
- package/test/offline/offline_manifest_parser_unit.js +1 -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 +6 -31
- package/test/player_external.js +1 -15
- package/test/player_integration.js +38 -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 +78 -37
- 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 +11 -11
- 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 +12 -15
- package/test/test/util/manifest_parser_util.js +4 -7
- package/test/test/util/offline_utils.js +1 -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 +1 -15
- package/test/test/util/test_scheme.js +25 -20
- package/test/test/util/ttml_utils.js +0 -2
- package/test/test/util/ui_utils.js +0 -9
- package/test/test/util/util.js +9 -23
- package/test/test/util/waiter.js +84 -43
- package/test/text/cue_integration.js +2 -6
- package/test/text/lrc_text_parser_unit.js +6 -11
- package/test/text/mp4_ttml_parser_unit.js +6 -10
- package/test/text/mp4_vtt_parser_unit.js +7 -12
- package/test/text/sbv_text_parser_unit.js +5 -10
- package/test/text/simple_text_displayer_unit.js +1 -8
- package/test/text/srt_text_parser_unit.js +5 -10
- package/test/text/ssa_text_parser_unit.js +17 -34
- package/test/text/text_engine_unit.js +47 -12
- package/test/text/text_track_integration.js +0 -2
- package/test/text/ttml_text_parser_unit.js +79 -88
- package/test/text/ui_text_displayer_unit.js +44 -41
- package/test/text/vtt_text_parser_unit.js +55 -66
- 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 -32
- package/test/ui/ui_unit.js +28 -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 +3 -3
- 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/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 +26 -15
- 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 +65 -40
- package/ui/fullscreen_button.js +26 -6
- package/ui/less/ad_controls.less +6 -6
- package/ui/less/buttons.less +6 -6
- package/ui/less/containers.less +10 -12
- package/ui/less/overflow_menu.less +4 -4
- package/ui/less/range_elements.less +7 -2
- package/ui/less/tooltip.less +4 -4
- package/ui/locales/en.json +1 -0
- package/ui/locales/sjn-translations.yaml +257 -0
- package/ui/locales/sjn.json +42 -0
- package/ui/locales/source.json +5 -0
- package/ui/resolution_selection.js +31 -33
- package/ui/seek_bar.js +2 -1
- package/ui/ui.js +0 -17
- package/.github/workflows/build_and_test.yaml +0 -73
- package/.github/workflows/release.yaml +0 -53
- package/docs/tutorials/upgrade-v2-5.md +0 -441
- package/docs/tutorials/upgrade-v3.md +0 -38
- package/externs/svgelement.js +0 -18
- package/externs/webcrypto.js +0 -18
- package/lib/polyfill/mathround.js +0 -49
- package/lib/polyfill/patchedmediakeys_apple.js +0 -744
- package/lib/polyfill/patchedmediakeys_ms.js +0 -698
- package/lib/util/mutex.js +0 -52
- package/test/util/functional_unit.js +0 -82
|
@@ -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';
|
|
@@ -115,6 +107,7 @@ describe('ManifestConverter', () => {
|
|
|
115
107
|
},
|
|
116
108
|
appMetadata: null,
|
|
117
109
|
creationTime: 0,
|
|
110
|
+
sequenceMode: false,
|
|
118
111
|
};
|
|
119
112
|
|
|
120
113
|
const manifest = createConverter().fromManifestDB(manifestDb);
|
|
@@ -151,6 +144,7 @@ describe('ManifestConverter', () => {
|
|
|
151
144
|
createVideoStreamDB(1, [0]),
|
|
152
145
|
createVideoStreamDB(2, [1]),
|
|
153
146
|
],
|
|
147
|
+
sequenceMode: false,
|
|
154
148
|
};
|
|
155
149
|
|
|
156
150
|
const manifest = createConverter().fromManifestDB(manifestDb);
|
|
@@ -178,6 +172,7 @@ describe('ManifestConverter', () => {
|
|
|
178
172
|
createAudioStreamDB(1, [0]),
|
|
179
173
|
createAudioStreamDB(2, [1]),
|
|
180
174
|
],
|
|
175
|
+
sequenceMode: false,
|
|
181
176
|
};
|
|
182
177
|
|
|
183
178
|
const manifest = createConverter().fromManifestDB(manifestDb);
|
|
@@ -190,6 +185,29 @@ describe('ManifestConverter', () => {
|
|
|
190
185
|
expect(manifest.variants[1].video).toBe(null);
|
|
191
186
|
});
|
|
192
187
|
|
|
188
|
+
it('supports containerless content', () => {
|
|
189
|
+
/** @type {shaka.extern.ManifestDB} */
|
|
190
|
+
const manifestDb = {
|
|
191
|
+
originalManifestUri: 'http://example.com/foo',
|
|
192
|
+
duration: 60,
|
|
193
|
+
size: 1234,
|
|
194
|
+
expiration: Infinity,
|
|
195
|
+
sessionIds: [],
|
|
196
|
+
drmInfo: null,
|
|
197
|
+
appMetadata: null,
|
|
198
|
+
creationTime: 0,
|
|
199
|
+
streams: [
|
|
200
|
+
createVideoStreamDB(1, [0]),
|
|
201
|
+
createAudioStreamDB(2, [0]),
|
|
202
|
+
],
|
|
203
|
+
sequenceMode: true,
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
const manifest = createConverter().fromManifestDB(manifestDb);
|
|
207
|
+
expect(manifest.sequenceMode).toBe(true);
|
|
208
|
+
expect(manifest.variants.length).toBe(1);
|
|
209
|
+
});
|
|
210
|
+
|
|
193
211
|
it('supports text streams', () => {
|
|
194
212
|
/** @type {shaka.extern.ManifestDB} */
|
|
195
213
|
const manifestDb = {
|
|
@@ -205,6 +223,7 @@ describe('ManifestConverter', () => {
|
|
|
205
223
|
createVideoStreamDB(1, [0]),
|
|
206
224
|
createTextStreamDB(2),
|
|
207
225
|
],
|
|
226
|
+
sequenceMode: false,
|
|
208
227
|
};
|
|
209
228
|
|
|
210
229
|
const manifest = createConverter().fromManifestDB(manifestDb);
|
|
@@ -243,6 +262,7 @@ describe('ManifestConverter', () => {
|
|
|
243
262
|
createVideoStreamDB(video1, [variant1]),
|
|
244
263
|
createVideoStreamDB(video2, [variant2, variant3]),
|
|
245
264
|
],
|
|
265
|
+
sequenceMode: false,
|
|
246
266
|
};
|
|
247
267
|
|
|
248
268
|
const manifest = createConverter().fromManifestDB(manifestDb);
|
|
@@ -517,8 +537,6 @@ describe('ManifestConverter', () => {
|
|
|
517
537
|
|
|
518
538
|
// Assume that we don't have to call createSegmentIndex.
|
|
519
539
|
|
|
520
|
-
const iterator = stream.segmentIndex[Symbol.iterator]();
|
|
521
|
-
|
|
522
540
|
streamDb.segments.forEach((segmentDb, i) => {
|
|
523
541
|
const uri = shaka.offline.OfflineUri.segment(
|
|
524
542
|
'mechanism', 'cell', segmentDb.dataKey);
|
|
@@ -528,10 +546,14 @@ describe('ManifestConverter', () => {
|
|
|
528
546
|
null;
|
|
529
547
|
|
|
530
548
|
/** @type {shaka.media.SegmentReference} */
|
|
531
|
-
const segment =
|
|
549
|
+
const segment =
|
|
550
|
+
stream.segmentIndex
|
|
551
|
+
.getIteratorForTime(segmentDb.startTime).next().value;
|
|
532
552
|
|
|
533
553
|
/** @type {shaka.media.SegmentReference} */
|
|
534
|
-
const sameSegment =
|
|
554
|
+
const sameSegment =
|
|
555
|
+
stream.segmentIndex
|
|
556
|
+
.getIteratorForTime(segmentDb.endTime - 0.1).next().value;
|
|
535
557
|
|
|
536
558
|
expect(segment).toBe(sameSegment);
|
|
537
559
|
expect(segment.startTime).toBe(segmentDb.startTime);
|
|
@@ -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, () => {
|
|
@@ -216,6 +210,7 @@ filterDescribe('OfflineManifestParser', offlineManifestParserSupport, () => {
|
|
|
216
210
|
sessionIds: [sessionId],
|
|
217
211
|
drmInfo: null,
|
|
218
212
|
appMetadata: {},
|
|
213
|
+
sequenceMode: false,
|
|
219
214
|
};
|
|
220
215
|
|
|
221
216
|
return manifest;
|
|
@@ -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();
|
|
@@ -1136,10 +1110,7 @@ filterDescribe('Storage', storageSupport, () => {
|
|
|
1136
1110
|
aRequestIsStarted.resolve();
|
|
1137
1111
|
await promise;
|
|
1138
1112
|
|
|
1139
|
-
|
|
1140
|
-
// and will be downloaded sequentially. Thus, we expect only the first
|
|
1141
|
-
// download to be aborted.
|
|
1142
|
-
expect(abortCheck()).toBe(i == 0 ? true : false);
|
|
1113
|
+
expect(abortCheck()).toBe(true);
|
|
1143
1114
|
|
|
1144
1115
|
return new ArrayBuffer(16);
|
|
1145
1116
|
});
|
|
@@ -1323,7 +1294,7 @@ filterDescribe('Storage', storageSupport, () => {
|
|
|
1323
1294
|
const testSchemeMimeType = 'application/x-test-manifest';
|
|
1324
1295
|
const manifestUri = 'test:sintel';
|
|
1325
1296
|
|
|
1326
|
-
// Regression test for https://github.com/
|
|
1297
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/2781
|
|
1327
1298
|
it('does not cache failures or cancellations', async () => {
|
|
1328
1299
|
/** @type {shaka.offline.Storage} */
|
|
1329
1300
|
const storage = new shaka.offline.Storage();
|
|
@@ -1381,6 +1352,8 @@ filterDescribe('Storage', storageSupport, () => {
|
|
|
1381
1352
|
pixelAspectRatio: '59:54',
|
|
1382
1353
|
hdr: null,
|
|
1383
1354
|
mimeType: 'video/mp4,audio/mp4',
|
|
1355
|
+
audioMimeType: 'audio/mp4',
|
|
1356
|
+
videoMimeType: 'video/mp4',
|
|
1384
1357
|
codecs: 'mp4,mp4',
|
|
1385
1358
|
audioCodec: 'mp4',
|
|
1386
1359
|
videoCodec: 'mp4',
|
|
@@ -1423,6 +1396,8 @@ filterDescribe('Storage', storageSupport, () => {
|
|
|
1423
1396
|
pixelAspectRatio: null,
|
|
1424
1397
|
hdr: null,
|
|
1425
1398
|
mimeType: 'text/vtt',
|
|
1399
|
+
audioMimeType: null,
|
|
1400
|
+
videoMimeType: null,
|
|
1426
1401
|
codecs: 'vtt',
|
|
1427
1402
|
audioCodec: null,
|
|
1428
1403
|
videoCodec: null,
|
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));
|
|
@@ -115,12 +107,6 @@ describe('Player', () => {
|
|
|
115
107
|
player.configure('manifest.dash.clockSyncUri',
|
|
116
108
|
'https://shaka-player-demo.appspot.com/time.txt');
|
|
117
109
|
|
|
118
|
-
// Make sure we don't get stuck on gaps that only appear in some
|
|
119
|
-
// browsers (Safari, Firefox).
|
|
120
|
-
// TODO(https://github.com/google/shaka-player/issues/1702):
|
|
121
|
-
// Is this necessary because of a bug in Shaka Player?
|
|
122
|
-
player.configure('streaming.jumpLargeGaps', true);
|
|
123
|
-
|
|
124
110
|
// Add asset-specific configuration.
|
|
125
111
|
player.configure(asset.getConfiguration());
|
|
126
112
|
|
|
@@ -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) => {
|
|
@@ -299,7 +284,7 @@ describe('Player', () => {
|
|
|
299
284
|
expect(variantTrack.language).toBe(textTrack.language);
|
|
300
285
|
});
|
|
301
286
|
|
|
302
|
-
// Repro for https://github.com/
|
|
287
|
+
// Repro for https://github.com/shaka-project/shaka-player/issues/1879.
|
|
303
288
|
it('appends cues when enabled initially', async () => {
|
|
304
289
|
let cues = [];
|
|
305
290
|
/** @const {!shaka.test.FakeTextDisplayer} */
|
|
@@ -356,7 +341,7 @@ describe('Player', () => {
|
|
|
356
341
|
expect(cues.length).toBeGreaterThan(0);
|
|
357
342
|
});
|
|
358
343
|
|
|
359
|
-
// https://github.com/
|
|
344
|
+
// https://github.com/shaka-project/shaka-player/issues/2553
|
|
360
345
|
it('does not change the selected track', async () => {
|
|
361
346
|
player.configure('streaming.alwaysStreamText', false);
|
|
362
347
|
await player.load('test:forced_subs_simulation_compiled');
|
|
@@ -433,6 +418,22 @@ describe('Player', () => {
|
|
|
433
418
|
expect(video.playbackRate).toBe(1);
|
|
434
419
|
});
|
|
435
420
|
|
|
421
|
+
it('in sequence mode', async () => {
|
|
422
|
+
const testSchemeMimeType = 'application/x-test-manifest';
|
|
423
|
+
player = new compiledShaka.Player(video);
|
|
424
|
+
await player.load('test:sintel_sequence_compiled', 0, testSchemeMimeType);
|
|
425
|
+
expect(player.getManifest().sequenceMode).toBe(true);
|
|
426
|
+
|
|
427
|
+
// Ensure the video plays.
|
|
428
|
+
video.play();
|
|
429
|
+
await waiter.waitUntilPlayheadReachesOrFailOnTimeout(video, 5, 10);
|
|
430
|
+
|
|
431
|
+
// Seek the video, and see if it can continue playing from that point.
|
|
432
|
+
video.currentTime = 20;
|
|
433
|
+
// Expect that we can then reach the end of the video.
|
|
434
|
+
await waiter.timeoutAfter(20).waitForEnd(video);
|
|
435
|
+
});
|
|
436
|
+
|
|
436
437
|
// Regression test for #2326.
|
|
437
438
|
//
|
|
438
439
|
// 1. Construct an instance with a video element.
|
|
@@ -482,7 +483,7 @@ describe('Player', () => {
|
|
|
482
483
|
expect(configuredTextDisplayer).toBe(textDisplayer);
|
|
483
484
|
});
|
|
484
485
|
|
|
485
|
-
// Regression test for https://github.com/
|
|
486
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/1187
|
|
486
487
|
it('does not throw on destroy', async () => {
|
|
487
488
|
await player.load('test:sintel_compiled');
|
|
488
489
|
video.play();
|
|
@@ -513,7 +514,7 @@ describe('Player', () => {
|
|
|
513
514
|
// and the track selection was ignored. Because this bug involved
|
|
514
515
|
// interactions between Player and StreamingEngine, it is an integration
|
|
515
516
|
// test and not a unit test.
|
|
516
|
-
// https://github.com/
|
|
517
|
+
// https://github.com/shaka-project/shaka-player/issues/1119
|
|
517
518
|
it('allows early selection of specific tracks', async () => {
|
|
518
519
|
/** @type {!jasmine.Spy} */
|
|
519
520
|
const streamingListener = jasmine.createSpy('listener');
|
|
@@ -548,7 +549,7 @@ describe('Player', () => {
|
|
|
548
549
|
// switchingPeriods_ in Player. Because this bug involved interactions
|
|
549
550
|
// between Player and StreamingEngine, it is an integration test and not a
|
|
550
551
|
// unit test.
|
|
551
|
-
// https://github.com/
|
|
552
|
+
// https://github.com/shaka-project/shaka-player/issues/1119
|
|
552
553
|
it('allows selection of tracks in subsequent loads', async () => {
|
|
553
554
|
/** @type {!jasmine.Spy} */
|
|
554
555
|
const streamingListener = jasmine.createSpy('listener');
|
|
@@ -646,7 +647,9 @@ describe('Player', () => {
|
|
|
646
647
|
eventManager.listen(video, 'waiting', checkOnEvent);
|
|
647
648
|
eventManager.listen(player, 'trackschanged', checkOnEvent);
|
|
648
649
|
|
|
649
|
-
const waiter =
|
|
650
|
+
const waiter = new shaka.test.Waiter(eventManager)
|
|
651
|
+
.setPlayer(player)
|
|
652
|
+
.timeoutAfter(10);
|
|
650
653
|
const canPlayThrough = waiter.waitForEvent(video, 'canplaythrough');
|
|
651
654
|
|
|
652
655
|
await player.load('test:sintel_compiled', 5);
|
|
@@ -720,6 +723,7 @@ describe('Player', () => {
|
|
|
720
723
|
player.addEventListener('mediaqualitychanged',
|
|
721
724
|
Util.spyFunc(onQualityChange));
|
|
722
725
|
waiter = new shaka.test.Waiter(eventManager)
|
|
726
|
+
.setPlayer(player)
|
|
723
727
|
.timeoutAfter(10)
|
|
724
728
|
.failOnTimeout(true);
|
|
725
729
|
});
|
|
@@ -777,7 +781,9 @@ describe('Player', () => {
|
|
|
777
781
|
eventManager.listen(player, 'error', Util.spyFunc(onErrorSpy));
|
|
778
782
|
/** @type {shaka.test.Waiter} */
|
|
779
783
|
const waiter = new shaka.test.Waiter(eventManager)
|
|
780
|
-
.
|
|
784
|
+
.setPlayer(player)
|
|
785
|
+
.timeoutAfter(20)
|
|
786
|
+
.failOnTimeout(true);
|
|
781
787
|
await waiter.waitForEnd(video);
|
|
782
788
|
|
|
783
789
|
// The stream should have transitioned to VOD by now.
|
|
@@ -785,7 +791,7 @@ describe('Player', () => {
|
|
|
785
791
|
|
|
786
792
|
// Check that the final seek range is as expected.
|
|
787
793
|
const seekRange = player.seekRange();
|
|
788
|
-
expect(seekRange.end).
|
|
794
|
+
expect(seekRange.end).toBeCloseTo(14);
|
|
789
795
|
});
|
|
790
796
|
});
|
|
791
797
|
|
|
@@ -802,6 +808,7 @@ describe('Player', () => {
|
|
|
802
808
|
player.addEventListener('buffering', Util.spyFunc(onBuffering));
|
|
803
809
|
|
|
804
810
|
waiter = new shaka.test.Waiter(eventManager)
|
|
811
|
+
.setPlayer(player)
|
|
805
812
|
.timeoutAfter(10)
|
|
806
813
|
.failOnTimeout(true);
|
|
807
814
|
});
|
|
@@ -915,8 +922,7 @@ describe('Player', () => {
|
|
|
915
922
|
}
|
|
916
923
|
|
|
917
924
|
async function waitUntilBuffered(amount) {
|
|
918
|
-
for (
|
|
919
|
-
shaka.util.Functional.ignored(_);
|
|
925
|
+
for (let i = 0; i < 25; i++) {
|
|
920
926
|
// We buffer from an internal segment, so this shouldn't take long to
|
|
921
927
|
// buffer.
|
|
922
928
|
await Util.delay(0.1); // eslint-disable-line no-await-in-loop
|
|
@@ -993,7 +999,9 @@ describe('Player', () => {
|
|
|
993
999
|
|
|
994
1000
|
/** @type {shaka.test.Waiter} */
|
|
995
1001
|
const waiter = new shaka.test.Waiter(eventManager)
|
|
996
|
-
.
|
|
1002
|
+
.setPlayer(player)
|
|
1003
|
+
.timeoutAfter(1)
|
|
1004
|
+
.failOnTimeout(true);
|
|
997
1005
|
|
|
998
1006
|
await waiter.waitForPromise(abrEnabled, 'AbrManager enabled');
|
|
999
1007
|
|
|
@@ -1013,7 +1021,9 @@ describe('Player', () => {
|
|
|
1013
1021
|
|
|
1014
1022
|
/** @type {shaka.test.Waiter} */
|
|
1015
1023
|
const waiter = new shaka.test.Waiter(eventManager)
|
|
1016
|
-
.
|
|
1024
|
+
.setPlayer(player)
|
|
1025
|
+
.timeoutAfter(1)
|
|
1026
|
+
.failOnTimeout(true);
|
|
1017
1027
|
|
|
1018
1028
|
await waiter.waitForPromise(abrEnabled, 'AbrManager enabled');
|
|
1019
1029
|
|
|
@@ -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=|.
|