shaka-player 4.6.3 → 4.7.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/README.md +1 -0
- package/dist/controls.css +1 -1
- package/dist/controls.css.map +1 -1
- package/dist/deps.js +13 -9
- package/dist/locales.js +33 -33
- package/dist/shaka-player.compiled.d.ts +47 -4
- package/dist/shaka-player.compiled.debug.d.ts +47 -4
- package/dist/shaka-player.compiled.debug.externs.js +50 -2
- package/dist/shaka-player.compiled.debug.js +408 -376
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +50 -2
- package/dist/shaka-player.compiled.js +1134 -1118
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +69 -5
- package/dist/shaka-player.ui.debug.d.ts +69 -5
- package/dist/shaka-player.ui.debug.externs.js +82 -2
- package/dist/shaka-player.ui.debug.js +457 -420
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +82 -2
- package/dist/shaka-player.ui.js +1305 -1289
- package/dist/shaka-player.ui.map +4 -4
- package/externs/mediasession.js +7 -0
- package/externs/shaka/abr_manager.js +8 -0
- package/externs/shaka/manifest.js +3 -3
- package/externs/shaka/player.js +59 -4
- package/lib/abr/simple_abr_manager.js +41 -15
- package/lib/ads/client_side_ad_manager.js +4 -0
- package/lib/ads/media_tailor_ad_manager.js +5 -0
- package/lib/ads/server_side_ad_manager.js +4 -0
- package/lib/cea/cea708_service.js +1 -1
- package/lib/cea/cea708_window.js +95 -7
- package/lib/dash/dash_parser.js +55 -11
- package/lib/hls/hls_parser.js +17 -5
- package/lib/media/adaptation_set_criteria.js +76 -10
- package/lib/media/drm_engine.js +0 -3
- package/lib/media/media_source_engine.js +42 -18
- package/lib/media/segment_reference.js +12 -0
- package/lib/media/streaming_engine.js +58 -5
- package/lib/media/video_wrapper.js +4 -3
- package/lib/player.js +95 -11
- package/lib/text/simple_text_displayer.js +8 -7
- package/lib/text/text_utils.js +39 -13
- package/lib/text/ui_text_displayer.js +20 -11
- package/lib/text/web_vtt_generator.js +1 -1
- package/lib/util/cmsd_manager.js +269 -0
- package/lib/util/content_steering_manager.js +5 -1
- package/lib/util/mime_utils.js +6 -2
- package/lib/util/periods.js +108 -39
- package/lib/util/player_configuration.js +19 -5
- package/lib/util/stream_utils.js +82 -13
- package/package.json +1 -1
- package/ui/audio_language_selection.js +3 -0
- package/ui/controls.js +60 -0
- package/ui/externs/ui.js +12 -1
- package/ui/hidden_fast_forward_button.js +32 -0
- package/ui/hidden_rewind_button.js +32 -0
- package/ui/hidden_seek_button.js +121 -0
- package/ui/less/buttons.less +50 -0
- package/ui/less/containers.less +18 -0
- package/ui/resolution_selection.js +2 -0
- package/ui/ui.js +2 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -75
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -26
- package/.github/ISSUE_TEMPLATE/question.md +0 -26
- package/.github/config.yml +0 -1
- package/.github/workflows/appspot.yaml +0 -39
- package/.github/workflows/build-and-test.yaml +0 -222
- package/.github/workflows/compute-incremental-coverage.py +0 -265
- package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +0 -56
- package/.github/workflows/custom-actions/set-commit-status/action.yaml +0 -37
- package/.github/workflows/deflake.yaml +0 -31
- package/.github/workflows/demo-version-index.yaml +0 -43
- package/.github/workflows/nightly-demo.yaml +0 -42
- package/.github/workflows/release-please.yaml +0 -193
- package/.github/workflows/report-incremental-coverage.yaml +0 -39
- package/.github/workflows/safari-homedir-launcher.sh +0 -18
- package/.github/workflows/selenium-lab-tests.yaml +0 -370
- package/.github/workflows/shaka-bot-commands/command-help.sh +0 -27
- package/.github/workflows/shaka-bot-commands/command-test.sh +0 -56
- package/.github/workflows/shaka-bot-commands/lib.sh +0 -83
- package/.github/workflows/shaka-bot-commands/main.sh +0 -51
- package/.github/workflows/sync-labels.yaml +0 -33
- package/.github/workflows/talk-to-shaka-bot.yaml +0 -29
- package/.github/workflows/update-issues.yaml +0 -31
- package/.github/workflows/update-screenshots.yaml +0 -142
- package/.github/workflows/validate-pr-title.yaml +0 -27
- package/CHANGELOG.md +0 -5764
- package/CODE_OF_CONDUCT.md +0 -93
- package/CONTRIBUTING.md +0 -76
- package/demo/TengwarTelcontar.woff2 +0 -0
- package/demo/app_logo_144.png +0 -0
- package/demo/app_logo_192.png +0 -0
- package/demo/app_logo_256.png +0 -0
- package/demo/app_logo_384.png +0 -0
- package/demo/app_logo_512.png +0 -0
- package/demo/app_manifest.json +0 -29
- package/demo/asset_card.js +0 -410
- package/demo/autoTemplate.txt +0 -61
- package/demo/cast_receiver/idle1.jpg +0 -0
- package/demo/cast_receiver/idle2.jpg +0 -0
- package/demo/cast_receiver/idle3.jpg +0 -0
- package/demo/cast_receiver/index.html +0 -75
- package/demo/cast_receiver/receiver_app.css +0 -111
- package/demo/cast_receiver/receiver_app.js +0 -158
- package/demo/close_button.js +0 -60
- package/demo/common/asset.js +0 -511
- package/demo/common/assets.js +0 -1635
- package/demo/config.js +0 -859
- package/demo/custom.js +0 -907
- package/demo/customWarning.txt +0 -8
- package/demo/demo.less +0 -591
- package/demo/demo_uncompiled.js +0 -11
- package/demo/demo_utils.js +0 -113
- package/demo/favicon.ico +0 -0
- package/demo/front.js +0 -156
- package/demo/icons/README.md +0 -4
- package/demo/icons/baseline-audiotrack-24px.svg +0 -1
- package/demo/icons/baseline-closed_caption-24px.svg +0 -1
- package/demo/icons/baseline-fast_forward-24px.svg +0 -1
- package/demo/icons/baseline-language-24px.svg +0 -1
- package/demo/icons/baseline-live_tv-24px.svg +0 -1
- package/demo/icons/baseline-subtitles-24px.svg +0 -1
- package/demo/icons/baseline-surround_sound-24px.svg +0 -1
- package/demo/icons/custom_ad.svg +0 -1
- package/demo/icons/custom_box_with_text.svg +0 -1
- package/demo/icons/custom_clear_key.svg +0 -1
- package/demo/icons/custom_high_definition.svg +0 -1
- package/demo/icons/custom_playready.svg +0 -1
- package/demo/icons/custom_ultra_high_definition.svg +0 -1
- package/demo/icons/custom_widevine.svg +0 -1
- package/demo/index.html +0 -173
- package/demo/input.js +0 -270
- package/demo/input_container.js +0 -218
- package/demo/load.js +0 -156
- package/demo/main.js +0 -1854
- package/demo/search.js +0 -452
- package/demo/service_worker.js +0 -355
- package/demo/shaka_logo_trans.png +0 -0
- package/demo/tooltip.js +0 -29
- package/demo/visualizer.js +0 -335
- package/demo/visualizer_button.js +0 -84
- package/dist/demo.compiled.debug.js +0 -340
- package/dist/demo.compiled.debug.map +0 -8
- package/dist/demo.compiled.js +0 -340
- package/dist/demo.compiled.map +0 -8
- package/dist/demo.css +0 -6
- package/dist/demo.css.map +0 -1
- package/dist/receiver.compiled.debug.js +0 -187
- package/dist/receiver.compiled.debug.map +0 -8
- package/dist/receiver.compiled.js +0 -187
- package/dist/receiver.compiled.map +0 -8
- package/docs/announcement-list-join-group.png +0 -0
- package/docs/api-mainpage.md +0 -28
- package/docs/design/REDESIGN.md +0 -283
- package/docs/design/architecture.md +0 -13
- package/docs/design/bg-fetch-after.gv +0 -29
- package/docs/design/bg-fetch-after.gv.png +0 -0
- package/docs/design/bg-fetch-before.gv +0 -18
- package/docs/design/bg-fetch-before.gv.png +0 -0
- package/docs/design/bg-fetch.md +0 -134
- package/docs/design/cast.gv +0 -35
- package/docs/design/cast.gv.png +0 -0
- package/docs/design/chromecast.md +0 -151
- package/docs/design/codec_preferences.md +0 -158
- package/docs/design/dash-audio-channels.md +0 -123
- package/docs/design/dash-manifests.md +0 -248
- package/docs/design/dash-timeline.svg +0 -4
- package/docs/design/dataflow.gv +0 -66
- package/docs/design/dataflow.gv.png +0 -0
- package/docs/design/export.md +0 -70
- package/docs/design/fuzzy-locale-matching.md +0 -40
- package/docs/design/gap-jumping.md +0 -151
- package/docs/design/lcevc-architecture.png +0 -0
- package/docs/design/lcevc-demo.png +0 -0
- package/docs/design/lcevc-integration.md +0 -72
- package/docs/design/locale_compatibility.svg +0 -1
- package/docs/design/locales_tree.svg +0 -1
- package/docs/design/localization-design-principles.md +0 -158
- package/docs/design/newdemo.gv +0 -83
- package/docs/design/newdemo.gv.png +0 -0
- package/docs/design/offline.gv +0 -43
- package/docs/design/offline.gv.png +0 -0
- package/docs/design/offline.md +0 -153
- package/docs/design/ownership.gv +0 -76
- package/docs/design/ownership.gv.png +0 -0
- package/docs/design/preload.md +0 -299
- package/docs/design/preload.png +0 -0
- package/docs/design/talking-about-languages.md +0 -46
- package/docs/design/timeline.svg +0 -152
- package/docs/design/ui.md +0 -31
- package/docs/design/ui_player_relationships.svg +0 -1
- package/docs/jsdoc-plugin.js +0 -74
- package/docs/jsdoc-template/README.md +0 -1
- package/docs/jsdoc-template/publish.js +0 -879
- package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.svg +0 -1830
- package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
- package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.svg +0 -1830
- package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.svg +0 -1831
- package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
- package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.svg +0 -1831
- package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/jsdoc-template/static/scripts/linenumber.js +0 -44
- package/docs/jsdoc-template/static/scripts/show-widget.js +0 -55
- package/docs/jsdoc-template/static/styles/jsdoc-default.css +0 -438
- package/docs/jsdoc-template/tmpl/augments.tmpl +0 -10
- package/docs/jsdoc-template/tmpl/container.tmpl +0 -205
- package/docs/jsdoc-template/tmpl/details.tmpl +0 -152
- package/docs/jsdoc-template/tmpl/example.tmpl +0 -2
- package/docs/jsdoc-template/tmpl/examples.tmpl +0 -13
- package/docs/jsdoc-template/tmpl/exceptions.tmpl +0 -32
- package/docs/jsdoc-template/tmpl/layout.tmpl +0 -50
- package/docs/jsdoc-template/tmpl/mainpage.tmpl +0 -14
- package/docs/jsdoc-template/tmpl/members.tmpl +0 -47
- package/docs/jsdoc-template/tmpl/method.tmpl +0 -140
- package/docs/jsdoc-template/tmpl/modifies.tmpl +0 -14
- package/docs/jsdoc-template/tmpl/params.tmpl +0 -131
- package/docs/jsdoc-template/tmpl/properties.tmpl +0 -125
- package/docs/jsdoc-template/tmpl/returns.tmpl +0 -19
- package/docs/jsdoc-template/tmpl/source.tmpl +0 -8
- package/docs/jsdoc-template/tmpl/tutorial.tmpl +0 -21
- package/docs/jsdoc-template/tmpl/type.tmpl +0 -7
- package/docs/jsdoc.conf.json +0 -38
- package/docs/shaka-player-logo.png +0 -0
- package/docs/style.md +0 -174
- package/docs/tutorials/a11y.md +0 -64
- package/docs/tutorials/ad_monetization.md +0 -292
- package/docs/tutorials/application-level-redirects.md +0 -94
- package/docs/tutorials/architecture.md +0 -32
- package/docs/tutorials/basic-usage.md +0 -89
- package/docs/tutorials/blob-url.md +0 -15
- package/docs/tutorials/config.md +0 -148
- package/docs/tutorials/debugging.md +0 -189
- package/docs/tutorials/drm-config.md +0 -274
- package/docs/tutorials/errors.md +0 -95
- package/docs/tutorials/fairplay.md +0 -242
- package/docs/tutorials/faq.md +0 -252
- package/docs/tutorials/index.json +0 -29
- package/docs/tutorials/lcevc.md +0 -118
- package/docs/tutorials/license-server-auth.md +0 -248
- package/docs/tutorials/license-wrapping.md +0 -168
- package/docs/tutorials/manifest-parser.md +0 -365
- package/docs/tutorials/network-and-buffering-config.md +0 -119
- package/docs/tutorials/offline.md +0 -683
- package/docs/tutorials/plugins.md +0 -184
- package/docs/tutorials/selenium-grid-config.md +0 -174
- package/docs/tutorials/service-worker.md +0 -106
- package/docs/tutorials/ui-customization.md +0 -288
- package/docs/tutorials/ui.md +0 -230
- package/docs/tutorials/upgrade-manifest.md +0 -281
- package/docs/tutorials/upgrade.md +0 -104
- package/docs/tutorials/welcome.md +0 -108
- package/docs/tutorials/widevine-service-certs.md +0 -45
- package/karma.conf.js +0 -879
- package/maintained-branches.md +0 -15
- package/roadmap.md +0 -186
- package/test/abr/simple_abr_manager_unit.js +0 -398
- package/test/ads/ad_manager_unit.js +0 -260
- package/test/assumptions/uint8_array_unit.js +0 -22
- package/test/cast/cast_proxy_unit.js +0 -736
- package/test/cast/cast_receiver_integration.js +0 -488
- package/test/cast/cast_receiver_unit.js +0 -1183
- package/test/cast/cast_sender_unit.js +0 -973
- package/test/cast/cast_utils_unit.js +0 -311
- package/test/cea/cea608_memory_unit.js +0 -411
- package/test/cea/cea708_service_unit.js +0 -674
- package/test/cea/cea708_window_unit.js +0 -373
- package/test/cea/cea_decoder_unit.js +0 -615
- package/test/cea/dtvcc_packet_builder_unit.js +0 -158
- package/test/cea/dtvcc_packet_unit.js +0 -60
- package/test/cea/mp4_cea_parser_unit.js +0 -127
- package/test/codec_switching/codec_switching_integration.js +0 -182
- package/test/dash/dash_parser_content_protection_unit.js +0 -998
- package/test/dash/dash_parser_integration.js +0 -74
- package/test/dash/dash_parser_live_unit.js +0 -1542
- package/test/dash/dash_parser_manifest_unit.js +0 -3121
- package/test/dash/dash_parser_segment_base_unit.js +0 -421
- package/test/dash/dash_parser_segment_list_unit.js +0 -380
- package/test/dash/dash_parser_segment_template_unit.js +0 -910
- package/test/dash/mpd_utils_unit.js +0 -794
- package/test/demo/demo_unit.js +0 -108
- package/test/deprecate/enforcer_unit.js +0 -74
- package/test/deprecate/version_unit.js +0 -57
- package/test/hls/hls_live_unit.js +0 -1330
- package/test/hls/hls_parser_unit.js +0 -5276
- package/test/hls/manifest_text_parser_unit.js +0 -545
- package/test/media/adaptation_set_criteria_unit.js +0 -806
- package/test/media/adaptation_set_unit.js +0 -229
- package/test/media/buffering_observer_unit.js +0 -143
- package/test/media/closed_caption_parser_unit.js +0 -18
- package/test/media/content_workarounds_unit.js +0 -43
- package/test/media/drm_engine_integration.js +0 -356
- package/test/media/drm_engine_unit.js +0 -2778
- package/test/media/media_source_engine_integration.js +0 -691
- package/test/media/media_source_engine_unit.js +0 -1512
- package/test/media/mp4_segment_index_parser_unit.js +0 -80
- package/test/media/play_rate_controller_unit.js +0 -69
- package/test/media/playhead_unit.js +0 -1394
- package/test/media/presentation_timeline_unit.js +0 -477
- package/test/media/quality_observer_unit.js +0 -138
- package/test/media/region_observer_unit.js +0 -374
- package/test/media/region_timeline_unit.js +0 -139
- package/test/media/segment_index_unit.js +0 -1080
- package/test/media/segment_prefetch_unit.js +0 -243
- package/test/media/segment_reference_unit.js +0 -63
- package/test/media/stall_detector_unit.js +0 -184
- package/test/media/streaming_engine_integration.js +0 -632
- package/test/media/streaming_engine_unit.js +0 -4211
- package/test/media/time_ranges_utils_unit.js +0 -123
- package/test/media/webm_segment_index_parser_unit.js +0 -90
- package/test/mss/mss_parser_content_protection_unit.js +0 -49
- package/test/mss/mss_parser_unit.js +0 -474
- package/test/mss/mss_player_integration.js +0 -124
- package/test/net/data_uri_plugin_unit.js +0 -105
- package/test/net/http_plugin_unit.js +0 -439
- package/test/net/networking_engine_unit.js +0 -1236
- package/test/net/networking_utils_unit.js +0 -37
- package/test/offline/download_progress_estimator_unit.js +0 -90
- package/test/offline/indexeddb_storage_unit.js +0 -192
- package/test/offline/manifest_convert_unit.js +0 -622
- package/test/offline/offline_integration.js +0 -168
- package/test/offline/offline_manifest_parser_unit.js +0 -231
- package/test/offline/offline_scheme_unit.js +0 -154
- package/test/offline/offline_uri_unit.js +0 -59
- package/test/offline/storage_compatibility_unit.js +0 -344
- package/test/offline/storage_integration.js +0 -1858
- package/test/player_external.js +0 -237
- package/test/player_integration.js +0 -1371
- package/test/player_load_graph_integration.js +0 -865
- package/test/player_src_equals_external.js +0 -154
- package/test/player_src_equals_integration.js +0 -527
- package/test/player_unit.js +0 -4434
- package/test/polyfill/media_capabilities_unit.js +0 -277
- package/test/polyfill/patchedmediakeys_apple_unit.js +0 -130
- package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
- package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
- package/test/test/assets/3675/dash_0.mpd +0 -30
- package/test/test/assets/3675/dash_1.mpd +0 -30
- package/test/test/assets/3675/dash_2.mpd +0 -30
- package/test/test/assets/3675/dash_3.mpd +0 -30
- package/test/test/assets/3675/dash_4.mpd +0 -30
- package/test/test/assets/3675/dash_5.mpd +0 -26
- package/test/test/assets/3675/init-stream0.m4s +0 -0
- package/test/test/assets/audio-xhe-aac.mp4 +0 -0
- package/test/test/assets/audio.ts +0 -0
- package/test/test/assets/captions-test.ts +0 -0
- package/test/test/assets/cea-init.mp4 +0 -0
- package/test/test/assets/cea-segment.mp4 +0 -0
- package/test/test/assets/chapters.srt +0 -11
- package/test/test/assets/chapters.vtt +0 -10
- package/test/test/assets/chapters2.vtt +0 -10
- package/test/test/assets/dash-aes-128/Fragments(video=0,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=20000000,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=40000000,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=60000000,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=i,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/dash.mpd +0 -18
- package/test/test/assets/dash-aes-128/license +0 -1
- package/test/test/assets/dash-multi-codec/audio_en_2c_128k_aac.mp4 +0 -0
- package/test/test/assets/dash-multi-codec/audio_es_2c_64k_opus.webm +0 -0
- package/test/test/assets/dash-multi-codec/dash.mpd +0 -32
- package/test/test/assets/dash-multi-codec/video_144p_108k_h264.mp4 +0 -0
- package/test/test/assets/db-dump-v1.json +0 -1
- package/test/test/assets/db-dump-v2-broken.json +0 -1
- package/test/test/assets/db-dump-v2-clean.json +0 -1
- package/test/test/assets/db-dump-v3.json +0 -1
- package/test/test/assets/db-dump-v4-broken.json +0 -1
- package/test/test/assets/db-dump-v5.json +0 -1
- package/test/test/assets/empty_caption_video_init.mp4 +0 -0
- package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
- package/test/test/assets/encrypted-sintel-audio-init.mp4 +0 -0
- package/test/test/assets/encrypted-sintel-audio-segment.mp4 +0 -0
- package/test/test/assets/encrypted-sintel-video-init.mp4 +0 -0
- package/test/test/assets/encrypted-sintel-video-segment.mp4 +0 -0
- package/test/test/assets/green-pixel.mp4 +0 -0
- package/test/test/assets/green-pixel.txt +0 -15
- package/test/test/assets/h265-cea-init.mp4 +0 -0
- package/test/test/assets/h265-cea-segment.mp4 +0 -0
- package/test/test/assets/hls-raw-aac/fileSequence0.aac +0 -0
- package/test/test/assets/hls-raw-aac/fileSequence1.aac +0 -0
- package/test/test/assets/hls-raw-aac/fileSequence2.aac +0 -0
- package/test/test/assets/hls-raw-aac/fileSequence3.aac +0 -0
- package/test/test/assets/hls-raw-aac/manifest.m3u8 +0 -4
- package/test/test/assets/hls-raw-aac/stream.m4a.m3u8 +0 -14
- package/test/test/assets/hls-raw-ac3/fileSequence0.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence1.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence2.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence3.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence4.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence5.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence6.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence7.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/prog_index.m3u8 +0 -31
- package/test/test/assets/hls-raw-ec3/fileSequence0.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence1.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence2.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence3.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence4.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence5.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence6.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence7.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/prog_index.m3u8 +0 -31
- package/test/test/assets/hls-raw-mp3/chunklist_w905519204.m3u8 +0 -13
- package/test/test/assets/hls-raw-mp3/media_w905519204_0.mp3 +0 -0
- package/test/test/assets/hls-raw-mp3/media_w905519204_1.mp3 +0 -0
- package/test/test/assets/hls-raw-mp3/media_w905519204_2.mp3 +0 -0
- package/test/test/assets/hls-raw-mp3/media_w905519204_3.mp3 +0 -0
- package/test/test/assets/hls-raw-mp3/playlist.m3u8 +0 -4
- package/test/test/assets/hls-ts-aac/playlist.m3u8 +0 -23
- package/test/test/assets/hls-ts-aac/segment_0.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_1.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_2.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_3.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_4.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_5.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_6.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_7.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0000.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0001.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0002.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0003.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0004.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0005.ts +0 -0
- package/test/test/assets/hls-ts-ac3/prog_index.m3u8 +0 -19
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0000.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0001.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0002.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0003.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0004.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0005.ts +0 -0
- package/test/test/assets/hls-ts-ec3/prog_index.m3u8 +0 -19
- package/test/test/assets/hls-ts-h264/fileSequence0.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence1.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence2.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence3.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence4.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence5.ts +0 -0
- package/test/test/assets/hls-ts-h264/prog_index.m3u8 +0 -25
- package/test/test/assets/hls-ts-h265/0.ts +0 -0
- package/test/test/assets/hls-ts-h265/hevc.m3u8 +0 -6
- package/test/test/assets/hls-ts-h265/index.m3u8 +0 -7
- package/test/test/assets/hls-ts-mp3/manifest.m3u8 +0 -13
- package/test/test/assets/hls-ts-mp3/media_w239891843_0.ts +0 -0
- package/test/test/assets/hls-ts-mp3/media_w239891843_1.ts +0 -0
- package/test/test/assets/hls-ts-mp3/media_w239891843_2.ts +0 -0
- package/test/test/assets/hls-ts-mp3/media_w239891843_3.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/chunk.m3u8 +0 -17
- package/test/test/assets/hls-ts-muxed-aac-h264/n_0_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_1_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_2_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_3_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_4_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_5_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/playlist.m3u8 +0 -4
- package/test/test/assets/hls-ts-muxed-aac-h265/0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h265/1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h265/media.m3u8 +0 -9
- package/test/test/assets/hls-ts-muxed-ac3-h264/media.m3u8 +0 -24
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00000.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00001.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00002.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00003.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00004.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00005.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0000.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0001.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0002.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0003.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/prog_index.m3u8 +0 -14
- package/test/test/assets/hls-ts-muxed-mp3-h264/index.m3u8 +0 -23
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-1-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-2-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-3-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-4-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-5-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-6-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-7-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-8-v1-a1.ts +0 -0
- package/test/test/assets/id3-metadata.aac +0 -0
- package/test/test/assets/id3-metadata.ts +0 -0
- package/test/test/assets/index-segment.mp4 +0 -0
- package/test/test/assets/index-segment.webm +0 -0
- package/test/test/assets/init-segment.webm +0 -0
- package/test/test/assets/large_file.mpd +0 -4930
- package/test/test/assets/multidrm-audio-init.mp4 +0 -0
- package/test/test/assets/multidrm-audio-segment.mp4 +0 -0
- package/test/test/assets/multidrm-video-init.mp4 +0 -0
- package/test/test/assets/multidrm-video-segment.mp4 +0 -0
- package/test/test/assets/multiple-trun-init.mp4 +0 -0
- package/test/test/assets/multiple-trun-segment.mp4 +0 -0
- package/test/test/assets/sintel-audio-init.mp4 +0 -0
- package/test/test/assets/sintel-audio-segment.mp4 +0 -0
- package/test/test/assets/sintel-video-init.mp4 +0 -0
- package/test/test/assets/sintel-video-segment.mp4 +0 -0
- package/test/test/assets/small.mp4 +0 -0
- package/test/test/assets/text-clip-alt.vtt +0 -63
- package/test/test/assets/text-clip.vtt +0 -63
- package/test/test/assets/thumbnails-sprites.vtt +0 -10
- package/test/test/assets/thumbnails.vtt +0 -10
- package/test/test/assets/ttml-init.mp4 +0 -0
- package/test/test/assets/ttml-segment-multiplemdat.mp4 +0 -0
- package/test/test/assets/ttml-segment.mp4 +0 -0
- package/test/test/assets/video.ts +0 -0
- package/test/test/assets/vtt-init.mp4 +0 -0
- package/test/test/assets/vtt-segment-multi-payload.mp4 +0 -0
- package/test/test/assets/vtt-segment-no-duration.mp4 +0 -0
- package/test/test/assets/vtt-segment-settings.mp4 +0 -0
- package/test/test/assets/vtt-segment.mp4 +0 -0
- package/test/test/boot.js +0 -495
- package/test/test/externs/filters.js +0 -44
- package/test/test/externs/fontfaceonload.js +0 -29
- package/test/test/externs/jasmine.js +0 -670
- package/test/test/externs/karma.js +0 -26
- package/test/test/externs/require.js +0 -21
- package/test/test/externs/sprintf.js +0 -18
- package/test/test/namespace.js +0 -10
- package/test/test/util/canned_idb.js +0 -379
- package/test/test/util/cea_utils.js +0 -60
- package/test/test/util/dash_parser_util.js +0 -329
- package/test/test/util/fake_ad.js +0 -321
- package/test/test/util/fake_ad_manager.js +0 -122
- package/test/test/util/fake_demo_main.js +0 -144
- package/test/test/util/fake_drm_engine.js +0 -103
- package/test/test/util/fake_media_source_engine.js +0 -464
- package/test/test/util/fake_networking_engine.js +0 -381
- package/test/test/util/fake_segment_prefetch.js +0 -84
- package/test/test/util/fake_text_displayer.js +0 -60
- package/test/test/util/id3_generator.js +0 -100
- package/test/test/util/indexeddb_utils.js +0 -124
- package/test/test/util/jasmine_fetch.js +0 -382
- package/test/test/util/layout_tests.js +0 -434
- package/test/test/util/loader.js +0 -88
- package/test/test/util/manifest_generator.js +0 -705
- package/test/test/util/manifest_parser_util.js +0 -101
- package/test/test/util/mss_parser_util.js +0 -119
- package/test/test/util/offline_utils.js +0 -105
- package/test/test/util/simple_fakes.js +0 -535
- package/test/test/util/stream_generator.js +0 -676
- package/test/test/util/streaming_engine_util.js +0 -506
- package/test/test/util/test_scheme.js +0 -778
- package/test/test/util/ttml_utils.js +0 -77
- package/test/test/util/ui_utils.js +0 -183
- package/test/test/util/util.js +0 -374
- package/test/test/util/waiter.js +0 -406
- package/test/text/cue_integration.js +0 -51
- package/test/text/lrc_text_parser_unit.js +0 -98
- package/test/text/mp4_ttml_parser_unit.js +0 -171
- package/test/text/mp4_vtt_parser_unit.js +0 -195
- package/test/text/sbv_text_parser_unit.js +0 -81
- package/test/text/simple_text_displayer_unit.js +0 -468
- package/test/text/srt_text_parser_unit.js +0 -163
- package/test/text/ssa_text_parser_unit.js +0 -382
- package/test/text/text_displayer_layout_unit.js +0 -323
- package/test/text/text_engine_unit.js +0 -500
- package/test/text/text_track_integration.js +0 -186
- package/test/text/ttml_text_parser_unit.js +0 -2176
- package/test/text/ui_text_displayer_unit.js +0 -608
- package/test/text/vtt_text_parser_unit.js +0 -1363
- package/test/text/web_vtt_generator_unit.js +0 -144
- package/test/text/web_vtt_layout_integration.js +0 -524
- package/test/transmuxer/transmuxer_engine_integration.js +0 -69
- package/test/transmuxer/transmuxer_integration.js +0 -443
- package/test/ui/ad_ui_unit.js +0 -369
- package/test/ui/localization_unit.js +0 -508
- package/test/ui/ui_customization_unit.js +0 -208
- package/test/ui/ui_integration.js +0 -669
- package/test/ui/ui_unit.js +0 -902
- package/test/util/abortable_operation_unit.js +0 -624
- package/test/util/array_utils_unit.js +0 -58
- package/test/util/buffer_utils_unit.js +0 -185
- package/test/util/cmcd_manager_unit.js +0 -440
- package/test/util/content_steering_manager_unit.js +0 -427
- package/test/util/data_view_reader_unit.js +0 -254
- package/test/util/ebml_parser_unit.js +0 -297
- package/test/util/event_manager_unit.js +0 -185
- package/test/util/fake_event_target_unit.js +0 -123
- package/test/util/id3_utils_unit.js +0 -168
- package/test/util/iterables_unit.js +0 -68
- package/test/util/language_utils_unit.js +0 -240
- package/test/util/manifest_parser_utils_unit.js +0 -55
- package/test/util/mime_utils_unit.js +0 -64
- package/test/util/mp4_box_parsers_unit.js +0 -246
- package/test/util/mp4_parser_unit.js +0 -373
- package/test/util/multi_map_unit.js +0 -94
- package/test/util/object_utils_unit.js +0 -79
- package/test/util/periods_unit.js +0 -1623
- package/test/util/pssh_unit.js +0 -226
- package/test/util/state_history_unit.js +0 -101
- package/test/util/stream_utils_unit.js +0 -1068
- package/test/util/string_utils_unit.js +0 -166
- package/test/util/text_parser_unit.js +0 -165
- package/test/util/ts_parser_unit.js +0 -77
- package/test/util/xml_utils_unit.js +0 -444
|
@@ -1,434 +0,0 @@
|
|
|
1
|
-
/*! @license
|
|
2
|
-
* Shaka Player
|
|
3
|
-
* Copyright 2016 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
// These helpers have many async interface methods that only need to do async
|
|
8
|
-
// work in some implementations. Disable the normal eslint requirement that
|
|
9
|
-
// async functions always use await.
|
|
10
|
-
/* eslint-disable require-await */
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// A minimum similarity score for screenshots, between 0 and 1.
|
|
14
|
-
const minSimilarity = 0.95;
|
|
15
|
-
|
|
16
|
-
const originalCast = window.chrome && window.chrome.cast;
|
|
17
|
-
|
|
18
|
-
shaka.test.LayoutTests = class {
|
|
19
|
-
/** @param {string} prefix */
|
|
20
|
-
constructor(prefix) {
|
|
21
|
-
/** @type {string} */
|
|
22
|
-
this.prefix = prefix;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Waits for a particular font to be loaded. Useful in screenshot tests to
|
|
27
|
-
* make sure we have consistent results with regard to the web fonts we load
|
|
28
|
-
* in the UI.
|
|
29
|
-
*
|
|
30
|
-
* @param {string} name
|
|
31
|
-
* @return {!Promise}
|
|
32
|
-
*/
|
|
33
|
-
async waitForFont(name) {
|
|
34
|
-
await new Promise((resolve, reject) => {
|
|
35
|
-
// https://github.com/zachleat/fontfaceonload
|
|
36
|
-
// eslint-disable-next-line new-cap
|
|
37
|
-
FontFaceOnload(name, {
|
|
38
|
-
success: resolve,
|
|
39
|
-
error: () => {
|
|
40
|
-
reject(new Error('Timeout waiting for font ' + name + ' to load'));
|
|
41
|
-
},
|
|
42
|
-
timeout: 10 * 1000, // ms
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
// Wait one extra second to make sure the font rendering on the page has
|
|
47
|
-
// been updated. Without this, we saw some rare test flake in Firefox on
|
|
48
|
-
// Mac.
|
|
49
|
-
await shaka.test.Util.delay(1);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Checks with Karma to see if this browser can take a screenshot.
|
|
54
|
-
*
|
|
55
|
-
* Only WebDriver-connected browsers can take a screenshot, and only Karma
|
|
56
|
-
* knows if the browser is connected via WebDriver. So this must be checked
|
|
57
|
-
* in Karma via an HTTP request.
|
|
58
|
-
*
|
|
59
|
-
* @return {!Promise.<boolean>}
|
|
60
|
-
*/
|
|
61
|
-
static async supported() {
|
|
62
|
-
// We need our own ID for Karma to look up the WebDriver connection.
|
|
63
|
-
// For manually-connected browsers, this ID may not exist. In those cases,
|
|
64
|
-
// this method is expected to return false.
|
|
65
|
-
const parentUrlParams = window.parent.location.search;
|
|
66
|
-
|
|
67
|
-
const buffer = await shaka.test.Util.fetch(
|
|
68
|
-
'/screenshot/isSupported' + parentUrlParams);
|
|
69
|
-
const json = shaka.util.StringUtils.fromUTF8(buffer);
|
|
70
|
-
const ok = /** @type {boolean} */(JSON.parse(json));
|
|
71
|
-
return ok;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Asks Karma to take a screenshot for us via the WebDriver connection and
|
|
76
|
-
* compare it to the "official" screenshot for this test and platform. Sets
|
|
77
|
-
* an expectation that the new screenshot does not differ from the official
|
|
78
|
-
* screenshot more than a fixed threshold.
|
|
79
|
-
*
|
|
80
|
-
* Only works on browsers connected via WebDriver. Use supportsScreenshots()
|
|
81
|
-
* to filter screenshot-dependent tests.
|
|
82
|
-
*
|
|
83
|
-
* @param {HTMLElement} element The HTML element to screenshot. Must be
|
|
84
|
-
* within the bounds of the viewport.
|
|
85
|
-
* @param {string} name An identifier for the screenshot. Use alphanumeric
|
|
86
|
-
* plus dash and underscore only.
|
|
87
|
-
* @param {number} minSimilarity A minimum similarity score between 0 and 1.
|
|
88
|
-
* @return {!Promise}
|
|
89
|
-
*/
|
|
90
|
-
static async checkScreenshot(element, name, minSimilarity=1) {
|
|
91
|
-
// Make sure the DOM is up-to-date and layout has settled before continuing.
|
|
92
|
-
// Without this delay, or with a shorter delay, we sometimes get missing
|
|
93
|
-
// elements in our UITextDisplayer tests on some platforms.
|
|
94
|
-
await shaka.test.Util.delay(0.1);
|
|
95
|
-
|
|
96
|
-
// We need our own ID for Karma to look up the WebDriver connection.
|
|
97
|
-
// By this point, we should have passed supportsScreenshots(), so the ID
|
|
98
|
-
// should definitely be there.
|
|
99
|
-
const parentUrlParams = window.parent.location.search;
|
|
100
|
-
goog.asserts.assert(parentUrlParams.includes('id='), 'No ID in URL!');
|
|
101
|
-
|
|
102
|
-
// Tests run in an iframe. So we also need the coordinates of that iframe
|
|
103
|
-
// within the page, so that the screenshot can be consistently cropped to
|
|
104
|
-
// the element we care about.
|
|
105
|
-
const iframe = /** @type {HTMLIFrameElement} */(
|
|
106
|
-
window.parent.document.getElementById('context'));
|
|
107
|
-
const iframeRect = iframe.getBoundingClientRect();
|
|
108
|
-
const elementRect = element.getBoundingClientRect();
|
|
109
|
-
const x = iframeRect.left + elementRect.left;
|
|
110
|
-
const y = iframeRect.top + elementRect.top;
|
|
111
|
-
const width = elementRect.width;
|
|
112
|
-
const height = elementRect.height;
|
|
113
|
-
|
|
114
|
-
// Furthermore, the screenshot may not be at the scale you expect. Measure
|
|
115
|
-
// the browser window size in JavaScript and communicate that to Karma, too,
|
|
116
|
-
// so it can convert coordinates before cropping. This value, as opposed to
|
|
117
|
-
// document.body.getBoundingClientRect(), seems to most accurately reflect
|
|
118
|
-
// the size of the screenshot area.
|
|
119
|
-
const bodyWidth = window.parent.innerWidth;
|
|
120
|
-
const bodyHeight = window.parent.innerHeight;
|
|
121
|
-
|
|
122
|
-
// In addition to the id param from the top-level window, pass these
|
|
123
|
-
// parameters to the screenshot endpoint in Karma.
|
|
124
|
-
const params = {x, y, width, height, bodyWidth, bodyHeight, name};
|
|
125
|
-
|
|
126
|
-
let paramsString = '';
|
|
127
|
-
for (const k in params) {
|
|
128
|
-
paramsString += '&' + k + '=' + params[k];
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
const buffer = await shaka.test.Util.fetch(
|
|
132
|
-
'/screenshot/diff' + parentUrlParams + paramsString);
|
|
133
|
-
const json = shaka.util.StringUtils.fromUTF8(buffer);
|
|
134
|
-
const similarity = /** @type {number} */(JSON.parse(json));
|
|
135
|
-
|
|
136
|
-
// If the minimum similarity is not met, you can review the new screenshot
|
|
137
|
-
// and the diff image in the screenshots folder. Look for images that end
|
|
138
|
-
// with "-new" and "-diff". (NOTE: The diff is a pixel-wise diff for human
|
|
139
|
-
// review, and is not produced with the same structural similarity
|
|
140
|
-
// algorithm used to detect changes in the test.) If cropping doesn't work
|
|
141
|
-
// right, you can view the full-page screenshot in the image that ends with
|
|
142
|
-
// "-full".
|
|
143
|
-
expect(similarity).withContext(name).not.toBeLessThan(minSimilarity);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/** @param {!HTMLElement} element */
|
|
147
|
-
positionElementForScreenshot(element) {
|
|
148
|
-
// The element we screenshot will be 16:9 and small.
|
|
149
|
-
element.style.width = '320px';
|
|
150
|
-
element.style.height = '180px';
|
|
151
|
-
|
|
152
|
-
// The background is green so we can better see the background color of
|
|
153
|
-
// the text spans within the subtitles, and so it is easier to identify
|
|
154
|
-
// cropping issues.
|
|
155
|
-
element.style.backgroundColor = 'green';
|
|
156
|
-
|
|
157
|
-
// Make sure the element is in the top-left corner of the iframe that
|
|
158
|
-
// contains the tests.
|
|
159
|
-
element.style.top = '0';
|
|
160
|
-
element.style.left = '0';
|
|
161
|
-
element.style.position = 'fixed';
|
|
162
|
-
element.style.margin = '0';
|
|
163
|
-
element.style.padding = '0';
|
|
164
|
-
}
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
shaka.test.TextLayoutTests = class extends shaka.test.LayoutTests {
|
|
168
|
-
/** @param {string} prefix */
|
|
169
|
-
constructor(prefix) {
|
|
170
|
-
super(prefix);
|
|
171
|
-
|
|
172
|
-
/** @type {HTMLElement} */
|
|
173
|
-
this.videoContainer = null;
|
|
174
|
-
|
|
175
|
-
/** @type {shaka.extern.TextDisplayer} */
|
|
176
|
-
this.textDisplayer = null;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/** @override */
|
|
180
|
-
static async supported() {
|
|
181
|
-
const baseSupported = await super.supported();
|
|
182
|
-
if (!baseSupported) {
|
|
183
|
-
return false;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// Due to a Safari implementation bug, the browser only does the correct
|
|
187
|
-
// thing for a timing edge case on Safari 16+. Skip the tests on earlier
|
|
188
|
-
// versions.
|
|
189
|
-
const safariVersion = shaka.util.Platform.safariVersion();
|
|
190
|
-
if (safariVersion && safariVersion < 16) {
|
|
191
|
-
return false;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
// Due to updates in the rendering and/or default styles in Chrome, the
|
|
195
|
-
// screenshots for native rendering only match in Chrome 106+.
|
|
196
|
-
const chromeVersion = shaka.util.Platform.chromeVersion();
|
|
197
|
-
if (chromeVersion && chromeVersion < 106) {
|
|
198
|
-
return false;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
return true;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/** @return {!Promise} */
|
|
205
|
-
async beforeAll() {}
|
|
206
|
-
|
|
207
|
-
/** @return {!Promise} */
|
|
208
|
-
async beforeEach() {}
|
|
209
|
-
|
|
210
|
-
recreateTextDisplayer() {}
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* @param {number} time
|
|
214
|
-
* @return {!Promise}
|
|
215
|
-
*/
|
|
216
|
-
async beforeScreenshot(time) {}
|
|
217
|
-
|
|
218
|
-
/** @return {!Promise} */
|
|
219
|
-
async afterEach() {
|
|
220
|
-
await this.textDisplayer.destroy();
|
|
221
|
-
this.textDisplayer = null;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/** @return {!Promise} */
|
|
225
|
-
async afterAll() {}
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* @param {string} baseName The base name of the screenshot.
|
|
229
|
-
* @param {number=} time The time to seek to in the screenshot. Defaults to
|
|
230
|
-
* 0.1, when most of our tests will be showing cues (timed 0-1).
|
|
231
|
-
* @return {!Promise}
|
|
232
|
-
*/
|
|
233
|
-
async checkScreenshot(baseName, time=0.1) {
|
|
234
|
-
await this.beforeScreenshot(time);
|
|
235
|
-
|
|
236
|
-
return shaka.test.LayoutTests.checkScreenshot(
|
|
237
|
-
/* element= */ this.videoContainer,
|
|
238
|
-
this.prefix + '-' + baseName,
|
|
239
|
-
minSimilarity);
|
|
240
|
-
}
|
|
241
|
-
};
|
|
242
|
-
|
|
243
|
-
shaka.test.DomTextLayoutTests = class extends shaka.test.TextLayoutTests {
|
|
244
|
-
/** @param {string} prefix */
|
|
245
|
-
constructor(prefix) {
|
|
246
|
-
super(prefix);
|
|
247
|
-
|
|
248
|
-
/** @type {HTMLLinkElement} */
|
|
249
|
-
this.cssLink = null;
|
|
250
|
-
|
|
251
|
-
/** @type {shaka.test.FakeVideo} */
|
|
252
|
-
this.mockVideo = null;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
/** @override */
|
|
256
|
-
async beforeAll() {
|
|
257
|
-
// Disable cast so the UI controls don't create cast sessions.
|
|
258
|
-
if (window.chrome) {
|
|
259
|
-
window.chrome['cast'] = null;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
// Add css file
|
|
263
|
-
this.cssLink = /** @type {!HTMLLinkElement} */(
|
|
264
|
-
document.createElement('link'));
|
|
265
|
-
await shaka.test.UiUtils.setupCSS(this.cssLink);
|
|
266
|
-
|
|
267
|
-
// There's no actual video inside this container, but subtitles will be
|
|
268
|
-
// positioned within this space.
|
|
269
|
-
this.videoContainer = /** @type {!HTMLElement} */(
|
|
270
|
-
document.createElement('div'));
|
|
271
|
-
document.body.appendChild(this.videoContainer);
|
|
272
|
-
|
|
273
|
-
this.positionElementForScreenshot(this.videoContainer);
|
|
274
|
-
|
|
275
|
-
// Some of the styles in our CSS are only applied within this class. Add
|
|
276
|
-
// this explicitly, since we don't instantiate controls in all of the
|
|
277
|
-
// tests.
|
|
278
|
-
this.videoContainer.classList.add('shaka-video-container');
|
|
279
|
-
|
|
280
|
-
await this.waitForFont('Roboto');
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
/** @override */
|
|
284
|
-
async beforeEach() {
|
|
285
|
-
this.mockVideo = new shaka.test.FakeVideo();
|
|
286
|
-
|
|
287
|
-
this.recreateTextDisplayer();
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
/** @override */
|
|
291
|
-
recreateTextDisplayer() {
|
|
292
|
-
this.textDisplayer = new shaka.text.UITextDisplayer(
|
|
293
|
-
/** @type {!HTMLMediaElement} */(this.mockVideo),
|
|
294
|
-
this.videoContainer);
|
|
295
|
-
this.textDisplayer.setTextVisibility(true);
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
/** @override */
|
|
299
|
-
async beforeScreenshot(time) {
|
|
300
|
-
// Set the faked time.
|
|
301
|
-
this.mockVideo.currentTime = time;
|
|
302
|
-
|
|
303
|
-
// Trigger the display update logic to notice the time change by
|
|
304
|
-
// appending an empty array.
|
|
305
|
-
this.textDisplayer.append([]);
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
/** @override */
|
|
309
|
-
async afterEach() {
|
|
310
|
-
await super.afterEach();
|
|
311
|
-
this.mockVideo = null;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
/** @override */
|
|
315
|
-
async afterAll() {
|
|
316
|
-
document.body.removeChild(this.videoContainer);
|
|
317
|
-
this.videoContainer = null;
|
|
318
|
-
|
|
319
|
-
document.head.removeChild(this.cssLink);
|
|
320
|
-
this.cssLink = null;
|
|
321
|
-
|
|
322
|
-
if (window.chrome) {
|
|
323
|
-
window.chrome['cast'] = originalCast;
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
};
|
|
327
|
-
|
|
328
|
-
shaka.test.NativeTextLayoutTests = class extends shaka.test.TextLayoutTests {
|
|
329
|
-
/** @param {string} prefix */
|
|
330
|
-
constructor(prefix) {
|
|
331
|
-
super(prefix);
|
|
332
|
-
|
|
333
|
-
/** @type {HTMLVideoElement} */
|
|
334
|
-
this.video = null;
|
|
335
|
-
|
|
336
|
-
/** @type {shaka.util.EventManager} */
|
|
337
|
-
this.eventManager = null;
|
|
338
|
-
|
|
339
|
-
/** @type {shaka.test.Waiter} */
|
|
340
|
-
this.waiter = null;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
/** @override */
|
|
344
|
-
async beforeAll() {
|
|
345
|
-
this.video = shaka.test.UiUtils.createVideoElement();
|
|
346
|
-
|
|
347
|
-
// On some platforms, such as Chrome on Android, we may see a "cast"
|
|
348
|
-
// button overlayed if this isn't set.
|
|
349
|
-
this.video.disableRemotePlayback = true;
|
|
350
|
-
|
|
351
|
-
document.body.appendChild(this.video);
|
|
352
|
-
|
|
353
|
-
this.positionElementForScreenshot(this.video);
|
|
354
|
-
|
|
355
|
-
this.eventManager = new shaka.util.EventManager();
|
|
356
|
-
this.waiter = new shaka.test.Waiter(this.eventManager);
|
|
357
|
-
|
|
358
|
-
const canPlay = this.waiter.failOnTimeout(false).timeoutAfter(10)
|
|
359
|
-
.waitForEvent(this.video, 'canplay');
|
|
360
|
-
|
|
361
|
-
// Video content is required to show native subtitles. This is a small
|
|
362
|
-
// green frame.
|
|
363
|
-
this.video.src = '/base/test/test/assets/green-pixel.mp4';
|
|
364
|
-
await canPlay;
|
|
365
|
-
expect(this.video.duration).toBeGreaterThan(0);
|
|
366
|
-
expect(this.video.videoWidth).toBeGreaterThan(0);
|
|
367
|
-
|
|
368
|
-
// There is no separate container, so assign the video to the base class
|
|
369
|
-
// container. This is where screenshots will be taken by the base class.
|
|
370
|
-
this.videoContainer = this.video;
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
/** @override */
|
|
374
|
-
async beforeEach() {
|
|
375
|
-
this.recreateTextDisplayer();
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
/** @override */
|
|
379
|
-
recreateTextDisplayer() {
|
|
380
|
-
this.textDisplayer = new shaka.text.SimpleTextDisplayer(this.video);
|
|
381
|
-
this.textDisplayer.setTextVisibility(true);
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
/** @override */
|
|
385
|
-
async beforeScreenshot(time) {
|
|
386
|
-
// On Firefox, Safari, and legacy Edge, the video must be played a little
|
|
387
|
-
// _after_ appending cues in order to consistently show subtitles
|
|
388
|
-
// natively on the video element.
|
|
389
|
-
|
|
390
|
-
// Seek to the beginning so that we can reasonably wait for movement
|
|
391
|
-
// after playing below. If somehow the playhead ends up at the end of
|
|
392
|
-
// the video, we should seek back before we play.
|
|
393
|
-
this.video.currentTime = 0;
|
|
394
|
-
|
|
395
|
-
// The this.video must be played a little now, after the cues were appended,
|
|
396
|
-
// but before the screenshot.
|
|
397
|
-
this.video.playbackRate = 1;
|
|
398
|
-
await this.video.play();
|
|
399
|
-
await this.waiter.failOnTimeout(false).timeoutAfter(5)
|
|
400
|
-
.waitForMovement(this.video);
|
|
401
|
-
this.video.pause();
|
|
402
|
-
|
|
403
|
-
// Seek to a time when cues should be showing.
|
|
404
|
-
this.video.currentTime = time;
|
|
405
|
-
// Get into a playing state, but without movement.
|
|
406
|
-
this.video.playbackRate = 0;
|
|
407
|
-
await this.video.play();
|
|
408
|
-
|
|
409
|
-
// Add a short delay to ensure that the system has caught up and that
|
|
410
|
-
// native text displayers have been updated by the browser.
|
|
411
|
-
await shaka.test.Util.delay(0.1);
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
/** @override */
|
|
415
|
-
async afterEach() {
|
|
416
|
-
await super.afterEach();
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
/** @override */
|
|
420
|
-
async afterAll() {
|
|
421
|
-
document.body.removeChild(this.video);
|
|
422
|
-
this.video = null;
|
|
423
|
-
// The video container and the video are the same in this class.
|
|
424
|
-
this.videoContainer = null;
|
|
425
|
-
|
|
426
|
-
this.eventManager.release();
|
|
427
|
-
this.eventManager = null;
|
|
428
|
-
this.waiter = null;
|
|
429
|
-
}
|
|
430
|
-
};
|
|
431
|
-
|
|
432
|
-
// If we don't re-enable this rule by the end of the file, eslint exits with an
|
|
433
|
-
// error code.
|
|
434
|
-
/* eslint-enable require-await */
|
package/test/test/util/loader.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/*! @license
|
|
2
|
-
* Shaka Player
|
|
3
|
-
* Copyright 2016 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* A stand-in type for the "shaka" namespace. Used when loading the compiled
|
|
9
|
-
* library or when referencing it in ManifestGenerator or TestScheme.
|
|
10
|
-
*
|
|
11
|
-
* The new compiler has a "typeof" annotation for classes, but it warns of an
|
|
12
|
-
* incomplete type when used on the entire library namespace. So instead, we
|
|
13
|
-
* use this type, which maps out parts of the compiled namespace used in
|
|
14
|
-
* top-level integration tests.
|
|
15
|
-
*
|
|
16
|
-
* @typedef {{
|
|
17
|
-
* Player: typeof shaka.Player,
|
|
18
|
-
* media: {
|
|
19
|
-
* SegmentReference: typeof shaka.media.SegmentReference,
|
|
20
|
-
* InitSegmentReference: typeof shaka.media.InitSegmentReference,
|
|
21
|
-
* SegmentIndex: typeof shaka.media.SegmentIndex,
|
|
22
|
-
* PresentationTimeline: typeof shaka.media.PresentationTimeline
|
|
23
|
-
* },
|
|
24
|
-
* net: {
|
|
25
|
-
* NetworkingEngine: typeof shaka.net.NetworkingEngine
|
|
26
|
-
* },
|
|
27
|
-
* offline: {
|
|
28
|
-
* Storage: typeof shaka.offline.Storage
|
|
29
|
-
* },
|
|
30
|
-
* ui: {
|
|
31
|
-
* Overlay: typeof shaka.ui.Overlay,
|
|
32
|
-
* Controls: typeof shaka.ui.Controls,
|
|
33
|
-
* Element: typeof shaka.ui.Element
|
|
34
|
-
* },
|
|
35
|
-
* util: {
|
|
36
|
-
* StringUtils: typeof shaka.util.StringUtils
|
|
37
|
-
* }
|
|
38
|
-
* }}
|
|
39
|
-
*/
|
|
40
|
-
let shakaNamespaceType;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
shaka.test.Loader = class {
|
|
44
|
-
/**
|
|
45
|
-
* @param {boolean} loadUncompiled
|
|
46
|
-
* @return {!Promise.<shakaNamespaceType>}
|
|
47
|
-
*/
|
|
48
|
-
static async loadShaka(loadUncompiled) {
|
|
49
|
-
/** @type {!shaka.util.PublicPromise} */
|
|
50
|
-
const loaded = new shaka.util.PublicPromise();
|
|
51
|
-
/** @type {shakaNamespaceType} */
|
|
52
|
-
let compiledShaka;
|
|
53
|
-
|
|
54
|
-
if (loadUncompiled) {
|
|
55
|
-
// For debugging purposes, use the uncompiled library.
|
|
56
|
-
compiledShaka = window['shaka'];
|
|
57
|
-
loaded.resolve();
|
|
58
|
-
} else {
|
|
59
|
-
// Load the compiled library as a module.
|
|
60
|
-
// All tests in this suite will use the compiled library.
|
|
61
|
-
require(['/base/dist/shaka-player.ui.js'], (shakaModule) => {
|
|
62
|
-
try {
|
|
63
|
-
compiledShaka = shakaModule;
|
|
64
|
-
compiledShaka.net.NetworkingEngine.registerScheme(
|
|
65
|
-
'test', shaka.test.TestScheme.plugin);
|
|
66
|
-
compiledShaka.media.ManifestParser.registerParserByMime(
|
|
67
|
-
'application/x-test-manifest',
|
|
68
|
-
shaka.test.TestScheme.ManifestParser.factory);
|
|
69
|
-
|
|
70
|
-
loaded.resolve();
|
|
71
|
-
|
|
72
|
-
// We need to catch thrown exceptions here to propertly report errors
|
|
73
|
-
// in the registration process above.
|
|
74
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
75
|
-
} catch (error) {
|
|
76
|
-
loaded.reject('Failed to register with compiled player.');
|
|
77
|
-
shaka.log.error('Error registering with compiled player.', error);
|
|
78
|
-
}
|
|
79
|
-
}, (error) => {
|
|
80
|
-
loaded.reject('Failed to load compiled player.');
|
|
81
|
-
shaka.log.error('Error loading compiled player.', error);
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
await loaded;
|
|
86
|
-
return compiledShaka;
|
|
87
|
-
}
|
|
88
|
-
};
|