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
package/test/ui/ad_ui_unit.js
CHANGED
|
@@ -4,17 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.Player');
|
|
8
|
-
goog.require('shaka.ads.AdManager');
|
|
9
|
-
goog.require('shaka.test.FakeAd');
|
|
10
|
-
goog.require('shaka.test.FakeAdManager');
|
|
11
|
-
goog.require('shaka.test.UiUtils');
|
|
12
|
-
goog.require('shaka.test.Util');
|
|
13
|
-
goog.require('shaka.test.Waiter');
|
|
14
|
-
goog.require('shaka.ui.Locales');
|
|
15
|
-
goog.require('shaka.util.EventManager');
|
|
16
|
-
goog.requireType('shaka.ui.Localization');
|
|
17
|
-
|
|
18
7
|
describe('Ad UI', () => {
|
|
19
8
|
const UiUtils = shaka.test.UiUtils;
|
|
20
9
|
/** @type {!HTMLLinkElement} */
|
|
@@ -4,17 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.Player');
|
|
8
|
-
goog.require('shaka.test.FakeVideo');
|
|
9
|
-
goog.require('shaka.test.UiUtils');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.test.Waiter');
|
|
12
|
-
goog.require('shaka.text.Cue');
|
|
13
|
-
goog.require('shaka.text.SimpleTextDisplayer');
|
|
14
|
-
goog.require('shaka.text.UITextDisplayer');
|
|
15
|
-
goog.require('shaka.ui.Overlay');
|
|
16
|
-
goog.require('shaka.util.EventManager');
|
|
17
|
-
|
|
18
7
|
// TODO: Move this suite to the text/ folder where it belongs
|
|
19
8
|
const supportsScreenshots = () => shaka.test.Util.supportsScreenshots();
|
|
20
9
|
filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
|
|
@@ -34,11 +23,8 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
|
|
|
34
23
|
*/
|
|
35
24
|
let beforeScreenshot;
|
|
36
25
|
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
// to have this change tolerance in our tests. So far, all past bugs in our
|
|
40
|
-
// implementation that we have tests for would exceed this threshold by a lot.
|
|
41
|
-
const threshold = 160; // px
|
|
26
|
+
// A minimum similarity score for screenshots, between 0 and 1.
|
|
27
|
+
const minSimilarity = 0.95;
|
|
42
28
|
|
|
43
29
|
const originalCast = window.chrome && window.chrome.cast;
|
|
44
30
|
|
|
@@ -196,6 +182,7 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
|
|
|
196
182
|
|
|
197
183
|
// The video must be played a little now, after the cues were appended,
|
|
198
184
|
// but before the screenshot.
|
|
185
|
+
video.playbackRate = 1;
|
|
199
186
|
video.play();
|
|
200
187
|
await waiter.failOnTimeout(false).timeoutAfter(5)
|
|
201
188
|
.waitForMovement(video);
|
|
@@ -203,10 +190,13 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
|
|
|
203
190
|
|
|
204
191
|
// Seek to a time when cues should be showing.
|
|
205
192
|
video.currentTime = time;
|
|
193
|
+
// Get into a playing state, but without movement.
|
|
194
|
+
video.playbackRate = 0;
|
|
195
|
+
video.play();
|
|
206
196
|
|
|
207
197
|
// Add a short delay to ensure that the system has caught up and that
|
|
208
198
|
// native text displayers have been updated by the browser.
|
|
209
|
-
await Util.
|
|
199
|
+
await Util.delay(0.1);
|
|
210
200
|
};
|
|
211
201
|
});
|
|
212
202
|
|
|
@@ -415,7 +405,7 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
|
|
|
415
405
|
await checkScreenshot(prefix, 'flat-cue-bg');
|
|
416
406
|
});
|
|
417
407
|
|
|
418
|
-
// https://github.com/
|
|
408
|
+
// https://github.com/shaka-project/shaka-player/issues/2761
|
|
419
409
|
it('deeply-nested cues', async () => {
|
|
420
410
|
const makeCue = (text, fg = '', bg = '', nestedCues = []) => {
|
|
421
411
|
const cue = new shaka.text.Cue(0, 1, text);
|
|
@@ -475,6 +465,6 @@ filterDescribe('TextDisplayer layout', supportsScreenshots, () => {
|
|
|
475
465
|
return Util.checkScreenshot(
|
|
476
466
|
/* element= */ videoContainer,
|
|
477
467
|
prefix + '-' + baseName,
|
|
478
|
-
|
|
468
|
+
minSimilarity);
|
|
479
469
|
}
|
|
480
470
|
});
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.test.UiUtils');
|
|
9
|
-
goog.require('shaka.test.Waiter');
|
|
10
|
-
goog.require('shaka.util.EventManager');
|
|
11
|
-
goog.requireType('shaka.ui.Overlay');
|
|
12
|
-
|
|
13
7
|
describe('UI Customization', () => {
|
|
14
8
|
const UiUtils = shaka.test.UiUtils;
|
|
15
9
|
/** @type {!HTMLLinkElement} */
|
|
@@ -4,22 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('mozilla.LanguageMapping');
|
|
9
|
-
goog.require('shaka.test.Loader');
|
|
10
|
-
goog.require('shaka.test.TestScheme');
|
|
11
|
-
goog.require('shaka.test.UiUtils');
|
|
12
|
-
goog.require('shaka.test.Util');
|
|
13
|
-
goog.require('shaka.test.Waiter');
|
|
14
|
-
goog.require('shaka.ui.Element');
|
|
15
|
-
goog.require('shaka.util.Dom');
|
|
16
|
-
goog.require('shaka.util.EventManager');
|
|
17
|
-
goog.require('shaka.util.Iterables');
|
|
18
|
-
goog.requireType('shaka.Player');
|
|
19
|
-
goog.requireType('shaka.ui.Controls');
|
|
20
|
-
goog.requireType('shaka.ui.Overlay');
|
|
21
|
-
|
|
22
|
-
|
|
23
7
|
describe('UI', () => {
|
|
24
8
|
const Util = shaka.test.Util;
|
|
25
9
|
const UiUtils = shaka.test.UiUtils;
|
package/test/ui/ui_unit.js
CHANGED
|
@@ -4,21 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.media.ManifestParser');
|
|
9
|
-
goog.require('shaka.test.FakeManifestParser');
|
|
10
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
11
|
-
goog.require('shaka.test.UiUtils');
|
|
12
|
-
goog.require('shaka.test.Util');
|
|
13
|
-
goog.require('shaka.ui.OverflowMenu');
|
|
14
|
-
goog.require('shaka.ui.ResolutionSelection');
|
|
15
|
-
goog.require('shaka.util.Functional');
|
|
16
|
-
goog.require('shaka.util.Iterables');
|
|
17
|
-
goog.require('shaka.util.Platform');
|
|
18
|
-
goog.requireType('shaka.Player');
|
|
19
|
-
goog.requireType('shaka.ui.Controls');
|
|
20
|
-
goog.requireType('shaka.ui.Overlay');
|
|
21
|
-
|
|
22
7
|
describe('UI', () => {
|
|
23
8
|
const UiUtils = shaka.test.UiUtils;
|
|
24
9
|
const Util = shaka.test.Util;
|
|
@@ -137,8 +122,7 @@ describe('UI', () => {
|
|
|
137
122
|
// Four is just a random number I (ismena) came up with to test a
|
|
138
123
|
// multi-video use case. It could be replaces with any other
|
|
139
124
|
// (reasonable) number.
|
|
140
|
-
for (
|
|
141
|
-
shaka.util.Functional.ignored(_);
|
|
125
|
+
for (let i = 0; i < 4; i++) {
|
|
142
126
|
const video = /** @type {!HTMLVideoElement} */
|
|
143
127
|
(document.createElement('video'));
|
|
144
128
|
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.Util');
|
|
8
|
-
goog.require('shaka.util.AbortableOperation');
|
|
9
|
-
goog.require('shaka.util.Error');
|
|
10
|
-
goog.require('shaka.util.PublicPromise');
|
|
11
|
-
|
|
12
7
|
describe('AbortableOperation', () => {
|
|
13
8
|
const Util = shaka.test.Util;
|
|
14
9
|
|
|
@@ -392,10 +387,10 @@ describe('AbortableOperation', () => {
|
|
|
392
387
|
expect(value).toBe(500);
|
|
393
388
|
}).finally((ok) => {
|
|
394
389
|
expect(ok).toBe(true);
|
|
395
|
-
// The bug https://github.com/
|
|
396
|
-
// expectation fail because some stages were skipped.
|
|
397
|
-
// check, the test would pass, even though the bug shows
|
|
398
|
-
// basic functionality of 'chain'.
|
|
390
|
+
// The bug https://github.com/shaka-project/shaka-player/issues/1260
|
|
391
|
+
// makes this expectation fail because some stages were skipped.
|
|
392
|
+
// Without this check, the test would pass, even though the bug shows
|
|
393
|
+
// up first in the basic functionality of 'chain'.
|
|
399
394
|
expect(values).toEqual([100, 200, 300, 400, 500]);
|
|
400
395
|
});
|
|
401
396
|
await op.promise;
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.Util');
|
|
8
|
-
goog.require('shaka.util.EbmlParser');
|
|
9
|
-
goog.require('shaka.util.Error');
|
|
10
|
-
|
|
11
7
|
describe('EbmlParser', /** @suppress {accessControls} */ () => {
|
|
12
8
|
const Util = shaka.test.Util;
|
|
13
9
|
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.log');
|
|
8
|
-
goog.require('shaka.test.Util');
|
|
9
|
-
goog.require('shaka.util.FakeEvent');
|
|
10
|
-
goog.require('shaka.util.FakeEventTarget');
|
|
11
|
-
|
|
12
7
|
describe('FakeEventTarget', () => {
|
|
13
8
|
const Util = shaka.test.Util;
|
|
14
9
|
const originalLogError = shaka.log.error;
|
|
@@ -73,7 +73,7 @@ describe('Functional', () => {
|
|
|
73
73
|
expect(obj.val).toBe(1);
|
|
74
74
|
});
|
|
75
75
|
|
|
76
|
-
// Regression test for https://github.com/
|
|
76
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/2958
|
|
77
77
|
it('supports ES6 classes', () => {
|
|
78
78
|
const obj = Functional.callFactory(Es6Class);
|
|
79
79
|
expect(obj.val).toBe(1);
|
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.util.Iterables');
|
|
8
|
-
|
|
9
7
|
describe('Iterables', () => {
|
|
10
8
|
const Iterables = shaka.util.Iterables;
|
|
11
9
|
|
|
@@ -67,66 +65,4 @@ describe('Iterables', () => {
|
|
|
67
65
|
expect(Iterables.filter(input, (x) => x < 0)).toEqual([]);
|
|
68
66
|
});
|
|
69
67
|
});
|
|
70
|
-
|
|
71
|
-
describe('enumerate', () => {
|
|
72
|
-
function enumerate(it) {
|
|
73
|
-
return Array.from(Iterables.enumerate(it));
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
it('works with no items', () => {
|
|
77
|
-
expect(enumerate([])).toEqual([]);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('works with one item', () => {
|
|
81
|
-
expect(enumerate([999]))
|
|
82
|
-
.toEqual([{i: 0, item: 999, prev: undefined, next: undefined}]);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it('works with special values', () => {
|
|
86
|
-
expect(enumerate([[]]))
|
|
87
|
-
.toEqual([{i: 0, item: [], prev: undefined, next: undefined}]);
|
|
88
|
-
expect(enumerate([0]))
|
|
89
|
-
.toEqual([{i: 0, item: 0, prev: undefined, next: undefined}]);
|
|
90
|
-
expect(enumerate([null]))
|
|
91
|
-
.toEqual([{i: 0, item: null, prev: undefined, next: undefined}]);
|
|
92
|
-
expect(enumerate([undefined]))
|
|
93
|
-
.toEqual([{i: 0, item: undefined, prev: undefined, next: undefined}]);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it('works with two items', () => {
|
|
97
|
-
expect(enumerate([888, 999]))
|
|
98
|
-
.toEqual([
|
|
99
|
-
{i: 0, item: 888, prev: undefined, next: 999},
|
|
100
|
-
{i: 1, item: 999, prev: 888, next: undefined},
|
|
101
|
-
]);
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it('works with three items', () => {
|
|
105
|
-
expect(enumerate([777, 888, 999]))
|
|
106
|
-
.toEqual([
|
|
107
|
-
{i: 0, item: 777, prev: undefined, next: 888},
|
|
108
|
-
{i: 1, item: 888, prev: 777, next: 999},
|
|
109
|
-
{i: 2, item: 999, prev: 888, next: undefined},
|
|
110
|
-
]);
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
it('keeps references', () => {
|
|
114
|
-
const expected = [
|
|
115
|
-
{a: 'x'},
|
|
116
|
-
{b: 'y'},
|
|
117
|
-
{c: 'z'},
|
|
118
|
-
];
|
|
119
|
-
const actual = enumerate(expected);
|
|
120
|
-
|
|
121
|
-
expect(actual[0].item).toBe(expected[0]);
|
|
122
|
-
expect(actual[0].next).toBe(expected[1]);
|
|
123
|
-
|
|
124
|
-
expect(actual[1].prev).toBe(expected[0]);
|
|
125
|
-
expect(actual[1].item).toBe(expected[1]);
|
|
126
|
-
expect(actual[1].next).toBe(expected[2]);
|
|
127
|
-
|
|
128
|
-
expect(actual[2].prev).toBe(expected[1]);
|
|
129
|
-
expect(actual[2].item).toBe(expected[2]);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
68
|
});
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.test.Util');
|
|
9
|
-
goog.require('shaka.util.Mp4BoxParsers');
|
|
10
|
-
goog.require('shaka.util.Mp4Parser');
|
|
11
|
-
|
|
12
7
|
describe('Mp4BoxParsers', () => {
|
|
13
8
|
const videoInitSegmentUri = '/base/test/test/assets/sintel-video-init.mp4';
|
|
14
9
|
const videoSegmentUri = '/base/test/test/assets/sintel-video-segment.mp4';
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
8
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
9
|
-
goog.require('shaka.util.PeriodCombiner');
|
|
10
|
-
|
|
11
7
|
describe('PeriodCombiner', () => {
|
|
12
8
|
// These test cases don't really read well as "it" statements. Phrasing them
|
|
13
9
|
// that way would make the names very long, so here we break with that
|
|
@@ -477,7 +473,7 @@ describe('PeriodCombiner', () => {
|
|
|
477
473
|
a3.originalId = 'a3';
|
|
478
474
|
a3.bandwidth = 97065;
|
|
479
475
|
a3.roles = ['role1', 'role2'];
|
|
480
|
-
|
|
476
|
+
a3.codecs = 'mp4a.40.2';
|
|
481
477
|
|
|
482
478
|
// a4 has a different label from a3, and should not
|
|
483
479
|
// be filtered out.
|
|
@@ -500,14 +496,24 @@ describe('PeriodCombiner', () => {
|
|
|
500
496
|
const t1 = makeTextStream('en');
|
|
501
497
|
t1.originalId = 't1';
|
|
502
498
|
t1.roles = ['role1'];
|
|
499
|
+
t1.bandwidth = 1158;
|
|
503
500
|
|
|
504
501
|
const t2 = makeTextStream('en');
|
|
505
502
|
t2.originalId = 't2';
|
|
506
503
|
t2.roles = ['role1', 'role2'];
|
|
504
|
+
t2.bandwidth = 1172;
|
|
507
505
|
|
|
508
506
|
const t3 = makeTextStream('en');
|
|
509
507
|
t3.originalId = 't3';
|
|
510
508
|
t3.roles = ['role1'];
|
|
509
|
+
t3.bandwidth = 1158;
|
|
510
|
+
|
|
511
|
+
// t4 has a different bandwidth from t3, and should not
|
|
512
|
+
// be filtered out.
|
|
513
|
+
const t4 = makeTextStream('en');
|
|
514
|
+
t4.originalId = 't4';
|
|
515
|
+
t4.roles = ['role1'];
|
|
516
|
+
t4.bandwidth = 1186;
|
|
511
517
|
|
|
512
518
|
// i1 and i3 are duplicates.
|
|
513
519
|
const i1 = makeImageStream(240);
|
|
@@ -539,6 +545,7 @@ describe('PeriodCombiner', () => {
|
|
|
539
545
|
t1,
|
|
540
546
|
t2,
|
|
541
547
|
t3,
|
|
548
|
+
t4,
|
|
542
549
|
],
|
|
543
550
|
imageStreams: [
|
|
544
551
|
i1,
|
|
@@ -565,7 +572,7 @@ describe('PeriodCombiner', () => {
|
|
|
565
572
|
}
|
|
566
573
|
|
|
567
574
|
const textStreams = combiner.getTextStreams();
|
|
568
|
-
expect(textStreams.length).toBe(
|
|
575
|
+
expect(textStreams.length).toBe(3);
|
|
569
576
|
|
|
570
577
|
// t3 should've been filtered out
|
|
571
578
|
const textIds = textStreams.map((t) => t.originalId);
|
|
@@ -1059,7 +1066,7 @@ describe('PeriodCombiner', () => {
|
|
|
1059
1066
|
it('The number of variants stays stable after many periods ' +
|
|
1060
1067
|
'when going between similar content and varying ads', async () => {
|
|
1061
1068
|
// This test is based on the content from
|
|
1062
|
-
// https://github.com/
|
|
1069
|
+
// https://github.com/shaka-project/shaka-player/issues/2716
|
|
1063
1070
|
// that used to cause our period flattening logic to keep
|
|
1064
1071
|
// creating new variants for every new period added.
|
|
1065
1072
|
// It's ok to create a few additional varinats/streams,
|
package/test/util/pssh_unit.js
CHANGED
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.Util');
|
|
8
|
-
goog.require('shaka.util.Error');
|
|
9
|
-
goog.require('shaka.util.Pssh');
|
|
10
|
-
goog.require('shaka.util.Uint8ArrayUtils');
|
|
11
|
-
|
|
12
7
|
describe('Pssh', () => {
|
|
13
8
|
const Uint8ArrayUtils = shaka.util.Uint8ArrayUtils;
|
|
14
9
|
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.FakeDrmEngine');
|
|
8
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
9
|
-
goog.require('shaka.test.Util');
|
|
10
|
-
goog.require('shaka.util.StreamUtils');
|
|
11
|
-
|
|
12
7
|
describe('StreamUtils', () => {
|
|
13
8
|
const StreamUtils = shaka.util.StreamUtils;
|
|
14
9
|
|
|
@@ -184,7 +179,7 @@ describe('StreamUtils', () => {
|
|
|
184
179
|
});
|
|
185
180
|
|
|
186
181
|
it('chooses only one role, even if none is preferred', () => {
|
|
187
|
-
// Regression test for https://github.com/
|
|
182
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/949
|
|
188
183
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
189
184
|
manifest.addTextStream(0, (stream) => {
|
|
190
185
|
stream.language = 'en';
|
|
@@ -223,7 +218,7 @@ describe('StreamUtils', () => {
|
|
|
223
218
|
});
|
|
224
219
|
|
|
225
220
|
it('chooses only one role, even if all are primary', () => {
|
|
226
|
-
// Regression test for https://github.com/
|
|
221
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/949
|
|
227
222
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
228
223
|
manifest.addTextStream(0, (stream) => {
|
|
229
224
|
stream.language = 'en';
|
|
@@ -269,7 +264,7 @@ describe('StreamUtils', () => {
|
|
|
269
264
|
});
|
|
270
265
|
|
|
271
266
|
it('chooses only one language, even if all are primary', () => {
|
|
272
|
-
// Regression test for https://github.com/
|
|
267
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/918
|
|
273
268
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
274
269
|
manifest.addTextStream(0, (stream) => {
|
|
275
270
|
stream.language = 'en';
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.test.Util');
|
|
8
|
-
goog.require('shaka.util.BufferUtils');
|
|
9
|
-
goog.require('shaka.util.Error');
|
|
10
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
11
|
-
goog.require('shaka.util.StringUtils');
|
|
12
|
-
|
|
13
7
|
describe('StringUtils', () => {
|
|
14
8
|
const StringUtils = shaka.util.StringUtils;
|
|
15
9
|
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.util.XmlUtils');
|
|
9
|
-
|
|
10
|
-
|
|
11
7
|
describe('XmlUtils', () => {
|
|
12
8
|
// A number that cannot be represented as a Javascript number.
|
|
13
9
|
const HUGE_NUMBER_STRING = new Array(500).join('7');
|
package/ui/controls.js
CHANGED
package/ui/less/ad_controls.less
CHANGED
|
@@ -78,11 +78,11 @@
|
|
|
78
78
|
|
|
79
79
|
/* This math is determining how far the button is from the right edge.
|
|
80
80
|
* Ad panel's parent is centered and @bottom-controls-width wide, so
|
|
81
|
-
* 100 - @bottom-controls-width = margins from both sides of the container.
|
|
81
|
+
* 100% - @bottom-controls-width = margins from both sides of the container.
|
|
82
82
|
* That divided by 2 is margin on one side, so we take that, and move the
|
|
83
83
|
* button from its normal position to the right by that percentage.
|
|
84
84
|
*/
|
|
85
|
-
right: (100 - @bottom-controls-width) / 2 * -1;
|
|
85
|
+
right: calc((100% - @bottom-controls-width) / 2 * -1);
|
|
86
86
|
display: flex;
|
|
87
87
|
flex-direction: row;
|
|
88
88
|
margin: 0;
|
|
@@ -90,18 +90,18 @@
|
|
|
90
90
|
|
|
91
91
|
.shaka-skip-ad-button {
|
|
92
92
|
padding: 5px 15px;
|
|
93
|
-
background: rgba(0
|
|
93
|
+
background: rgba(0 0 0 / 70%);
|
|
94
94
|
border: none;
|
|
95
95
|
|
|
96
96
|
&:disabled {
|
|
97
|
-
background: rgba(0
|
|
97
|
+
background: rgba(0 0 0 / 30%);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
cursor: pointer;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.shaka-skip-ad-counter {
|
|
104
|
-
padding: 5px
|
|
105
|
-
background: rgba(0
|
|
104
|
+
padding: 5px;
|
|
105
|
+
background: rgba(0 0 0 / 70%);
|
|
106
106
|
margin: 0;
|
|
107
107
|
}
|