shaka-player 4.2.0 → 4.2.2
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/.github/workflows/build-and-test.yaml +31 -16
- package/.github/workflows/custom-actions/set-commit-status/action.yaml +1 -5
- package/.github/workflows/deflake.yaml +28 -0
- package/.github/workflows/selenium-lab-tests.yaml +168 -54
- package/AUTHORS +3 -0
- package/CHANGELOG.md +30 -0
- package/CONTRIBUTORS +3 -0
- package/demo/common/message_ids.js +1 -0
- package/demo/config.js +3 -1
- package/demo/locales/en.json +1 -0
- package/demo/locales/source.json +4 -0
- package/dist/controls.css +1 -1
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +7 -6
- package/dist/demo.compiled.debug.map +3 -3
- package/dist/demo.compiled.js +7 -6
- package/dist/demo.compiled.map +3 -3
- package/dist/deps.js +2 -2
- package/dist/locales.js +29 -29
- package/dist/receiver.compiled.debug.js +4 -3
- package/dist/receiver.compiled.debug.map +3 -3
- package/dist/receiver.compiled.js +4 -3
- package/dist/receiver.compiled.map +3 -3
- package/dist/shaka-player.compiled.d.ts +2 -4
- package/dist/shaka-player.compiled.debug.d.ts +2 -4
- package/dist/shaka-player.compiled.debug.externs.js +24 -26
- package/dist/shaka-player.compiled.debug.js +267 -260
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +24 -26
- package/dist/shaka-player.compiled.js +809 -807
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +2 -4
- package/dist/shaka-player.ui.debug.d.ts +2 -4
- package/dist/shaka-player.ui.debug.externs.js +24 -26
- package/dist/shaka-player.ui.debug.js +244 -236
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +24 -26
- package/dist/shaka-player.ui.js +973 -971
- package/dist/shaka-player.ui.map +4 -4
- package/docs/jsdoc-template/publish.js +33 -0
- package/docs/jsdoc-template/tmpl/container.tmpl +4 -1
- package/docs/jsdoc.conf.json +1 -0
- package/externs/shaka/manifest_parser.js +4 -1
- package/externs/shaka/player.js +7 -1
- package/lib/ads/client_side_ad_manager.js +7 -0
- package/lib/cast/cast_sender.js +39 -14
- package/lib/cea/cea608_memory.js +4 -0
- package/lib/hls/hls_parser.js +54 -82
- package/lib/media/drm_engine.js +52 -1
- package/lib/media/media_source_engine.js +43 -15
- package/lib/media/segment_index.js +4 -1
- package/lib/media/streaming_engine.js +79 -14
- package/lib/offline/storage.js +1 -0
- package/lib/player.js +29 -5
- package/lib/text/ttml_text_parser.js +6 -0
- package/lib/text/ui_text_displayer.js +8 -0
- package/lib/util/error.js +2 -10
- package/lib/util/platform.js +24 -0
- package/lib/util/player_configuration.js +5 -0
- package/lib/util/pssh.js +2 -1
- package/lib/util/stream_utils.js +2 -1
- package/package.json +1 -1
- package/test/cea/cea608_memory_unit.js +88 -0
- package/test/dash/dash_parser_content_protection_unit.js +1 -0
- package/test/dash/dash_parser_live_unit.js +1 -0
- package/test/dash/dash_parser_manifest_unit.js +1 -0
- package/test/dash/dash_parser_segment_base_unit.js +1 -0
- package/test/dash/dash_parser_segment_list_unit.js +1 -0
- package/test/dash/dash_parser_segment_template_unit.js +1 -0
- package/test/hls/hls_live_unit.js +169 -247
- package/test/hls/hls_parser_unit.js +112 -3
- package/test/media/drm_engine_unit.js +90 -0
- package/test/media/media_source_engine_integration.js +36 -0
- package/test/media/media_source_engine_unit.js +118 -1
- package/test/media/segment_index_unit.js +28 -2
- package/test/media/streaming_engine_integration.js +9 -7
- package/test/media/streaming_engine_unit.js +29 -0
- package/test/offline/offline_integration.js +3 -3
- package/test/player_integration.js +2 -2
- package/test/player_src_equals_integration.js +2 -0
- package/test/player_unit.js +39 -1
- package/test/test/assets/small.mp4 +0 -0
- package/test/test/util/dash_parser_util.js +2 -0
- package/test/test/util/ttml_utils.js +0 -2
- package/test/text/ttml_text_parser_unit.js +46 -0
- package/test/ui/text_displayer_layout_unit.js +17 -2
- package/ui/controls.js +0 -7
- package/ui/less/ad_controls.less +4 -0
|
@@ -41,9 +41,11 @@ jobs:
|
|
|
41
41
|
include:
|
|
42
42
|
# Run Linux browsers with xvfb, so they're in a headless X session.
|
|
43
43
|
# Additionally, generate a code coverage report from Linux Chrome.
|
|
44
|
+
# It should be the uncompiled build, or else we won't execute any
|
|
45
|
+
# coverage instrumentation on full-stack player integration tests.
|
|
44
46
|
- os: ubuntu-latest
|
|
45
47
|
browser: Chrome
|
|
46
|
-
extra_flags: "--use-xvfb --html-coverage-report"
|
|
48
|
+
extra_flags: "--use-xvfb --html-coverage-report --uncompiled"
|
|
47
49
|
- os: ubuntu-latest
|
|
48
50
|
browser: Firefox
|
|
49
51
|
extra_flags: "--use-xvfb"
|
|
@@ -57,7 +59,7 @@ jobs:
|
|
|
57
59
|
- os: macos-latest
|
|
58
60
|
browser: Safari
|
|
59
61
|
- os: macos-latest
|
|
60
|
-
browser: Safari-
|
|
62
|
+
browser: Safari-old
|
|
61
63
|
|
|
62
64
|
- os: windows-latest
|
|
63
65
|
browser: Chrome
|
|
@@ -87,21 +89,22 @@ jobs:
|
|
|
87
89
|
with:
|
|
88
90
|
ref: ${{ github.event.inputs.ref || github.ref }}
|
|
89
91
|
|
|
90
|
-
# Safari
|
|
91
|
-
# the standard version, at least not on GitHub's VMs. If
|
|
92
|
-
# install directly to the root with sudo, it will appear to
|
|
93
|
-
# will have no effect. If you try to script it explicitly
|
|
94
|
-
# and cp, this will fail. Safari may be on a read-only
|
|
95
|
-
|
|
96
|
-
|
|
92
|
+
# Older versions of Safari can be installed, but not to the root, and it
|
|
93
|
+
# can't replace the standard version, at least not on GitHub's VMs. If
|
|
94
|
+
# you try to install directly to the root with sudo, it will appear to
|
|
95
|
+
# succeed, but will have no effect. If you try to script it explicitly
|
|
96
|
+
# with rm -rf and cp, this will fail. Safari may be on a read-only
|
|
97
|
+
# filesystem.
|
|
98
|
+
- name: Install old Safari to home directory
|
|
99
|
+
if: matrix.os == 'macos-latest' && matrix.browser == 'Safari-old'
|
|
97
100
|
run: |
|
|
98
|
-
# Download Safari
|
|
99
|
-
#
|
|
100
|
-
|
|
101
|
+
# Download Safari 15
|
|
102
|
+
# This URL discovered through the seed files listed at
|
|
103
|
+
# https://github.com/zhangyoufu/swscan.apple.com/blob/master/url.txt
|
|
104
|
+
curl -Lv http://swcdn.apple.com/content/downloads/42/33/012-57329-A_41P2VU6UHN/5fw5vna27fdw4mqfak5adj3pjpxvo9hgh7/Safari15.6.1CatalinaAuto.pkg > Safari.pkg
|
|
101
105
|
|
|
102
|
-
# Install Safari
|
|
103
|
-
|
|
104
|
-
installer -pkg Safari14.0CatalinaAuto.pkg -target CurrentUserHomeDirectory
|
|
106
|
+
# Install older Safari to homedir specifically.
|
|
107
|
+
installer -pkg Safari.pkg -target CurrentUserHomeDirectory
|
|
105
108
|
|
|
106
109
|
# Install a launcher that can execute a shell script to launch this
|
|
107
110
|
npm install karma-script-launcher --save-dev
|
|
@@ -114,7 +117,7 @@ jobs:
|
|
|
114
117
|
run: |
|
|
115
118
|
browser=${{ matrix.browser }}
|
|
116
119
|
|
|
117
|
-
if [[ "$browser" == "Safari-
|
|
120
|
+
if [[ "$browser" == "Safari-old" ]]; then
|
|
118
121
|
# Replace the browser name with a script that can launch this
|
|
119
122
|
# browser from the command line.
|
|
120
123
|
browser="$PWD/.github/workflows/safari-homedir-launcher.sh"
|
|
@@ -165,6 +168,18 @@ jobs:
|
|
|
165
168
|
# an environment variable set, the file should definitely be there.
|
|
166
169
|
if-no-files-found: error
|
|
167
170
|
|
|
171
|
+
# Upload new screenshots and diffs on failure; ignore if missing
|
|
172
|
+
- name: Upload screenshots
|
|
173
|
+
uses: actions/upload-artifact@v3
|
|
174
|
+
if: ${{ failure() }}
|
|
175
|
+
with:
|
|
176
|
+
name: screenshots-${{ matrix.browser }}
|
|
177
|
+
path: |
|
|
178
|
+
test/test/assets/screenshots/*/*.png-new
|
|
179
|
+
test/test/assets/screenshots/*/*.png-diff
|
|
180
|
+
if-no-files-found: ignore
|
|
181
|
+
retention-days: 5
|
|
182
|
+
|
|
168
183
|
build_in_docker:
|
|
169
184
|
# Don't waste time doing a full matrix of test runs when there was an
|
|
170
185
|
# obvious linter error.
|
|
@@ -11,10 +11,6 @@ inputs:
|
|
|
11
11
|
state:
|
|
12
12
|
description: Either "pending", "error", "success", or "failure".
|
|
13
13
|
required: true
|
|
14
|
-
ref:
|
|
15
|
-
description: A git ref for which to set the commit status. For PRs, use the head commit, not the merge commit. Defaults to HEAD.
|
|
16
|
-
required: false
|
|
17
|
-
default: HEAD
|
|
18
14
|
token:
|
|
19
15
|
description: A GitHub access token.
|
|
20
16
|
required: true
|
|
@@ -30,7 +26,7 @@ runs:
|
|
|
30
26
|
# next to the status on the PR, it will link to this run where they can
|
|
31
27
|
# see the logs.
|
|
32
28
|
RUN_URL="https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}"
|
|
33
|
-
SHA1=$(git rev-parse
|
|
29
|
+
SHA1=$(git rev-parse HEAD)
|
|
34
30
|
|
|
35
31
|
GITHUB_TOKEN=${{ inputs.token }} \
|
|
36
32
|
gh api \
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Deflake Tests
|
|
2
|
+
|
|
3
|
+
# Runs when the Selenum nightly test workflow completes. This will run with
|
|
4
|
+
# full privileges, even if the other workflow doesn't. That allows us to
|
|
5
|
+
# trigger re-runs if we think the results might be flaky.
|
|
6
|
+
on:
|
|
7
|
+
workflow_run:
|
|
8
|
+
workflows: [Selenium Lab Tests]
|
|
9
|
+
types: [completed]
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
deflake:
|
|
13
|
+
if: ${{ github.event.workflow_run.event == 'schedule' && github.event.workflow_run.conclusion == 'failure' }}
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Check run count and re-run workflow
|
|
18
|
+
env:
|
|
19
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
20
|
+
run: |
|
|
21
|
+
gh api /repos/${{ github.repository }}/actions/runs/${{ github.event.workflow_run.id }} > run.json
|
|
22
|
+
RUNS=$(jq -r .run_attempt < run.json)
|
|
23
|
+
if [[ "$RUNS" -lt 3 ]]; then
|
|
24
|
+
echo "$RUNS failed runs so far; re-running workflow."
|
|
25
|
+
gh run rerun ${{ github.event.workflow_run.id }} --failed -R ${{ github.repository }}
|
|
26
|
+
else
|
|
27
|
+
echo "$RUNS failed runs so far; not re-running workflow."
|
|
28
|
+
fi
|
|
@@ -17,101 +17,215 @@ on:
|
|
|
17
17
|
concurrency: selenium-lab
|
|
18
18
|
|
|
19
19
|
jobs:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
compute-ref:
|
|
21
|
+
name: Compute ref
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
outputs:
|
|
24
|
+
REF: ${{ steps.compute.outputs.REF }}
|
|
24
25
|
|
|
25
26
|
steps:
|
|
26
|
-
# This runs on our self-hosted runner, and the Docker image it is based
|
|
27
|
-
# on doesn't have GitHub's CLI pre-installed. This installs it. Taken
|
|
28
|
-
# verbatim from the official installation instructions at
|
|
29
|
-
# https://github.com/cli/cli/blob/trunk/docs/install_linux.md
|
|
30
|
-
- name: Install GitHub Actions CLI
|
|
31
|
-
run: |
|
|
32
|
-
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
|
|
33
|
-
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
|
|
34
|
-
sudo apt update
|
|
35
|
-
sudo apt install gh
|
|
36
|
-
|
|
37
27
|
- name: Compute ref
|
|
28
|
+
id: compute
|
|
38
29
|
run: |
|
|
39
30
|
if [[ "${{ github.event.inputs.pr }}" != "" ]]; then
|
|
40
|
-
|
|
31
|
+
LAB_TEST_REF="refs/pull/${{ github.event.inputs.pr }}/head"
|
|
41
32
|
else
|
|
42
|
-
|
|
33
|
+
LAB_TEST_REF="main"
|
|
43
34
|
fi
|
|
35
|
+
echo "::set-output name=REF::$LAB_TEST_REF"
|
|
36
|
+
|
|
37
|
+
# Configure the build matrix based on our grid's YAML config.
|
|
38
|
+
# The matrix contents will be computed by this first job and deserialized
|
|
39
|
+
# into the second job's config.
|
|
40
|
+
matrix-config:
|
|
41
|
+
name: Matrix config
|
|
42
|
+
needs: compute-ref
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
outputs:
|
|
45
|
+
INCLUDE: ${{ steps.configure.outputs.INCLUDE }}
|
|
46
|
+
|
|
47
|
+
steps:
|
|
48
|
+
- uses: actions/checkout@v2
|
|
49
|
+
with:
|
|
50
|
+
ref: ${{ needs.compute-ref.outputs.REF }}
|
|
51
|
+
|
|
52
|
+
- name: Install dependencies
|
|
53
|
+
run: npm ci
|
|
54
|
+
|
|
55
|
+
- name: Configure build matrix
|
|
56
|
+
id: configure
|
|
57
|
+
shell: node {0}
|
|
58
|
+
run: |
|
|
59
|
+
const fs = require('fs');
|
|
60
|
+
const yaml = require(
|
|
61
|
+
'${{ github.workspace }}/node_modules/js-yaml/index.js');
|
|
62
|
+
|
|
63
|
+
const gridBrowserYaml =
|
|
64
|
+
fs.readFileSync('build/shaka-lab.yaml', 'utf8');
|
|
65
|
+
const gridBrowserMetadata = yaml.load(gridBrowserYaml);
|
|
66
|
+
|
|
67
|
+
const include = [];
|
|
68
|
+
|
|
69
|
+
for (const name in gridBrowserMetadata) {
|
|
70
|
+
if (name == 'vars') {
|
|
71
|
+
// Skip variable defs in the YAML file
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (!gridBrowserMetadata[name].disabled) {
|
|
75
|
+
include.push({browser: name});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Output JSON object consumed by the build matrix below.
|
|
80
|
+
console.log(`::set-output name=INCLUDE::${ JSON.stringify(include) }`);
|
|
81
|
+
|
|
82
|
+
// Log the output, for the sake of debugging this script.
|
|
83
|
+
console.log({include});
|
|
84
|
+
|
|
85
|
+
# Build Shaka Player once, then distribute that build to the runners in the
|
|
86
|
+
# build matrix. For N runners, runs N times faster (since all the
|
|
87
|
+
# self-hosted Selenium jobs are run in containers on one machine).
|
|
88
|
+
build-shaka:
|
|
89
|
+
name: Pre-build Player
|
|
90
|
+
needs: compute-ref
|
|
91
|
+
runs-on: ubuntu-latest
|
|
92
|
+
steps:
|
|
93
|
+
- uses: actions/checkout@v2
|
|
94
|
+
with:
|
|
95
|
+
ref: ${{ needs.compute-ref.outputs.REF }}
|
|
96
|
+
|
|
97
|
+
- name: Set commit status to pending
|
|
98
|
+
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
99
|
+
with:
|
|
100
|
+
context: Selenium / Build
|
|
101
|
+
state: pending
|
|
102
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
103
|
+
|
|
104
|
+
- name: Build Player
|
|
105
|
+
run: python3 build/all.py
|
|
44
106
|
|
|
107
|
+
- name: Store Player build
|
|
108
|
+
uses: actions/upload-artifact@v3
|
|
109
|
+
with:
|
|
110
|
+
name: shaka-player
|
|
111
|
+
path: dist/
|
|
112
|
+
retention-days: 1
|
|
113
|
+
|
|
114
|
+
- name: Report final commit status
|
|
115
|
+
# Will run on success or failure, but not if the workflow is cancelled.
|
|
116
|
+
if: ${{ success() || failure() }}
|
|
117
|
+
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
118
|
+
with:
|
|
119
|
+
context: Selenium / Build
|
|
120
|
+
state: ${{ job.status }}
|
|
121
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
122
|
+
|
|
123
|
+
lab-tests:
|
|
124
|
+
# This is a self-hosted runner in a Docker container, with access to our
|
|
125
|
+
# lab's Selenium grid on port 4444.
|
|
126
|
+
runs-on: self-hosted-selenium
|
|
127
|
+
needs: [compute-ref, build-shaka, matrix-config]
|
|
128
|
+
strategy:
|
|
129
|
+
fail-fast: false
|
|
130
|
+
matrix:
|
|
131
|
+
include: ${{ fromJSON(needs.matrix-config.outputs.INCLUDE) }}
|
|
132
|
+
name: ${{ matrix.browser }}
|
|
133
|
+
|
|
134
|
+
steps:
|
|
45
135
|
- uses: actions/checkout@v2
|
|
46
136
|
with:
|
|
47
|
-
ref: ${{
|
|
137
|
+
ref: ${{ needs.compute-ref.outputs.REF }}
|
|
48
138
|
|
|
49
|
-
- name: Set
|
|
139
|
+
- name: Set commit status to pending
|
|
50
140
|
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
51
141
|
with:
|
|
52
|
-
context: Selenium
|
|
142
|
+
context: Selenium / ${{ matrix.browser }}
|
|
53
143
|
state: pending
|
|
54
144
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
55
145
|
|
|
56
|
-
- uses: actions/setup-node@
|
|
146
|
+
- uses: actions/setup-node@v3
|
|
57
147
|
with:
|
|
58
148
|
node-version: 16
|
|
59
149
|
registry-url: 'https://registry.npmjs.org'
|
|
60
150
|
|
|
61
151
|
# The Docker image for this self-hosted runner doesn't contain java.
|
|
62
|
-
- uses: actions/setup-java@
|
|
152
|
+
- uses: actions/setup-java@v3
|
|
63
153
|
with:
|
|
64
154
|
distribution: zulu
|
|
65
155
|
java-version: 11
|
|
66
156
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
157
|
+
- name: Cache dependencies
|
|
158
|
+
uses: actions/cache@v3
|
|
159
|
+
id: npm-cache
|
|
160
|
+
with:
|
|
161
|
+
path: node_modules/
|
|
162
|
+
key: node-${{ hashFiles('package-lock.json') }}
|
|
163
|
+
|
|
164
|
+
- name: Install dependencies
|
|
165
|
+
if: steps.npm-cache.outputs.cache-hit != 'true'
|
|
166
|
+
run: npm ci
|
|
167
|
+
|
|
168
|
+
# Instead of building Shaka N times, build it once and fetch the build to
|
|
169
|
+
# each Selenium runner in the matrix.
|
|
170
|
+
- name: Fetch Player build
|
|
171
|
+
uses: actions/download-artifact@v3
|
|
172
|
+
with:
|
|
173
|
+
name: shaka-player
|
|
174
|
+
path: dist/
|
|
71
175
|
|
|
72
176
|
# Run tests on the Selenium grid in our lab. This uses a private
|
|
73
177
|
# hostname and TLS cert to get EME tests working on all platforms
|
|
74
|
-
# (since EME only works on https or localhost).
|
|
178
|
+
# (since EME only works on https or localhost). The variable KARMA_PORT
|
|
179
|
+
# must be defined by the self-hosted runner, and mapped from the host to
|
|
180
|
+
# the container.
|
|
75
181
|
- name: Test Player
|
|
76
182
|
run: |
|
|
183
|
+
# Generate a coverage report from uncompiled code on ChromeLinux.
|
|
184
|
+
# It should be the uncompiled build, or else we won't execute any
|
|
185
|
+
# coverage instrumentation on full-stack player integration tests.
|
|
186
|
+
if [[ "${{ matrix.browser }}" == "ChromeLinux" ]]; then
|
|
187
|
+
extra_flags="--html-coverage-report --uncompiled"
|
|
188
|
+
else
|
|
189
|
+
extra_flags=""
|
|
190
|
+
fi
|
|
191
|
+
|
|
77
192
|
python3 build/test.py \
|
|
193
|
+
--no-build \
|
|
78
194
|
--reporters spec --spec-hide-passed \
|
|
79
195
|
--lets-encrypt-folder /etc/shakalab.rocks \
|
|
80
196
|
--hostname karma.shakalab.rocks \
|
|
81
|
-
--port
|
|
197
|
+
--port $KARMA_PORT \
|
|
82
198
|
--grid-config build/shaka-lab.yaml \
|
|
83
199
|
--grid-address selenium-grid.lab:4444 \
|
|
84
|
-
--
|
|
200
|
+
--browsers ${{ matrix.browser }} \
|
|
201
|
+
$extra_flags
|
|
85
202
|
|
|
86
|
-
- name: Find coverage report
|
|
203
|
+
- name: Find coverage report (ChromeLinux only)
|
|
87
204
|
id: coverage
|
|
88
|
-
|
|
205
|
+
# Run even if an earlier step fails, but only on ChromeLinux.
|
|
206
|
+
if: ${{ always() && matrix.browser == 'ChromeLinux' }}
|
|
89
207
|
shell: bash
|
|
90
208
|
run: |
|
|
91
|
-
#
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
echo "Found coverage report: $coverage_report"
|
|
105
|
-
echo "::set-output name=coverage_report::$coverage_report"
|
|
106
|
-
else
|
|
107
|
-
echo "Could not locate coverage report!"
|
|
108
|
-
exit 1
|
|
109
|
-
fi
|
|
209
|
+
# Find the path to the coverage report specifically for Chrome on
|
|
210
|
+
# Linux. It includes the exact browser version in the path, so it
|
|
211
|
+
# will vary. Having a single path will make the artifact zip
|
|
212
|
+
# simpler, whereas using a wildcard in the upload step will result
|
|
213
|
+
# in a zip file with internal directories.
|
|
214
|
+
coverage_report="$( (ls coverage/Chrome*Linux*/coverage.json || true) | head -1 )"
|
|
215
|
+
|
|
216
|
+
# Show what's there, for debugging purposes.
|
|
217
|
+
ls -l coverage/
|
|
218
|
+
|
|
219
|
+
if [ -f "$coverage_report" ]; then
|
|
220
|
+
echo "Found coverage report: $coverage_report"
|
|
221
|
+
echo "::set-output name=coverage_report::$coverage_report"
|
|
110
222
|
else
|
|
111
|
-
echo "
|
|
223
|
+
echo "Could not locate coverage report!"
|
|
224
|
+
exit 1
|
|
112
225
|
fi
|
|
113
226
|
|
|
114
|
-
-
|
|
227
|
+
- name: Upload coverage report (ChromeLinux only)
|
|
228
|
+
uses: actions/upload-artifact@v3
|
|
115
229
|
# If there's a coverage report, upload it, even if a previous step
|
|
116
230
|
# failed.
|
|
117
231
|
if: ${{ always() && steps.coverage.outputs.coverage_report }}
|
|
@@ -125,11 +239,11 @@ jobs:
|
|
|
125
239
|
# there.
|
|
126
240
|
if-no-files-found: error
|
|
127
241
|
|
|
128
|
-
- name: Report
|
|
242
|
+
- name: Report final commit status
|
|
129
243
|
# Will run on success or failure, but not if the workflow is cancelled.
|
|
130
244
|
if: ${{ success() || failure() }}
|
|
131
245
|
uses: ./.github/workflows/custom-actions/set-commit-status
|
|
132
246
|
with:
|
|
133
|
-
context: Selenium
|
|
247
|
+
context: Selenium / ${{ matrix.browser }}
|
|
134
248
|
state: ${{ job.status }}
|
|
135
249
|
token: ${{ secrets.GITHUB_TOKEN }}
|
package/AUTHORS
CHANGED
|
@@ -37,6 +37,7 @@ Giorgio Gamberoni <giorgio.gamberoni@gmail.com>
|
|
|
37
37
|
Giuseppe Samela <giuseppe.samela@gmail.com>
|
|
38
38
|
Google Inc. <*@google.com>
|
|
39
39
|
Itay Kinnrot <Itay.Kinnrot@Kaltura.com>
|
|
40
|
+
Jaeseok Lee <devsunb@gmail.com>
|
|
40
41
|
Jason Palmer <jason@jason-palmer.com>
|
|
41
42
|
Jesper Haug Karsrud <jesper.karsrud@gmail.com>
|
|
42
43
|
Johan Sundström <oyasumi@gmail.com>
|
|
@@ -69,6 +70,7 @@ SameGoal Inc. <*@samegoal.com>
|
|
|
69
70
|
Sanborn Hilland <sanbornh@rogers.com>
|
|
70
71
|
Sander Saares <sander@saares.eu>
|
|
71
72
|
Sanil Raut <sr1990003@gmail.com>
|
|
73
|
+
Seongryun Jo <ocipap0531@gmail.com>
|
|
72
74
|
Swank Motion Pictures Inc. <*@swankmp.com>
|
|
73
75
|
TalkTalk Plc <*@talktalkplc.com>
|
|
74
76
|
Tatsiana Gelahova <tatsiana.gelahova@gmail.com>
|
|
@@ -81,3 +83,4 @@ ViacomCBS <*@viacomcbs.com>
|
|
|
81
83
|
Vincent Valot <valot.vince@gmail.com>
|
|
82
84
|
Wayne Morgan <wayne.morgan.dev@gmail.com>
|
|
83
85
|
Raymond Cheng <raycheng100@gmail.com>
|
|
86
|
+
Blue Billywig <*@bluebillywig.com>
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.2.2](https://github.com/shaka-project/shaka-player/compare/v4.2.1...v4.2.2) (2022-10-07)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* allow build without text ([#4506](https://github.com/shaka-project/shaka-player/issues/4506)) ([7e93720](https://github.com/shaka-project/shaka-player/commit/7e9372097567d8d0f93c04e241fb917945da05bf))
|
|
9
|
+
* allow the playback on platforms when low latency APIs are not supported ([#4485](https://github.com/shaka-project/shaka-player/issues/4485)) ([cf8c857](https://github.com/shaka-project/shaka-player/commit/cf8c857e58f041e24373e8b4f7d560287197cf13))
|
|
10
|
+
* check for negative rows before moving ([#4510](https://github.com/shaka-project/shaka-player/issues/4510)) ([23f39d7](https://github.com/shaka-project/shaka-player/commit/23f39d7393c771440fc76ac9016b166d658710b2)), closes [#4508](https://github.com/shaka-project/shaka-player/issues/4508)
|
|
11
|
+
* Filter unsupported H.264 streams in Xbox ([#4493](https://github.com/shaka-project/shaka-player/issues/4493)) ([914a08a](https://github.com/shaka-project/shaka-player/commit/914a08a4d08bed284a072aed52b0bf8fcbdc6986))
|
|
12
|
+
* Fix choppy HLS startup ([#4553](https://github.com/shaka-project/shaka-player/issues/4553)) ([950ce69](https://github.com/shaka-project/shaka-player/commit/950ce699a06bb9e7668b431f4f08052c005f2e8a)), closes [#4516](https://github.com/shaka-project/shaka-player/issues/4516)
|
|
13
|
+
* Fix errors with TS segments on Chromecast ([#4543](https://github.com/shaka-project/shaka-player/issues/4543)) ([8204db6](https://github.com/shaka-project/shaka-player/commit/8204db6ebc152cb01c36db941ca60bc82ccbe443))
|
|
14
|
+
* Fix hang when seeking to the last segment ([#4537](https://github.com/shaka-project/shaka-player/issues/4537)) ([3d6c768](https://github.com/shaka-project/shaka-player/commit/3d6c768cb302de42138aec8fdf51dff8317c5607))
|
|
15
|
+
* Fix HLS dynamic to static transition ([d9ecbf3](https://github.com/shaka-project/shaka-player/commit/d9ecbf3fccb886e10a491c43e05e681fe2103a2d))
|
|
16
|
+
* Fix HLS dynamic to static transition ([#4483](https://github.com/shaka-project/shaka-player/issues/4483)) ([d9ecbf3](https://github.com/shaka-project/shaka-player/commit/d9ecbf3fccb886e10a491c43e05e681fe2103a2d)), closes [#4431](https://github.com/shaka-project/shaka-player/issues/4431)
|
|
17
|
+
* Fix in-band key rotation on Xbox One ([#4478](https://github.com/shaka-project/shaka-player/issues/4478)) ([bc0a588](https://github.com/shaka-project/shaka-player/commit/bc0a588676828eb68bdca62efe52cb503feb947d)), closes [#4401](https://github.com/shaka-project/shaka-player/issues/4401)
|
|
18
|
+
* Missing AES-128 key of last HLS segment ([#4519](https://github.com/shaka-project/shaka-player/issues/4519)) ([2c2677f](https://github.com/shaka-project/shaka-player/commit/2c2677fe7af10e1280ea8253b90ef6527bdcbbc0)), closes [#4517](https://github.com/shaka-project/shaka-player/issues/4517)
|
|
19
|
+
* Respect existing app usage of Cast SDK ([#4523](https://github.com/shaka-project/shaka-player/issues/4523)) ([3db2568](https://github.com/shaka-project/shaka-player/commit/3db2568508cfc827fd9efc644096a45220eb617b)), closes [#4521](https://github.com/shaka-project/shaka-player/issues/4521)
|
|
20
|
+
* **ttml:** Default TTML background color to transparent if unspecified ([#4496](https://github.com/shaka-project/shaka-player/issues/4496)) ([0b5c985](https://github.com/shaka-project/shaka-player/commit/0b5c9853a6a39cb24ab1270598bf34d2ac1eacf0)), closes [#4468](https://github.com/shaka-project/shaka-player/issues/4468)
|
|
21
|
+
|
|
22
|
+
## [4.2.1](https://github.com/shaka-project/shaka-player/compare/v4.2.0...v4.2.1) (2022-08-31)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* Fix bitmap-based cue size ([#4453](https://github.com/shaka-project/shaka-player/issues/4453)) ([6329cf2](https://github.com/shaka-project/shaka-player/commit/6329cf25b1a3265361e50386d48b0438e294536e))
|
|
28
|
+
* Fix drm.keySystemsMapping config ([#4425](https://github.com/shaka-project/shaka-player/issues/4425)) ([40235ef](https://github.com/shaka-project/shaka-player/commit/40235ef4f7675a853daf315d4c089ad7be7b2188)), closes [#4422](https://github.com/shaka-project/shaka-player/issues/4422)
|
|
29
|
+
* Fix vanishing tracks while offline ([#4426](https://github.com/shaka-project/shaka-player/issues/4426)) ([d668790](https://github.com/shaka-project/shaka-player/commit/d668790f5b9eef990a190128bd11972204e98480)), closes [#4408](https://github.com/shaka-project/shaka-player/issues/4408)
|
|
30
|
+
* return width and height in the stats when we are using src= ([#4435](https://github.com/shaka-project/shaka-player/issues/4435)) ([aad8769](https://github.com/shaka-project/shaka-player/commit/aad8769807bcf58b2bc5c6298e9a10f428c73806))
|
|
31
|
+
* **UI:** Ad position and ad counter are too close to each other ([#4416](https://github.com/shaka-project/shaka-player/issues/4416)) ([a7333a5](https://github.com/shaka-project/shaka-player/commit/a7333a560aae4c8f915b3546ecc4e34dc501c5f2))
|
|
32
|
+
|
|
3
33
|
## [4.2.0](https://github.com/shaka-project/shaka-player/compare/v4.1.0...v4.2.0) (2022-08-16)
|
|
4
34
|
|
|
5
35
|
|
package/CONTRIBUTORS
CHANGED
|
@@ -57,6 +57,7 @@ Hichem Taoufik <hichem@code-it.fr>
|
|
|
57
57
|
Itay Kinnrot <itay.kinnrot@kaltura.com>
|
|
58
58
|
Isaac Ramirez <isaac.ramirez.herrera@gmail.com>
|
|
59
59
|
Jacob Trimble <modmaker@google.com>
|
|
60
|
+
Jaeseok Lee <devsunb@gmail.com>
|
|
60
61
|
Jason Palmer <jason@jason-palmer.com>
|
|
61
62
|
Jeffrey Swan <jeffdswan@gmail.com>
|
|
62
63
|
Jesper Haug Karsrud <jesper.karsrud@gmail.com>
|
|
@@ -104,6 +105,7 @@ Sandra Lokshina <ismena@google.com>
|
|
|
104
105
|
Sanil Raut <sr1990003@gmail.com>
|
|
105
106
|
Satheesh Velmurugan <satheesh@philo.com>
|
|
106
107
|
Semih Gokceoglu <semih.gkcoglu@gmail.com>
|
|
108
|
+
Seongryun Jo <ocipap0531@gmail.com>
|
|
107
109
|
Seth Madison <seth@philo.com>
|
|
108
110
|
Tatsiana Gelahova <tatsiana.gelahova@gmail.com>
|
|
109
111
|
Theodore Abshire <theodab@google.com>
|
|
@@ -121,3 +123,4 @@ Vincent Valot <valot.vince@gmail.com>
|
|
|
121
123
|
Wayne Morgan <wayne.morgan.dev@gmail.com>
|
|
122
124
|
Yohann Connell <robinconnell@google.com>
|
|
123
125
|
Raymond Cheng <raycheng100@gmail.com>
|
|
126
|
+
Janroel Koppen <j.koppen@bluebillywig.com>
|
|
@@ -227,6 +227,7 @@ shakaDemo.MessageIds = {
|
|
|
227
227
|
NUMBER_NONZERO_INTEGER_WARNING: 'DEMO_NUMBER_NONZERO_INTEGER_WARNING',
|
|
228
228
|
NUMBER_OF_PARALLEL_DOWNLOADS: 'DEMO_NUMBER_OF_PARALLEL_DOWNLOADS',
|
|
229
229
|
OFFLINE_SECTION_HEADER: 'DEMO_OFFLINE_SECTION_HEADER',
|
|
230
|
+
PARSE_INBAND_PSSH_ENABLED: 'DEMO_PARSE_INBAND_PSSH_ENABLED',
|
|
230
231
|
PREFER_FORCED_SUBS: 'DEMO_PREFER_FORCED_SUBS',
|
|
231
232
|
PREFER_NATIVE_HLS: 'DEMO_PREFER_NATIVE_HLS',
|
|
232
233
|
REBUFFERING_GOAL: 'DEMO_REBUFFERING_GOAL',
|
package/demo/config.js
CHANGED
|
@@ -131,7 +131,9 @@ shakaDemo.Config = class {
|
|
|
131
131
|
'drm.updateExpirationTime',
|
|
132
132
|
/* canBeDecimal= */ true,
|
|
133
133
|
/* canBeZero= */ false,
|
|
134
|
-
/* canBeUnset= */ true)
|
|
134
|
+
/* canBeUnset= */ true)
|
|
135
|
+
.addBoolInput_(MessageIds.PARSE_INBAND_PSSH_ENABLED,
|
|
136
|
+
'drm.parseInbandPsshEnabled');
|
|
135
137
|
const advanced = shakaDemoMain.getConfiguration().drm.advanced || {};
|
|
136
138
|
const addDRMAdvancedField = (name, valueName, suggestions) => {
|
|
137
139
|
// All advanced fields of a given type are set at once.
|
package/demo/locales/en.json
CHANGED
|
@@ -163,6 +163,7 @@
|
|
|
163
163
|
"DEMO_NUMBER_NONZERO_INTEGER_WARNING": "Must be a positive, nonzero integer.",
|
|
164
164
|
"DEMO_NUMBER_OF_PARALLEL_DOWNLOADS": "Number of parallel downloads",
|
|
165
165
|
"DEMO_OBSERVE_QUALITY_CHANGES": "Observe media quality changes",
|
|
166
|
+
"DEMO_PARSE_INBAND_PSSH_ENABLED": "Parse inband 'pssh' from media segments",
|
|
166
167
|
"DEMO_OFFLINE": "Downloadable",
|
|
167
168
|
"DEMO_OFFLINE_SEARCH": "Filters for assets that can be stored offline.",
|
|
168
169
|
"DEMO_OFFLINE_SECTION_HEADER": "Offline",
|
package/demo/locales/source.json
CHANGED
|
@@ -679,6 +679,10 @@
|
|
|
679
679
|
"description": "The label on a field that allows users to provide a full mime type for a custom asset.",
|
|
680
680
|
"message": "Full Mime Type for Playing Media Playlists Directly"
|
|
681
681
|
},
|
|
682
|
+
"DEMO_PARSE_INBAND_PSSH_ENABLED": {
|
|
683
|
+
"description": "The name of a configuration value.",
|
|
684
|
+
"message": "Parse inband 'pssh' from media segments"
|
|
685
|
+
},
|
|
682
686
|
"DEMO_PLAY": {
|
|
683
687
|
"description": "A button to play the attached asset.",
|
|
684
688
|
"message": "Play"
|
package/dist/controls.css
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
28
28
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
29
29
|
* SOFTWARE.
|
|
30
|
-
*/.shaka-spinner-svg{position:absolute;top:0;left:0;right:0;bottom:0;animation:rotate 2s linear infinite;transform-origin:center center;width:100%;height:100%;margin:0;padding:0}.shaka-spinner-path{stroke:#202124;stroke-dasharray:20,200;stroke-dashoffset:0;animation:dash 1s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.shaka-spacer{cursor:default;flex-shrink:1;flex-grow:1;margin:0}.shaka-overflow-menu,.shaka-settings-menu{overflow-x:hidden;overflow-y:auto;white-space:nowrap;background:#fff;box-shadow:0 1px 9px 0 rgba(0 0 0 / 40%);border-radius:2px;max-height:250px;min-width:180px;opacity:0;transition:opacity cubic-bezier(.4, 0, .6, 1) .6s;display:flex;flex-direction:column;position:absolute;z-index:2;right:15px;bottom:30px}.shaka-controls-container[casting=true] .shaka-overflow-menu,.shaka-controls-container[casting=true] .shaka-settings-menu,.shaka-controls-container[shown=true] .shaka-overflow-menu,.shaka-controls-container[shown=true] .shaka-settings-menu{opacity:1}.shaka-overflow-menu button,.shaka-settings-menu button{font-size:14px;background:0 0;color:#000;border:none;min-height:30px;padding:3.5px 6px;display:flex;align-items:center;cursor:pointer}.shaka-overflow-menu button:hover,.shaka-settings-menu button:hover{background:#e0e0e0}.shaka-overflow-menu button label,.shaka-settings-menu button label{cursor:pointer}.shaka-keyboard-navigation .shaka-overflow-menu button:focus,.shaka-keyboard-navigation .shaka-settings-menu button:focus{background:#e0e0e0}.shaka-overflow-menu i,.shaka-settings-menu i{padding-left:10px;padding-right:10px}.shaka-overflow-menu.shaka-low-position,.shaka-settings-menu.shaka-low-position{bottom:15px}.shaka-overflow-menu span{text-align:left}.shaka-overflow-button-label{position:relative;display:flex;flex-direction:column}.shaka-current-selection-span{color:rgba(0 0 0 / 54%)}.shaka-settings-menu span{margin-left:54px}.shaka-back-to-overflow-button span{margin-left:0}.shaka-back-to-overflow-button i{padding-right:20px}.shaka-auto-span{left:17px}.shaka-controls-container[ad-active=true]{pointer-events:none}.shaka-controls-container[ad-active=true] .shaka-bottom-controls{pointer-events:auto}.shaka-client-side-ad-container,.shaka-server-side-ad-container{position:absolute;left:0;right:0;top:0;bottom:0}.shaka-video-container[shaka-controls=true] .shaka-client-side-ad-container iframe,.shaka-video-container[shaka-controls=true] .shaka-server-side-ad-container iframe{height:90%}.shaka-server-side-ad-container{width:100%;height:100%;flex-shrink:1}.shaka-server-side-ad-container:not([ad-active=true]){pointer-events:none}.shaka-ad-controls{display:flex;flex-direction:row;z-index:1;padding-bottom:1%}.shaka-video-container:not([shaka-controls=true]) .shaka-ad-controls{display:none}.shaka-ad-controls button,.shaka-ad-controls div{color:#fff;font-size:initial}.shaka-ad-controls div:not(.shaka-skip-ad-counter){margin:1px}.shaka-ad-counter,.shaka-ad-position{display:flex;justify-content:flex-end;flex-direction:column;text-shadow:1px 1px 4px #000}.shaka-skip-ad-container{position:relative;right:calc((100% - 96%)/ 2 * -1);display:flex;flex-direction:row;margin:0}.shaka-skip-ad-button{padding:5px 15px;background:rgba(0 0 0 / 70%);border:none;cursor:pointer}.shaka-skip-ad-button:disabled{background:rgba(0 0 0 / 30%)}.shaka-skip-ad-counter{padding:5px;background:rgba(0 0 0 / 70%);margin:0}/*!
|
|
30
|
+
*/.shaka-spinner-svg{position:absolute;top:0;left:0;right:0;bottom:0;animation:rotate 2s linear infinite;transform-origin:center center;width:100%;height:100%;margin:0;padding:0}.shaka-spinner-path{stroke:#202124;stroke-dasharray:20,200;stroke-dashoffset:0;animation:dash 1s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}.shaka-spacer{cursor:default;flex-shrink:1;flex-grow:1;margin:0}.shaka-overflow-menu,.shaka-settings-menu{overflow-x:hidden;overflow-y:auto;white-space:nowrap;background:#fff;box-shadow:0 1px 9px 0 rgba(0 0 0 / 40%);border-radius:2px;max-height:250px;min-width:180px;opacity:0;transition:opacity cubic-bezier(.4, 0, .6, 1) .6s;display:flex;flex-direction:column;position:absolute;z-index:2;right:15px;bottom:30px}.shaka-controls-container[casting=true] .shaka-overflow-menu,.shaka-controls-container[casting=true] .shaka-settings-menu,.shaka-controls-container[shown=true] .shaka-overflow-menu,.shaka-controls-container[shown=true] .shaka-settings-menu{opacity:1}.shaka-overflow-menu button,.shaka-settings-menu button{font-size:14px;background:0 0;color:#000;border:none;min-height:30px;padding:3.5px 6px;display:flex;align-items:center;cursor:pointer}.shaka-overflow-menu button:hover,.shaka-settings-menu button:hover{background:#e0e0e0}.shaka-overflow-menu button label,.shaka-settings-menu button label{cursor:pointer}.shaka-keyboard-navigation .shaka-overflow-menu button:focus,.shaka-keyboard-navigation .shaka-settings-menu button:focus{background:#e0e0e0}.shaka-overflow-menu i,.shaka-settings-menu i{padding-left:10px;padding-right:10px}.shaka-overflow-menu.shaka-low-position,.shaka-settings-menu.shaka-low-position{bottom:15px}.shaka-overflow-menu span{text-align:left}.shaka-overflow-button-label{position:relative;display:flex;flex-direction:column}.shaka-current-selection-span{color:rgba(0 0 0 / 54%)}.shaka-settings-menu span{margin-left:54px}.shaka-back-to-overflow-button span{margin-left:0}.shaka-back-to-overflow-button i{padding-right:20px}.shaka-auto-span{left:17px}.shaka-controls-container[ad-active=true]{pointer-events:none}.shaka-controls-container[ad-active=true] .shaka-bottom-controls{pointer-events:auto}.shaka-client-side-ad-container,.shaka-server-side-ad-container{position:absolute;left:0;right:0;top:0;bottom:0}.shaka-video-container[shaka-controls=true] .shaka-client-side-ad-container iframe,.shaka-video-container[shaka-controls=true] .shaka-server-side-ad-container iframe{height:90%}.shaka-server-side-ad-container{width:100%;height:100%;flex-shrink:1}.shaka-server-side-ad-container:not([ad-active=true]){pointer-events:none}.shaka-ad-controls{display:flex;flex-direction:row;z-index:1;padding-bottom:1%}.shaka-video-container:not([shaka-controls=true]) .shaka-ad-controls{display:none}.shaka-ad-controls button,.shaka-ad-controls div{color:#fff;font-size:initial}.shaka-ad-controls div:not(.shaka-skip-ad-counter){margin:1px}.shaka-ad-counter,.shaka-ad-position{display:flex;justify-content:flex-end;flex-direction:column;text-shadow:1px 1px 4px #000}.shaka-ad-controls .shaka-ad-position:not(.shaka-hidden)+.shaka-ad-counter{margin-left:.75em}.shaka-skip-ad-container{position:relative;right:calc((100% - 96%)/ 2 * -1);display:flex;flex-direction:row;margin:0}.shaka-skip-ad-button{padding:5px 15px;background:rgba(0 0 0 / 70%);border:none;cursor:pointer}.shaka-skip-ad-button:disabled{background:rgba(0 0 0 / 30%)}.shaka-skip-ad-counter{padding:5px;background:rgba(0 0 0 / 70%);margin:0}/*!
|
|
31
31
|
* @license
|
|
32
32
|
* The tooltip is based on https://github.com/felipefialho/css-components/
|
|
33
33
|
* Local modifications have been performed.
|
package/dist/controls.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["$stdin"],"names":[],"mappings":"AAaA,cAGE,QAAS,eAkBX,uBASE,SAAU,SAIV,IAAK,EACL,KAAM,EAGN,QAAS,KAIX,6CACE,YAAa,uBACb,UAAW,KAEb,yBACE,YAAa,cAAc,CAAE,MAAM,CAAE,UAAU,CAAE,iBAQnD,kCACE,MAAO,KACP,OAAQ,KACR,iBAAkB,KAEpB,wDAIE,UAAW,QAEb,2CACE,MAAO,KACP,OAAQ,KACR,iBAAkB,KAEpB,iEAIE,UAAW,QAEb,wCACE,MAAO,KACP,OAAQ,KACR,iBAAkB,KAEpB,8DAIE,UAAW,QAEb,sCACE,MAAO,KACP,OAAQ,KACR,iBAAkB,KAEpB,4DAIE,UAAW,QAab,0BASE,SAAU,SAEV,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,EACR,OAAQ,EACR,QAAS,EACT,MAAO,KACP,OAAQ,KAER,WAAY,WAEZ,QAAS,KAET,eAAgB,OAEhB,gBAAiB,SAEjB,YAAa,OAKb,QAAS,EAEX,4EACE,QAAS,KAEX,4BACE,YAAa,EAKf,iEACE,QAAS,KAIX,uBACE,MAAO,IACP,QAAS,EACT,eAAgB,KAMhB,QAAS,EAKX,6BAEE,QAAS,EACT,OAAQ,EAER,QAAS,KACT,eAAgB,IAEhB,gBAAiB,SAEjB,YAAa,OAEb,SAAU,OACV,UAAW,KAGX,UAAW,KACX,YAAa,IACb,WAAY,OAEZ,YAAa,KACb,oBAAqB,KACrB,iBAAkB,KAClB,gBAAiB,KAEjB,QAAS,EAET,WAAY,QAAQ,2BAA6B,IAOnD,qEADA,mEAEE,QAAS,EAEX,+BAEE,MAAO,KAEP,OAAQ,KAER,YAAa,GAEb,OAAQ,IACR,QAAS,EAAE,IAGX,WAAY,IACZ,OAAQ,EACR,OAAQ,QAGV,uDACE,QAAS,KAKX,6BAGE,OAAQ,EACR,MAAO,KACP,OAAQ,KACR,YAAa,EAIb,SAAU,SACV,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,EAER,QAAS,KACT,gBAAiB,OACjB,YAAa,OAEf,4BACE,WAAY,OACZ,WAAY,KACZ,UAAW,MACX,MAAO,KACP,iBAAkB,qBAClB,UAAW,KACX,QAAS,IAAI,KACb,cAAe,IACf,SAAU,SACV,QAAS,EACT,KAAM,KACN,IAAK,KAGL,QAAS,EAET,WAAY,QAAQ,2BAA6B,IAKnD,oEADA,kEAEE,QAAS,EAEX,gCACE,QAAS,KACT,gBAAiB,cAEnB,iCACE,MAAO,QAET,oBACE,iBAAkB,qBAClB,cAAe,IACf,SAAU,SACV,QAAS,EAEX,2BACE,QAAS,IAAI,KACb,MAAO,KACP,QAAS,KACT,YAAa,OACb,MAAO,KACP,WAAY,IACZ,OAAQ,EACR,OAAQ,QAEV,iCACE,iBAAkB,qBAEpB,0BACE,QAAS,EAAE,KACX,YAAa,WACb,MAAO,KACP,OAAQ,QAEV,kDACE,YAAa,WACb,MAAO,KACP,OAAQ,QAEV,uBACE,OAAQ,EACR,MAAO,KACP,OAAQ,KACR,YAAa,EAIb,SAAU,SACV,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,EAER,QAAS,EAET,WAAY,QAAQ,2BAA6B,IAIjD,WAAY,+CAGd,+DADA,6DAEE,QAAS,EAEX,sBAIE,SAAU,SACV,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,EAIR,eAAgB,KAEhB,OAAQ,EACR,MAAO,KACP,UAAW,KAOX,WAAY,OAAO,2BAA6B,IAChD,iBAAkB,KAElB,UAAW,KACX,YAAa,IACb,MAAO,KAET,8CACE,QAAS,OACT,WAAY,IAEd,4DAGE,OAAQ,IAGR,iBAAkB,GAGpB,yBAIE,SAAU,SACV,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,EACR,MAAO,KACP,OAAQ,KACR,YAAa,EACb,QAAS,KACT,gBAAiB,OACjB,YAAa,OAEf,2EACE,QAAS,KAEX,eAcE,SAAU,SAIV,IAAK,EACL,KAAM,EACN,OAAQ,EACR,WAAY,WACZ,QAAS,gBACT,MAAO,EACP,OAAQ,EAGR,OAAQ,6CASV,mBAQE,WAAY,WACZ,QAAS,cACT,MAAO,EACP,OAAQ,EAGR,OAAQ,EAER,cAAe,IAEf,WAAY,kBAAkB,EAAE,EAAE,KAAK,EAEvC,OAAQ,KAIR,gBAAiB,IACjB,kBAAmB,UACnB,oBAAqB,OAAO,OAE5B,iBAAkB,wBAElB,QAAS,EAET,WAAY,QAAQ,2BAA6B,IASnD,2DADA,yDAEE,QAAS,EAEX,8BACE,iBAAkB,8UAEpB,+BACE,iBAAkB,gWAMpB,oBACE,UAAW,KACX,MAAO,KACP,OAAQ,QAEV,8BAGE,iBAAkB,YAClB,MAAO,KACP,OAAQ,QAOV,uCACA,sCAGE,QAAS,IAAI,MAAM,UAErB,kDACA,iDACE,QAAS,EACT,OAAQ,EAKV,uEACA,sEACE,QAAS,EAoCX,uBAUE,SAAU,SAIV,IAAK,EACL,KAAM,EAEN,OAAQ,sBAAuB,IAE/B,OAAQ,IAER,cAAe,IAEf,WAAY,KAEd,4BACE,MAAO,MACP,QAAS,EAEX,qBAEE,mBAAoB,KACpB,WAAY,IAUZ,SAAU,SAEV,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,EACR,OAAQ,EACR,QAAS,EACT,MAAO,KACP,OAAQ,KAIR,OAAQ,KAGR,IAAK,sBAGL,QAAS,EAIX,oDAEE,MAAO,KAIP,OAAQ,QAIR,OAAQ,KAGR,WAAY,IACZ,MAAO,YACP,OAAQ,KAEV,2CAEE,mBAAoB,KAGpB,OAAQ,KAER,cAAe,KACf,OAAQ,KACR,MAAO,KAEP,WAAY,KAEd,uCAEE,MAAO,KAIP,OAAQ,QAIR,OAAQ,KAGR,WAAY,IACZ,MAAO,YACP,OAAQ,KAEV,uCAEE,mBAAoB,KAGpB,OAAQ,KAER,cAAe,KACf,OAAQ,KACR,MAAO,KAEP,WAAY,KAEd,0BAEE,QAAS,EAET,WAAY,QAAQ,2BAA6B,IAKnD,kEADA,gEAEE,QAAS,EAEX,kBASE,SAAU,SAEV,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,EACR,OAAQ,EACR,QAAS,EACT,MAAO,KACP,OAAQ,KAEV;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,mBAYE,SAAU,SAEV,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,EAER,UAAW,OAAO,GAAG,OAAO,SAC5B,iBAAkB,OAAO,OAEzB,MAAO,KACP,OAAQ,KACR,OAAQ,EACR,QAAS,EAGX,oBACE,OAAQ,QACR,iBAAkB,EAAE,CAAE,IACtB,kBAAmB,EAEnB,UAAW,KAAK,GAAG,YAAY,SAE/B,eAAgB,MAGlB,kBACE,KACE,UAAW,gBAIf,gBACE,GACE,iBAAkB,CAAC,CAAE,IACrB,kBAAmB,EAErB,IACE,iBAAkB,EAAE,CAAE,IACtB,kBAAmB,MAErB,KACE,iBAAkB,EAAE,CAAE,IACtB,kBAAmB,QAWvB,cAEE,OAAQ,QAER,YAAa,EAEb,UAAW,EAGX,OAAQ,EASV,qBACA,qBAGE,WAAY,OACZ,WAAY,KAEZ,YAAa,OAEb,WAAY,KACZ,WAAY,EAAE,IAAI,IAAI,EAAE,kBACxB,cAAe,IACf,WAAY,MACZ,UAAW,MAGX,QAAS,EAET,WAAY,QAAQ,2BAA6B,IAKjD,QAAS,KACT,eAAgB,OAEhB,SAAU,SACV,QAAS,EACT,MAAO,KACP,OAAQ,KASV,6DACA,6DAHA,2DACA,2DAGE,QAAS,EAEX,4BACA,4BACE,UAAW,KACX,WAAY,IACZ,MAAO,KACP,OAAQ,KACR,WAAY,KACZ,QAAS,MAAM,IAEf,QAAS,KACT,YAAa,OAGb,OAAQ,QAGV,kCACA,kCACE,WAAY,QAEd,kCACA,kCACE,OAAQ,QAEV,6DACA,6DACE,WAAY,QAEd,uBACA,uBAEE,aAAc,KACd,cAAe,KAEjB,wCACA,wCAEE,OAAQ,KAQV,0BACE,WAAY,KAId,6BACE,SAAU,SAEV,QAAS,KACT,eAAgB,OAKlB,8BAEE,MAAO,kBAGT,0BAEE,YAAa,KAQf,oCAEE,YAAa,EAEf,iCAEE,cAAe,KAGjB,iBAEE,KAAM,KAQR,0CAEE,eAAgB,KAGlB,iEACE,eAAgB,KAElB,gCACA,gCAIE,SAAU,SACV,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,EAKV,mFACA,mFAGE,OAAQ,IAEV,gCACE,MAAO,KACP,OAAQ,KACR,YAAa,EAEf,sDACE,eAAgB,KAElB,mBACE,QAAS,KACT,eAAgB,IAChB,QAAS,EAGT,eAAgB,GAElB,qEACE,QAAS,KAEX,0BACA,uBACE,MAAO,KACP,UAAW,QAEb,mDACE,OAAQ,IAEV,kBACA,mBACE,QAAS,KACT,gBAAiB,SACjB,eAAgB,OAGhB,YAAa,IAAI,IAAI,IAAI,KAE3B,yBAGE,SAAU,SAOV,MAAO,2BACP,QAAS,KACT,eAAgB,IAChB,OAAQ,EAEV,sBACE,QAAS,IAAI,KACb,WAAY,kBACZ,OAAQ,KACR,OAAQ,QAEV,+BACE,WAAY,kBAEd,uBACE,QAAS,IACT,WAAY,kBACZ,OAAQ,EAEV;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,mBACE,SAAU,QAOZ,0CACE,SAAU,SAKZ,uDADA,8DADA,sDAGE,QAAS,iBAET,YAAa,cAAc,CAAE,MAAM,CAAE,WACrC,YAAa,eACb,YAAa,OACb,UAAW,KAEX,WAAY,qBACZ,MAAO,KACP,cAAe,IACf,QAAS,IAAI,KAEb,SAAU,SACV,OAAQ,iBAER,KAAM,eAEN,kBAAmB,iBACnB,eAAgB,iBAChB,cAAe,iBACf,aAAc,iBACd,UAAW,iBAIb,sDADA,6DADA,qDAGE,QAAS,iBAAiB,KAAK,mBAAmB,IAIpD,mDADA,0DADA,kDAGE,KAAM,EACN,kBAAmB,cACnB,eAAgB,cAChB,cAAe,cACf,aAAc,cACd,UAAW,cAIb,kDADA,yDADA,iDAGE,KAAM,KACN,kBAAmB,kBACnB,eAAgB,kBAChB,cAAe,kBACf,aAAc,kBACd,UAAW,kBAEb,WACE,YAAa,OACb,WAAY,OACZ,YAAa,IACb,IAAK,qEAAqE,mBAG5E,WACE,YAAa,uBACb,WAAY,OACZ,YAAa,IACb,IAAK,kGAAkG,mBAGzG,sBACE,YAAa,uBACb,YAAa,IACb,WAAY,OACZ,UAAW,KACX,YAAa,EACb,eAAgB,OAChB,eAAgB,KAChB,QAAS,aACT,YAAa,OACb,UAAW,OACX,UAAW"}
|
|
1
|
+
{"version":3,"sources":["$stdin"],"names":[],"mappings":"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"}
|