shaka-player 3.3.1 → 3.3.4
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 +147 -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 +1707 -1670
- package/CONTRIBUTING.md +2 -2
- package/CONTRIBUTORS +2 -0
- package/README.md +7 -7
- package/app-engine/README.md +9 -0
- package/app-engine/demo-version-index/README.md +14 -0
- package/app-engine/demo-version-index/app.yaml +2 -0
- package/app-engine/demo-version-index/main.py +162 -0
- package/app-engine/demo-version-index/requirements.txt +6 -0
- package/app-engine/demo-version-index/templates/index.html +114 -0
- package/app-engine/shaka-player-demo/README.md +18 -0
- package/app-engine/shaka-player-demo/app.yaml +61 -0
- package/app-engine/shaka-player-demo/main.py +95 -0
- package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
- package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
- package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
- package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
- package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
- package/app-engine/shaka-player-demo/posters/standard.png +0 -0
- package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
- package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
- package/app-engine/shaka-player-demo/posters.py +110 -0
- package/app-engine/shaka-player-demo/requirements.txt +5 -0
- package/app-engine/shaka-player-demo/time.txt +1 -0
- package/build/README.md +1 -1
- package/build/checkversion.py +1 -1
- package/build/conformance.textproto +13 -0
- package/build/docker/Dockerfile +20 -0
- package/build/docker/docker-compose.yml +10 -0
- package/build/gendeps.py +18 -15
- package/build/generateTsDefs.py +2 -0
- 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 +32 -32
- 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 +250 -237
- package/dist/shaka-player.compiled.debug.d.ts +250 -237
- package/dist/shaka-player.compiled.debug.externs.js +31 -15
- package/dist/shaka-player.compiled.debug.js +252 -257
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +31 -15
- package/dist/shaka-player.compiled.js +844 -849
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +296 -292
- package/dist/shaka-player.ui.debug.d.ts +296 -292
- package/dist/shaka-player.ui.debug.externs.js +33 -26
- package/dist/shaka-player.ui.debug.js +345 -351
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +33 -26
- package/dist/shaka-player.ui.js +1002 -1008
- 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 +1 -1
- 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 +11 -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/streaming_engine.js +7 -7
- 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 +65 -25
- 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/polyfill/symbol.js +46 -0
- 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/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 +4 -3
- 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 +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 +4 -24
- 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 +9 -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 +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 +22 -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 +52 -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 +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 +0 -2
- 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 +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 +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 +0 -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/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 +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/controls.js +3 -0
- package/ui/less/ad_controls.less +6 -6
- package/ui/less/buttons.less +6 -6
- package/ui/less/containers.less +13 -15
- 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/sjn-translations.yaml +257 -0
- package/ui/locales/sjn.json +42 -0
- package/ui/localization.js +12 -36
- package/ui/seek_bar.js +2 -1
- package/externs/svgelement.js +0 -18
- package/externs/webcrypto.js +0 -18
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*! @license
|
|
2
|
+
* Shaka Player
|
|
3
|
+
* Copyright 2016 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Define the shaka.test namespace before we load the test utilities.
|
|
8
|
+
// Without goog.provide in the test utils, this has to be explicit and come
|
|
9
|
+
// before we load the utils.
|
|
10
|
+
shaka.test = {};
|
|
@@ -4,14 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.CannedIDB');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.log');
|
|
10
|
-
goog.require('shaka.offline.indexeddb.DBOperation');
|
|
11
|
-
goog.require('shaka.util.BufferUtils');
|
|
12
|
-
goog.require('shaka.util.Uint8ArrayUtils');
|
|
13
|
-
|
|
14
|
-
|
|
15
7
|
/**
|
|
16
8
|
* A testing utility that can be used to dump and restore entire IndexedDB
|
|
17
9
|
* databases. This can be inserted into a running app to snapshot databases
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.CeaUtils');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.cea.CeaUtils');
|
|
10
|
-
goog.require('shaka.text.Cue');
|
|
11
|
-
|
|
12
|
-
|
|
13
7
|
/**
|
|
14
8
|
* Testing helpers to assist tests for Closed Caption decoders for CEA captions.
|
|
15
9
|
*/
|
|
@@ -4,19 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.Dash');
|
|
8
|
-
|
|
9
|
-
goog.require('goog.asserts');
|
|
10
|
-
goog.require('shaka.dash.DashParser');
|
|
11
|
-
goog.require('shaka.test.FakeNetworkingEngine');
|
|
12
|
-
goog.require('shaka.test.ManifestParser');
|
|
13
|
-
goog.require('shaka.test.Util');
|
|
14
|
-
goog.require('shaka.util.PlayerConfiguration');
|
|
15
|
-
goog.require('shaka.util.StringUtils');
|
|
16
|
-
goog.requireType('shaka.media.SegmentReference');
|
|
17
|
-
goog.requireType('shaka.util.Error');
|
|
18
|
-
|
|
19
|
-
|
|
20
7
|
/** @summary Utilities for working with the DASH parser. */
|
|
21
8
|
shaka.test.Dash = class {
|
|
22
9
|
/**
|
|
@@ -4,15 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.FakeAdManager');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.ads.AdManager');
|
|
10
|
-
goog.require('shaka.ads.AdsStats');
|
|
11
|
-
goog.require('shaka.util.FakeEvent');
|
|
12
|
-
goog.require('shaka.util.FakeEventTarget');
|
|
13
|
-
goog.requireType('shaka.test.FakeAd');
|
|
14
|
-
|
|
15
|
-
|
|
16
7
|
/**
|
|
17
8
|
* @implements {shaka.extern.IAdManager}
|
|
18
9
|
* @final
|
|
@@ -4,13 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.FakeMediaSourceEngine');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.media.MediaSourceEngine');
|
|
10
|
-
goog.require('shaka.test.FakeTextDisplayer');
|
|
11
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
12
|
-
|
|
13
|
-
|
|
14
7
|
/**
|
|
15
8
|
* @summary
|
|
16
9
|
* This simulates multiple SourceBuffers. However, it only
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.FakeNetworkingEngine');
|
|
8
|
-
|
|
9
|
-
/** @fileoverview @suppress {missingRequire} */
|
|
10
|
-
|
|
11
|
-
|
|
12
7
|
/**
|
|
13
8
|
* A fake networking engine that returns constant data. The request member
|
|
14
9
|
* is a jasmine spy and can be used to check the actual calls that occurred.
|
|
@@ -4,14 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.IndexedDBUtils');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.test.Util');
|
|
10
|
-
goog.require('shaka.util.Functional');
|
|
11
|
-
goog.require('shaka.util.Iterables');
|
|
12
|
-
goog.require('shaka.util.PublicPromise');
|
|
13
|
-
|
|
14
|
-
|
|
15
7
|
shaka.test.IndexedDBUtils = class {
|
|
16
8
|
/**
|
|
17
9
|
* Make a connection to indexeddb. This assumes that it will be a new
|
|
@@ -41,8 +33,7 @@ shaka.test.IndexedDBUtils = class {
|
|
|
41
33
|
// connection after 5 attempts (with delays in between), just give
|
|
42
34
|
// up.
|
|
43
35
|
let lastError;
|
|
44
|
-
for (
|
|
45
|
-
shaka.util.Functional.ignored(_);
|
|
36
|
+
for (let i = 0; i < 5; i++) {
|
|
46
37
|
try {
|
|
47
38
|
return await tryOpen(); // eslint-disable-line no-await-in-loop
|
|
48
39
|
} catch (e) { // eslint-disable-line no-restricted-syntax
|
package/test/test/util/loader.js
CHANGED
|
@@ -4,24 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.Loader');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.log');
|
|
10
|
-
goog.require('shaka.test.TestScheme');
|
|
11
|
-
goog.require('shaka.util.PublicPromise');
|
|
12
|
-
goog.requireType('shaka.Player');
|
|
13
|
-
goog.requireType('shaka.media.InitSegmentReference');
|
|
14
|
-
goog.requireType('shaka.media.PresentationTimeline');
|
|
15
|
-
goog.requireType('shaka.media.SegmentIndex');
|
|
16
|
-
goog.requireType('shaka.media.SegmentReference');
|
|
17
|
-
goog.requireType('shaka.net.NetworkingEngine');
|
|
18
|
-
goog.requireType('shaka.offline.Storage');
|
|
19
|
-
goog.requireType('shaka.ui.Controls');
|
|
20
|
-
goog.requireType('shaka.ui.Element');
|
|
21
|
-
goog.requireType('shaka.ui.Overlay');
|
|
22
|
-
goog.requireType('shaka.util.StringUtils');
|
|
23
|
-
|
|
24
|
-
|
|
25
7
|
/**
|
|
26
8
|
* A stand-in type for the "shaka" namespace. Used when loading the compiled
|
|
27
9
|
* library or when referencing it in ManifestGenerator or TestScheme.
|
|
@@ -4,18 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.ManifestGenerator');
|
|
8
|
-
|
|
9
|
-
goog.require('goog.asserts');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.util.Iterables');
|
|
12
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
13
|
-
goog.require('shaka.util.Uint8ArrayUtils');
|
|
14
|
-
goog.requireType('shaka.media.InitSegmentReference');
|
|
15
|
-
goog.requireType('shaka.media.PresentationTimeline');
|
|
16
|
-
goog.requireType('shaka.media.SegmentIndex');
|
|
17
|
-
|
|
18
|
-
|
|
19
7
|
/**
|
|
20
8
|
* @summary
|
|
21
9
|
* A helper class used to generate manifests. This is done through a series
|
|
@@ -606,13 +594,20 @@ shaka.test.ManifestGenerator.Stream = class {
|
|
|
606
594
|
segmentDuration, 'Must pass a non-zero segment duration');
|
|
607
595
|
|
|
608
596
|
const shaka_ = this.manifest_.shaka_;
|
|
609
|
-
|
|
597
|
+
let totalDuration = this.manifest_.presentationTimeline.getDuration();
|
|
610
598
|
goog.asserts.assert(
|
|
611
599
|
isFinite(totalDuration), 'Must specify a manifest duration');
|
|
600
|
+
if (!isFinite(totalDuration)) {
|
|
601
|
+
// Without this, a mistake of an infinite duration would result in an
|
|
602
|
+
// infinite loop and a crash, which would in turn prevent you from seeing
|
|
603
|
+
// the above assertion fail.
|
|
604
|
+
totalDuration = 0;
|
|
605
|
+
}
|
|
606
|
+
|
|
612
607
|
const segmentCount = totalDuration / segmentDuration;
|
|
613
608
|
const references = [];
|
|
614
609
|
|
|
615
|
-
for (
|
|
610
|
+
for (let index = 0; index < segmentCount; index++) {
|
|
616
611
|
const getUris = () => [sprintf(template, index)];
|
|
617
612
|
const start = index * segmentDuration;
|
|
618
613
|
const end = Math.min(totalDuration, (index + 1) * segmentDuration);
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.ManifestParser');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.media.InitSegmentReference');
|
|
10
|
-
goog.require('shaka.media.SegmentReference');
|
|
11
|
-
|
|
12
|
-
|
|
13
7
|
shaka.test.ManifestParser = class {
|
|
14
8
|
/**
|
|
15
9
|
* Verifies the segment references of a stream.
|
|
@@ -4,28 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.FakeAbrManager');
|
|
8
|
-
goog.provide('shaka.test.FakeClosedCaptionParser');
|
|
9
|
-
goog.provide('shaka.test.FakeManifestParser');
|
|
10
|
-
goog.provide('shaka.test.FakePlayhead');
|
|
11
|
-
goog.provide('shaka.test.FakePlayheadObserver');
|
|
12
|
-
goog.provide('shaka.test.FakePresentationTimeline');
|
|
13
|
-
goog.provide('shaka.test.FakeSegmentIndex');
|
|
14
|
-
goog.provide('shaka.test.FakeStreamingEngine');
|
|
15
|
-
goog.provide('shaka.test.FakeTextTrack');
|
|
16
|
-
goog.provide('shaka.test.FakeTransmuxer');
|
|
17
|
-
goog.provide('shaka.test.FakeVideo');
|
|
18
|
-
|
|
19
|
-
goog.require('shaka.test.Util');
|
|
20
|
-
goog.require('shaka.abr.SimpleAbrManager');
|
|
21
|
-
goog.require('shaka.media.IClosedCaptionParser');
|
|
22
|
-
goog.require('shaka.media.Playhead');
|
|
23
|
-
goog.require('shaka.media.PresentationTimeline');
|
|
24
|
-
goog.require('shaka.media.SegmentIndex');
|
|
25
|
-
goog.require('shaka.media.StreamingEngine');
|
|
26
|
-
goog.require('shaka.media.Transmuxer');
|
|
27
|
-
|
|
28
|
-
|
|
29
7
|
/**
|
|
30
8
|
* @fileoverview Defines simple mocks for library types.
|
|
31
9
|
* @suppress {checkTypes} Suppress errors about missmatches between the
|
|
@@ -351,19 +329,24 @@ shaka.test.FakePlayhead = class {
|
|
|
351
329
|
/** @extends {TextTrack} */
|
|
352
330
|
shaka.test.FakeTextTrack = class {
|
|
353
331
|
constructor() {
|
|
332
|
+
// The compiler knows TextTrack.cues is const, and we lied and said we
|
|
333
|
+
// "extend" TextTrack, so it won't let us assign to cues here. But we
|
|
334
|
+
// must, because this fake is a from-scratch implementation of the API.
|
|
335
|
+
// This cast-hack works around the issue.
|
|
354
336
|
/** @type {!Array.<TextTrackCue>} */
|
|
355
|
-
|
|
337
|
+
const cues = [];
|
|
338
|
+
(/** @type {?} */(this))['cues'] = cues;
|
|
356
339
|
|
|
357
340
|
/** @type {!jasmine.Spy} */
|
|
358
341
|
this.addCue = jasmine.createSpy('addCue').and.callFake((cue) => {
|
|
359
|
-
|
|
342
|
+
cues.push(cue);
|
|
360
343
|
});
|
|
361
344
|
|
|
362
345
|
/** @type {!jasmine.Spy} */
|
|
363
346
|
this.removeCue = jasmine.createSpy('removeCue').and.callFake((cue) => {
|
|
364
|
-
const idx =
|
|
347
|
+
const idx = cues.indexOf(cue);
|
|
365
348
|
expect(idx).not.toBeLessThan(0);
|
|
366
|
-
|
|
349
|
+
cues.splice(idx, 1);
|
|
367
350
|
});
|
|
368
351
|
}
|
|
369
352
|
};
|
|
@@ -4,20 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.IStreamGenerator');
|
|
8
|
-
goog.provide('shaka.test.Mp4LiveStreamGenerator');
|
|
9
|
-
goog.provide('shaka.test.Mp4VodStreamGenerator');
|
|
10
|
-
goog.provide('shaka.test.StreamGenerator');
|
|
11
|
-
goog.provide('shaka.test.TSVodStreamGenerator');
|
|
12
|
-
|
|
13
|
-
goog.require('goog.asserts');
|
|
14
|
-
goog.require('shaka.log');
|
|
15
|
-
goog.require('shaka.test.Util');
|
|
16
|
-
goog.require('shaka.util.BufferUtils');
|
|
17
|
-
goog.require('shaka.util.DataViewReader');
|
|
18
|
-
goog.require('shaka.util.Uint8ArrayUtils');
|
|
19
|
-
|
|
20
|
-
|
|
21
7
|
/**
|
|
22
8
|
* @summary
|
|
23
9
|
* Defines an interface to generate streams.
|
|
@@ -4,21 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.StreamingEngineUtil');
|
|
8
|
-
|
|
9
|
-
goog.require('goog.asserts');
|
|
10
|
-
goog.require('shaka.media.InitSegmentReference');
|
|
11
|
-
goog.require('shaka.media.SegmentReference');
|
|
12
|
-
goog.require('shaka.test.FakeNetworkingEngine');
|
|
13
|
-
goog.require('shaka.test.FakePresentationTimeline');
|
|
14
|
-
goog.require('shaka.test.FakeSegmentIndex');
|
|
15
|
-
goog.require('shaka.test.Util');
|
|
16
|
-
goog.require('shaka.util.AbortableOperation');
|
|
17
|
-
goog.require('shaka.util.Error');
|
|
18
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
19
|
-
goog.requireType('shaka.media.PresentationTimeline');
|
|
20
|
-
|
|
21
|
-
|
|
22
7
|
shaka.test.StreamingEngineUtil = class {
|
|
23
8
|
/**
|
|
24
9
|
* Creates a FakeNetworkingEngine.
|
|
@@ -4,24 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.TestScheme');
|
|
8
|
-
|
|
9
|
-
goog.require('goog.asserts');
|
|
10
|
-
goog.require('goog.Uri');
|
|
11
|
-
goog.require('shaka.Player');
|
|
12
|
-
goog.require('shaka.media.ManifestParser');
|
|
13
|
-
goog.require('shaka.net.NetworkingEngine');
|
|
14
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
15
|
-
goog.require('shaka.test.Mp4VodStreamGenerator');
|
|
16
|
-
goog.require('shaka.test.TSVodStreamGenerator');
|
|
17
|
-
goog.require('shaka.test.Util');
|
|
18
|
-
goog.require('shaka.util.AbortableOperation');
|
|
19
|
-
goog.require('shaka.util.Error');
|
|
20
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
21
|
-
goog.requireType('shaka.net.NetworkingEngine.RequestType');
|
|
22
|
-
goog.requireType('shaka.test.IStreamGenerator');
|
|
23
|
-
|
|
24
|
-
|
|
25
7
|
/**
|
|
26
8
|
* @typedef {{
|
|
27
9
|
* initSegmentUri: string,
|
|
@@ -578,7 +560,7 @@ shaka.test.TestScheme.DATA = {
|
|
|
578
560
|
duration: 30,
|
|
579
561
|
},
|
|
580
562
|
|
|
581
|
-
// https://github.com/
|
|
563
|
+
// https://github.com/shaka-project/shaka-player/issues/2553
|
|
582
564
|
'forced_subs_simulation': {
|
|
583
565
|
audio: sintelAudioSegment,
|
|
584
566
|
text: vttSegment,
|
|
@@ -4,15 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
goog.provide('shaka.test.UiUtils');
|
|
9
|
-
|
|
10
|
-
goog.require('shaka.Player');
|
|
11
|
-
goog.require('shaka.test.Waiter');
|
|
12
|
-
goog.require('shaka.ui.Overlay');
|
|
13
|
-
goog.require('shaka.util.EventManager');
|
|
14
|
-
|
|
15
|
-
|
|
16
7
|
shaka.test.UiUtils = class {
|
|
17
8
|
/**
|
|
18
9
|
* @param {!HTMLElement} videoContainer
|
package/test/test/util/util.js
CHANGED
|
@@ -4,19 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.StatusPromise');
|
|
8
|
-
goog.provide('shaka.test.Util');
|
|
9
|
-
|
|
10
|
-
goog.require('goog.asserts');
|
|
11
|
-
goog.require('shaka.media.InitSegmentReference');
|
|
12
|
-
goog.require('shaka.media.SegmentReference');
|
|
13
|
-
goog.require('shaka.util.Functional');
|
|
14
|
-
goog.require('shaka.util.Iterables');
|
|
15
|
-
goog.require('shaka.util.StringUtils');
|
|
16
|
-
goog.require('shaka.util.XmlUtils');
|
|
17
|
-
goog.requireType('shaka.util.Error');
|
|
18
|
-
|
|
19
|
-
|
|
20
7
|
/**
|
|
21
8
|
* @extends {Promise}
|
|
22
9
|
*/
|
|
@@ -52,10 +39,9 @@ shaka.test.Util = class {
|
|
|
52
39
|
*/
|
|
53
40
|
static async fakeEventLoop(duration, onTick) {
|
|
54
41
|
// Run this synchronously:
|
|
55
|
-
for (
|
|
42
|
+
for (let time = 0; time < duration; time++) {
|
|
56
43
|
// We shouldn't need more than 6 rounds.
|
|
57
|
-
for (
|
|
58
|
-
shaka.util.Functional.ignored(_);
|
|
44
|
+
for (let i = 0; i < 6; i++) {
|
|
59
45
|
jasmine.clock().tick(0);
|
|
60
46
|
await Promise.resolve(); // eslint-disable-line no-await-in-loop
|
|
61
47
|
}
|
|
@@ -203,7 +189,7 @@ shaka.test.Util = class {
|
|
|
203
189
|
if (actual.childNodes.length != expected.childNodes.length) {
|
|
204
190
|
return prospectiveDiff + 'Different child node list length.';
|
|
205
191
|
}
|
|
206
|
-
for (
|
|
192
|
+
for (let i = 0; i < actual.childNodes.length; i++) {
|
|
207
193
|
const aNode = actual.childNodes[i];
|
|
208
194
|
const eNode = expected.childNodes[i];
|
|
209
195
|
const diff =
|
|
@@ -334,9 +320,9 @@ shaka.test.Util = class {
|
|
|
334
320
|
// TODO: There should be a way to alter the externs for jasmine.Spy so that
|
|
335
321
|
// this utility is not needed.
|
|
336
322
|
// Why isn't there something like ICallable in Closure?
|
|
337
|
-
// https://github.com/
|
|
323
|
+
// https://github.com/shaka-project/closure-compiler/issues/946
|
|
338
324
|
// Why isn't it enough that jasmine.Spy extends Function?
|
|
339
|
-
// https://github.com/
|
|
325
|
+
// https://github.com/shaka-project/closure-compiler/issues/1422
|
|
340
326
|
return /** @type {Function} */(spy)(...varArgs);
|
|
341
327
|
}
|
|
342
328
|
|
|
@@ -401,10 +387,10 @@ shaka.test.Util = class {
|
|
|
401
387
|
* within the bounds of the viewport.
|
|
402
388
|
* @param {string} name An identifier for the screenshot. Use alphanumeric
|
|
403
389
|
* plus dash and underscore only.
|
|
404
|
-
* @param {number}
|
|
390
|
+
* @param {number} minSimilarity A minimum similarity score between 0 and 1.
|
|
405
391
|
* @return {!Promise}
|
|
406
392
|
*/
|
|
407
|
-
static async checkScreenshot(element, name,
|
|
393
|
+
static async checkScreenshot(element, name, minSimilarity=1) {
|
|
408
394
|
// Make sure the DOM is up-to-date and layout has settled before continuing.
|
|
409
395
|
// Without this delay, or with a shorter delay, we sometimes get missing
|
|
410
396
|
// elements in our UITextDisplayer tests on some platforms.
|
|
@@ -448,13 +434,16 @@ shaka.test.Util = class {
|
|
|
448
434
|
const buffer = await shaka.test.Util.fetch(
|
|
449
435
|
'/screenshot/diff' + parentUrlParams + paramsString);
|
|
450
436
|
const json = shaka.util.StringUtils.fromUTF8(buffer);
|
|
451
|
-
const
|
|
437
|
+
const similarity = /** @type {number} */(JSON.parse(json));
|
|
452
438
|
|
|
453
|
-
// If the
|
|
439
|
+
// If the minimum similarity is not met, you can review the new screenshot
|
|
454
440
|
// and the diff image in the screenshots folder. Look for images that end
|
|
455
|
-
// with "-new" and "-diff".
|
|
456
|
-
//
|
|
457
|
-
|
|
441
|
+
// with "-new" and "-diff". (NOTE: The diff is a pixel-wise diff for human
|
|
442
|
+
// review, and is not produced with the same structural similarity
|
|
443
|
+
// algorithm used to detect changes in the test.) If cropping doesn't work
|
|
444
|
+
// right, you can view the full-page screenshot in the image that ends with
|
|
445
|
+
// "-full".
|
|
446
|
+
expect(similarity).withContext(name).not.toBeLessThan(minSimilarity);
|
|
458
447
|
}
|
|
459
448
|
};
|
|
460
449
|
|