shaka-player 3.3.2 → 3.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.csslintrc +11 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
- package/.github/pull_request_template.md +6 -34
- package/.github/workflows/build-and-test.yaml +129 -0
- package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +56 -0
- package/.github/workflows/custom-actions/set-commit-status/action.yaml +41 -0
- package/.github/workflows/demo-version-index.yaml +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 +92 -0
- package/AUTHORS +2 -0
- package/CHANGELOG.md +1718 -1675
- 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 +3 -3
- package/build/checkversion.py +2 -2
- package/build/conformance.textproto +13 -0
- package/build/docker/Dockerfile +20 -0
- package/build/docker/docker-compose.yml +10 -0
- package/build/gendeps.py +18 -15
- package/build/shaka-lab.yaml +163 -0
- package/build/shakaBuildHelpers.py +4 -29
- package/build/test.py +94 -29
- package/build/types/core +0 -1
- 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 +232 -226
- package/dist/locales.js +30 -30
- package/dist/receiver.compiled.debug.js +43 -45
- package/dist/receiver.compiled.debug.map +4 -4
- package/dist/receiver.compiled.js +43 -45
- package/dist/receiver.compiled.map +4 -4
- package/dist/shaka-player.compiled.d.ts +247 -236
- package/dist/shaka-player.compiled.debug.d.ts +247 -236
- package/dist/shaka-player.compiled.debug.externs.js +15 -3
- package/dist/shaka-player.compiled.debug.js +284 -290
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +15 -3
- package/dist/shaka-player.compiled.js +855 -859
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +291 -280
- package/dist/shaka-player.ui.debug.d.ts +291 -280
- package/dist/shaka-player.ui.debug.externs.js +15 -3
- package/dist/shaka-player.ui.debug.js +296 -302
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +15 -3
- package/dist/shaka-player.ui.js +1005 -1009
- 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 +141 -30
- package/lib/abr/simple_abr_manager.js +12 -6
- package/lib/cast/cast_proxy.js +3 -4
- 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 +11 -14
- 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 +34 -20
- package/lib/hls/manifest_text_parser.js +3 -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 +10 -3
- 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/streaming_engine.js +6 -6
- package/lib/media/time_ranges_utils.js +1 -3
- package/lib/media/video_wrapper.js +1 -1
- package/lib/net/networking_engine.js +1 -1
- package/lib/offline/indexeddb/storage_mechanism.js +4 -2
- package/lib/offline/storage.js +96 -95
- package/lib/player.js +190 -114
- 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/config_utils.js +25 -0
- package/lib/util/ebml_parser.js +3 -3
- package/lib/util/error.js +8 -1
- package/lib/util/iterables.js +0 -46
- package/lib/util/manifest_parser_utils.js +1 -1
- package/lib/util/mime_utils.js +48 -1
- package/lib/util/mp4_box_parsers.js +1 -4
- package/lib/util/mp4_parser.js +5 -7
- package/lib/util/periods.js +15 -15
- package/lib/util/platform.js +3 -3
- package/lib/util/player_configuration.js +9 -14
- package/lib/util/pssh.js +1 -4
- package/lib/util/stream_utils.js +8 -5
- 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 +61 -36
- 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 +1 -13
- package/test/cea/cea608_memory_unit.js +0 -5
- package/test/cea/cea708_service_unit.js +0 -7
- package/test/cea/cea708_window_unit.js +0 -5
- package/test/cea/cea_decoder_unit.js +0 -6
- package/test/cea/dtvcc_packet_builder_unit.js +0 -3
- package/test/cea/dtvcc_packet_unit.js +0 -5
- package/test/cea/mp4_cea_parser_unit.js +0 -4
- package/test/dash/dash_parser_content_protection_unit.js +1 -10
- package/test/dash/dash_parser_live_unit.js +2 -15
- package/test/dash/dash_parser_manifest_unit.js +2 -40
- package/test/dash/dash_parser_segment_base_unit.js +1 -8
- package/test/dash/dash_parser_segment_list_unit.js +1 -7
- package/test/dash/dash_parser_segment_template_unit.js +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 +28 -14
- package/test/hls/hls_parser_unit.js +2 -15
- package/test/hls/manifest_text_parser_unit.js +19 -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 +1 -7
- package/test/media/media_source_engine_unit.js +5 -18
- 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 +0 -4
- package/test/media/region_observer_unit.js +1 -6
- package/test/media/region_timeline_unit.js +0 -3
- package/test/media/segment_index_unit.js +0 -6
- package/test/media/segment_reference_unit.js +0 -3
- package/test/media/stall_detector_unit.js +0 -5
- package/test/media/streaming_engine_integration.js +11 -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 +1 -7
- 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 +2 -15
- package/test/offline/storage_integration.js +1 -27
- package/test/player_external.js +9 -11
- package/test/player_integration.js +28 -38
- 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 +81 -90
- package/test/player_unit.js +150 -38
- package/test/routing/walker_unit.js +0 -8
- package/test/test/assets/large_file.mpd +1 -1
- package/test/test/boot.js +84 -22
- package/test/test/externs/filters.js +4 -0
- 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 +40 -28
- 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 +5 -19
- 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 +1 -12
- 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/mime_utils_unit.js +54 -0
- 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 +93 -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/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/seek_bar.js +2 -1
- package/.github/workflows/build_and_test.yaml +0 -73
- package/.github/workflows/release.yaml +0 -53
- package/docs/tutorials/gsoc-ideas-list.md +0 -3
- package/externs/svgelement.js +0 -18
- package/externs/webcrypto.js +0 -18
- package/lib/util/mutex.js +0 -52
|
@@ -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
|
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*! @license
|
|
2
|
+
* Shaka Player
|
|
3
|
+
* Copyright 2016 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
describe('MimeUtils', () => {
|
|
8
|
+
const getNormalizedCodec = (codecs) =>
|
|
9
|
+
shaka.util.MimeUtils.getNormalizedCodec(codecs);
|
|
10
|
+
|
|
11
|
+
it('normalizes codecs', () => {
|
|
12
|
+
expect(getNormalizedCodec('mp4a.66')).toBe('aac');
|
|
13
|
+
expect(getNormalizedCodec('mp4a.67')).toBe('aac');
|
|
14
|
+
expect(getNormalizedCodec('mp4a.68')).toBe('aac');
|
|
15
|
+
|
|
16
|
+
expect(getNormalizedCodec('mp3')).toBe('mp3');
|
|
17
|
+
expect(getNormalizedCodec('mp4a.69')).toBe('mp3');
|
|
18
|
+
expect(getNormalizedCodec('mp4a.6B')).toBe('mp3');
|
|
19
|
+
expect(getNormalizedCodec('mp4a.6b')).toBe('mp3');
|
|
20
|
+
|
|
21
|
+
expect(getNormalizedCodec('mp4a.40.2')).toBe('aac');
|
|
22
|
+
expect(getNormalizedCodec('mp4a.40.02')).toBe('aac');
|
|
23
|
+
expect(getNormalizedCodec('mp4a.40.5')).toBe('aac');
|
|
24
|
+
expect(getNormalizedCodec('mp4a.40.05')).toBe('aac');
|
|
25
|
+
expect(getNormalizedCodec('mp4a.40.29')).toBe('aac');
|
|
26
|
+
expect(getNormalizedCodec('mp4a.40.42')).toBe('aac');
|
|
27
|
+
|
|
28
|
+
expect(getNormalizedCodec('ac-3')).toBe('ac-3');
|
|
29
|
+
expect(getNormalizedCodec('mp4a.a5')).toBe('ac-3');
|
|
30
|
+
expect(getNormalizedCodec('mp4a.A5')).toBe('ac-3');
|
|
31
|
+
|
|
32
|
+
expect(getNormalizedCodec('ec-3')).toBe('ec-3');
|
|
33
|
+
expect(getNormalizedCodec('mp4a.a6')).toBe('ec-3');
|
|
34
|
+
expect(getNormalizedCodec('mp4a.A6')).toBe('ec-3');
|
|
35
|
+
|
|
36
|
+
expect(getNormalizedCodec('dtsc')).toBe('dtsc');
|
|
37
|
+
expect(getNormalizedCodec('mp4a.a9')).toBe('dtsc');
|
|
38
|
+
|
|
39
|
+
expect(getNormalizedCodec('dtsx')).toBe('dtsx');
|
|
40
|
+
expect(getNormalizedCodec('mp4a.b2')).toBe('dtsx');
|
|
41
|
+
|
|
42
|
+
expect(getNormalizedCodec('vp8')).toBe('vp8');
|
|
43
|
+
expect(getNormalizedCodec('vp8.0')).toBe('vp8');
|
|
44
|
+
|
|
45
|
+
expect(getNormalizedCodec('avc1')).toBe('avc');
|
|
46
|
+
expect(getNormalizedCodec('avc3')).toBe('avc');
|
|
47
|
+
|
|
48
|
+
expect(getNormalizedCodec('hvc1')).toBe('hevc');
|
|
49
|
+
expect(getNormalizedCodec('hev1')).toBe('hevc');
|
|
50
|
+
|
|
51
|
+
expect(getNormalizedCodec('dvh1.05')).toBe('dovi');
|
|
52
|
+
expect(getNormalizedCodec('dvhe.05')).toBe('dovi');
|
|
53
|
+
});
|
|
54
|
+
});
|
|
@@ -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);
|
|
@@ -989,6 +996,85 @@ describe('PeriodCombiner', () => {
|
|
|
989
996
|
expect(audio2.originalId).toBe('2,4');
|
|
990
997
|
});
|
|
991
998
|
|
|
999
|
+
it('Matches streams with related codecs', async () => {
|
|
1000
|
+
const stream1 = makeVideoStream(1080);
|
|
1001
|
+
stream1.originalId = '1';
|
|
1002
|
+
stream1.bandwidth = 120000;
|
|
1003
|
+
stream1.codecs = 'hvc1.1.4.L126.B0';
|
|
1004
|
+
|
|
1005
|
+
const stream2 = makeVideoStream(1080);
|
|
1006
|
+
stream2.originalId = '2';
|
|
1007
|
+
stream2.bandwidth = 120000;
|
|
1008
|
+
stream2.codecs = 'hev1.2.4.L123.B0';
|
|
1009
|
+
|
|
1010
|
+
const stream3 = makeVideoStream(1080);
|
|
1011
|
+
stream3.originalId = '3';
|
|
1012
|
+
stream3.bandwidth = 120000;
|
|
1013
|
+
stream3.codecs = 'dvhe.05.01';
|
|
1014
|
+
|
|
1015
|
+
const stream4 = makeVideoStream(1080);
|
|
1016
|
+
stream4.originalId = '4';
|
|
1017
|
+
stream4.bandwidth = 120000;
|
|
1018
|
+
stream4.codecs = 'dvh1.05.01';
|
|
1019
|
+
|
|
1020
|
+
const stream5 = makeVideoStream(1080);
|
|
1021
|
+
stream5.originalId = '5';
|
|
1022
|
+
stream5.bandwidth = 120000;
|
|
1023
|
+
stream5.codecs = 'avc1.42001f';
|
|
1024
|
+
|
|
1025
|
+
const stream6 = makeVideoStream(1080);
|
|
1026
|
+
stream6.originalId = '6';
|
|
1027
|
+
stream6.bandwidth = 120000;
|
|
1028
|
+
stream6.codecs = 'avc3.42001f';
|
|
1029
|
+
|
|
1030
|
+
const stream7 = makeVideoStream(1080);
|
|
1031
|
+
stream7.originalId = '7';
|
|
1032
|
+
stream7.bandwidth = 120000;
|
|
1033
|
+
stream7.codecs = 'vp09.00.10.08';
|
|
1034
|
+
|
|
1035
|
+
const stream8 = makeVideoStream(1080);
|
|
1036
|
+
stream8.originalId = '8';
|
|
1037
|
+
stream8.bandwidth = 120000;
|
|
1038
|
+
stream8.codecs = 'vp09.01.20.08.01';
|
|
1039
|
+
|
|
1040
|
+
/** @type {!Array.<shaka.util.PeriodCombiner.Period>} */
|
|
1041
|
+
const periods = [
|
|
1042
|
+
{
|
|
1043
|
+
id: '0',
|
|
1044
|
+
videoStreams: [
|
|
1045
|
+
stream1, stream3, stream5, stream7,
|
|
1046
|
+
],
|
|
1047
|
+
audioStreams: [],
|
|
1048
|
+
textStreams: [],
|
|
1049
|
+
imageStreams: [],
|
|
1050
|
+
},
|
|
1051
|
+
{
|
|
1052
|
+
id: '1',
|
|
1053
|
+
videoStreams: [
|
|
1054
|
+
stream2, stream4, stream6, stream8,
|
|
1055
|
+
],
|
|
1056
|
+
audioStreams: [],
|
|
1057
|
+
textStreams: [],
|
|
1058
|
+
imageStreams: [],
|
|
1059
|
+
},
|
|
1060
|
+
];
|
|
1061
|
+
|
|
1062
|
+
await combiner.combinePeriods(periods, /* isDynamic= */ true);
|
|
1063
|
+
const variants = combiner.getVariants();
|
|
1064
|
+
expect(variants.length).toBe(4);
|
|
1065
|
+
// We can use the originalId field to see what each track is composed of.
|
|
1066
|
+
const video1 = variants[0].video;
|
|
1067
|
+
expect(video1.originalId).toBe('1,2');
|
|
1068
|
+
|
|
1069
|
+
const video2 = variants[1].video;
|
|
1070
|
+
expect(video2.originalId).toBe('3,4');
|
|
1071
|
+
|
|
1072
|
+
const video3 = variants[2].video;
|
|
1073
|
+
expect(video3.originalId).toBe('5,6');
|
|
1074
|
+
|
|
1075
|
+
const video4 = variants[3].video;
|
|
1076
|
+
expect(video4.originalId).toBe('7,8');
|
|
1077
|
+
});
|
|
992
1078
|
|
|
993
1079
|
it('Matches streams with most roles in common', async () => {
|
|
994
1080
|
const makeAudioStreamWithRoles = (roles) => {
|
|
@@ -1059,7 +1145,7 @@ describe('PeriodCombiner', () => {
|
|
|
1059
1145
|
it('The number of variants stays stable after many periods ' +
|
|
1060
1146
|
'when going between similar content and varying ads', async () => {
|
|
1061
1147
|
// This test is based on the content from
|
|
1062
|
-
// https://github.com/
|
|
1148
|
+
// https://github.com/shaka-project/shaka-player/issues/2716
|
|
1063
1149
|
// that used to cause our period flattening logic to keep
|
|
1064
1150
|
// creating new variants for every new period added.
|
|
1065
1151
|
// 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/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
|
}
|
package/ui/less/buttons.less
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
*
|
|
27
27
|
* Based on tips from https://stackoverflow.com/a/12925343 */
|
|
28
28
|
box-sizing: border-box;
|
|
29
|
-
padding: @play-button-size-percentage / 2;
|
|
29
|
+
padding: calc(@play-button-size-percentage / 2);
|
|
30
30
|
width: 0;
|
|
31
31
|
height: 0;
|
|
32
32
|
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
border-radius: 50%;
|
|
39
39
|
|
|
40
40
|
/* A small drop shadow below the button. */
|
|
41
|
-
box-shadow: rgba(0
|
|
41
|
+
box-shadow: rgba(0 0 0 / 10%) 0 0 20px 0;
|
|
42
42
|
|
|
43
43
|
/* No border. */
|
|
44
44
|
border: none;
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
background-position: center center;
|
|
52
52
|
|
|
53
53
|
/* A background color behind the play arrow. */
|
|
54
|
-
background-color: rgba(255
|
|
54
|
+
background-color: rgba(255 255 255 / 90%);
|
|
55
55
|
|
|
56
56
|
.show-when-controls-shown();
|
|
57
57
|
|
|
@@ -60,11 +60,11 @@
|
|
|
60
60
|
* deployed separately from the compiled CSS.
|
|
61
61
|
* Note that these URIs should relative to ui/controls.less, not this file. */
|
|
62
62
|
&[icon="play"] {
|
|
63
|
-
background-image: data-uri(
|
|
63
|
+
background-image: data-uri("images/play_arrow.svg");
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
&[icon="pause"] {
|
|
67
|
-
background-image: data-uri(
|
|
67
|
+
background-image: data-uri("images/pause.svg");
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
*/
|
|
75
75
|
.shaka-current-time {
|
|
76
76
|
font-size: 14px;
|
|
77
|
-
color:
|
|
77
|
+
color: white;
|
|
78
78
|
cursor: pointer;
|
|
79
79
|
|
|
80
80
|
&[disabled] {
|
package/ui/less/containers.less
CHANGED
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
/* All of the top-level containers into which various visible features go. */
|
|
8
8
|
|
|
9
|
-
@transparent: rgba(0, 0, 0, 0);
|
|
10
|
-
|
|
11
9
|
/* A container for the entire video + controls combo. This is the auto-setup
|
|
12
10
|
* div which we populate. */
|
|
13
11
|
.shaka-video-container {
|
|
@@ -19,13 +17,13 @@
|
|
|
19
17
|
|
|
20
18
|
/* Set a special font for material design icons. */
|
|
21
19
|
.material-icons-round {
|
|
22
|
-
font-family:
|
|
20
|
+
font-family: "Material Icons Round";
|
|
23
21
|
font-size: 24px;
|
|
24
22
|
}
|
|
25
23
|
|
|
26
24
|
/* Set the fonts for all other content. */
|
|
27
25
|
* {
|
|
28
|
-
font-family: Roboto-Regular, Roboto, sans-serif;
|
|
26
|
+
font-family: Roboto-Regular, Roboto, sans-serif, TengwarTelcontar;
|
|
29
27
|
}
|
|
30
28
|
}
|
|
31
29
|
|
|
@@ -202,7 +200,7 @@
|
|
|
202
200
|
min-width: 300px;
|
|
203
201
|
|
|
204
202
|
color: white;
|
|
205
|
-
background-color: rgba(35
|
|
203
|
+
background-color: rgba(35 35 35 / 90%);
|
|
206
204
|
|
|
207
205
|
font-size: 14px;
|
|
208
206
|
|
|
@@ -223,12 +221,12 @@
|
|
|
223
221
|
}
|
|
224
222
|
|
|
225
223
|
span {
|
|
226
|
-
color: rgb(150
|
|
224
|
+
color: rgb(150 150 150);
|
|
227
225
|
}
|
|
228
226
|
}
|
|
229
227
|
|
|
230
228
|
.shaka-context-menu {
|
|
231
|
-
background-color: rgba(35
|
|
229
|
+
background-color: rgba(35 35 35 / 90%);
|
|
232
230
|
|
|
233
231
|
border-radius: 2px;
|
|
234
232
|
|
|
@@ -248,7 +246,7 @@
|
|
|
248
246
|
cursor: pointer;
|
|
249
247
|
|
|
250
248
|
&:hover {
|
|
251
|
-
background-color: rgba(50
|
|
249
|
+
background-color: rgba(50 50 50 / 90%);
|
|
252
250
|
}
|
|
253
251
|
}
|
|
254
252
|
|
|
@@ -277,7 +275,7 @@
|
|
|
277
275
|
.show-when-controls-shown();
|
|
278
276
|
|
|
279
277
|
/* A black gradient at the bottom, behind the controls, but only so high. */
|
|
280
|
-
background: linear-gradient(to top,
|
|
278
|
+
background: linear-gradient(to top, black 0, transparent 15%);
|
|
281
279
|
}
|
|
282
280
|
|
|
283
281
|
.shaka-text-container {
|
|
@@ -305,7 +303,7 @@
|
|
|
305
303
|
/* These are defaults which are overridden by JS or cue styles. */
|
|
306
304
|
font-size: 20px;
|
|
307
305
|
line-height: 1.4; // relative to font size.
|
|
308
|
-
color:
|
|
306
|
+
color: white;
|
|
309
307
|
|
|
310
308
|
span.shaka-text-wrapper {
|
|
311
309
|
display: inline;
|
|
@@ -339,8 +337,8 @@
|
|
|
339
337
|
|
|
340
338
|
.shaka-spinner {
|
|
341
339
|
/* This uses the same trickery as the big play button define
|
|
342
|
-
|
|
343
|
-
|
|
340
|
+
* the spinner's width and height. See .shaka-play-button
|
|
341
|
+
* for the detailed explanation. */
|
|
344
342
|
|
|
345
343
|
/* For the padding thing to work, spinner div needs to be an
|
|
346
344
|
overlay-parent and spinner svg - an overlay child. */
|
|
@@ -348,11 +346,11 @@
|
|
|
348
346
|
|
|
349
347
|
margin: 0;
|
|
350
348
|
box-sizing: border-box;
|
|
351
|
-
padding: @spinner-size-percentage / 2;
|
|
349
|
+
padding: calc(@spinner-size-percentage / 2);
|
|
352
350
|
width: 0;
|
|
353
351
|
height: 0;
|
|
354
352
|
|
|
355
353
|
/* Add a bit of a white shadow to keep our black spinner visible
|
|
356
|
-
|
|
357
|
-
filter: drop-shadow(0 0 2px rgba(255
|
|
354
|
+
* on a black background. */
|
|
355
|
+
filter: drop-shadow(0 0 2px rgba(255 255 255 / 50%));
|
|
358
356
|
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
/* Styles for the menu itself. */
|
|
20
20
|
background: white;
|
|
21
|
-
box-shadow: 0 1px 9px 0 rgba(0
|
|
21
|
+
box-shadow: 0 1px 9px 0 rgba(0 0 0 / 40%);
|
|
22
22
|
border-radius: 2px;
|
|
23
23
|
max-height: 250px;
|
|
24
24
|
min-width: 180px;
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
|
|
53
53
|
/* When hovered, the button's background is highlighted. */
|
|
54
54
|
&:hover {
|
|
55
|
-
background: rgb(224
|
|
55
|
+
background: rgb(224 224 224);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
/* The button is clickable, showing cursor pointer */
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
.shaka-keyboard-navigation &:focus {
|
|
67
|
-
background: rgb(224
|
|
67
|
+
background: rgb(224 224 224);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
* language, the currently-selected resolution, etc. */
|
|
110
110
|
.shaka-current-selection-span {
|
|
111
111
|
/* This is dimmer than the other span, which is the name of the submenu. */
|
|
112
|
-
color: rgba(0
|
|
112
|
+
color: rgba(0 0 0 / 54%);
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
/* The submenus have somewhat different margins inside them. */
|