aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini6
-rw-r--r--tests/wpt/metadata/MANIFEST.json813
-rw-r--r--tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/break-spaces-004.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/break-spaces-005.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/break-spaces-006.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/break-spaces-007.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/break-spaces-008.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-break/word-break-break-all-012.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-break/word-break-break-all-013.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-values/ic-unit-008.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-values/ic-unit-009.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-values/ic-unit-010.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-values/ic-unit-011.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-values/ic-unit-012.html.ini2
-rw-r--r--tests/wpt/metadata/encoding/single-byte-decoder.html.ini4
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini12
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/media-elements/autoplay-supported-by-feature-policy.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini2
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini5
-rw-r--r--tests/wpt/metadata/quirks/unitless-length/excluded-properties-001.html.ini21
-rw-r--r--tests/wpt/metadata/quirks/unitless-length/excluded-properties-003.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata/webvr/webvr-supported-by-feature-policy.html.ini4
-rw-r--r--tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini1
-rw-r--r--tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini1
-rw-r--r--tests/wpt/metadata/xhr/sync-xhr-supported-by-feature-policy.html.ini4
-rw-r--r--tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini2
-rw-r--r--tests/wpt/mozilla/meta/mozilla/paint_timing.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/.azure-pipelines.yml29
-rw-r--r--tests/wpt/web-platform-tests/.taskcluster.yml4
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/idb-explicit-commit.any.js69
-rw-r--r--tests/wpt/web-platform-tests/accelerometer/Accelerometer-supported-by-feature-policy.html11
-rw-r--r--tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-supported-by-feature-policy.html11
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/common.js6
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/references/translated-box-ref.html11
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/worklet-animation-pause-immediately.https.html37
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/worklet-animation-pause-resume.https.html40
-rw-r--r--tests/wpt/web-platform-tests/animation-worklet/worklet-animation-pause.https.html58
-rw-r--r--tests/wpt/web-platform-tests/background-fetch/fetch-uploads.https.window.js18
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/interaction-with-pseudo-elements.html (renamed from tests/wpt/web-platform-tests/css/css-shadow-parts/interaction-with-tree-abiding.html)32
-rw-r--r--tests/wpt/web-platform-tests/css/css-syntax/charset-is-not-a-rule.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-002.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-003.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-004.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-005.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-006.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-007.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-008.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-016.html38
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-break-spaces-005-ref.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-010.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-011.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-012.html38
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-013.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/attr-color-invalid-fallback.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-002.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/attr-length-invalid-fallback.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/attr-px-invalid-fallback.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/ic-unit-008.html49
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/ic-unit-009.html49
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/ic-unit-010.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/ic-unit-011.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/ic-unit-012.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/q-unit-case-insensitivity-001.html47
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/q-unit-case-insensitivity-002.html47
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/reference/ic-unit-008-ref.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/reference/ic-unit-009-ref.html43
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/clearkey-check-encryption-scheme.https.html32
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/clearkey-check-status-for-hdcp.https.html32
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/drm-check-encryption-scheme.https.html32
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/drm-check-status-for-hdcp.https.html32
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/encrypted-media-supported-by-feature-policy.tentative.html11
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js41
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/scripts/check-status-for-hdcp.js26
-rw-r--r--tests/wpt/web-platform-tests/event-timing/supported-types.window.js11
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/payment-supported-by-feature-policy.tentative.html11
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/picture-in-picture-supported-by-feature-policy.html11
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/unoptimized-image.jpgbin0 -> 43999 bytes
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/unoptimized-images-reporting.html24
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/reporting/unoptimized-images-reporting.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/fetch/cross-origin-resource-policy/syntax.any.js3
-rw-r--r--tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-supported-by-feature-policy.html11
-rw-r--r--tests/wpt/web-platform-tests/gyroscope/Gyroscope-supported-by-feature-policy.html11
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html40
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/frame-with-then.html4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/autoplay-supported-by-feature-policy.html11
-rw-r--r--tests/wpt/web-platform-tests/interfaces/IndexedDB.idl1
-rw-r--r--tests/wpt/web-platform-tests/interfaces/mediastream-recording.idl2
-rw-r--r--tests/wpt/web-platform-tests/magnetometer/Magnetometer-supported-by-feature-policy.html11
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-supported-by-feature-policy.html15
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html1
-rw-r--r--tests/wpt/web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html1
-rw-r--r--tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html5
-rw-r--r--tests/wpt/web-platform-tests/payment-request/historical.https.html3
-rw-r--r--tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-001.html7
-rw-r--r--tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-003.html42
-rw-r--r--tests/wpt/web-platform-tests/resources/testharness.js3
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/appcache-ordering-main.https.html28
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/claim-fetch-with-appcache.https.html81
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/appcache-ordering.manifest1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/claim-worker.js5
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js30
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/sxg-util.js24
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-policy-header.tentative.https.html62
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-remote-physical-remote-logical.tentative.https.html66
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-remote-physical-same-logical.tentative.https.html66
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-same-physical-remote-logical.tentative.https.html66
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-same-physical-same-logical.tentative.https.html66
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/sxg-referrer.tentative.https.html284
-rw-r--r--tests/wpt/web-platform-tests/storage/estimate-usage-details-application-cache.https.tentative.html29
-rw-r--r--tests/wpt/web-platform-tests/storage/estimate-usage-details-caches.https.tentative.any.js20
-rw-r--r--tests/wpt/web-platform-tests/storage/estimate-usage-details.https.tentative.any.js12
-rw-r--r--tests/wpt/web-platform-tests/storage/resources/appcache.manifest3
-rw-r--r--tests/wpt/web-platform-tests/storage/resources/iframe_with_appcache_manifest.html17
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/check_stability.py318
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/commands.json14
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/start.sh1
-rw-r--r--tests/wpt/web-platform-tests/tools/docker/Dockerfile1
-rw-r--r--tests/wpt/web-platform-tests/tools/requirements_flake8.txt2
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py5
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-supported-by-feature-policy.html11
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/new_window/new_tab.py6
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/new_window/new_window.py6
-rw-r--r--tests/wpt/web-platform-tests/webrtc-quic/RTCQuicTransport.https.html90
-rw-r--r--tests/wpt/web-platform-tests/webrtc-stats/idlharness.window.js2
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.html47
-rw-r--r--tests/wpt/web-platform-tests/webusb/usb-supported-by-feature-policy.html11
-rw-r--r--tests/wpt/web-platform-tests/webvr/webvr-supported-by-feature-policy.html11
-rw-r--r--tests/wpt/web-platform-tests/xhr/sync-xhr-supported-by-feature-policy.html11
139 files changed, 3089 insertions, 807 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
index 3a3d15b8406..947e223fb28 100644
--- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
@@ -14,9 +14,6 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
- [Revoke blob URL after calling fetch, fetch should succeed]
- expected: FAIL
-
[url-with-fetch.any.html]
[Untitled]
@@ -37,6 +34,3 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
- [Revoke blob URL after calling fetch, fetch should succeed]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 725a69a820d..fcefdf9f231 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -19377,6 +19377,30 @@
{}
]
],
+ "animation-worklet/worklet-animation-pause-immediately.https.html": [
+ [
+ "/animation-worklet/worklet-animation-pause-immediately.https.html",
+ [
+ [
+ "/animation-worklet/references/translated-box-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "animation-worklet/worklet-animation-pause-resume.https.html": [
+ [
+ "/animation-worklet/worklet-animation-pause-resume.https.html",
+ [
+ [
+ "/animation-worklet/references/translated-box-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"apng/animated-png-timeout.html": [
[
"/apng/animated-png-timeout.html",
@@ -140533,6 +140557,18 @@
{}
]
],
+ "css/css-text/overflow-wrap/overflow-wrap-break-word-006.html": [
+ [
+ "/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html",
+ [
+ [
+ "/css/css-text/overflow-wrap/reference/overflow-wrap-break-word-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/overflow-wrap/overflow-wrap-break-word-fit-content-001.html": [
[
"/css/css-text/overflow-wrap/overflow-wrap-break-word-fit-content-001.html",
@@ -142417,6 +142453,66 @@
{}
]
],
+ "css/css-text/white-space/break-spaces-004.html": [
+ [
+ "/css/css-text/white-space/break-spaces-004.html",
+ [
+ [
+ "/css/css-text/white-space/reference/pre-wrap-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/white-space/break-spaces-005.html": [
+ [
+ "/css/css-text/white-space/break-spaces-005.html",
+ [
+ [
+ "/css/css-text/white-space/reference/white-space-break-spaces-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/white-space/break-spaces-006.html": [
+ [
+ "/css/css-text/white-space/break-spaces-006.html",
+ [
+ [
+ "/css/css-text/white-space/reference/white-space-break-spaces-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/white-space/break-spaces-007.html": [
+ [
+ "/css/css-text/white-space/break-spaces-007.html",
+ [
+ [
+ "/css/css-text/white-space/reference/white-space-break-spaces-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/white-space/break-spaces-008.html": [
+ [
+ "/css/css-text/white-space/break-spaces-008.html",
+ [
+ [
+ "/css/css-text/white-space/reference/white-space-break-spaces-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/white-space/control-chars-000.html": [
[
"/css/css-text/white-space/control-chars-000.html",
@@ -143341,6 +143437,18 @@
{}
]
],
+ "css/css-text/white-space/pre-wrap-016.html": [
+ [
+ "/css/css-text/white-space/pre-wrap-016.html",
+ [
+ [
+ "/css/css-text/white-space/reference/pre-wrap-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/white-space/pre-wrap-float-001.html": [
[
"/css/css-text/white-space/pre-wrap-float-001.html",
@@ -143901,6 +144009,30 @@
{}
]
],
+ "css/css-text/word-break/word-break-break-all-012.html": [
+ [
+ "/css/css-text/word-break/word-break-break-all-012.html",
+ [
+ [
+ "/css/css-text/word-break/reference/word-break-break-all-010-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-break/word-break-break-all-013.html": [
+ [
+ "/css/css-text/word-break/word-break-break-all-013.html",
+ [
+ [
+ "/css/css-text/word-break/reference/word-break-break-all-010-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/word-break/word-break-break-all-014.html": [
[
"/css/css-text/word-break/word-break-break-all-014.html",
@@ -158221,6 +158353,66 @@
{}
]
],
+ "css/css-values/ic-unit-008.html": [
+ [
+ "/css/css-values/ic-unit-008.html",
+ [
+ [
+ "/css/css-values/reference/ic-unit-008-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-values/ic-unit-009.html": [
+ [
+ "/css/css-values/ic-unit-009.html",
+ [
+ [
+ "/css/css-values/reference/ic-unit-009-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-values/ic-unit-010.html": [
+ [
+ "/css/css-values/ic-unit-010.html",
+ [
+ [
+ "/css/css-values/reference/ic-unit-009-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-values/ic-unit-011.html": [
+ [
+ "/css/css-values/ic-unit-011.html",
+ [
+ [
+ "/css/css-values/reference/ic-unit-009-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-values/ic-unit-012.html": [
+ [
+ "/css/css-values/ic-unit-012.html",
+ [
+ [
+ "/css/css-values/reference/ic-unit-009-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-values/initial-background-color.html": [
[
"/css/css-values/initial-background-color.html",
@@ -158257,6 +158449,30 @@
{}
]
],
+ "css/css-values/q-unit-case-insensitivity-001.html": [
+ [
+ "/css/css-values/q-unit-case-insensitivity-001.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-values/q-unit-case-insensitivity-002.html": [
+ [
+ "/css/css-values/q-unit-case-insensitivity-002.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-values/vh-calc-support-pct.html": [
[
"/css/css-values/vh-calc-support-pct.html",
@@ -201908,6 +202124,11 @@
{}
]
],
+ "animation-worklet/references/translated-box-ref.html": [
+ [
+ {}
+ ]
+ ],
"animation-worklet/resources/animator-iframe.html": [
[
{}
@@ -272373,6 +272594,11 @@
{}
]
],
+ "css/css-text/white-space/reference/white-space-break-spaces-005-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-text/white-space/reference/white-space-intrinsic-size-001-ref.html": [
[
{}
@@ -275708,6 +275934,16 @@
{}
]
],
+ "css/css-values/reference/ic-unit-008-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-values/reference/ic-unit-009-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-values/reference/vh-support-atviewport-ref.htm": [
[
{}
@@ -287248,11 +287484,21 @@
{}
]
],
+ "encrypted-media/scripts/check-encryption-scheme.js": [
+ [
+ {}
+ ]
+ ],
"encrypted-media/scripts/check-initdata-type.js": [
[
{}
]
],
+ "encrypted-media/scripts/check-status-for-hdcp.js": [
+ [
+ {}
+ ]
+ ],
"encrypted-media/scripts/clearkey-update-non-ascii-input.js": [
[
{}
@@ -288028,6 +288274,16 @@
{}
]
],
+ "feature-policy/reporting/unoptimized-image.jpg": [
+ [
+ {}
+ ]
+ ],
+ "feature-policy/reporting/unoptimized-images-reporting.html.headers": [
+ [
+ {}
+ ]
+ ],
"feature-policy/reporting/unsized-media-reporting.html.headers": [
[
{}
@@ -312468,6 +312724,16 @@
{}
]
],
+ "storage/resources/appcache.manifest": [
+ [
+ {}
+ ]
+ ],
+ "storage/resources/iframe_with_appcache_manifest.html": [
+ [
+ {}
+ ]
+ ],
"streams/META.yml": [
[
{}
@@ -313523,11 +313789,6 @@
{}
]
],
- "tools/ci/check_stability.py": [
- [
- {}
- ]
- ],
"tools/ci/ci_built_diff.sh": [
[
{}
@@ -335108,6 +335369,12 @@
{}
]
],
+ "accelerometer/Accelerometer-supported-by-feature-policy.html": [
+ [
+ "/accelerometer/Accelerometer-supported-by-feature-policy.html",
+ {}
+ ]
+ ],
"accelerometer/Accelerometer.https.html": [
[
"/accelerometer/Accelerometer.https.html",
@@ -335170,6 +335437,12 @@
{}
]
],
+ "ambient-light/AmbientLightSensor-supported-by-feature-policy.html": [
+ [
+ "/ambient-light/AmbientLightSensor-supported-by-feature-policy.html",
+ {}
+ ]
+ ],
"ambient-light/AmbientLightSensor.https.html": [
[
"/ambient-light/AmbientLightSensor.https.html",
@@ -335216,6 +335489,12 @@
{}
]
],
+ "animation-worklet/worklet-animation-pause.https.html": [
+ [
+ "/animation-worklet/worklet-animation-pause.https.html",
+ {}
+ ]
+ ],
"animation-worklet/worklet-animation-with-fill-mode.https.html": [
[
"/animation-worklet/worklet-animation-with-fill-mode.https.html",
@@ -346542,9 +346821,9 @@
{}
]
],
- "css/css-shadow-parts/interaction-with-tree-abiding.html": [
+ "css/css-shadow-parts/interaction-with-pseudo-elements.html": [
[
- "/css/css-shadow-parts/interaction-with-tree-abiding.html",
+ "/css/css-shadow-parts/interaction-with-pseudo-elements.html",
{}
]
],
@@ -347268,6 +347547,12 @@
{}
]
],
+ "css/css-syntax/charset-is-not-a-rule.html": [
+ [
+ "/css/css-syntax/charset-is-not-a-rule.html",
+ {}
+ ]
+ ],
"css/css-syntax/charset/page-utf16-css-bomless-utf16.html": [
[
"/css/css-syntax/charset/page-utf16-css-bomless-utf16.html",
@@ -365732,12 +366017,24 @@
{}
]
],
+ "encrypted-media/clearkey-check-encryption-scheme.https.html": [
+ [
+ "/encrypted-media/clearkey-check-encryption-scheme.https.html",
+ {}
+ ]
+ ],
"encrypted-media/clearkey-check-initdata-type.https.html": [
[
"/encrypted-media/clearkey-check-initdata-type.https.html",
{}
]
],
+ "encrypted-media/clearkey-check-status-for-hdcp.https.html": [
+ [
+ "/encrypted-media/clearkey-check-status-for-hdcp.https.html",
+ {}
+ ]
+ ],
"encrypted-media/clearkey-events-session-closed-event.https.html": [
[
"/encrypted-media/clearkey-events-session-closed-event.https.html",
@@ -366030,12 +366327,24 @@
{}
]
],
+ "encrypted-media/drm-check-encryption-scheme.https.html": [
+ [
+ "/encrypted-media/drm-check-encryption-scheme.https.html",
+ {}
+ ]
+ ],
"encrypted-media/drm-check-initdata-type.https.html": [
[
"/encrypted-media/drm-check-initdata-type.https.html",
{}
]
],
+ "encrypted-media/drm-check-status-for-hdcp.https.html": [
+ [
+ "/encrypted-media/drm-check-status-for-hdcp.https.html",
+ {}
+ ]
+ ],
"encrypted-media/drm-events-session-closed-event.https.html": [
[
"/encrypted-media/drm-events-session-closed-event.https.html",
@@ -366414,6 +366723,12 @@
{}
]
],
+ "encrypted-media/encrypted-media-supported-by-feature-policy.tentative.html": [
+ [
+ "/encrypted-media/encrypted-media-supported-by-feature-policy.tentative.html",
+ {}
+ ]
+ ],
"encrypted-media/idlharness.https.html": [
[
"/encrypted-media/idlharness.https.html",
@@ -366516,6 +366831,12 @@
{}
]
],
+ "event-timing/supported-types.window.js": [
+ [
+ "/event-timing/supported-types.window.html",
+ {}
+ ]
+ ],
"eventsource/dedicated-worker/eventsource-close.htm": [
[
"/eventsource/dedicated-worker/eventsource-close.htm",
@@ -367094,6 +367415,12 @@
{}
]
],
+ "feature-policy/payment-supported-by-feature-policy.tentative.html": [
+ [
+ "/feature-policy/payment-supported-by-feature-policy.tentative.html",
+ {}
+ ]
+ ],
"feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [
[
"/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html",
@@ -367134,6 +367461,12 @@
}
]
],
+ "feature-policy/picture-in-picture-supported-by-feature-policy.html": [
+ [
+ "/feature-policy/picture-in-picture-supported-by-feature-policy.html",
+ {}
+ ]
+ ],
"feature-policy/reporting/camera-report-only.https.html": [
[
"/feature-policy/reporting/camera-report-only.https.html",
@@ -367282,6 +367615,12 @@
{}
]
],
+ "feature-policy/reporting/unoptimized-images-reporting.html": [
+ [
+ "/feature-policy/reporting/unoptimized-images-reporting.html",
+ {}
+ ]
+ ],
"feature-policy/reporting/unsized-media-reporting.html": [
[
"/feature-policy/reporting/unsized-media-reporting.html",
@@ -369172,6 +369511,12 @@
{}
]
],
+ "geolocation-sensor/GeolocationSensor-supported-by-feature-policy.html": [
+ [
+ "/geolocation-sensor/GeolocationSensor-supported-by-feature-policy.html",
+ {}
+ ]
+ ],
"geolocation-sensor/GeolocationSensor.https.html": [
[
"/geolocation-sensor/GeolocationSensor.https.html",
@@ -369232,6 +369577,12 @@
{}
]
],
+ "gyroscope/Gyroscope-supported-by-feature-policy.html": [
+ [
+ "/gyroscope/Gyroscope-supported-by-feature-policy.html",
+ {}
+ ]
+ ],
"gyroscope/Gyroscope.https.html": [
[
"/gyroscope/Gyroscope.https.html",
@@ -373204,6 +373555,12 @@
}
]
],
+ "html/semantics/embedded-content/media-elements/autoplay-supported-by-feature-policy.html": [
+ [
+ "/html/semantics/embedded-content/media-elements/autoplay-supported-by-feature-policy.html",
+ {}
+ ]
+ ],
"html/semantics/embedded-content/media-elements/autoplay-with-broken-track.html": [
[
"/html/semantics/embedded-content/media-elements/autoplay-with-broken-track.html",
@@ -383682,6 +384039,12 @@
{}
]
],
+ "magnetometer/Magnetometer-supported-by-feature-policy.html": [
+ [
+ "/magnetometer/Magnetometer-supported-by-feature-policy.html",
+ {}
+ ]
+ ],
"magnetometer/Magnetometer.https.html": [
[
"/magnetometer/Magnetometer.https.html",
@@ -384614,6 +384977,12 @@
{}
]
],
+ "mediacapture-streams/MediaStream-supported-by-feature-policy.html": [
+ [
+ "/mediacapture-streams/MediaStream-supported-by-feature-policy.html",
+ {}
+ ]
+ ],
"mediacapture-streams/MediaStream-video-only.https.html": [
[
"/mediacapture-streams/MediaStream-video-only.https.html",
@@ -384647,7 +385016,9 @@
"mediacapture-streams/MediaStreamTrack-getSettings.https.html": [
[
"/mediacapture-streams/MediaStreamTrack-getSettings.https.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"mediacapture-streams/MediaStreamTrack-id.https.html": [
@@ -398828,6 +399199,12 @@
{}
]
],
+ "quirks/unitless-length/excluded-properties-003.html": [
+ [
+ "/quirks/unitless-length/excluded-properties-003.html",
+ {}
+ ]
+ ],
"quirks/unitless-length/limited-quirks.html": [
[
"/quirks/unitless-length/limited-quirks.html",
@@ -409954,6 +410331,12 @@
{}
]
],
+ "service-workers/service-worker/claim-fetch-with-appcache.https.html": [
+ [
+ "/service-workers/service-worker/claim-fetch-with-appcache.https.html",
+ {}
+ ]
+ ],
"service-workers/service-worker/claim-fetch.https.html": [
[
"/service-workers/service-worker/claim-fetch.https.html",
@@ -411744,9 +412127,33 @@
{}
]
],
- "signed-exchange/sxg-referrer.tentative.https.html": [
+ "signed-exchange/sxg-referrer-policy-header.tentative.https.html": [
+ [
+ "/signed-exchange/sxg-referrer-policy-header.tentative.https.html",
+ {}
+ ]
+ ],
+ "signed-exchange/sxg-referrer-remote-physical-remote-logical.tentative.https.html": [
[
- "/signed-exchange/sxg-referrer.tentative.https.html",
+ "/signed-exchange/sxg-referrer-remote-physical-remote-logical.tentative.https.html",
+ {}
+ ]
+ ],
+ "signed-exchange/sxg-referrer-remote-physical-same-logical.tentative.https.html": [
+ [
+ "/signed-exchange/sxg-referrer-remote-physical-same-logical.tentative.https.html",
+ {}
+ ]
+ ],
+ "signed-exchange/sxg-referrer-same-physical-remote-logical.tentative.https.html": [
+ [
+ "/signed-exchange/sxg-referrer-same-physical-remote-logical.tentative.https.html",
+ {}
+ ]
+ ],
+ "signed-exchange/sxg-referrer-same-physical-same-logical.tentative.https.html": [
+ [
+ "/signed-exchange/sxg-referrer-same-physical-same-logical.tentative.https.html",
{}
]
],
@@ -411856,6 +412263,22 @@
{}
]
],
+ "storage/estimate-usage-details-application-cache.https.tentative.html": [
+ [
+ "/storage/estimate-usage-details-application-cache.https.tentative.html",
+ {}
+ ]
+ ],
+ "storage/estimate-usage-details-caches.https.tentative.any.js": [
+ [
+ "/storage/estimate-usage-details-caches.https.tentative.any.html",
+ {}
+ ],
+ [
+ "/storage/estimate-usage-details-caches.https.tentative.any.worker.html",
+ {}
+ ]
+ ],
"storage/estimate-usage-details-indexeddb.https.tentative.any.js": [
[
"/storage/estimate-usage-details-indexeddb.https.tentative.any.html",
@@ -411872,6 +412295,16 @@
{}
]
],
+ "storage/estimate-usage-details.https.tentative.any.js": [
+ [
+ "/storage/estimate-usage-details.https.tentative.any.html",
+ {}
+ ],
+ [
+ "/storage/estimate-usage-details.https.tentative.any.worker.html",
+ {}
+ ]
+ ],
"storage/idlharness.https.any.js": [
[
"/storage/idlharness.https.any.html",
@@ -415698,6 +416131,12 @@
{}
]
],
+ "wake-lock/wakelock-supported-by-feature-policy.html": [
+ [
+ "/wake-lock/wakelock-supported-by-feature-policy.html",
+ {}
+ ]
+ ],
"wake-lock/wakelock-type.https.html": [
[
"/wake-lock/wakelock-type.https.html",
@@ -422138,6 +422577,12 @@
{}
]
],
+ "webusb/usb-supported-by-feature-policy.html": [
+ [
+ "/webusb/usb-supported-by-feature-policy.html",
+ {}
+ ]
+ ],
"webusb/usb.https.any.js": [
[
"/webusb/usb.https.any.html",
@@ -422328,6 +422773,12 @@
{}
]
],
+ "webvr/webvr-supported-by-feature-policy.html": [
+ [
+ "/webvr/webvr-supported-by-feature-policy.html",
+ {}
+ ]
+ ],
"webvtt/api/VTTCue/align.html": [
[
"/webvtt/api/VTTCue/align.html",
@@ -425972,6 +426423,12 @@
}
]
],
+ "xhr/sync-xhr-supported-by-feature-policy.html": [
+ [
+ "/xhr/sync-xhr-supported-by-feature-policy.html",
+ {}
+ ]
+ ],
"xhr/template-element.html": [
[
"/xhr/template-element.html",
@@ -446862,7 +447319,7 @@
},
"paths": {
".azure-pipelines.yml": [
- "387c55a5ec45ef3c27b2d5cd5f057f3067457aed",
+ "acfb09963915de916d13fe8c903eadac473afaa8",
"support"
],
".codecov.yml": [
@@ -446882,7 +447339,7 @@
"support"
],
".taskcluster.yml": [
- "4a6de3b5b177a41dd2f5b7318a837e5e4eae54a8",
+ "ae99c0960acc56ca0970d9a03538e20c42179811",
"support"
],
".travis.yml": [
@@ -451642,7 +452099,7 @@
"testharness"
],
"IndexedDB/idb-explicit-commit.any.js": [
- "da4bd8c95269d6f0630d77ba4922a8251f7c18e6",
+ "12e56cc267a2a8ecb869b8b121f6e74047d0f73d",
"testharness"
],
"IndexedDB/idb_binary_key_conversion.htm": [
@@ -453913,6 +454370,10 @@
"6a8c9bcb7fc313e66421a7134b201cc3b956c8ec",
"testharness"
],
+ "accelerometer/Accelerometer-supported-by-feature-policy.html": [
+ "8e09c7acdfba7d77ce2a17c8a41ace0ee3a32cdc",
+ "testharness"
+ ],
"accelerometer/Accelerometer.https.html": [
"b601c6120827078fd503e0a8c2609219a2c27f1e",
"testharness"
@@ -454745,6 +455206,10 @@
"9600843145cd2771629fea765bc853467a5d5bf9",
"testharness"
],
+ "ambient-light/AmbientLightSensor-supported-by-feature-policy.html": [
+ "d5c27c8bef29195641029009c9546f16e3758f22",
+ "testharness"
+ ],
"ambient-light/AmbientLightSensor.https.html": [
"8fcc4c7cd227fee26907b7f0e0798ba6cd8f1a5d",
"testharness"
@@ -454774,7 +455239,7 @@
"testharness"
],
"animation-worklet/common.js": [
- "eb114f24687289fcdd0515ead7dbbc074c7ccbba",
+ "15dff829774a49a1c17eacefebc7e5e34a422f9d",
"support"
],
"animation-worklet/current-time.https.html": [
@@ -454785,6 +455250,10 @@
"e821a2fee8a3ace54e8e7092ab17c490a0ded914",
"testharness"
],
+ "animation-worklet/references/translated-box-ref.html": [
+ "c73f5a177bf70f3a71d981bc9f04b38c5afe9f1c",
+ "support"
+ ],
"animation-worklet/resources/animator-iframe.html": [
"e30cc281fcdefd8d029e7bf0ea92a1a9cd7af7e7",
"support"
@@ -454793,6 +455262,18 @@
"5b20f03bfadb5790c79ddd51e1f3d89a9f948852",
"testharness"
],
+ "animation-worklet/worklet-animation-pause-immediately.https.html": [
+ "f9dcf30bc908adb4e6b260dd00263e434a9b9ae4",
+ "reftest"
+ ],
+ "animation-worklet/worklet-animation-pause-resume.https.html": [
+ "f26a93468c07de8e59a3826cb39c6bdf2618706f",
+ "reftest"
+ ],
+ "animation-worklet/worklet-animation-pause.https.html": [
+ "4b7a9a0251da7c8179f68249578dc851b145c850",
+ "testharness"
+ ],
"animation-worklet/worklet-animation-with-fill-mode.https.html": [
"49fead8bd39c56c6335c0748b01be0181767bbec",
"testharness"
@@ -456858,7 +457339,7 @@
"testharness"
],
"background-fetch/fetch-uploads.https.window.js": [
- "4ee618a1292184420615c2f46b0860c1cc1a316f",
+ "f93f88a6bae7432ede7068934535e42fe2f5baee",
"testharness"
],
"background-fetch/fetch.https.window.js": [
@@ -571513,8 +571994,8 @@
"a064789f06111bf5ce791650207bcee195d346ab",
"reftest"
],
- "css/css-shadow-parts/interaction-with-tree-abiding.html": [
- "c11da7d12dea91306b79d141613ad6563dffb18f",
+ "css/css-shadow-parts/interaction-with-pseudo-elements.html": [
+ "776ab2eb69dc77927c213a7fd99dd116376cf710",
"testharness"
],
"css/css-shadow-parts/invalidation-change-exportparts-forward.html": [
@@ -573193,6 +573674,10 @@
"17489e1bc2132f4c2acbc4ec901eccb8f7e4d365",
"support"
],
+ "css/css-syntax/charset-is-not-a-rule.html": [
+ "81b2a04dc5a0dd2f3434150f7bfb6a6d3f1cfef3",
+ "testharness"
+ ],
"css/css-syntax/charset/.htaccess": [
"e14b20d395197af75339b2ae97864f526a698b39",
"support"
@@ -576738,21 +577223,25 @@
"reftest"
],
"css/css-text/overflow-wrap/overflow-wrap-break-word-002.html": [
- "660b7f163020a3f14385f77a43dbd6ab7fde32be",
+ "6f90f0c0cb8c00ee9552b9a0434c9d79fd8b7672",
"reftest"
],
"css/css-text/overflow-wrap/overflow-wrap-break-word-003.html": [
- "6203b55e9c6fe73cd317c3d4968c56609209b38d",
+ "05e570bbb13e88dc8f47c09941d9c9a2017c5447",
"reftest"
],
"css/css-text/overflow-wrap/overflow-wrap-break-word-004.html": [
- "b277319cd23831a4911978f450d0bc812aedb695",
+ "5f36410feba29162988ef6ae67fd0a139a6f90ba",
"reftest"
],
"css/css-text/overflow-wrap/overflow-wrap-break-word-005.html": [
"dd005a816f2febca4c41b52df75372019c5fb451",
"reftest"
],
+ "css/css-text/overflow-wrap/overflow-wrap-break-word-006.html": [
+ "6dc1b4dff52459d7f5516da64f4e09be313257d1",
+ "reftest"
+ ],
"css/css-text/overflow-wrap/overflow-wrap-break-word-fit-content-001.html": [
"2c83c46aa50f6d51efbb4d05635d86f7c166042d",
"reftest"
@@ -578369,6 +578858,26 @@
"dd9b9919fbb73ec843b5480bba3b7bfb21ed873f",
"reftest"
],
+ "css/css-text/white-space/break-spaces-004.html": [
+ "e2c043ec42ec13af1d4b8d4cca93ded78ec6519e",
+ "reftest"
+ ],
+ "css/css-text/white-space/break-spaces-005.html": [
+ "d0dafd38c047c54e93ef197e0600aeafea4af6a6",
+ "reftest"
+ ],
+ "css/css-text/white-space/break-spaces-006.html": [
+ "5f9d605866d7e7455ef399554b7d97238d5974a7",
+ "reftest"
+ ],
+ "css/css-text/white-space/break-spaces-007.html": [
+ "77213618bd97299e87b2d6dc4040b78f87030dfc",
+ "reftest"
+ ],
+ "css/css-text/white-space/break-spaces-008.html": [
+ "d183cac942f7ad982f582567fdad798b30460e59",
+ "reftest"
+ ],
"css/css-text/white-space/control-chars-000.html": [
"b038fe9a90d3b8b9cb3bde7fd46396c7121688c9",
"reftest"
@@ -578677,6 +579186,10 @@
"b17af29bf54b573268522619d6e993750f9b51be",
"reftest"
],
+ "css/css-text/white-space/pre-wrap-016.html": [
+ "5f66a7be92b3c2a9aa9596c1237dd0ceaeac9b6d",
+ "reftest"
+ ],
"css/css-text/white-space/pre-wrap-float-001.html": [
"6ef0faa0cf8e22ddea43dcd06ce3f9e5edf9cfd6",
"reftest"
@@ -578757,6 +579270,10 @@
"9f579f29e0c897c744e1b06d5d2d60e85612f823",
"support"
],
+ "css/css-text/white-space/reference/white-space-break-spaces-005-ref.html": [
+ "3247ae5a881ee513ae0b26821133b702fd473993",
+ "support"
+ ],
"css/css-text/white-space/reference/white-space-intrinsic-size-001-ref.html": [
"1f1761d5a3de94e63cf231d892d50704ddee8d6b",
"support"
@@ -579170,11 +579687,19 @@
"reftest"
],
"css/css-text/word-break/word-break-break-all-010.html": [
- "7d3bc056d822ca15b523f332c6c23ed22a85b340",
+ "be46d29d7ddf6a4b8013956a86828dbd10e6ca75",
"reftest"
],
"css/css-text/word-break/word-break-break-all-011.html": [
- "531c68d8cea3f3496e34b26ae51e1138385acbb8",
+ "fade439dd9a9d4505e3ab7b9060a2f962eb6fd95",
+ "reftest"
+ ],
+ "css/css-text/word-break/word-break-break-all-012.html": [
+ "cd3d44056ec9715c0a9599bf5b7cad180620af74",
+ "reftest"
+ ],
+ "css/css-text/word-break/word-break-break-all-013.html": [
+ "85dce08b6418088292c50e30dab9f497b31fb6ac",
"reftest"
],
"css/css-text/word-break/word-break-break-all-014.html": [
@@ -589330,7 +589855,7 @@
"reftest"
],
"css/css-values/attr-color-invalid-fallback.html": [
- "92258893b9e886d6de6bd27ab37a3afcc673e3df",
+ "9e016d1630d37b3af41fbbd1f1231341ee54afcf",
"reftest"
],
"css/css-values/attr-color-valid.html": [
@@ -589338,11 +589863,11 @@
"reftest"
],
"css/css-values/attr-invalid-type-001.html": [
- "c427adecbebf2795946d84e5817481d88a88aeb7",
+ "1f88c37c64038343b17d0960326c63fb8e625340",
"reftest"
],
"css/css-values/attr-invalid-type-002.html": [
- "797700ddacf7f72e8c65948de6d30ac0dc33f97e",
+ "dbdac8a4ba1cf15e583684c9c2b3ac158c0af614",
"reftest"
],
"css/css-values/attr-length-invalid-cast.html": [
@@ -589350,7 +589875,7 @@
"reftest"
],
"css/css-values/attr-length-invalid-fallback.html": [
- "6a5d4dfe68af677986dae351cc629263648059a3",
+ "e68fe7a47015c5868e0efb78c26f44e17f3c8764",
"reftest"
],
"css/css-values/attr-length-valid-zero-nofallback.html": [
@@ -589370,7 +589895,7 @@
"reftest"
],
"css/css-values/attr-px-invalid-fallback.html": [
- "778697d0d1f2381d71a5c45a7ac269ecd7394c41",
+ "f8f88f58094974ca284d0a99f486e33ed89fb550",
"reftest"
],
"css/css-values/attr-px-valid.html": [
@@ -589485,6 +590010,26 @@
"257a243359ad1604567bf10c52662c1fe12de6bf",
"reftest"
],
+ "css/css-values/ic-unit-008.html": [
+ "05ab218069871eb9d7d3df5e5d09be4f5dcc328a",
+ "reftest"
+ ],
+ "css/css-values/ic-unit-009.html": [
+ "11ec5985c0288cef75d02869124eddfe131251fd",
+ "reftest"
+ ],
+ "css/css-values/ic-unit-010.html": [
+ "ca963041a32b30c0aaa552e8093db32c7443b9c4",
+ "reftest"
+ ],
+ "css/css-values/ic-unit-011.html": [
+ "584002247196c8b2af5becf89d9694379b1e0350",
+ "reftest"
+ ],
+ "css/css-values/ic-unit-012.html": [
+ "ac281ccd4afb7ed68e67d286659ec89d3b8c4f23",
+ "reftest"
+ ],
"css/css-values/initial-background-color.html": [
"f38226651774f9ac2151b9b951f47f519a4663ea",
"reftest"
@@ -589505,6 +590050,14 @@
"295b418f304a76cde4dba21a1d24022557882b18",
"testharness"
],
+ "css/css-values/q-unit-case-insensitivity-001.html": [
+ "b4a08aa117952c6f92e2aec6f57843b46a460104",
+ "reftest"
+ ],
+ "css/css-values/q-unit-case-insensitivity-002.html": [
+ "328fcbd4aed6268e77ec19759a69f9eeb788951b",
+ "reftest"
+ ],
"css/css-values/reference/200-200-green.html": [
"f3da3ddb3b8d90df91aa60d88f0c13d28eccef09",
"support"
@@ -589529,6 +590082,14 @@
"962a748d2c059b45fca4d7788b04b77c61e0b923",
"support"
],
+ "css/css-values/reference/ic-unit-008-ref.html": [
+ "6a27f6e820d565de02f998da3aa7e5e22129e2fb",
+ "support"
+ ],
+ "css/css-values/reference/ic-unit-009-ref.html": [
+ "2ae37b8b619bf9adea6c4f39ae87836c551bfc37",
+ "support"
+ ],
"css/css-values/reference/vh-support-atviewport-ref.htm": [
"cfa9e8d02d48436ee1c311da7c7bd65b0f4291cf",
"support"
@@ -614681,10 +615242,18 @@
"932c9962d53adc6fdd76a6efcbcefc3acb9fef50",
"support"
],
+ "encrypted-media/clearkey-check-encryption-scheme.https.html": [
+ "eb580ea5f87f465dff7e1b479cd28088c5f8c417",
+ "testharness"
+ ],
"encrypted-media/clearkey-check-initdata-type.https.html": [
"00894338ae8a04fe62528771bfda3dc25496ce1f",
"testharness"
],
+ "encrypted-media/clearkey-check-status-for-hdcp.https.html": [
+ "5ec3b262852eebbe82afa68e4fad5db908744d90",
+ "testharness"
+ ],
"encrypted-media/clearkey-events-session-closed-event.https.html": [
"ddf3ecbbbf78cce7c6ac985d85445f139b4e9c6c",
"testharness"
@@ -614917,10 +615486,18 @@
"659a61cdcf1270cb99a058f89d817f283436e2d9",
"support"
],
+ "encrypted-media/drm-check-encryption-scheme.https.html": [
+ "862591b1b897027d201384857fe37f73ac6b96e6",
+ "testharness"
+ ],
"encrypted-media/drm-check-initdata-type.https.html": [
"6b3324027b8aad5f7da65c7ca9a8a3ce3c55c65f",
"testharness"
],
+ "encrypted-media/drm-check-status-for-hdcp.https.html": [
+ "68c45be69b7bfc317f0be2a55b4a38c6e959f55e",
+ "testharness"
+ ],
"encrypted-media/drm-events-session-closed-event.https.html": [
"425d17646ca277ff811e55f3216d8a9570e848f5",
"testharness"
@@ -615125,6 +615702,10 @@
"a5114262ad070d9194a1299c2b1bceaaab1e5aba",
"testharness"
],
+ "encrypted-media/encrypted-media-supported-by-feature-policy.tentative.html": [
+ "5b2d2240c6ad5d15e17a877f5d06946fa137de6f",
+ "testharness"
+ ],
"encrypted-media/idlharness.https.html": [
"6a2ae80a5384aa885d7a1545b19f41cc828c420e",
"testharness"
@@ -615181,10 +615762,18 @@
"3a4262b179c65c0cafad0a934b46397a2f5f6e95",
"support"
],
+ "encrypted-media/scripts/check-encryption-scheme.js": [
+ "5d629271b42ff374e1b40a9a3b4113b42d1afbaf",
+ "support"
+ ],
"encrypted-media/scripts/check-initdata-type.js": [
"5c7cb6e4b9a427d4f15364027724e13ba836d89e",
"support"
],
+ "encrypted-media/scripts/check-status-for-hdcp.js": [
+ "ac3081969523864bc5396447c887dc7944c3d5db",
+ "support"
+ ],
"encrypted-media/scripts/clearkey-update-non-ascii-input.js": [
"b34c493fd113a91780bf365800b71b98b6a3bfd6",
"support"
@@ -615561,6 +616150,10 @@
"5c2d1b1fc5d8e6518e6db1bca6f1947d615979d3",
"support"
],
+ "event-timing/supported-types.window.js": [
+ "c81d501f49fc583904ebf3fd4e83bb315e718d7e",
+ "testharness"
+ ],
"eventsource/META.yml": [
"92f1036338515da7807fdbde7ab0a26f509cc986",
"support"
@@ -616205,6 +616798,10 @@
"a2836778bc5389fdb65e9f6d5f83c7967200866f",
"support"
],
+ "feature-policy/payment-supported-by-feature-policy.tentative.html": [
+ "07dec701769dfecabac636e7a33eddb254e0d629",
+ "testharness"
+ ],
"feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [
"a5ea5139a937984c98f169a088bc6d59f0ba4351",
"testharness"
@@ -616233,6 +616830,10 @@
"1759381fdc4141302f1b95868550ead76d9f5ca7",
"support"
],
+ "feature-policy/picture-in-picture-supported-by-feature-policy.html": [
+ "a65c682a6add63722cbb595d1639b6400356b978",
+ "testharness"
+ ],
"feature-policy/reporting/camera-report-only.https.html": [
"c22e1a51740d4b27bcc4ae0efa4bdb0c4b8fcf39",
"testharness"
@@ -616425,6 +617026,18 @@
"21a909e1fb6d84f066f42c09488f1bef032171c9",
"support"
],
+ "feature-policy/reporting/unoptimized-image.jpg": [
+ "599137a55d710fe6b8d3052c05c81915622ea0d0",
+ "support"
+ ],
+ "feature-policy/reporting/unoptimized-images-reporting.html": [
+ "fb27a13996a46b0e4592f4d28cc3574ae1745fb5",
+ "testharness"
+ ],
+ "feature-policy/reporting/unoptimized-images-reporting.html.headers": [
+ "10b41235409ea38507d9ffe29a18547174351cc3",
+ "support"
+ ],
"feature-policy/reporting/unsized-media-reporting.html": [
"bb81a496ca5b8128b7438e6f1dd4ed0dd574238c",
"testharness"
@@ -617670,7 +618283,7 @@
"testharness"
],
"fetch/cross-origin-resource-policy/syntax.any.js": [
- "cf5b06d5c4f4b60749e38f6a469a85e5efff0ea6",
+ "dc874977a63e51978af6a4a6769d81750beec200",
"testharness"
],
"fetch/data-urls/README.md": [
@@ -619037,6 +619650,10 @@
"68a99029f63b04d3ce44f2564f39f31062376dfd",
"testharness"
],
+ "geolocation-sensor/GeolocationSensor-supported-by-feature-policy.html": [
+ "aa05f33a5e48dae1733c8a17c17fe0135885d8a9",
+ "testharness"
+ ],
"geolocation-sensor/GeolocationSensor.https.html": [
"ef198438fdee21bb667f9e23795caea4dc23e833",
"testharness"
@@ -619125,6 +619742,10 @@
"02edf4bd232ec2878b3d9f5ff7a0bc976eb41e39",
"testharness"
],
+ "gyroscope/Gyroscope-supported-by-feature-policy.html": [
+ "06a4137f17dae94eb3b80edd625a0a382d693bb8",
+ "testharness"
+ ],
"gyroscope/Gyroscope.https.html": [
"0c3f08f5f47c60817cfe0aed38829953459b9041",
"testharness"
@@ -621194,11 +621815,11 @@
"testharness"
],
"html/browsers/origin/cross-origin-objects/cross-origin-objects.html": [
- "caac56a176de5b05aed6cc83c9c7b730310870aa",
+ "888343b45bcd901b6b665453170c41ad4cc5a753",
"testharness"
],
"html/browsers/origin/cross-origin-objects/frame-with-then.html": [
- "96cdf1ea99b1c41f99ee50a795b308723a94bec7",
+ "1127995ea84dcd94fe87642b95b34e597f30abba",
"support"
],
"html/browsers/origin/cross-origin-objects/frame.html": [
@@ -629033,6 +629654,10 @@
"69ce436270a8715da3e7e4cea125824c2bbf57dc",
"support"
],
+ "html/semantics/embedded-content/media-elements/autoplay-supported-by-feature-policy.html": [
+ "af4de6bf89d493c03545e1c6188dbbc0c8fc6a2e",
+ "testharness"
+ ],
"html/semantics/embedded-content/media-elements/autoplay-with-broken-track.html": [
"f687edf198dbb65064d90d4c3fc8baf4d684cde7",
"testharness"
@@ -638726,7 +639351,7 @@
"support"
],
"interfaces/IndexedDB.idl": [
- "137528c148ae434141eb72e9720bd9e3eaf04a30",
+ "868338b3080ccad6195c5764e6b70eb4854a93c3",
"support"
],
"interfaces/InputDeviceCapabilities.idl": [
@@ -639022,7 +639647,7 @@
"support"
],
"interfaces/mediastream-recording.idl": [
- "5bf661e6cc5e2141181fef1f01eafa6e4da82248",
+ "0be0538d1227147930cb03c52391cce7497eb2e4",
"support"
],
"interfaces/mst-content-hint.idl": [
@@ -639785,6 +640410,10 @@
"04c9800fc018dcb51584e204f453d74bd2647c2c",
"testharness"
],
+ "magnetometer/Magnetometer-supported-by-feature-policy.html": [
+ "a04936389507ca4b6da5ea727ef094ed6d39a77f",
+ "testharness"
+ ],
"magnetometer/Magnetometer.https.html": [
"661ea68a82d6f066daa0bddf27780e10f92fd638",
"testharness"
@@ -641153,6 +641782,10 @@
"b934397914f39cee6bb9a52915959233c0ca84ca",
"testharness"
],
+ "mediacapture-streams/MediaStream-supported-by-feature-policy.html": [
+ "ef29ae6eec210a2d88064d6671f0cceb6137e05f",
+ "testharness"
+ ],
"mediacapture-streams/MediaStream-video-only.https.html": [
"88200b23306ac4d7f7f39870f8b2642394acf977",
"testharness"
@@ -641178,7 +641811,7 @@
"testharness"
],
"mediacapture-streams/MediaStreamTrack-getSettings.https.html": [
- "158c9014617744c7181fba4862bdb7ce7e672b9d",
+ "c062205f0d4bb6706170c07f0d58d4a63cdb7bca",
"testharness"
],
"mediacapture-streams/MediaStreamTrack-id.https.html": [
@@ -651270,7 +651903,7 @@
"testharness"
],
"payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html": [
- "edde533be6b2e49415b81ae4df167139117a0d7c",
+ "45f3f0a5672cf64501718aa43dc5aac87249bab9",
"manual"
],
"payment-request/PaymentMethodChangeEvent/methodDetails-attribute.https.html": [
@@ -651322,7 +651955,7 @@
"manual"
],
"payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html": [
- "356f30da6b54bef4136a2b3a806313bf4bb1f766",
+ "c3e2ba713223c94689d4549aa90008fe91faeb7c",
"manual"
],
"payment-request/algorithms-manual.https.html": [
@@ -651398,7 +652031,7 @@
"testharness"
],
"payment-request/historical.https.html": [
- "cbd29d4cff8698365c05acfe75504de5ec7e1aec",
+ "e681f6486b9bdd46d7420cac15855dc9acaa2ca7",
"testharness"
],
"payment-request/idlharness.https.window.js": [
@@ -652826,13 +653459,17 @@
"reftest"
],
"quirks/unitless-length/excluded-properties-001.html": [
- "2e33cec0b33644576fb81e6fd9dbaf42bb02cf92",
+ "09fedcf6018a673d22f397936a0c6d25ae7fd9ae",
"testharness"
],
"quirks/unitless-length/excluded-properties-002.html": [
"5f98bc283ebc2b5d719815c59c3d1cd53acd2ed9",
"testharness"
],
+ "quirks/unitless-length/excluded-properties-003.html": [
+ "4cbe012a55e25510f5674875dddb6fb1fcb7173d",
+ "testharness"
+ ],
"quirks/unitless-length/limited-quirks.html": [
"fab0b3b805bad3670ffce46f627ad4134c55a027",
"testharness"
@@ -662782,7 +663419,7 @@
"support"
],
"resources/testharness.js": [
- "ed3ffb425a85cb8fabd8bba0d7a0a4f7b46437cd",
+ "fb86c580d22ca14159b19b21a55b2cabfc76a742",
"support"
],
"resources/testharness.js.headers": [
@@ -665094,13 +665731,17 @@
"testharness"
],
"service-workers/service-worker/appcache-ordering-main.https.html": [
- "921dae015cb55cf805ad960e902bbb22890f80bc",
+ "a86671c1fe4ec94cec84d63bb7e30922b03cf11a",
"testharness"
],
"service-workers/service-worker/claim-affect-other-registration.https.html": [
"52555ac271b5bad279ab37352c9d9937c780909a",
"testharness"
],
+ "service-workers/service-worker/claim-fetch-with-appcache.https.html": [
+ "4890a84ba10fa186e2e213d66d58a4937d2c8609",
+ "testharness"
+ ],
"service-workers/service-worker/claim-fetch.https.html": [
"6b7d353c6ae3b53c5c7d9398f09fb2f476201db1",
"testharness"
@@ -665818,7 +666459,7 @@
"support"
],
"service-workers/service-worker/resources/appcache-ordering.manifest": [
- "0deed0e91a80214520673c188a3090ebb657f6c0",
+ "e6597ccb8acb0dceb4a990c3148debe3c4ff8f21",
"support"
],
"service-workers/service-worker/resources/blank.html": [
@@ -665862,7 +666503,7 @@
"support"
],
"service-workers/service-worker/resources/claim-worker.js": [
- "53f210cf7634993f86310cdefec9a15fd6b699a0",
+ "18004079475e2bbd9d1a8d25ae4b26c7638de58e",
"support"
],
"service-workers/service-worker/resources/classic-worker.js": [
@@ -666830,7 +667471,7 @@
"support"
],
"service-workers/service-worker/resources/test-helpers.sub.js": [
- "7efde354a8f9b3b157972dca8e5a3c5b5eb4116a",
+ "14101319fa9d9e4c76f33a471098d280f117a15f",
"support"
],
"service-workers/service-worker/resources/testharness-helpers.js": [
@@ -667910,7 +668551,7 @@
"support"
],
"signed-exchange/resources/sxg-util.js": [
- "0d0e263fd620584b64b059fef1d11f315f4c2423",
+ "7d592ea21431802655ce3134d50718ef37394a42",
"support"
],
"signed-exchange/resources/sxg-version1b2.sxg": [
@@ -668025,8 +668666,24 @@
"5b60ab9e1a12e2b169c4972c422ddbe3ebc5f581",
"testharness"
],
- "signed-exchange/sxg-referrer.tentative.https.html": [
- "3be9b1ff9b430e986dc8784a680b11659ab480fa",
+ "signed-exchange/sxg-referrer-policy-header.tentative.https.html": [
+ "5dff6af8cb08c665622b2c44437d6a51c537f4fc",
+ "testharness"
+ ],
+ "signed-exchange/sxg-referrer-remote-physical-remote-logical.tentative.https.html": [
+ "c2870fdd0afce54e66f19ceb0b88deb898cf5787",
+ "testharness"
+ ],
+ "signed-exchange/sxg-referrer-remote-physical-same-logical.tentative.https.html": [
+ "b3c77d14273f2cca42c078862f2bae5be4d38690",
+ "testharness"
+ ],
+ "signed-exchange/sxg-referrer-same-physical-remote-logical.tentative.https.html": [
+ "8a6cdd993af3aa0e8b047c94512454de76b35a8e",
+ "testharness"
+ ],
+ "signed-exchange/sxg-referrer-same-physical-same-logical.tentative.https.html": [
+ "88917167b9c8ffcf0e08a24cf09cbf76381623a3",
"testharness"
],
"signed-exchange/sxg-utf8-inner-url.tentative.html": [
@@ -668121,6 +668778,14 @@
"090f004b8514bc9c99e8f85f9e8f9073dff2a263",
"testharness"
],
+ "storage/estimate-usage-details-application-cache.https.tentative.html": [
+ "464a99887bdb1a5b38c3bce395552bf6b50ff0fe",
+ "testharness"
+ ],
+ "storage/estimate-usage-details-caches.https.tentative.any.js": [
+ "bf889f84184f0c8cb17997d392f738d062cce908",
+ "testharness"
+ ],
"storage/estimate-usage-details-indexeddb.https.tentative.any.js": [
"c854d5b8848638d11563a48348e7c3393ff58459",
"testharness"
@@ -668129,6 +668794,10 @@
"cf3a2aa9430d480df4fc7ff2487e7a42d5c15699",
"testharness"
],
+ "storage/estimate-usage-details.https.tentative.any.js": [
+ "2a1cea5fb8dfa78c320328e667bb7ffd940802b0",
+ "testharness"
+ ],
"storage/helpers.js": [
"fbc746a30b6dfa6d00fc2db747c78ec09a7beefc",
"support"
@@ -668153,6 +668822,14 @@
"57e15f0e811de3e94652b2f16c5482a94be63c24",
"testharness"
],
+ "storage/resources/appcache.manifest": [
+ "ce90bafd21feba90680448fd930ad477bf188638",
+ "support"
+ ],
+ "storage/resources/iframe_with_appcache_manifest.html": [
+ "8365ce41f494936a8f8f4b7c2be9d80ffbe38cf8",
+ "support"
+ ],
"storage/storagemanager-estimate.https.any.js": [
"d1d2e21924cd016165b02436dea994f44c193cd9",
"testharness"
@@ -672553,10 +673230,6 @@
"ea53f969015f0f79a98a64abc968d4424b407a89",
"support"
],
- "tools/ci/check_stability.py": [
- "a71e0956629a86ff1769014767a894471e5b09bb",
- "support"
- ],
"tools/ci/ci_built_diff.sh": [
"81bf098f56aad48b7b3fce2d7cabd606fefa2d4e",
"support"
@@ -672586,7 +673259,7 @@
"support"
],
"tools/ci/commands.json": [
- "361c9e4f3de88b89019481af17875979dc532e5b",
+ "841fd855c8056829afd347e3067e55804ca65139",
"support"
],
"tools/ci/install.sh": [
@@ -672610,7 +673283,7 @@
"support"
],
"tools/ci/start.sh": [
- "9f621b2326e7769a232cf620a4863f4104d35ed1",
+ "580bfb937ddc21c1ce1c6729b2b6ba12f7efe79d",
"support"
],
"tools/ci/tag_master.py": [
@@ -672638,7 +673311,7 @@
"support"
],
"tools/docker/Dockerfile": [
- "20f6ef26c7ae54acf48cdba353d5b1970e97c989",
+ "53564ac135c909d19138bee24780c28ddba04a03",
"support"
],
"tools/docker/start.sh": [
@@ -673294,7 +673967,7 @@
"support"
],
"tools/requirements_flake8.txt": [
- "d2e7dd64232ad76a71d00368d163957922aeedcb",
+ "00d182e2d0f5fc013056951229e3aa3f38143369",
"support"
],
"tools/runner/css/bootstrap-theme.min.css": [
@@ -677370,7 +678043,7 @@
"support"
],
"tools/wpt/tests/test_wpt.py": [
- "bf6250f2903545cf510478fa079361aae917dd95",
+ "1ddac67a39a368e44b94150a502caa0e32f8044f",
"support"
],
"tools/wpt/tox.ini": [
@@ -677646,7 +678319,7 @@
"support"
],
"tools/wptrunner/wptrunner/browsers/firefox.py": [
- "3b5c96caed66dd6e8fd3b639fa7c8f2aa79beb02",
+ "67d5b6ec2f5e97046c020947c8449d5205a713bf",
"support"
],
"tools/wptrunner/wptrunner/browsers/ie.py": [
@@ -677810,7 +678483,7 @@
"support"
],
"tools/wptrunner/wptrunner/metadata.py": [
- "94560cd93ff14818ce3de60f3866714043c24236",
+ "b170fc663165af2c20061184ebea8a0a93cf3b01",
"support"
],
"tools/wptrunner/wptrunner/products.py": [
@@ -677934,7 +678607,7 @@
"support"
],
"tools/wptrunner/wptrunner/wptcommandline.py": [
- "8443a01c7dea9d8839f9659e194614bcbf4caedb",
+ "0a3a8c2b6f7ea626b715b23b03b3765ef0c12808",
"support"
],
"tools/wptrunner/wptrunner/wptlogging.py": [
@@ -680661,6 +681334,10 @@
"98cebe01c1126e0ebdc26784e15e9a057d1a03fb",
"testharness"
],
+ "wake-lock/wakelock-supported-by-feature-policy.html": [
+ "d6289fff43c8717ac6e9ace59713e6fd70bd249d",
+ "testharness"
+ ],
"wake-lock/wakelock-type.https.html": [
"2f9e1242614d57a79b2aada32cdd3d2cb3ae012d",
"testharness"
@@ -683306,11 +683983,11 @@
"wdspec"
],
"webdriver/tests/new_window/new_tab.py": [
- "fbb249fd78361681fe755f72d14a6879d5725cbf",
+ "0bf94496572183709743a5f0566931f1871c0ba2",
"wdspec"
],
"webdriver/tests/new_window/new_window.py": [
- "eb4db6729ecaa2c6a8ba92f272c4dee90899e3a2",
+ "8b12248a5524f95aefb9ea6e6ae03c856fbfc751",
"wdspec"
],
"webdriver/tests/new_window/user_prompts.py": [
@@ -684162,7 +684839,7 @@
"support"
],
"webrtc-quic/RTCQuicTransport.https.html": [
- "c64ed6af093c690ece59a5c68e949c4ae4f5e6af",
+ "82427e67cb4ab231f91d6e7d04bd25f79e5f94fa",
"testharness"
],
"webrtc-stats/META.yml": [
@@ -684178,7 +684855,7 @@
"testharness"
],
"webrtc-stats/idlharness.window.js": [
- "23741201b61a63f9353161c3e610b50a835d947e",
+ "d98712fc485298a0455e44c9f29407dc232fca63",
"testharness"
],
"webrtc/META.yml": [
@@ -684334,7 +685011,7 @@
"support"
],
"webrtc/RTCPeerConnection-iceConnectionState.html": [
- "4071033a3c9eff6e5b848531127c1b70ee90bb20",
+ "b647b3d3e35e31f16b33422f67cb30b917d1d0af",
"testharness"
],
"webrtc/RTCPeerConnection-iceGatheringState.html": [
@@ -685937,6 +686614,10 @@
"4fd1e269362c43d282ca8e3c5c35a5d648f0666b",
"support"
],
+ "webusb/usb-supported-by-feature-policy.html": [
+ "d5b585a094f516839dd897935839953d15043dce",
+ "testharness"
+ ],
"webusb/usb.https.any.js": [
"109c82a415684b96e4e3a85ee09e773713b58b62",
"testharness"
@@ -686049,6 +686730,10 @@
"87d343d8f84d20d9b4cc12669318d6d2c3f9ae47",
"support"
],
+ "webvr/webvr-supported-by-feature-policy.html": [
+ "9487c3516b7ca6f6bbe1384e2083ad2281a669cc",
+ "testharness"
+ ],
"webvtt/META.yml": [
"949f312d7acc3444b3c116a55d1175dd12be33ca",
"support"
@@ -692165,6 +692850,10 @@
"d23fbb8c66def47e31ad01aa7a311064ba8fddbd",
"testharness"
],
+ "xhr/sync-xhr-supported-by-feature-policy.html": [
+ "45588bf6af54b0136c72068544bc908378f286a2",
+ "testharness"
+ ],
"xhr/template-element.html": [
"c23c99788e46dae24009b3c5092efeb5f93b8e1f",
"testharness"
diff --git a/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html.ini b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html.ini
new file mode 100644
index 00000000000..b2783913393
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html.ini
@@ -0,0 +1,2 @@
+[overflow-wrap-break-word-006.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/break-spaces-004.html.ini b/tests/wpt/metadata/css/css-text/white-space/break-spaces-004.html.ini
new file mode 100644
index 00000000000..3b579655b8e
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/break-spaces-004.html.ini
@@ -0,0 +1,2 @@
+[break-spaces-004.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/break-spaces-005.html.ini b/tests/wpt/metadata/css/css-text/white-space/break-spaces-005.html.ini
new file mode 100644
index 00000000000..c2c621bfe62
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/break-spaces-005.html.ini
@@ -0,0 +1,2 @@
+[break-spaces-005.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/break-spaces-006.html.ini b/tests/wpt/metadata/css/css-text/white-space/break-spaces-006.html.ini
new file mode 100644
index 00000000000..971ef8db445
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/break-spaces-006.html.ini
@@ -0,0 +1,2 @@
+[break-spaces-006.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/break-spaces-007.html.ini b/tests/wpt/metadata/css/css-text/white-space/break-spaces-007.html.ini
new file mode 100644
index 00000000000..8f26da2e6ee
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/break-spaces-007.html.ini
@@ -0,0 +1,2 @@
+[break-spaces-007.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/break-spaces-008.html.ini b/tests/wpt/metadata/css/css-text/white-space/break-spaces-008.html.ini
new file mode 100644
index 00000000000..129efde61a2
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/break-spaces-008.html.ini
@@ -0,0 +1,2 @@
+[break-spaces-008.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-012.html.ini b/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-012.html.ini
new file mode 100644
index 00000000000..508737adbc1
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-012.html.ini
@@ -0,0 +1,2 @@
+[word-break-break-all-012.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-013.html.ini b/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-013.html.ini
new file mode 100644
index 00000000000..9985af751f7
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-013.html.ini
@@ -0,0 +1,2 @@
+[word-break-break-all-013.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini
index 130c0181e43..442aa176ed7 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini
@@ -1079,3 +1079,9 @@
[text-indent percentage(%) / values]
expected: FAIL
+ [padding-left length(px) / values]
+ expected: FAIL
+
+ [padding-bottom length(ex) / values]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/ic-unit-008.html.ini b/tests/wpt/metadata/css/css-values/ic-unit-008.html.ini
new file mode 100644
index 00000000000..027af6d19c9
--- /dev/null
+++ b/tests/wpt/metadata/css/css-values/ic-unit-008.html.ini
@@ -0,0 +1,2 @@
+[ic-unit-008.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-values/ic-unit-009.html.ini b/tests/wpt/metadata/css/css-values/ic-unit-009.html.ini
new file mode 100644
index 00000000000..ec079625a5f
--- /dev/null
+++ b/tests/wpt/metadata/css/css-values/ic-unit-009.html.ini
@@ -0,0 +1,2 @@
+[ic-unit-009.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-values/ic-unit-010.html.ini b/tests/wpt/metadata/css/css-values/ic-unit-010.html.ini
new file mode 100644
index 00000000000..ed3149ae20c
--- /dev/null
+++ b/tests/wpt/metadata/css/css-values/ic-unit-010.html.ini
@@ -0,0 +1,2 @@
+[ic-unit-010.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-values/ic-unit-011.html.ini b/tests/wpt/metadata/css/css-values/ic-unit-011.html.ini
new file mode 100644
index 00000000000..fc139eb97d5
--- /dev/null
+++ b/tests/wpt/metadata/css/css-values/ic-unit-011.html.ini
@@ -0,0 +1,2 @@
+[ic-unit-011.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-values/ic-unit-012.html.ini b/tests/wpt/metadata/css/css-values/ic-unit-012.html.ini
new file mode 100644
index 00000000000..3c08ad5954f
--- /dev/null
+++ b/tests/wpt/metadata/css/css-values/ic-unit-012.html.ini
@@ -0,0 +1,2 @@
+[ic-unit-012.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
index 95b74e19aec..1ba6fdcec47 100644
--- a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
+++ b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
@@ -2,7 +2,7 @@
type: testharness
[single-byte-decoder.html?document]
- expected: CRASH
+ expected: TIMEOUT
[ISO-8859-4: iso_8859-4:1988 (document.characterSet and document.inputEncoding)]
expected: FAIL
@@ -32,7 +32,7 @@
[single-byte-decoder.html?XMLHttpRequest]
- expected: TIMEOUT
+ expected: CRASH
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index c0a9a81dbe6..18f786d4963 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,15 +312,3 @@
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html */*]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: */* text/html]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: text/html;x=" text/plain]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index b7052af5b5c..87c807a49ff 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,6 +11,3 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
- [X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
deleted file mode 100644
index dc2e45516de..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_5.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/autoplay-supported-by-feature-policy.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/autoplay-supported-by-feature-policy.html.ini
new file mode 100644
index 00000000000..41e9161e0c2
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/autoplay-supported-by-feature-policy.html.ini
@@ -0,0 +1,4 @@
+[autoplay-supported-by-feature-policy.html]
+ [document.featurePolicy.features should advertise autoplay.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
deleted file mode 100644
index 178680e5d14..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[script-onerror-insertion-point-2.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
deleted file mode 100644
index 63682614c4f..00000000000
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[promise-rejection-events.html]
- expected: TIMEOUT
- [rejectionhandled is dispatched from a queued task, and not immediately]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/quirks/unitless-length/excluded-properties-001.html.ini b/tests/wpt/metadata/quirks/unitless-length/excluded-properties-001.html.ini
index 05a16975210..17feaebfc09 100644
--- a/tests/wpt/metadata/quirks/unitless-length/excluded-properties-001.html.ini
+++ b/tests/wpt/metadata/quirks/unitless-length/excluded-properties-001.html.ini
@@ -143,3 +143,24 @@
[Property shape-margin does not support quirky length]
expected: FAIL
+ [Property inset-inline-start does not support quirky length]
+ expected: FAIL
+
+ [Property inset-block does not support quirky length]
+ expected: FAIL
+
+ [Property inset-block-start does not support quirky length]
+ expected: FAIL
+
+ [Property inset-inline does not support quirky length]
+ expected: FAIL
+
+ [Property inset-inline-end does not support quirky length]
+ expected: FAIL
+
+ [Property inset does not support quirky length]
+ expected: FAIL
+
+ [Property inset-block-end does not support quirky length]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/quirks/unitless-length/excluded-properties-003.html.ini b/tests/wpt/metadata/quirks/unitless-length/excluded-properties-003.html.ini
new file mode 100644
index 00000000000..a239e5a07dd
--- /dev/null
+++ b/tests/wpt/metadata/quirks/unitless-length/excluded-properties-003.html.ini
@@ -0,0 +1,4 @@
+[excluded-properties-003.html]
+ [inset does not support quirky length values]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index a56bad443a2..66bd350083b 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html]
- expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata/webvr/webvr-supported-by-feature-policy.html.ini b/tests/wpt/metadata/webvr/webvr-supported-by-feature-policy.html.ini
new file mode 100644
index 00000000000..25b0d2f6347
--- /dev/null
+++ b/tests/wpt/metadata/webvr/webvr-supported-by-feature-policy.html.ini
@@ -0,0 +1,4 @@
+[webvr-supported-by-feature-policy.html]
+ [document.featurePolicy.features should advertise xr.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini
index bf2a1d61bab..bfd4d6dd2d6 100644
--- a/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini
+++ b/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini
@@ -1,4 +1,5 @@
[import-in-moduleworker.html]
+ expected: ERROR
[Base URL in module dedicated workers: import]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
index 650c91da4a6..333edb3a26e 100644
--- a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
+++ b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
@@ -1,5 +1,4 @@
[sharedworker-in-worker.html]
- expected: ERROR
[Base URL in workers: new SharedWorker()]
expected: FAIL
diff --git a/tests/wpt/metadata/xhr/sync-xhr-supported-by-feature-policy.html.ini b/tests/wpt/metadata/xhr/sync-xhr-supported-by-feature-policy.html.ini
new file mode 100644
index 00000000000..cc8d8fcd5d0
--- /dev/null
+++ b/tests/wpt/metadata/xhr/sync-xhr-supported-by-feature-policy.html.ini
@@ -0,0 +1,4 @@
+[sync-xhr-supported-by-feature-policy.html]
+ [document.featurePolicy.features should advertise sync-xhr.]
+ expected: FAIL
+
diff --git a/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini b/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini
deleted file mode 100644
index dbea4f293ad..00000000000
--- a/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[transition_calc_implicit.html]
- expected: TIMEOUT
diff --git a/tests/wpt/mozilla/meta/mozilla/paint_timing.html.ini b/tests/wpt/mozilla/meta/mozilla/paint_timing.html.ini
new file mode 100644
index 00000000000..14a9e778f39
--- /dev/null
+++ b/tests/wpt/mozilla/meta/mozilla/paint_timing.html.ini
@@ -0,0 +1,4 @@
+[paint_timing.html]
+ [Performance entries observer]
+ expected: FAIL
+
diff --git a/tests/wpt/web-platform-tests/.azure-pipelines.yml b/tests/wpt/web-platform-tests/.azure-pipelines.yml
index 387c55a5ec4..acfb0996391 100644
--- a/tests/wpt/web-platform-tests/.azure-pipelines.yml
+++ b/tests/wpt/web-platform-tests/.azure-pipelines.yml
@@ -6,9 +6,13 @@
# https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables
# https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/index
#
-# In addition to this configuration file, the "Build pull requests from forks
-# of this repository" setting must also be enabled in the Azure DevOps project:
-# https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/github#validate-contributions-from-forks
+# In addition to this configuration file, some setup in the Azure DevOps
+# project is required:
+# - The "Build pull requests from forks of this repository" setting must be
+# enabled: https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/github#validate-contributions-from-forks
+# - A scheduled build needs to be set up for the the epochs/daily branch.
+# - To get results from scheduled builds into wpt.fyi, a service connection
+# named wpt.fyi with URL https://wpt.fyi is needed.
jobs:
# The affected tests jobs are unconditional for speed, as most PRs have one or
@@ -125,7 +129,7 @@ jobs:
- job: all_macOS
displayName: 'all tests (Safari Technology Preview)'
- condition: eq(variables['Build.SourceBranch'], 'refs/heads/epochs/daily')
+ condition: eq(variables['Build.Reason'], 'Schedule')
strategy:
parallel: 4 # chosen to make runtime ~2h
timeoutInMinutes: 360
@@ -148,3 +152,20 @@ jobs:
inputs:
artifactName: 'results'
condition: succeededOrFailed()
+
+# The InvokeRESTAPI task can only run in a server job.
+- job: all_post
+ displayName: 'all tests (wpt.fyi hook)'
+ dependsOn: all_macOS
+ pool: server
+ steps:
+ - task: InvokeRESTAPI@1
+ displayName: 'Invoke wpt.fyi hook'
+ inputs:
+ serviceConnection: wpt.fyi
+ urlSuffix: /api/checks/azure/$(Build.BuildId)
+ - task: InvokeRESTAPI@1
+ displayName: 'Invoke staging.wpt.fyi hook'
+ inputs:
+ serviceConnection: staging.wpt.fyi
+ urlSuffix: /api/checks/azure/$(Build.BuildId)
diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml
index 4a6de3b5b17..ae99c0960ac 100644
--- a/tests/wpt/web-platform-tests/.taskcluster.yml
+++ b/tests/wpt/web-platform-tests/.taskcluster.yml
@@ -61,7 +61,7 @@ tasks:
owner: ${event.pusher.email}
source: ${event.repository.url}
payload:
- image: harjgam/web-platform-tests:0.25
+ image: harjgam/web-platform-tests:0.26
maxRunTime: 7200
artifacts:
public/results:
@@ -136,7 +136,7 @@ tasks:
owner: ${event.pull_request.user.login}@users.noreply.github.com
source: ${event.repository.url}
payload:
- image: harjgam/web-platform-tests:0.25
+ image: harjgam/web-platform-tests:0.26
maxRunTime: 7200
artifacts:
public/results:
diff --git a/tests/wpt/web-platform-tests/IndexedDB/idb-explicit-commit.any.js b/tests/wpt/web-platform-tests/IndexedDB/idb-explicit-commit.any.js
index da4bd8c9526..12e56cc267a 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/idb-explicit-commit.any.js
+++ b/tests/wpt/web-platform-tests/IndexedDB/idb-explicit-commit.any.js
@@ -188,20 +188,17 @@ promise_test(async testCase => {
});
// Txn1 should commit before txn2, even though txn2 uses commit().
const txn1 = db.transaction(['books'], 'readwrite');
- const objectStore1 = txn1.objectStore('books');
- const putRequest1 = objectStore1.put({isbn:'one', title:'title1'});
+ txn1.objectStore('books').put({isbn: 'one', title: 'title1'});
const releaseTxnFunction = keepAlive(testCase, txn1, 'books');
const txn2 = db.transaction(['books'], 'readwrite');
- const objectStore2 = txn2.objectStore('books');
- const putRequest2 = objectStore2.put({isbn:'one', title:'title2'});
+ txn2.objectStore('books').put({isbn:'one', title:'title2'});
txn2.commit();
// Exercise the IndexedDB transaction ordering by executing one with a
// different scope.
const txn3 = db.transaction(['not_books'], 'readwrite');
- const objectStore3 = txn3.objectStore('not_books');
- objectStore3.put({'title': 'not_title'}, 'key');
+ txn3.objectStore('not_books').put({'title': 'not_title'}, 'key');
txn3.oncomplete = function() {
releaseTxnFunction();
}
@@ -210,8 +207,7 @@ promise_test(async testCase => {
// Read the data back to verify that txn2 executed last.
const txn4 = db.transaction(['books'], 'readonly');
- const objectStore4 = txn4.objectStore('books');
- const getRequest4 = objectStore4.get('one');
+ const getRequest4 = txn4.objectStore('books').get('one');
await promiseForTransaction(testCase, txn4);
assert_equals(getRequest4.result.title, 'title2');
db.close();
@@ -225,8 +221,7 @@ promise_test(async testCase => {
});
// Txn1 creates the book 'one' so the 'add()' below fails.
const txn1 = db.transaction(['books'], 'readwrite');
- const objectStore1 = txn1.objectStore('books');
- const putRequest1 = objectStore1.add({isbn:'one', title:'title1'});
+ txn1.objectStore('books').add({isbn:'one', title:'title1'});
txn1.commit();
await promiseForTransaction(testCase, txn1);
@@ -235,15 +230,17 @@ promise_test(async testCase => {
const txn2 = db.transaction(['books'], 'readwrite');
const objectStore2 = txn2.objectStore('books');
objectStore2.put({isbn:'two', title:'title2'});
- const addRequest2 = objectStore2.add({isbn:'one', title:'title2'});
+ const addRequest = objectStore2.add({isbn:'one', title:'title2'});
txn2.commit();
- txn2.oncomplete = assert_unreached(
- 'Transaction with invalid "add" call should not be completed.');
+ txn2.oncomplete = () => { assert_unreached(
+ 'Transaction with invalid "add" call should not be completed.'); };
- var addWatcher = requestWatcher(testCase, addRequest2);
- var txnWatcher = transactionWatcher(testCase, txn2);
- await Promise.all([addWatcher.wait_for('error'),
- txnWatcher.wait_for('error', 'abort')]);
+ // Wait for the transaction to complete. We have to explicitly wait for the
+ // error signal on the transaction because of the nature of the test tooling.
+ await Promise.all([
+ requestWatcher(testCase, addRequest).wait_for('error'),
+ transactionWatcher(testCase, txn2).wait_for(['error', 'abort'])
+ ]);
// Read the data back to verify that txn2 was aborted.
const txn3 = db.transaction(['books'], 'readonly');
@@ -255,3 +252,41 @@ promise_test(async testCase => {
assert_equals(getRequest2.result, 0);
db.close();
}, 'Transactions that explicitly commit and have errors should abort.');
+
+
+promise_test(async testCase => {
+ const db = await createDatabase(testCase, db => {
+ createBooksStore(testCase, db);
+ });
+ const txn1 = db.transaction(['books'], 'readwrite');
+ txn1.objectStore('books').add({isbn: 'one', title: 'title1'});
+ txn1.commit();
+ await promiseForTransaction(testCase, txn1);
+
+ // The second add request will throw an error, but the onerror handler will
+ // appropriately catch the error allowing the valid put request on the
+ // transaction to commit.
+ const txn2 = db.transaction(['books'], 'readwrite');
+ const objectStore2 = txn2.objectStore('books');
+ objectStore2.put({isbn: 'two', title:'title2'});
+ const addRequest = objectStore2.add({isbn: 'one', title:'unreached_title'});
+ addRequest.onerror = (event) => {
+ event.preventDefault();
+ addRequest.transaction.commit();
+ };
+
+ // Wait for the transaction to complete. We have to explicitly wait for the
+ // error signal on the transaction because of the nature of the test tooling.
+ await transactionWatcher(testCase,txn2).wait_for(['error', 'complete'])
+
+ // Read the data back to verify that txn2 was committed.
+ const txn3 = db.transaction(['books'], 'readonly');
+ const objectStore3 = txn3.objectStore('books');
+ const getRequest1 = objectStore3.get('one');
+ const getRequest2 = objectStore3.get('two');
+ await promiseForTransaction(testCase, txn3);
+ assert_equals(getRequest1.result.title, 'title1');
+ assert_equals(getRequest2.result.title, 'title2');
+ db.close();
+}, 'Transactions that handle all errors properly should be behave as ' +
+ 'expected when an explicit commit is called in an onerror handler.');
diff --git a/tests/wpt/web-platform-tests/accelerometer/Accelerometer-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/accelerometer/Accelerometer-supported-by-feature-policy.html
new file mode 100644
index 00000000000..8e09c7acdfb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accelerometer/Accelerometer-supported-by-feature-policy.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that accelerometer is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://w3c.github.io/sensors/#feature-policy-api">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('accelerometer', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise accelerometer.');
+</script>
diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-supported-by-feature-policy.html
new file mode 100644
index 00000000000..d5c27c8bef2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-supported-by-feature-policy.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that ambient-light-sensor is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://w3c.github.io/sensors/#feature-policy-api">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('ambient-light-sensor', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise ambient-light-sensor.');
+</script>
diff --git a/tests/wpt/web-platform-tests/animation-worklet/common.js b/tests/wpt/web-platform-tests/animation-worklet/common.js
index eb114f24687..15dff829774 100644
--- a/tests/wpt/web-platform-tests/animation-worklet/common.js
+++ b/tests/wpt/web-platform-tests/animation-worklet/common.js
@@ -30,3 +30,9 @@ function waitForAsyncAnimationFrames(count) {
// AnimationWorklet.
return waitForAnimationFrames(count + 1);
}
+
+async function waitForAnimationFrameWithCondition(condition) {
+ do {
+ await new Promise(window.requestAnimationFrame);
+ } while (!condition())
+};
diff --git a/tests/wpt/web-platform-tests/animation-worklet/references/translated-box-ref.html b/tests/wpt/web-platform-tests/animation-worklet/references/translated-box-ref.html
new file mode 100644
index 00000000000..c73f5a177bf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/animation-worklet/references/translated-box-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<style>
+#box {
+ width: 100px;
+ height: 100px;
+ transform: translateY(100px);
+ background-color: green;
+}
+</style>
+
+<div id="box"></div>
diff --git a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-pause-immediately.https.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-pause-immediately.https.html
new file mode 100644
index 00000000000..f9dcf30bc90
--- /dev/null
+++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-pause-immediately.https.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>Verify that calling pause immediately after playing works as expected</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-animationworklet/">
+<link rel="match" href="references/translated-box-ref.html">
+
+<script src="/common/reftest-wait.js"></script>
+<script src="/web-animations/testcommon.js"></script>
+<script src="common.js"></script>
+<style>
+#box {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+}
+</style>
+
+<div id="box"></div>
+
+<script>
+registerPassthroughAnimator().then(async _ => {
+ const box = document.getElementById('box');
+ const effect = new KeyframeEffect(box,
+ { transform: ['translateY(100px)', 'translateY(200px)'] },
+ { duration: 100, iterations: 1 }
+ );
+
+ const animation = new WorkletAnimation('passthrough', effect);
+ animation.play();
+ // Immediately pausing animation should freeze the current time at 0.
+ animation.pause();
+ // Wait at least one frame to ensure a paused animation actually freezes.
+ await waitForAsyncAnimationFrames(1);
+ takeScreenshot();
+});
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-pause-resume.https.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-pause-resume.https.html
new file mode 100644
index 00000000000..f26a93468c0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-pause-resume.https.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>Verify that calling pause immediately after playing works as expected</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-animationworklet/">
+<link rel="match" href="references/translated-box-ref.html">
+
+<script src="/common/reftest-wait.js"></script>
+<script src="common.js"></script>
+<style>
+#box {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+}
+</style>
+
+<div id="box"></div>
+
+<script>
+registerPassthroughAnimator().then(async _ => {
+ const duration = 18; // a bit longer than a frame
+ const box = document.getElementById('box');
+ const effect = new KeyframeEffect(box,
+ { transform: ['translateY(0px)', 'translateY(100px)'] },
+ { duration: duration, iterations: 1, fill: 'forwards'}
+ );
+
+ const animation = new WorkletAnimation('passthrough', effect);
+ // Immediately pausing animation should freeze the current time at 0.
+ animation.pause();
+ // Playing should cause animation to resume.
+ animation.play();
+ // Wait until we ensure animation has reached completion.
+ await waitForAnimationFrameWithCondition( _ => {
+ return animation.currentTime >= duration;
+ });
+ takeScreenshot();
+});
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-pause.https.html b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-pause.https.html
new file mode 100644
index 00000000000..4b7a9a0251d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/animation-worklet/worklet-animation-pause.https.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<title>Verify that currentTime and playState are correct when animation is paused</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-animationworklet/">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/web-animations/testcommon.js"></script>
+<script src="common.js"></script>
+
+<div id="box"></div>
+
+<script>
+
+setup(setupAndRegisterTests, {explicit_done: true});
+
+function createAnimation() {
+ const box = document.getElementById('box');
+ const effect = new KeyframeEffect(box,
+ { transform: ['translateY(100px)', 'translateY(200px)'] },
+ { duration: 100, iterations: 1 }
+ );
+
+ return new WorkletAnimation('passthrough', effect);
+}
+
+async function setupAndRegisterTests() {
+ await registerPassthroughAnimator();
+
+ promise_test(async t => {
+ const animation = createAnimation();
+ animation.play();
+ // Immediately pausing animation should freeze the current time at 0.
+ animation.pause();
+ assert_equals(animation.currentTime, 0);
+ assert_equals(animation.playState, "paused");
+ // Wait some time to ensure a paused animation actually freezes.
+ await waitForNextFrame();
+ assert_equals(animation.currentTime, 0);
+ assert_equals(animation.playState, "paused");
+ }, 'pausing an animation freezes its current time');
+
+ promise_test(async t => {
+ const animation = createAnimation();
+ const startTime = document.timeline.currentTime;
+ animation.pause();
+ animation.play();
+ await waitForNextFrame();
+ const timelineTime = document.timeline.currentTime;
+ assert_equals(animation.playState, "running");
+ assert_greater_than(animation.currentTime, 0);
+ assert_times_equal(animation.currentTime, (timelineTime - startTime));
+ }, 'playing a paused animation should resume it');
+
+ done();
+}
+
+</script>
+
diff --git a/tests/wpt/web-platform-tests/background-fetch/fetch-uploads.https.window.js b/tests/wpt/web-platform-tests/background-fetch/fetch-uploads.https.window.js
index 4ee618a1292..f93f88a6bae 100644
--- a/tests/wpt/web-platform-tests/background-fetch/fetch-uploads.https.window.js
+++ b/tests/wpt/web-platform-tests/background-fetch/fetch-uploads.https.window.js
@@ -44,3 +44,21 @@ backgroundFetchTest(async (test, backgroundFetch) => {
assert_equals(uploaded, uploadData.length);
}, 'Progress event includes uploaded bytes');
+
+backgroundFetchTest(async (test, backgroundFetch) => {
+ const uploadRequest1 =
+ new Request('resources/upload.py', {method: 'POST', body: 'upload1'});
+ const uploadRequest2 =
+ new Request('resources/upload.py', {method: 'POST', body: 'upload2'});
+
+ await backgroundFetch.fetch(uniqueId(), [uploadRequest1, uploadRequest2]);
+
+ const {type, eventRegistration, results} = await getMessageFromServiceWorker();
+ assert_equals(type, 'backgroundfetchsuccess');
+ assert_equals(results.length, 2);
+ assert_equals(eventRegistration.result, 'success');
+ assert_equals(eventRegistration.failureReason, '');
+
+ assert_array_equals([results[0].text, results[1].text].sort(),
+ ['upload1', 'upload2']);
+}, 'Duplicate upload requests work and can be distinguished.');
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/interaction-with-tree-abiding.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/interaction-with-pseudo-elements.html
index c11da7d12de..776ab2eb69d 100644
--- a/tests/wpt/web-platform-tests/css/css-shadow-parts/interaction-with-tree-abiding.html
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/interaction-with-pseudo-elements.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
- <title>CSS Shadow Parts - Interaction with tree-abiding</title>
+ <title>CSS Shadow Parts - Interaction with pseudo-elements</title>
<meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
<link href="http://www.google.com/" rel="author" title="Google">
<link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
@@ -14,6 +14,9 @@
#c-e::part(before-p)::before { color: green; }
#c-e::part(after-p)::after { color: green; }
#c-e::part(placeholder-p)::placeholder { color: green; }
+ #c-e::part(selection-p)::selection { color: green; }
+ #c-e::part(first-line-p)::first-line { color: green; }
+ #c-e::part(first-letter-p)::first-letter { color: green; }
</style>
<script>installCustomElement("custom-element", "custom-element-template");</script>
<template id="custom-element-template">
@@ -21,6 +24,9 @@
#before-i::before { content: "this text"; color: red; }
#after-i::after { content: "this text"; color: red; }
#placeholder-i::placeholder { color: red; }
+ #selection-i::selection { color: red; }
+ #first-line-i::first-line { color: red; }
+ #first-letter-i::first-letter { color: red; }
</style>
<div>
The following text should be green:
@@ -34,6 +40,18 @@
The following text should be green:
<input id="placeholder-i" part="placeholder-p" placeholder="this text"></input>
</div>
+ <div>
+ The selected text should be green:
+ <div id="selection-i" part="selection-p">select some text</div>
+ </div>
+ <div>
+ The following text should be green:
+ <div id="first-line-i" part="first-line-p">this text<br>Not this</div>
+ </div>
+ <div>
+ The first letter should be green:
+ <div id="first-letter-i" part="first-letter-p"><p>this text</p></div>
+ </div>
</template>
<custom-element id="c-e"></custom-element>
<script>
@@ -51,6 +69,18 @@
const el = getElementByShadowIds(document, ["c-e", "placeholder-i"]);
assert_equals(window.getComputedStyle(el, '::placeholder').color, colorGreen);
}, "::placeholder in selected host is styled");
+ test(function() {
+ const el = getElementByShadowIds(document, ["c-e", "selection-i"]);
+ assert_equals(window.getComputedStyle(el, '::selection').color, colorGreen);
+ }, "::selection in selected host is styled");
+ test(function() {
+ const el = getElementByShadowIds(document, ["c-e", "first-line-i"]);
+ assert_equals(window.getComputedStyle(el, '::first-line').color, colorGreen);
+ }, "::first-line in selected host is styled");
+ test(function() {
+ const el = getElementByShadowIds(document, ["c-e", "first-letter-i"]);
+ assert_equals(window.getComputedStyle(el, '::first-letter').color, colorGreen);
+ }, "::first-letter in selected host is styled");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-syntax/charset-is-not-a-rule.html b/tests/wpt/web-platform-tests/css/css-syntax/charset-is-not-a-rule.html
new file mode 100644
index 00000000000..81b2a04dc5a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-syntax/charset-is-not-a-rule.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<title>@charset isn't a valid rule and should be dropped</title>
+<meta name="author" title="Tab Atkins-Bittner">
+<link rel=help href="https://drafts.csswg.org/css-syntax/#charset-rule">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+@charset "utf-8";
+@charset "utf-8";
+foo { color: blue; }
+@charset "utf-8";
+</style>
+<script>
+test(()=>{
+ assert_true(document.styleSheets[0].cssRules.length == 1)
+}, "@charset isn't a valid rule and shouldn't show up in the OM");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-002.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-002.html
index 660b7f16302..6f90f0c0cb8 100644
--- a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-002.html
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-002.html
@@ -22,7 +22,7 @@ div {
</style>
<p>This test passes if there is nothing below this sentence.
-<div> FAIL <div>
+<div> FAIL </div>
<!--
white-space:break-spaces should cause the spaces at the end of the line to be preserved.
Since there is an allowed break point between the first space and the F,
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-003.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-003.html
index 6203b55e9c6..05e570bbb13 100644
--- a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-003.html
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-003.html
@@ -22,4 +22,4 @@ div {
</style>
<p>This test passes if the word FAIL does not appear below.
-<div>PASS FAIL<div>
+<div>PASS FAIL</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html
index b277319cd23..5f36410feba 100644
--- a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-004.html
@@ -3,6 +3,7 @@
<title>CSS Text Test: overflow-wrap: break-word</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-overflow-wrap-break-word">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-pre-wrap">
<meta name="flags" content="ahem">
<link rel="match" href="reference/overflow-wrap-break-word-001-ref.html">
<meta name="assert" content="A Single leading white-space constitutes a soft breaking opportunity, honoring the 'white-space: pre-wrap' property, that must prevent the word to be broken.">
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html
new file mode 100644
index 00000000000..6dc1b4dff52
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text Test: overflow-wrap: break-word</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-overflow-wrap-break-word">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-break-spaces">
+<meta name="flags" content="ahem">
+<link rel="match" href="reference/overflow-wrap-break-word-001-ref.html">
+<meta name="assert" content="A Single leading white-space constitutes a soft breaking opportunity, honoring the 'white-space: break-spaces' property, that must prevent the word to be broken.">
+<style>
+div {
+ position: relative;
+ font-size: 20px;
+ font-family: Ahem;
+}
+.red {
+ position: absolute;
+ background: green;
+ color: red;
+ width: 100px;
+ height: 100px;
+ z-index: -1;
+}
+.test {
+ color: green;
+ line-height: 1em;
+ width: 5ch;
+ white-space: break-spaces;
+ overflow-wrap: break-word;
+}
+</style>
+<body>
+ <p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
+ <div class="red"><br>XXXXX</div>
+ <div class="test"> XXXXX </div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-004.html b/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-004.html
new file mode 100644
index 00000000000..e2c043ec42e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-004.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text Test: white-space: break-spaces</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" title="3. White Space and Wrapping: the white-space property" href="https://drafts.csswg.org/css-text-3/#white-space-property">
+<link rel="help" title="5.2. Breaking Rules for Letters: the word-break property" href="https://drafts.csswg.org/css-text-3/#word-break-property">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-break-spaces">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-word-break-break-word">
+<meta name="flags" content="ahem">
+<link rel="match" href="reference/pre-wrap-001-ref.html">
+<meta name="assert" content="The word is not broken if there are previous breaking opportunities, honoring the 'white-space: break-spaces' value.">
+<style>
+div {
+ position: relative;
+ font: 20px/1 Ahem;
+}
+.fail {
+ position: absolute;
+ color: red;
+ z-index: -1;
+}
+span { color: green; }
+.test {
+ color: green;
+ width: 2ch;
+
+ white-space: break-spaces;
+ word-break: break-word;
+}
+</style>
+<body>
+ <p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
+ <div class="fail"><span>XX</span><br>XX</div>
+ <div class="test"> XX</div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-005.html b/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-005.html
new file mode 100644
index 00000000000..d0dafd38c04
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-005.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text Test: white-space - break-spaces</title>
+<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
+<link rel="help" title="3. White Space and Wrapping: the white-space property" href="https://drafts.csswg.org/css-text-3/#white-space-property">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-break-spaces">
+<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
+<meta name="flags" content="ahem">
+<meta name="assert" content="If 'white-space' is set to 'break-spaces', collapsing preserved white-spaces' advance width is not allowed, so that they can be wrapped honoring the 'white-space' propery.">
+<style>
+div {
+ position: relative;
+ font: 10px/1 Ahem;
+}
+.fail {
+ position: absolute;
+ color: red;
+ z-index: -1;
+}
+span { color: green; }
+.test {
+ color: green;
+ width: 100px;
+
+ white-space: break-spaces;
+}
+
+</style>
+<body>
+ <p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
+ <div class="fail">XXXX<span>XXXXXX</span><br><span>XXXXXXXXXX</span><br><span>XXXXXXXXXX</span><br><span>XXXXXXXXXX</span><br><span>XXXXXXXXXX</span><br><span>XXXXXXXXXX</span><br><span>XXXXXXXXXX</span><br><span>XXXXXXXXXX</span><br><span>XXXXXXXXXX</span><br><span>XX</span>XXXX<span>XXXX</span></div>
+ <div class="test">XXXX XXXX</div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-006.html b/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-006.html
new file mode 100644
index 00000000000..5f9d605866d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-006.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text Test: white-space - break-spaces</title>
+<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
+<link rel="help" title="3. White Space and Wrapping: the white-space property" href="https://www.w3.org/TR/css-text-3/#white-space-property">
+<link rel="help" title="5.2. Breaking Rules for Letters: the word-break property" href="https://drafts.csswg.org/css-text-3/#word-break-property">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-break-spaces">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-word-break-break-all">
+<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
+<meta name="flags" content="ahem">
+<meta name="assert" content="White spaces are preserved, honoring the 'white-space: break-spaces', but the words are broken, honring the 'word-beak: break-all' even though there are previous breaking opportunities in the white-spaces.">
+<style>
+div {
+ position: relative;
+ font: 25px/1 Ahem;
+}
+.fail {
+ position: absolute;
+ color: red;
+ z-index: -1;
+}
+span { color: green; }
+.test {
+ color: green;
+ width: 4ch;
+
+ white-space: break-spaces;
+ word-break: break-all;
+}
+</style>
+<body>
+ <p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
+ <div class="fail"><span>X</span>XXX<br>X<span>X</span>XX<br>X<span>XXX</span><br><span>XXXX</span></div>
+ <div class="test"> XXXX XXX</div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-007.html b/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-007.html
new file mode 100644
index 00000000000..77213618bd9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-007.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text Test: white-space - break-spaces</title>
+<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
+<link rel="help" title="3. White Space and Wrapping: the white-space property" href="https://www.w3.org/TR/css-text-3/#white-space-property">
+<link rel="help" title="5.2. Breaking Rules for Letters: the word-break property" href="https://drafts.csswg.org/css-text-3/#word-break-property">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-break-spaces">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-word-break-break-all">
+<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
+<meta name="flags" content="ahem">
+<meta name="assert" content="A single leading white-space should be used, honoring white-space: break-spaces, to avoid overflow; however, a single preserved white-space at the end of the line cannot be wrapped, hence it hangs when breaking after it to move the rest of the text to the next line.">
+<style>
+div {
+ position: relative;
+ font: 25px/1 Ahem;
+}
+.fail {
+ position: absolute;
+ color: red;
+ z-index: -1;
+}
+span { color: green; }
+.test {
+ color: green;
+ width: 4ch;
+
+ white-space: break-spaces;
+}
+</style>
+<body>
+ <p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
+ <div class="fail"><span>XXXX</span><br>XXXX<br>XXX<span>X</span><br><span>XXXX</span></div>
+ <div class="test"> XXXX XXX</div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-008.html b/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-008.html
new file mode 100644
index 00000000000..d183cac942f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/break-spaces-008.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text Test: white-space - break-spaces</title>
+<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
+<link rel="help" title="3. White Space and Wrapping: the white-space property" href="https://www.w3.org/TR/css-text-3/#white-space-property">
+<link rel="help" title="5.2. Breaking Rules for Letters: the word-break property" href="https://drafts.csswg.org/css-text-3/#word-break-property">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-break-spaces">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-word-break-break-all">
+<link rel="match" href="reference/white-space-break-spaces-005-ref.html">
+<meta name="flags" content="ahem">
+<meta name="assert" content="White spaces are preserved, honoring the 'white-space: break-spaces', which may lead to overfow. However, we can break before the first white-space after the word honoring the 'break-all' value.">
+<style>
+div {
+ position: relative;
+ font: 25px/1 Ahem;
+}
+.fail {
+ position: absolute;
+ color: red;
+ z-index: -1;
+}
+span { color: green; }
+.test {
+ color: green;
+ width: 4ch;
+
+ white-space: break-spaces;
+ word-break: break-all;
+}
+</style>
+<body>
+ <p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
+ <div class="fail">XXXX<br><span>X</span>XX<span>X</span><br><span>XXXX</span><br><span>XXXX</span></div>
+ <div class="test">XXXX XX</div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-016.html b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-016.html
new file mode 100644
index 00000000000..5f66a7be92b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/pre-wrap-016.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text Test: white-space: pre-wrap</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-pre-wrap">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-word-break-break-word">
+<meta name="flags" content="ahem">
+<link rel="match" href="reference/pre-wrap-001-ref.html">
+<meta name="assert" content="The word is not broken if there are previous breaking opportunities, honoring the white-space: pre-wrap value.">
+<style>
+div {
+ position: relative;
+ font-size: 20px;
+ font-family: Ahem;
+}
+.red {
+ position: absolute;
+ white-space: pre;
+ background: green;
+ color: red;
+ width: 40px;
+ height: 40px;
+ z-index: -1;
+}
+.test {
+ color: green;
+ line-height: 1em;
+ width: 2ch;
+
+ white-space: pre-wrap;
+ word-break: break-word;
+}
+</style>
+<body>
+ <p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
+ <div class="red"><br>XX</div>
+ <div class="test"> XX</div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-break-spaces-005-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-break-spaces-005-ref.html
new file mode 100644
index 00000000000..3247ae5a881
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-break-spaces-005-ref.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text Reference File</title>
+<link rel="author" title="Javier Fernandez" href="mailto:jfernandez@igalia.com" />
+<style>
+div {
+ position: relative;
+ width: 100px;
+ height: 100px;
+ background: green;
+}
+</style>
+<body>
+ <p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
+ <div></div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-010.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-010.html
index 7d3bc056d82..be46d29d7dd 100644
--- a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-010.html
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-010.html
@@ -1,8 +1,9 @@
<!DOCTYPE html>
<meta charset="utf-8">
-<title>CSS Text Test: overflow-wrap: break-word</title>
+<title>CSS Text Test: word-break: break-all</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-word-break-break-all">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-pre-wrap">
<meta name="flags" content="ahem">
<link rel="match" href="reference/word-break-break-all-010-ref.html">
<meta name="assert" content="The word is broken even if pre-wrap provides a former breaking opportunity in leading white-space.">
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-011.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-011.html
index 531c68d8cea..fade439dd9a 100644
--- a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-011.html
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-011.html
@@ -1,8 +1,9 @@
<!DOCTYPE html>
<meta charset="utf-8">
-<title>CSS Text Test: overflow-wrap: break-word</title>
+<title>CSS Text Test: word-break: break-all</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-word-break-break-all">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-pre-wrap">
<meta name="flags" content="ahem">
<link rel="match" href="reference/word-break-break-all-010-ref.html">
<meta name="assert" content="A single leading white-space should account as soft breaking opportunity, honoring the 'white-space: pre-wrap', on top to the ones provided by 'word-break: break-all'.">
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-012.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-012.html
new file mode 100644
index 00000000000..cd3d44056ec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-012.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text Test: overflow-wrap: break-word</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-word-break-break-all">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-break-spaces">
+<meta name="flags" content="ahem">
+<link rel="match" href="reference/word-break-break-all-010-ref.html">
+<meta name="assert" content="The word is broken even if white-space: break-spaces provides a former breaking opportunity in leading white-space.">
+<style>
+div {
+ position: relative;
+ font-size: 20px;
+ font-family: Ahem;
+}
+.red {
+ position: absolute;
+ white-space: pre;
+ background: green;
+ color: red;
+ width: 100px;
+ height: 100px;
+ z-index: -1;
+}
+.test {
+ color: green;
+ line-height: 1em;
+ width: 5ch;
+
+ white-space: break-spaces;
+ word-break: break-all;
+}
+</style>
+<body>
+ <p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
+ <div class="red"> XXXX<br>X</div>
+ <div class="test"> XXXXX</div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-013.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-013.html
new file mode 100644
index 00000000000..85dce08b641
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-013.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text Test: word-break: break-all</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-word-break-break-all">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-break-spaces">
+<meta name="flags" content="ahem">
+<link rel="match" href="reference/word-break-break-all-010-ref.html">
+<meta name="assert" content="A single leading white-space should account as soft breaking opportunity, honoring the 'white-space: break-spaces', on top to the ones provided by 'word-break: break-all'.">
+<style>
+div {
+ position: relative;
+ font-size: 20px;
+ font-family: Ahem;
+}
+.red {
+ position: absolute;
+ background: green;
+ color: red;
+ width: 100px;
+ height: 100px;
+ z-index: -1;
+}
+.test {
+ color: green;
+ background: green;
+ line-height: 1em;
+ width: 1ch;
+ white-space: break-spaces;
+ word-break: break-all;
+}
+</style>
+<body>
+ <p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
+ <div class="red">X<br>X<br>X</div>
+ <div class="test"> XX</div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-values/attr-color-invalid-fallback.html b/tests/wpt/web-platform-tests/css/css-values/attr-color-invalid-fallback.html
index 92258893b9e..9e016d1630d 100644
--- a/tests/wpt/web-platform-tests/css/css-values/attr-color-invalid-fallback.html
+++ b/tests/wpt/web-platform-tests/css/css-values/attr-color-invalid-fallback.html
@@ -9,7 +9,7 @@
<meta name="assert" content="
When the fallback value of an attr() function is invalid, the delcaration is ignored.
" />
-
+ <meta name="flags" content="invalid">
<link
rel="author"
title="François REMY"
diff --git a/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-001.html b/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-001.html
index c427adecbeb..1f88c37c640 100644
--- a/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-001.html
+++ b/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-001.html
@@ -9,7 +9,7 @@
<meta name="assert" content="
When the type of an attr() function is known and unexpected, the declaration is ignored
" />
-
+ <meta name="flags" content="invalid">
<link
rel="author"
title="François REMY"
diff --git a/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-002.html b/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-002.html
index 797700ddacf..dbdac8a4ba1 100644
--- a/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-002.html
+++ b/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-002.html
@@ -9,7 +9,7 @@
<meta name="assert" content="
When the type of an attr() function is known and unexpected, the declaration is ignored
" />
-
+ <meta name="flags" content="invalid">
<link
rel="author"
title="François REMY"
diff --git a/tests/wpt/web-platform-tests/css/css-values/attr-length-invalid-fallback.html b/tests/wpt/web-platform-tests/css/css-values/attr-length-invalid-fallback.html
index 6a5d4dfe68a..e68fe7a4701 100644
--- a/tests/wpt/web-platform-tests/css/css-values/attr-length-invalid-fallback.html
+++ b/tests/wpt/web-platform-tests/css/css-values/attr-length-invalid-fallback.html
@@ -9,7 +9,7 @@
<meta name="assert" content="
When the attr() fallback is an invalid length, the delcaration is correctly ignored.
" />
-
+ <meta name="flags" content="invalid">
<link
rel="author"
title="François REMY"
diff --git a/tests/wpt/web-platform-tests/css/css-values/attr-px-invalid-fallback.html b/tests/wpt/web-platform-tests/css/css-values/attr-px-invalid-fallback.html
index 778697d0d1f..f8f88f58094 100644
--- a/tests/wpt/web-platform-tests/css/css-values/attr-px-invalid-fallback.html
+++ b/tests/wpt/web-platform-tests/css/css-values/attr-px-invalid-fallback.html
@@ -9,7 +9,7 @@
<meta name="assert" content="
When the fallback of a pixel attribute reference is invalid, the declaration is ignored.
" />
-
+ <meta name="flags" content="invalid">
<link
rel="author"
title="François REMY"
diff --git a/tests/wpt/web-platform-tests/css/css-values/ic-unit-008.html b/tests/wpt/web-platform-tests/css/css-values/ic-unit-008.html
new file mode 100644
index 00000000000..05ab2180698
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/ic-unit-008.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Values and Units Test: ic unit in width (basic)</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-values-4/#font-relative-lengths">
+ <link rel="match" href="reference/ic-unit-008-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="In this test, the ic unit is the advance width measure of the 水 (CJK water ideograph, U+6C34) glyph.">
+
+ <style>
+ div
+ {
+ float: left;
+ font-size: 80px; /* arbitrary font size */
+ }
+
+ div#test-blue
+ {
+ background-color: blue;
+ height: 1.8em;
+ width: 5ic;
+ }
+
+ div#reference-orange
+ {
+ background-color: orange;
+ clear: left;
+ color: orange;
+ line-height: 1.8; /* arbitrary line-height */
+ }
+ </style>
+
+ <p>Test passes if there is a blue rectangle with the <strong>same width</strong> as an orange rectangle.
+
+ <div id="test-blue"></div>
+
+ <div id="reference-orange">&#27700;&#27700;&#27700;&#27700;&#27700;</div>
+
+ <!--
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#27700;
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#x6C34;
+
+ -->
diff --git a/tests/wpt/web-platform-tests/css/css-values/ic-unit-009.html b/tests/wpt/web-platform-tests/css/css-values/ic-unit-009.html
new file mode 100644
index 00000000000..11ec5985c02
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/ic-unit-009.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Values and Units Test: ic unit in height (basic)</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-values-4/#font-relative-lengths">
+ <link rel="match" href="reference/ic-unit-009-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="In this test, the ic unit is the advance height measure of the 水 (CJK water ideograph, U+6C34) glyph.">
+
+ <style>
+ div
+ {
+ float: left;
+ font-size: 80px; /* arbitrary font size */
+ writing-mode: vertical-rl;
+ }
+
+ div#test-blue
+ {
+ background-color: blue;
+ height: 5ic;
+ width: 1.8em;
+ }
+
+ div#reference-orange
+ {
+ background-color: orange;
+ color: orange;
+ line-height: 1.8; /* arbitrary line-height */
+ }
+ </style>
+
+ <p>Test passes if there is a blue rectangle with the <strong>same height</strong> as an orange rectangle.
+
+ <div id="test-blue"></div>
+
+ <div id="reference-orange">&#27700;&#27700;&#27700;&#27700;&#27700;</div>
+
+ <!--
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#27700;
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#x6C34;
+
+ -->
diff --git a/tests/wpt/web-platform-tests/css/css-values/ic-unit-010.html b/tests/wpt/web-platform-tests/css/css-values/ic-unit-010.html
new file mode 100644
index 00000000000..ca963041a32
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/ic-unit-010.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Values and Units Test: ic unit in height with 'text-orientation: mixed'</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-values-4/#font-relative-lengths">
+ <link rel="match" href="reference/ic-unit-009-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="In this test, the ic unit is the advance height measure of the 水 (CJK water ideograph, U+6C34) glyph.">
+
+ <style>
+ div
+ {
+ float: left;
+ font-size: 80px; /* arbitrary font size */
+ text-orientation: mixed;
+ writing-mode: vertical-rl;
+ }
+
+ div#test-blue
+ {
+ background-color: blue;
+ height: 5ic;
+ width: 1.8em;
+ }
+
+ div#reference-orange
+ {
+ background-color: orange;
+ color: orange;
+ line-height: 1.8; /* arbitrary line-height */
+ }
+ </style>
+
+ <p>Test passes if there is a blue rectangle with the <strong>same height</strong> as an orange rectangle.
+
+ <div id="test-blue"></div>
+
+ <div id="reference-orange">&#27700;&#27700;&#27700;&#27700;&#27700;</div>
+
+ <!--
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#27700;
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#x6C34;
+
+ --> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-values/ic-unit-011.html b/tests/wpt/web-platform-tests/css/css-values/ic-unit-011.html
new file mode 100644
index 00000000000..58400224719
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/ic-unit-011.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Values and Units Test: ic unit in height with 'text-orientation: upright'</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-values-4/#font-relative-lengths">
+ <link rel="match" href="reference/ic-unit-009-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="In this test, the ic unit is the advance height measure of the 水 (CJK water ideograph, U+6C34) glyph.">
+
+ <style>
+ div
+ {
+ float: left;
+ font-size: 80px; /* arbitrary font size */
+ text-orientation: upright;
+ writing-mode: vertical-rl;
+ }
+
+ div#test-blue
+ {
+ background-color: blue;
+ height: 5ic;
+ width: 1.8em;
+ }
+
+ div#reference-orange
+ {
+ background-color: orange;
+ color: orange;
+ line-height: 1.8; /* arbitrary line-height */
+ }
+ </style>
+
+ <p>Test passes if there is a blue rectangle with the <strong>same height</strong> as an orange rectangle.
+
+ <div id="test-blue"></div>
+
+ <div id="reference-orange">&#27700;&#27700;&#27700;&#27700;&#27700;</div>
+
+ <!--
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#27700;
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#x6C34;
+
+ --> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-values/ic-unit-012.html b/tests/wpt/web-platform-tests/css/css-values/ic-unit-012.html
new file mode 100644
index 00000000000..ac281ccd4af
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/ic-unit-012.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Values and Units Test: ic unit in height with 'text-orientation: sideways'</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-values-4/#font-relative-lengths">
+ <link rel="match" href="reference/ic-unit-009-ref.html">
+
+ <meta name="flags" content="">
+ <meta name="assert" content="In this test, the ic unit is the advance width measure of the 水 (CJK water ideograph, U+6C34) glyph.">
+
+ <style>
+ div
+ {
+ float: left;
+ font-size: 80px; /* arbitrary font size */
+ text-orientation: sideways;
+ writing-mode: vertical-rl;
+ }
+
+ div#test-blue
+ {
+ background-color: blue;
+ height: 5ic;
+ width: 1.8em;
+ }
+
+ div#reference-orange
+ {
+ background-color: orange;
+ color: orange;
+ line-height: 1.8; /* arbitrary line-height */
+ }
+ </style>
+
+ <p>Test passes if there is a blue rectangle with the <strong>same height</strong> as an orange rectangle.
+
+ <div id="test-blue"></div>
+
+ <div id="reference-orange">&#27700;&#27700;&#27700;&#27700;&#27700;</div>
+
+ <!--
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#27700;
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#x6C34;
+
+ --> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-values/q-unit-case-insensitivity-001.html b/tests/wpt/web-platform-tests/css/css-values/q-unit-case-insensitivity-001.html
new file mode 100644
index 00000000000..b4a08aa1179
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/q-unit-case-insensitivity-001.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Values and Units Test: case-insensitivity of Q unit (quarter-millimeter)</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-values-3/#absolute-lengths">
+ <link rel="help" href="https://www.w3.org/TR/CSS22/syndata.html#characters">
+ <link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+
+ <meta content="This test checks that 'Q' unit is case-insensitive." name="assert">
+ <meta name="flags" content="">
+
+ <style>
+ div#test-overlapping-green
+ {
+ background-color: green;
+ height: 105.83333Q;
+ width: 1px;
+ width: 105.83333q;
+ }
+
+ /*
+
+ 25.4mm == 96px
+ Therefore, 26.45833mm == 100px
+ So, 26.45833 * 4 (Q per mm) == 105.83333Q == 100px
+
+ */
+
+ div#reference-overlapped-red
+ {
+ background-color: red;
+ bottom: 100px;
+ height: 100px;
+ position: relative;
+ width: 100px;
+ z-index: -1;
+ }
+ </style>
+
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.
+
+ <div id="test-overlapping-green"></div>
+
+ <div id="reference-overlapped-red"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-values/q-unit-case-insensitivity-002.html b/tests/wpt/web-platform-tests/css/css-values/q-unit-case-insensitivity-002.html
new file mode 100644
index 00000000000..328fcbd4aed
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/q-unit-case-insensitivity-002.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Values and Units Test: case-insensitivity of Q unit (quarter-millimeter)</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-values-3/#absolute-lengths">
+ <link rel="help" href="https://www.w3.org/TR/CSS22/syndata.html#characters">
+ <link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+
+ <meta content="This test checks that 'Q' unit is case-insensitive." name="assert">
+ <meta name="flags" content="">
+
+ <style>
+ div#test-overlapping-green
+ {
+ background-color: green;
+ height: 105.83333q;
+ width: 1px;
+ width: 105.83333Q;
+ }
+
+ /*
+
+ 25.4mm == 96px
+ Therefore, 26.45833mm == 100px
+ So, 26.45833 * 4 (Q per mm) == 105.83333Q == 100px
+
+ */
+
+ div#reference-overlapped-red
+ {
+ background-color: red;
+ bottom: 100px;
+ height: 100px;
+ position: relative;
+ width: 100px;
+ z-index: -1;
+ }
+ </style>
+
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.
+
+ <div id="test-overlapping-green"></div>
+
+ <div id="reference-overlapped-red"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-values/reference/ic-unit-008-ref.html b/tests/wpt/web-platform-tests/css/css-values/reference/ic-unit-008-ref.html
new file mode 100644
index 00000000000..6a27f6e820d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/reference/ic-unit-008-ref.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Values and Units Test Reference File</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ div
+ {
+ float: left;
+ font-size: 80px; /* arbitrary font size */
+ line-height: 1.8; /* arbitrary line-height */
+ }
+
+ div#blue
+ {
+ background-color: blue;
+ color: blue;
+ }
+
+ div#orange
+ {
+ background-color: orange;
+ color: orange;
+ clear: left;
+ }
+ </style>
+
+ <p>Test passes if there is a blue rectangle with the <strong>same width</strong> as an orange rectangle.
+
+ <div id="blue">&#27700;&#27700;&#27700;&#27700;&#27700;</div>
+
+ <div id="orange">&#27700;&#27700;&#27700;&#27700;&#27700;</div>
+
+ <!--
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#27700;
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#x6C34;
+
+ -->
diff --git a/tests/wpt/web-platform-tests/css/css-values/reference/ic-unit-009-ref.html b/tests/wpt/web-platform-tests/css/css-values/reference/ic-unit-009-ref.html
new file mode 100644
index 00000000000..2ae37b8b619
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/reference/ic-unit-009-ref.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Values and Units Test Reference File</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ div
+ {
+ float: left;
+ font-size: 80px; /* arbitrary font size */
+ line-height: 1.8; /* arbitrary line-height */
+ writing-mode: vertical-rl;
+ }
+
+ div#blue
+ {
+ background-color: blue;
+ color: blue;
+ }
+
+ div#orange
+ {
+ background-color: orange;
+ color: orange;
+ }
+ </style>
+
+ <p>Test passes if there is a blue rectangle with the <strong>same height</strong> as an orange rectangle.
+
+ <div id="blue">&#27700;&#27700;&#27700;&#27700;&#27700;</div>
+
+ <div id="orange">&#27700;&#27700;&#27700;&#27700;&#27700;</div>
+
+ <!--
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#27700;
+
+ 水 (CJK water ideograph, U+6C34) glyph == &#x6C34;
+
+ -->
diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-check-encryption-scheme.https.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-check-encryption-scheme.https.html
new file mode 100644
index 00000000000..eb580ea5f87
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-check-encryption-scheme.https.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html>
+ <head>
+ <meta charset=utf-8>
+ <title>Encrypted Media Extensions: Check encryptionScheme with Clear Key</title>
+ <link rel="help" href="https://w3c.github.io/encrypted-media/">
+
+ <!-- Web Platform Test Harness scripts -->
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+
+ <!-- Helper scripts for Encrypted Media Extensions tests -->
+ <script src=/encrypted-media/util/utils.js></script>
+ <script src=/encrypted-media/util/utf8.js></script>
+
+ <!-- Content metadata -->
+ <!--<script src=/encrypted-media/content/content-metadata.js></script>-->
+
+ <!-- The script for this specific test -->
+ <script src=/encrypted-media/scripts/check-encryption-scheme.js></script>
+
+ </head>
+ <body>
+ <div id='log'></div>
+
+ <script>
+ var config = { keysystem: 'org.w3.clearkey' }
+
+ runTest(config);
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-check-status-for-hdcp.https.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-check-status-for-hdcp.https.html
new file mode 100644
index 00000000000..5ec3b262852
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-check-status-for-hdcp.https.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html>
+ <head>
+ <meta charset=utf-8>
+ <title>Encrypted Media Extensions: Check HDCP status with Clear Key</title>
+ <link rel="help" href="https://w3c.github.io/encrypted-media/">
+
+ <!-- Web Platform Test Harness scripts -->
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+
+ <!-- Helper scripts for Encrypted Media Extensions tests -->
+ <script src=/encrypted-media/util/utils.js></script>
+ <script src=/encrypted-media/util/utf8.js></script>
+
+ <!-- Content metadata -->
+ <!--<script src=/encrypted-media/content/content-metadata.js></script>-->
+
+ <!-- The script for this specific test -->
+ <script src=/encrypted-media/scripts/check-status-for-hdcp.js></script>
+
+ </head>
+ <body>
+ <div id='log'></div>
+
+ <script>
+ var config = { keysystem: 'org.w3.clearkey' }
+
+ runTest(config);
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-check-encryption-scheme.https.html b/tests/wpt/web-platform-tests/encrypted-media/drm-check-encryption-scheme.https.html
new file mode 100644
index 00000000000..862591b1b89
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encrypted-media/drm-check-encryption-scheme.https.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html>
+ <head>
+ <meta charset=utf-8>
+ <title>Encrypted Media Extensions: Check encryptionScheme with DRM</title>
+ <link rel="help" href="https://w3c.github.io/encrypted-media/">
+
+ <!-- Web Platform Test Harness scripts -->
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+
+ <!-- Helper scripts for Encrypted Media Extensions tests -->
+ <script src=/encrypted-media/util/utils.js></script>
+ <script src=/encrypted-media/util/utf8.js></script>
+
+ <!-- Content metadata -->
+ <!--<script src=/encrypted-media/content/content-metadata.js></script>-->
+
+ <!-- The script for this specific test -->
+ <script src=/encrypted-media/scripts/check-encryption-scheme.js></script>
+
+ </head>
+ <body>
+ <div id='log'></div>
+
+ <script>
+ var config = { keysystem: getSupportedKeySystem() }
+
+ runTest(config);
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-check-status-for-hdcp.https.html b/tests/wpt/web-platform-tests/encrypted-media/drm-check-status-for-hdcp.https.html
new file mode 100644
index 00000000000..68c45be69b7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encrypted-media/drm-check-status-for-hdcp.https.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html>
+ <head>
+ <meta charset=utf-8>
+ <title>Encrypted Media Extensions: Check HDCP status with DRM</title>
+ <link rel="help" href="https://w3c.github.io/encrypted-media/">
+
+ <!-- Web Platform Test Harness scripts -->
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+
+ <!-- Helper scripts for Encrypted Media Extensions tests -->
+ <script src=/encrypted-media/util/utils.js></script>
+ <script src=/encrypted-media/util/utf8.js></script>
+
+ <!-- Content metadata -->
+ <!--<script src=/encrypted-media/content/content-metadata.js></script>-->
+
+ <!-- The script for this specific test -->
+ <script src=/encrypted-media/scripts/check-status-for-hdcp.js></script>
+
+ </head>
+ <body>
+ <div id='log'></div>
+
+ <script>
+ var config = { keysystem: getSupportedKeySystem() }
+
+ runTest(config);
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/encrypted-media/encrypted-media-supported-by-feature-policy.tentative.html b/tests/wpt/web-platform-tests/encrypted-media/encrypted-media-supported-by-feature-policy.tentative.html
new file mode 100644
index 00000000000..5b2d2240c6a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encrypted-media/encrypted-media-supported-by-feature-policy.tentative.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that encrypted-media is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://github.com/w3c/encrypted-media/pull/432">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('encrypted-media', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise encrypted-media.');
+</script>
diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js
new file mode 100644
index 00000000000..5d629271b42
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js
@@ -0,0 +1,41 @@
+function runTest(config, qualifier)
+{
+ function checkEncryptionScheme(encryptionScheme)
+ {
+ var simpleConfig = getSimpleConfiguration();
+ assert_greater_than(simpleConfig[0].audioCapabilities.length, 0);
+ simpleConfig[0].audioCapabilities.forEach(function(capability) {
+ capability.encryptionScheme = encryptionScheme;
+ });
+
+ return navigator.requestMediaKeySystemAccess(config.keysystem, simpleConfig)
+ .then(
+ function(access) {
+ var actualConfiguration = access.getConfiguration();
+ for (let i = 0; i < actualConfiguration.audioCapabilities.length; i++) {
+ const capability = actualConfiguration.audioCapabilities[i];
+
+ // If "encryptionScheme" is not supported, fail.
+ if (!('encryptionScheme' in capability)) {
+ return Promise.reject('Not implemented');
+ }
+
+ // If "encryptionScheme" is supported, it should be returned.
+ assert_equals(capability.encryptionScheme, encryptionScheme);
+ }
+ return Promise.resolve('Supported');
+ },
+ function error() {
+ // CDM does not support "encryptionScheme". Test should still pass.
+ return Promise.resolve('Not supported');
+ });
+ }
+
+ promise_test(
+ () => checkEncryptionScheme('cenc'),
+ testnamePrefix(qualifier, config.keysystem) + ' support for "cenc" encryption scheme.');
+
+ promise_test(
+ () => checkEncryptionScheme('cbcs'),
+ testnamePrefix(qualifier, config.keysystem) + ' support for "cbcs" encryption scheme.');
+}
diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/check-status-for-hdcp.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/check-status-for-hdcp.js
new file mode 100644
index 00000000000..ac308196952
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/check-status-for-hdcp.js
@@ -0,0 +1,26 @@
+function runTest(config, qualifier)
+{
+ function checkStatusForMinHdcpVersionPolicy(hdcpVersion)
+ {
+ return navigator.requestMediaKeySystemAccess(config.keysystem, getSimpleConfiguration())
+ .then(function(access) {
+ return access.createMediaKeys();
+ })
+ .then(function(mediaKeys) {
+ // As HDCP policy depends on the hardware running this test,
+ // don't bother checking the result returned as it may or
+ // may not be supported. This simply verifies that
+ // getStatusForPolicy() exists and doesn't blow up.
+ return mediaKeys.getStatusForPolicy({minHdcpVersion: hdcpVersion});
+ });
+ }
+
+ promise_test(
+ () => checkStatusForMinHdcpVersionPolicy(''),
+ testnamePrefix(qualifier, config.keysystem) +
+ ' support for empty HDCP version.');
+
+ promise_test(
+ () => checkStatusForMinHdcpVersionPolicy('1.0'),
+ testnamePrefix(qualifier, config.keysystem) + ' support for HDCP 1.0.');
+}
diff --git a/tests/wpt/web-platform-tests/event-timing/supported-types.window.js b/tests/wpt/web-platform-tests/event-timing/supported-types.window.js
new file mode 100644
index 00000000000..c81d501f49f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/event-timing/supported-types.window.js
@@ -0,0 +1,11 @@
+test(() => {
+ if (typeof PerformanceObserver.supportedEntryTypes === "undefined")
+ assert_unreached("supportedEntryTypes is not supported.");
+ const types = PerformanceObserver.supportedEntryTypes;
+ assert_true(types.includes("firstInput"),
+ "There should be 'firstInput' in PerformanceObserver.supportedEntryTypes");
+ assert_true(types.includes("event"),
+ "There should be 'event' in PerformanceObserver.supportedEntryTypes");
+ assert_greater_than(types.indexOf("firstInput"), types.indexOf('event'),
+ "The 'firstInput' entry should appear after the 'event' entry");
+}, "supportedEntryTypes contains 'event' and 'firstInput'.");
diff --git a/tests/wpt/web-platform-tests/feature-policy/payment-supported-by-feature-policy.tentative.html b/tests/wpt/web-platform-tests/feature-policy/payment-supported-by-feature-policy.tentative.html
new file mode 100644
index 00000000000..07dec701769
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/payment-supported-by-feature-policy.tentative.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that payment is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://github.com/w3c/payment-request/issues/600">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('payment', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise payment.');
+</script>
diff --git a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-supported-by-feature-policy.html
new file mode 100644
index 00000000000..a65c682a6ad
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-supported-by-feature-policy.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that picture-in-picture is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://wicg.github.io/picture-in-picture/#feature-policy">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('picture-in-picture', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise picture-in-picture.');
+</script>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/unoptimized-image.jpg b/tests/wpt/web-platform-tests/feature-policy/reporting/unoptimized-image.jpg
new file mode 100644
index 00000000000..599137a55d7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/unoptimized-image.jpg
Binary files differ
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/unoptimized-images-reporting.html b/tests/wpt/web-platform-tests/feature-policy/reporting/unoptimized-images-reporting.html
new file mode 100644
index 00000000000..fb27a13996a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/unoptimized-images-reporting.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ </head>
+ <body>
+ <img src="./unoptimized-image.jpg">
+ <script>
+var check_report_format = (reports, observer) => {
+ let report = reports[0];
+ assert_equals(report.type, "feature-policy-violation");
+ assert_equals(report.url, document.location.href);
+ assert_equals(report.body.featureId, "unoptimized-images");
+ assert_equals(report.body.disposition, "enforce");
+};
+
+async_test(t => {
+ new ReportingObserver(t.step_func_done(check_report_format),
+ {types: ['feature-policy-violation'], buffered: true}).observe();
+}, "unoptimized-images Report Format");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/unoptimized-images-reporting.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/unoptimized-images-reporting.html.headers
new file mode 100644
index 00000000000..10b41235409
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/reporting/unoptimized-images-reporting.html.headers
@@ -0,0 +1 @@
+Feature-Policy: unoptimized-images 'none'
diff --git a/tests/wpt/web-platform-tests/fetch/cross-origin-resource-policy/syntax.any.js b/tests/wpt/web-platform-tests/fetch/cross-origin-resource-policy/syntax.any.js
index cf5b06d5c4f..dc874977a63 100644
--- a/tests/wpt/web-platform-tests/fetch/cross-origin-resource-policy/syntax.any.js
+++ b/tests/wpt/web-platform-tests/fetch/cross-origin-resource-policy/syntax.any.js
@@ -8,7 +8,8 @@ const crossOriginURL = get_host_info().HTTP_REMOTE_ORIGIN + "/fetch/cross-origin
"SAME-ORIGIN",
"Same-Origin",
"same-origin, <>",
- "same-origin, same-origin"
+ "same-origin, same-origin",
+ "https://www.example.com", // See https://github.com/whatwg/fetch/issues/760
].forEach(incorrectHeaderValue => {
// Note: an incorrect value results in a successful load, so this test is only meaningful in
// implementations with support for the header.
diff --git a/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-supported-by-feature-policy.html
new file mode 100644
index 00000000000..aa05f33a5e4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-supported-by-feature-policy.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that geolocation is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://w3c.github.io/sensors/#feature-policy-api">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('geolocation', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise geolocation.');
+</script>
diff --git a/tests/wpt/web-platform-tests/gyroscope/Gyroscope-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/gyroscope/Gyroscope-supported-by-feature-policy.html
new file mode 100644
index 00000000000..06a4137f17d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/gyroscope/Gyroscope-supported-by-feature-policy.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that gyroscope is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://w3c.github.io/sensors/#feature-policy-api">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('gyroscope', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise gyroscope.');
+</script>
diff --git a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html
index caac56a176d..888343b45bc 100644
--- a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html
+++ b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html
@@ -106,16 +106,22 @@ addTest(function() {
C.location[prop]; // Shouldn't throw.
Object.getOwnPropertyDescriptor(C.location, prop); // Shouldn't throw.
assert_true(Object.prototype.hasOwnProperty.call(C.location, prop), "hasOwnProperty for " + prop);
+ assert_throws("SecurityError", function() { C.location[prop] = undefined; }, "Should throw when writing to " + prop + " on Location");
+ }
+ else if (prop == 'href') {
+ Object.getOwnPropertyDescriptor(C.location, prop); // Shouldn't throw.
+ assert_true(Object.prototype.hasOwnProperty.call(C.location, prop), "hasOwnProperty for " + prop);
+ assert_throws("SecurityError", function() { C.location[prop] },
+ "Should throw reading href on Location");
}
else {
- assert_throws("SecurityError", function() { C[prop]; }, "Should throw when accessing " + prop + " on Location");
- assert_throws("SecurityError", function() { Object.getOwnPropertyDescriptor(C, prop); },
+ assert_throws("SecurityError", function() { C.location[prop]; }, "Should throw when accessing " + prop + " on Location");
+ assert_throws("SecurityError", function() { Object.getOwnPropertyDescriptor(C.location, prop); },
"Should throw when accessing property descriptor for " + prop + " on Location");
- assert_throws("SecurityError", function() { Object.prototype.hasOwnProperty.call(C, prop); },
+ assert_throws("SecurityError", function() { Object.prototype.hasOwnProperty.call(C.location, prop); },
"Should throw when invoking hasOwnProperty for " + prop + " on Location");
+ assert_throws("SecurityError", function() { C.location[prop] = undefined; }, "Should throw when writing to " + prop + " on Location");
}
- if (prop != 'href')
- assert_throws("SecurityError", function() { C[prop] = undefined; }, "Should throw when writing to " + prop + " on Location");
}
}, "Only whitelisted properties are accessible cross-origin");
@@ -150,11 +156,22 @@ addTest(function() {
assert_throws(new TypeError, function() { protoSetter.call(C, new Object()); }, "proto setter |call| on cross-origin Window");
assert_throws(new TypeError, function() { protoSetter.call(C.location, new Object()); }, "proto setter |call| on cross-origin Location");
});
+ // Hack to avoid "duplicate test name" harness issues.
+ setters.forEach(function(protoSetter) {
+ test(function() { protoSetter.call(C, null); },
+ "proto setter |call| on cross-origin Window with null (" + protoSetter + ")");
+ test(function() { protoSetter.call(C.location, null); },
+ "proto setter |call| on cross-origin Location with null (" + protoSetter + ")");
+ });
if (Reflect.setPrototypeOf) {
assert_false(Reflect.setPrototypeOf(C, new Object()),
"Reflect.setPrototypeOf on cross-origin Window");
+ assert_true(Reflect.setPrototypeOf(C, null),
+ "Reflect.setPrototypeOf on cross-origin Window with null");
assert_false(Reflect.setPrototypeOf(C.location, new Object()),
"Reflect.setPrototypeOf on cross-origin Location");
+ assert_true(Reflect.setPrototypeOf(C.location, null),
+ "Reflect.setPrototypeOf on cross-origin Location with null");
}
}, "[[SetPrototypeOf]] should return false");
@@ -230,6 +247,19 @@ addTest(function() {
assert_equals(typeof D.then, "object");
}, "[[GetOwnProperty]] - Subframe named 'then' should shadow the default 'then' value");
+addTest(function() {
+ assert_equals(typeof D.close, "function");
+ assert_equals(typeof D.open, "object");
+}, "[[GetOwnProperty]] - Subframes should be visible cross-origin only if their names don't match the names of cross-origin-exposed IDL properties");
+
+addTest(function() {
+ assert_equals(typeof Object.getOwnPropertyDescriptor(C, '0').value, "object");
+ assert_equals(typeof Object.getOwnPropertyDescriptor(C, '1').value, "object");
+ assert_throws("SecurityError", function() {
+ Object.getOwnPropertyDescriptor(C, '2');
+ });
+}, "[[GetOwnProperty]] - Should be able to get a property descriptor for an indexed property only if it corresponds to a child window.");
+
/*
* [[Delete]]
*/
diff --git a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/frame-with-then.html b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/frame-with-then.html
index 96cdf1ea99b..1127995ea84 100644
--- a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/frame-with-then.html
+++ b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/frame-with-then.html
@@ -6,5 +6,9 @@
<!-- A subframe to test "then" behavior -->
<iframe name="then"></iframe>
<iframe name="b"></iframe>
+ <!-- Two subframes with names corresponding to IDL-defined properties; one
+ a cross-origin-exposed property and one not exposed cross-origin -->
+ <iframe name="close"></iframe>
+ <iframe name="open"></iframe>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/autoplay-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/autoplay-supported-by-feature-policy.html
new file mode 100644
index 00000000000..af4de6bf89d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/autoplay-supported-by-feature-policy.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that autoplay is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/infrastructure.html#policy-controlled-features">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('autoplay', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise autoplay.');
+</script>
diff --git a/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl b/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl
index 137528c148a..868338b3080 100644
--- a/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl
+++ b/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl
@@ -200,6 +200,7 @@ interface IDBTransaction : EventTarget {
readonly attribute DOMException error;
IDBObjectStore objectStore(DOMString name);
+ void commit();
void abort();
// Event handlers:
diff --git a/tests/wpt/web-platform-tests/interfaces/mediastream-recording.idl b/tests/wpt/web-platform-tests/interfaces/mediastream-recording.idl
index 5bf661e6cc5..0be0538d122 100644
--- a/tests/wpt/web-platform-tests/interfaces/mediastream-recording.idl
+++ b/tests/wpt/web-platform-tests/interfaces/mediastream-recording.idl
@@ -18,7 +18,7 @@ interface MediaRecorder : EventTarget {
readonly attribute unsigned long videoBitsPerSecond;
readonly attribute unsigned long audioBitsPerSecond;
- void start(optional long timeslice);
+ void start(optional unsigned long timeslice);
void stop();
void pause();
void resume();
diff --git a/tests/wpt/web-platform-tests/magnetometer/Magnetometer-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/magnetometer/Magnetometer-supported-by-feature-policy.html
new file mode 100644
index 00000000000..a0493638950
--- /dev/null
+++ b/tests/wpt/web-platform-tests/magnetometer/Magnetometer-supported-by-feature-policy.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that magnetometer is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://w3c.github.io/sensors/#feature-policy-api">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('magnetometer', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise magnetometer.');
+</script>
diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-supported-by-feature-policy.html
new file mode 100644
index 00000000000..ef29ae6eec2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-supported-by-feature-policy.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<title>Test that accelerometer is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://w3c.github.io/mediacapture-main/#feature-policy-integration">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('camera', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise camera.');
+
+test(() => {
+ assert_in_array('microphone', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise microphone.');
+</script>
diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html
index 158c9014617..c062205f0d4 100644
--- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html
+++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html
@@ -1,6 +1,7 @@
<!doctype html>
<title>MediaStreamTrack GetSettings</title>
<p class="instructions">When prompted, accept to share your video stream.</p>
+<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
diff --git a/tests/wpt/web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html b/tests/wpt/web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html
index edde533be6b..45f3f0a5672 100644
--- a/tests/wpt/web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html
+++ b/tests/wpt/web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html
@@ -68,7 +68,6 @@ function runManualTest(button, expected = {}) {
<button onclick="
const expectedAddress = {
country: 'AU',
- regionCode: 'QLD',
addressLine: '55 test st',
city: 'Chapel Hill',
dependentLocality: '',
diff --git a/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html b/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html
index 356f30da6b5..c3e2ba71322 100644
--- a/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html
+++ b/tests/wpt/web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html
@@ -82,11 +82,6 @@ function retryShowsShippingAddressMember(button, error) {
</button>
</li>
<li>
- <button onclick="retryShowsShippingAddressMember(this, { regionCode: 'REGIONCODE ERROR' });">
- The payment sheet shows "REGIONCODE ERROR" for the shipping address' region code.
- </button>
- </li>
- <li>
<button onclick="retryShowsShippingAddressMember(this, { sortingCode: 'SORTINGCODE ERROR' });">
The payment sheet shows "SORTINGCODE ERROR" for the shipping address' sorting code.
</button>
diff --git a/tests/wpt/web-platform-tests/payment-request/historical.https.html b/tests/wpt/web-platform-tests/payment-request/historical.https.html
index cbd29d4cff8..e681f6486b9 100644
--- a/tests/wpt/web-platform-tests/payment-request/historical.https.html
+++ b/tests/wpt/web-platform-tests/payment-request/historical.https.html
@@ -21,6 +21,9 @@
// https://github.com/w3c/payment-request/pull/765
["languageCode", "PaymentAddress"],
+
+ // https://github.com/w3c/payment-request/pull/823
+ ["regionCode", "PaymentAddress"],
].forEach(([member, interf]) => {
test(() => {
assert_false(member in window[interf].prototype);
diff --git a/tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-001.html b/tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-001.html
index 2e33cec0b33..09fedcf6018 100644
--- a/tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-001.html
+++ b/tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-001.html
@@ -30,6 +30,13 @@ var properties = [
'grid-template-columns',
'grid-template-rows',
'inline-size',
+ 'inset',
+ 'inset-block',
+ 'inset-block-end',
+ 'inset-block-start',
+ 'inset-inline',
+ 'inset-inline-end',
+ 'inset-inline-start',
'margin-block-end',
'margin-block-start',
'margin-inline-end',
diff --git a/tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-003.html b/tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-003.html
new file mode 100644
index 00000000000..4cbe012a55e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/quirks/unitless-length/excluded-properties-003.html
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta charset="utf-8">
+<title>inset does not support quirky-length</title>
+<link rel="help" href="https://quirks.spec.whatwg.org/#the-unitless-length-quirk">
+<meta name="assert" content="quirky-length is not supported by inset.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+'use strict';
+
+test(() => {
+ const quirky_values = [
+ '1',
+ '1 2px',
+ '1px 2',
+ '1 2',
+ '1 2px 3px',
+ '1px 2 3px',
+ '1px 2px 3',
+ '1 2 3',
+ '1 2px 3px 4px',
+ '1px 2 3px 4px',
+ '1px 2px 3 4px',
+ '1px 2px 3px 4',
+ '1 2 3 4'
+ ];
+
+ target.style['inset'] = '5px 6px 7px 8px';
+
+ for (let value of quirky_values) {
+ target.style['inset'] = value;
+ assert_equals(target.style['inset'], '5px 6px 7px 8px', 'inset rejects quirky length "' + value + '"');
+ }
+}, 'inset does not support quirky length values');
+
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js
index ed3ffb425a8..fb86c580d22 100644
--- a/tests/wpt/web-platform-tests/resources/testharness.js
+++ b/tests/wpt/web-platform-tests/resources/testharness.js
@@ -2135,6 +2135,9 @@ policies and contribution forms [3].
}
} else if (p == "timeout_multiplier") {
this.timeout_multiplier = value;
+ if (this.timeout_length) {
+ this.timeout_length *= this.timeout_multiplier;
+ }
}
}
}
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/appcache-ordering-main.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/appcache-ordering-main.https.html
index 921dae015cb..a86671c1fe4 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/appcache-ordering-main.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/appcache-ordering-main.https.html
@@ -5,7 +5,6 @@
<body>
<script>
-var INSTALL_APPCACHE_URL = "resources/appcache-ordering.install.html";
var IS_APPCACHED_URL = "resources/appcache-ordering.is-appcached.html";
var SERVICE_WORKER_SCOPE = "resources/appcache-ordering";
var SERVICE_WORKER_SCRIPT = "resources/empty-worker.js";
@@ -15,31 +14,6 @@ var reject_install_appcache = undefined;
var frames = [];
-// Called by the INSTALL_APPCACHE_URL child frame.
-function notify_appcache_installed(success) {
- if (success)
- resolve_install_appcache();
- else
- reject_install_appcache();
-}
-
-function install_appcache() {
- return new Promise(function(resolve, reject) {
- var frame = document.createElement('iframe');
- frames.push(frame);
- frame.src = INSTALL_APPCACHE_URL;
- document.body.appendChild(frame);
- resolve_install_appcache = function() {
- document.body.removeChild(frame);
- resolve();
- };
- reject_install_appcache = function() {
- document.body.removeChild(frame);
- reject();
- };
- });
-}
-
var resolve_is_appcached = undefined;
// Called by the IS_APPCACHED_URL child frame.
@@ -63,7 +37,7 @@ function is_appcached() {
promise_test(function(t) {
return service_worker_unregister(t, SERVICE_WORKER_SCOPE)
.then(function() {
- return install_appcache();
+ return install_appcache_ordering_manifest();
})
.then(function() {
return is_appcached();
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/claim-fetch-with-appcache.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/claim-fetch-with-appcache.https.html
new file mode 100644
index 00000000000..4890a84ba10
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/claim-fetch-with-appcache.https.html
@@ -0,0 +1,81 @@
+<!doctype html>
+<meta charset=utf-8>
+<title></title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/test-helpers.sub.js"></script>
+<body>
+<script>
+
+// This test makes a frame controlled by AppCache, then registers a service
+// worker that calls claim() to control the frame. AppCache should be completely
+// bypassed once the service worker claims the frame.
+
+const fetch_text = async frame => {
+ const response = await
+ frame.contentWindow.fetch('appcache-ordering.is-appcached.js');
+ return await response.text();
+};
+
+const check_is_appcached = async frame => {
+ // This should FALLBACK to ordering.is_appcached.js as in the manifest
+ // if the appcache is effective.
+ const response = await
+ frame.contentWindow.fetch('appcache-ordering.is-appcached404.js');
+ return await response.ok;
+};
+
+promise_test(async t => {
+ const scope = 'resources/';
+ const script = 'resources/claim-worker.js';
+
+ await install_appcache_ordering_manifest();
+
+ // Create the test iframe.
+ const frame = await with_iframe('resources/blank.html');
+ t.add_cleanup(async () => {
+ if (frame) frame.remove();
+ return service_worker_unregister(t, scope);
+ });
+
+ // Check that the appcache controls the frame.
+ assert_equals(await check_is_appcached(frame), true,
+ 'AppCache should be present');
+
+ // Check the controller and test with fetch.
+ assert_equals(frame.contentWindow.navigator.controller, undefined,
+ 'Should have no controller.');
+ assert_equals(await fetch_text(frame), 'var is_appcached = true;\n',
+ 'fetch() should not be intercepted.');
+
+ // Register a service worker.
+ let registration = await service_worker_unregister_and_register(t, script, scope);
+ const worker = registration.installing;
+ await wait_for_state(t, worker, 'activated');
+
+ // Let the service worker claim the iframe.
+ const channel = new MessageChannel();
+ const check_message = new Promise(resolve => {
+ channel.port1.onmessage = async e => {
+ assert_equals(e.data, 'PASS', 'Worker call to claim() should fulfill.');
+ resolve();
+ };
+ });
+ worker.postMessage({port: channel.port2}, [channel.port2]);
+ await check_message;
+
+ // Check that the appcache does NOT control the frame.
+ assert_equals(await check_is_appcached(frame), false,
+ 'AppCache should not be present');
+
+ // Check the controller and test with fetch.
+ registration = await
+ frame.contentWindow.navigator.serviceWorker.getRegistration(scope);
+ assert_equals(frame.contentWindow.navigator.serviceWorker.controller,
+ registration.active, 'iframe should be claimed.');
+ assert_equals(await fetch_text(frame), 'Intercepted!',
+ 'fetch() should be intercepted.');
+}, 'fetch() should be intercepted after the client is claimed.')
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/appcache-ordering.manifest b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/appcache-ordering.manifest
index 0deed0e91a8..e6597ccb8ac 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/appcache-ordering.manifest
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/appcache-ordering.manifest
@@ -1,6 +1,7 @@
CACHE MANIFEST
appcache-ordering.is-appcached.html
+blank.html
FALLBACK:
appcache-ordering.is-appcached404.js appcache-ordering.is-appcached.js
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/claim-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/claim-worker.js
index 53f210cf763..18004079475 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/claim-worker.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/claim-worker.js
@@ -14,5 +14,6 @@ self.addEventListener('message', function(event) {
});
self.addEventListener('fetch', function(event) {
- event.respondWith(new Response('Intercepted!'));
-});
+ if (!/404/.test(event.request.url))
+ event.respondWith(new Response('Intercepted!'));
+ });
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js
index 7efde354a8f..14101319fa9 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js
@@ -276,3 +276,33 @@ async function wait_for_activation_on_dummy_scope(t, window_or_workerglobalscope
await wait_for_state(t, registration.installing, 'activated');
await registration.unregister();
}
+
+// This installs resources/appcache-ordering.manifest.
+function install_appcache_ordering_manifest() {
+ let resolve_install_appcache;
+ let reject_install_appcache;
+
+ // This is notified by the child iframe, i.e. appcache-ordering.install.html,
+ // that's to be created below.
+ window.notify_appcache_installed = success => {
+ if (success)
+ resolve_install_appcache();
+ else
+ reject_install_appcache();
+ };
+
+ return new Promise((resolve, reject) => {
+ const frame = document.createElement('iframe');
+ frame.src = 'resources/appcache-ordering.install.html';
+ document.body.appendChild(frame);
+ resolve_install_appcache = function() {
+ document.body.removeChild(frame);
+ resolve();
+ };
+ reject_install_appcache = function() {
+ document.body.removeChild(frame);
+ reject();
+ };
+ });
+}
+
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg-util.js b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg-util.js
index 0d0e263fd62..7d592ea2143 100644
--- a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg-util.js
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg-util.js
@@ -41,3 +41,27 @@ function loadScript(url) {
function innerURLOrigin() {
return 'https://127.0.0.1:8444';
}
+
+function runReferrerTests(test_cases) {
+ for (const i in test_cases) {
+ const test_case = test_cases[i];
+ promise_test(async (t) => {
+ const sxgUrl = test_case.origin + '/signed-exchange/resources/sxg/' +
+ test_case.sxg;
+ const message =
+ await openSXGInIframeAndWaitForMessage(
+ t, sxgUrl, test_case.referrerPolicy);
+ assert_false(message.is_fallback);
+ assert_equals(message.referrer, test_case.expectedReferrer);
+
+ const invalidSxgUrl =
+ test_case.origin + '/signed-exchange/resources/sxg/invalid-' +
+ test_case.sxg;
+ const fallbackMessage =
+ await openSXGInIframeAndWaitForMessage(
+ t, invalidSxgUrl, test_case.referrerPolicy);
+ assert_true(fallbackMessage.is_fallback);
+ assert_equals(fallbackMessage.referrer, test_case.expectedReferrer);
+ }, 'Referrer of SignedHTTPExchange test : ' + JSON.stringify(test_case));
+ }
+}
diff --git a/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-policy-header.tentative.https.html b/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-policy-header.tentative.https.html
new file mode 100644
index 00000000000..5dff6af8cb0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-policy-header.tentative.https.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<title>Referrer-Policy header in outer SXG response</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="./resources/sxg-util.js"></script>
+<body>
+<script>
+(() => {
+ const SAME_ORIGIN = get_host_info().HTTPS_ORIGIN;
+ const SAME_ORIGIN_SXG = 'sxg-referrer-same-origin.sxg';
+ const TEST_CASES = [
+ // Referrer-Policy header in outer SXG response.
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG + '?pipe=header(Referrer-Policy,no-referrer)',
+ referrerPolicy: undefined,
+ expectedReferrer: ''
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG +
+ '?pipe=header(Referrer-Policy,no-referrer-when-downgrade)',
+ referrerPolicy: undefined,
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG + '?pipe=header(Referrer-Policy,origin)',
+ referrerPolicy: undefined,
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG + '?pipe=header(Referrer-Policy,same-origin)',
+ referrerPolicy: undefined,
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG + '?pipe=header(Referrer-Policy,strict-origin)',
+ referrerPolicy: undefined,
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG +
+ '?pipe=header(Referrer-Policy,strict-origin-when-cross-origin)',
+ referrerPolicy: undefined,
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG + '?pipe=header(Referrer-Policy,unsafe-url)',
+ referrerPolicy: undefined,
+ expectedReferrer: document.location.href
+ },
+ ];
+ runReferrerTests(TEST_CASES);
+})();
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-remote-physical-remote-logical.tentative.https.html b/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-remote-physical-remote-logical.tentative.https.html
new file mode 100644
index 00000000000..c2870fdd0af
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-remote-physical-remote-logical.tentative.https.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<title>Referrer of SignedHTTPExchange(physical:remote origin, logical:remote origin)</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="./resources/sxg-util.js"></script>
+<body>
+<script>
+(() => {
+ const REMOTE_ORIGIN = get_host_info().HTTPS_REMOTE_ORIGIN;
+ const REMOTE_ORIGIN_SXG = 'sxg-referrer-remote-origin.sxg';
+ const TEST_CASES = [
+ // Physical origin = remote origin. Logical origin = remote origin.
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: undefined,
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'no-referrer',
+ expectedReferrer: ''
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'no-referrer-when-downgrade',
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'origin',
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'same-origin',
+ expectedReferrer: ''
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'strict-origin',
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'strict-origin-when-cross-origin',
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'unsafe-url',
+ expectedReferrer: document.location.href
+ },
+ ];
+ runReferrerTests(TEST_CASES);
+})();
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-remote-physical-same-logical.tentative.https.html b/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-remote-physical-same-logical.tentative.https.html
new file mode 100644
index 00000000000..b3c77d14273
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-remote-physical-same-logical.tentative.https.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<title>Referrer of SignedHTTPExchange(physical:remote origin, logical:same origin)</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="./resources/sxg-util.js"></script>
+<body>
+<script>
+(() => {
+ const REMOTE_ORIGIN = get_host_info().HTTPS_REMOTE_ORIGIN;
+ const SAME_ORIGIN_SXG = 'sxg-referrer-same-origin.sxg';
+ const TEST_CASES = [
+ // Physical origin = remote origin. Logical origin = same origin.
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: undefined,
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'no-referrer',
+ expectedReferrer: ''
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'no-referrer-when-downgrade',
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'origin',
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'same-origin',
+ expectedReferrer: ''
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'strict-origin',
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'strict-origin-when-cross-origin',
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: REMOTE_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'unsafe-url',
+ expectedReferrer: document.location.href
+ },
+ ];
+ runReferrerTests(TEST_CASES);
+})();
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-same-physical-remote-logical.tentative.https.html b/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-same-physical-remote-logical.tentative.https.html
new file mode 100644
index 00000000000..8a6cdd993af
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-same-physical-remote-logical.tentative.https.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<title>Referrer of SignedHTTPExchange(physical:same origin, logical:remote origin)</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="./resources/sxg-util.js"></script>
+<body>
+<script>
+(() => {
+ const SAME_ORIGIN = get_host_info().HTTPS_ORIGIN;
+ const REMOTE_ORIGIN_SXG = 'sxg-referrer-remote-origin.sxg';
+ const TEST_CASES = [
+ // Physical origin = same origin. Logical origin = remote origin.
+ {
+ origin: SAME_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: undefined,
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'no-referrer',
+ expectedReferrer: ''
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'no-referrer-when-downgrade',
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'origin',
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'same-origin',
+ expectedReferrer: ''
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'strict-origin',
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'strict-origin-when-cross-origin',
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: REMOTE_ORIGIN_SXG,
+ referrerPolicy: 'unsafe-url',
+ expectedReferrer: document.location.href
+ },
+ ];
+ runReferrerTests(TEST_CASES);
+})();
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-same-physical-same-logical.tentative.https.html b/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-same-physical-same-logical.tentative.https.html
new file mode 100644
index 00000000000..88917167b9c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer-same-physical-same-logical.tentative.https.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<title>Referrer of SignedHTTPExchange(physical:same origin, logical:same origin)</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="./resources/sxg-util.js"></script>
+<body>
+<script>
+(() => {
+ const SAME_ORIGIN = get_host_info().HTTPS_ORIGIN;
+ const SAME_ORIGIN_SXG = 'sxg-referrer-same-origin.sxg';
+ const TEST_CASES = [
+ // Physical origin = same origin. Logical origin = same origin.
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: undefined,
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'no-referrer',
+ expectedReferrer: ''
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'no-referrer-when-downgrade',
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'origin',
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'same-origin',
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'strict-origin',
+ expectedReferrer: document.location.origin + '/'
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'strict-origin-when-cross-origin',
+ expectedReferrer: document.location.href
+ },
+ {
+ origin: SAME_ORIGIN,
+ sxg: SAME_ORIGIN_SXG,
+ referrerPolicy: 'unsafe-url',
+ expectedReferrer: document.location.href
+ },
+ ];
+ runReferrerTests(TEST_CASES);
+})();
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer.tentative.https.html b/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer.tentative.https.html
deleted file mode 100644
index 3be9b1ff9b4..00000000000
--- a/tests/wpt/web-platform-tests/signed-exchange/sxg-referrer.tentative.https.html
+++ /dev/null
@@ -1,284 +0,0 @@
-<!DOCTYPE html>
-<title>Referrer of SignedHTTPExchange</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/common/get-host-info.sub.js"></script>
-<script src="./resources/sxg-util.js"></script>
-<body>
-<script>
-(() => {
- const SAME_ORIGIN = get_host_info().HTTPS_ORIGIN;
- const REMOTE_ORIGIN = get_host_info().HTTPS_REMOTE_ORIGIN;
- const SAME_ORIGIN_SXG = 'sxg-referrer-same-origin.sxg';
- const REMOTE_ORIGIN_SXG = 'sxg-referrer-remote-origin.sxg';
- const TEST_CASES = [
- // Physical origin = same origin. Logical origin = same origin.
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: undefined,
- expectedReferrer: document.location.href
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'no-referrer',
- expectedReferrer: ''
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'no-referrer-when-downgrade',
- expectedReferrer: document.location.href
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'origin',
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'same-origin',
- expectedReferrer: document.location.href
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'strict-origin',
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'strict-origin-when-cross-origin',
- expectedReferrer: document.location.href
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'unsafe-url',
- expectedReferrer: document.location.href
- },
-
- // Physical origin = same origin. Logical origin = remote origin.
- {
- origin: SAME_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: undefined,
- expectedReferrer: document.location.href
- },
- {
- origin: SAME_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'no-referrer',
- expectedReferrer: ''
- },
- {
- origin: SAME_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'no-referrer-when-downgrade',
- expectedReferrer: document.location.href
- },
- {
- origin: SAME_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'origin',
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: SAME_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'same-origin',
- expectedReferrer: ''
- },
- {
- origin: SAME_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'strict-origin',
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: SAME_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'strict-origin-when-cross-origin',
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: SAME_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'unsafe-url',
- expectedReferrer: document.location.href
- },
-
- // Physical origin = remote origin. Logical origin = same origin.
- {
- origin: REMOTE_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: undefined,
- expectedReferrer: document.location.href
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'no-referrer',
- expectedReferrer: ''
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'no-referrer-when-downgrade',
- expectedReferrer: document.location.href
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'origin',
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'same-origin',
- expectedReferrer: ''
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'strict-origin',
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'strict-origin-when-cross-origin',
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: SAME_ORIGIN_SXG,
- referrerPolicy: 'unsafe-url',
- expectedReferrer: document.location.href
- },
-
- // Physical origin = remote origin. Logical origin = remote origin.
- {
- origin: REMOTE_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: undefined,
- expectedReferrer: document.location.href
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'no-referrer',
- expectedReferrer: ''
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'no-referrer-when-downgrade',
- expectedReferrer: document.location.href
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'origin',
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'same-origin',
- expectedReferrer: ''
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'strict-origin',
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'strict-origin-when-cross-origin',
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: REMOTE_ORIGIN,
- sxg: REMOTE_ORIGIN_SXG,
- referrerPolicy: 'unsafe-url',
- expectedReferrer: document.location.href
- },
-
- // Referrer-Policy header in outer SXG response.
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG + '?pipe=header(Referrer-Policy,no-referrer)',
- referrerPolicy: undefined,
- expectedReferrer: ''
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG +
- '?pipe=header(Referrer-Policy,no-referrer-when-downgrade)',
- referrerPolicy: undefined,
- expectedReferrer: document.location.href
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG + '?pipe=header(Referrer-Policy,origin)',
- referrerPolicy: undefined,
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG + '?pipe=header(Referrer-Policy,same-origin)',
- referrerPolicy: undefined,
- expectedReferrer: document.location.href
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG + '?pipe=header(Referrer-Policy,strict-origin)',
- referrerPolicy: undefined,
- expectedReferrer: document.location.origin + '/'
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG +
- '?pipe=header(Referrer-Policy,strict-origin-when-cross-origin)',
- referrerPolicy: undefined,
- expectedReferrer: document.location.href
- },
- {
- origin: SAME_ORIGIN,
- sxg: SAME_ORIGIN_SXG + '?pipe=header(Referrer-Policy,unsafe-url)',
- referrerPolicy: undefined,
- expectedReferrer: document.location.href
- },
- ];
- for (const i in TEST_CASES) {
- const test_case = TEST_CASES[i];
- promise_test(async (t) => {
- const sxgUrl = test_case.origin + '/signed-exchange/resources/sxg/' +
- test_case.sxg;
- const message =
- await openSXGInIframeAndWaitForMessage(
- t, sxgUrl, test_case.referrerPolicy);
- assert_false(message.is_fallback);
- assert_equals(message.referrer, test_case.expectedReferrer);
-
- const invalidSxgUrl =
- test_case.origin + '/signed-exchange/resources/sxg/invalid-' +
- test_case.sxg;
- const fallbackMessage =
- await openSXGInIframeAndWaitForMessage(
- t, invalidSxgUrl, test_case.referrerPolicy);
- assert_true(fallbackMessage.is_fallback);
- assert_equals(fallbackMessage.referrer, test_case.expectedReferrer);
- }, 'Referrer of SignedHTTPExchange test : ' + JSON.stringify(test_case));
- }
-})();
-</script>
-</body>
diff --git a/tests/wpt/web-platform-tests/storage/estimate-usage-details-application-cache.https.tentative.html b/tests/wpt/web-platform-tests/storage/estimate-usage-details-application-cache.https.tentative.html
new file mode 100644
index 00000000000..464a99887bd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/storage/estimate-usage-details-application-cache.https.tentative.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html>
+<title>Quota Estimate: usage details reflect application cache changes.</title>
+<meta charset='utf-8'>
+<link rel='author' href='jarrydg@chromium.org' title='Jarryd Goodman'>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src='../cookie-store/resources/helpers.js'></script>
+<script>
+'use strict';
+
+promise_test(async t => {
+ let estimate = await navigator.storage.estimate();
+
+ const usageBeforeCreate = estimate.usageDetails.applicationCache || 0;
+
+ const iframe = await
+ createIframe('./resources/iframe_with_appcache_manifest.html', t);
+ await waitForMessage();
+
+ estimate = await navigator.storage.estimate();
+ assert_true('applicationCache' in estimate.usageDetails);
+ const usageAfterCreate = estimate.usageDetails.applicationCache;
+
+ assert_greater_than(
+ usageAfterCreate, usageBeforeCreate);
+}, 'estimate() shows usage increase after app is cached');
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/storage/estimate-usage-details-caches.https.tentative.any.js b/tests/wpt/web-platform-tests/storage/estimate-usage-details-caches.https.tentative.any.js
new file mode 100644
index 00000000000..bf889f84184
--- /dev/null
+++ b/tests/wpt/web-platform-tests/storage/estimate-usage-details-caches.https.tentative.any.js
@@ -0,0 +1,20 @@
+// META: title=StorageManager: estimate() for caches
+
+promise_test(async t => {
+ let estimate = await navigator.storage.estimate();
+
+ const cachesUsageBeforeCreate = estimate.usageDetails.caches || 0;
+
+ const cacheName = 'testCache';
+ const cache = await caches.open(cacheName);
+ t.add_cleanup(() => caches.delete(cacheName));
+
+ await cache.put('/test.json', new Response('x'.repeat(1024*1024)));
+
+ estimate = await navigator.storage.estimate();
+ assert_true('caches' in estimate.usageDetails);
+ const cachesUsageAfterPut = estimate.usageDetails.caches;
+ assert_greater_than(
+ cachesUsageAfterPut, cachesUsageBeforeCreate,
+ 'estimated usage should increase after value is stored');
+}, 'estimate() shows usage increase after large value is stored');
diff --git a/tests/wpt/web-platform-tests/storage/estimate-usage-details.https.tentative.any.js b/tests/wpt/web-platform-tests/storage/estimate-usage-details.https.tentative.any.js
new file mode 100644
index 00000000000..2a1cea5fb8d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/storage/estimate-usage-details.https.tentative.any.js
@@ -0,0 +1,12 @@
+// META: title=StorageManager: estimate() should have usage details
+
+promise_test(async t => {
+ const estimate = await navigator.storage.estimate();
+ assert_equals(typeof estimate, 'object');
+ assert_true('usage' in estimate);
+ assert_equals(typeof estimate.usage, 'number');
+ assert_true('quota' in estimate);
+ assert_equals(typeof estimate.quota, 'number');
+ assert_true('usageDetails' in estimate);
+ assert_equals(typeof estimate.usageDetails, 'object');
+}, 'estimate() resolves to dictionary with members, including usageDetails');
diff --git a/tests/wpt/web-platform-tests/storage/resources/appcache.manifest b/tests/wpt/web-platform-tests/storage/resources/appcache.manifest
new file mode 100644
index 00000000000..ce90bafd21f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/storage/resources/appcache.manifest
@@ -0,0 +1,3 @@
+CACHE MANIFEST
+# iframe_with_appcache_manifest.html references this manifest to get cached in
+# AppCache.
diff --git a/tests/wpt/web-platform-tests/storage/resources/iframe_with_appcache_manifest.html b/tests/wpt/web-platform-tests/storage/resources/iframe_with_appcache_manifest.html
new file mode 100644
index 00000000000..8365ce41f49
--- /dev/null
+++ b/tests/wpt/web-platform-tests/storage/resources/iframe_with_appcache_manifest.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<html manifest="appcache.manifest">
+<title>Iframe that will be cached using application cache.</title>
+<meta charset='utf-8'>
+<link rel='author' href='jarrydg@chromium.org' title='Jarryd Goodman'>
+<script>
+(async () => {
+ const initPromise = new Promise(resolve => {
+ applicationCache.addEventListener('cached', resolve);
+ applicationCache.addEventListener('noupdate', resolve);
+ });
+ await initPromise;
+
+ window.parent.postMessage('document cached');
+})();
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/tools/ci/check_stability.py b/tests/wpt/web-platform-tests/tools/ci/check_stability.py
deleted file mode 100644
index a71e0956629..00000000000
--- a/tests/wpt/web-platform-tests/tools/ci/check_stability.py
+++ /dev/null
@@ -1,318 +0,0 @@
-from __future__ import print_function
-
-import argparse
-import logging
-import os
-import subprocess
-import sys
-from ConfigParser import SafeConfigParser
-
-here = os.path.dirname(__file__)
-wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir))
-sys.path.insert(0, wpt_root)
-
-from tools.wpt import run as wptrun, testfiles
-from tools.wpt.testfiles import get_git_cmd
-from tools.wpt.virtualenv import Virtualenv
-from tools.wpt.utils import Kwargs
-from tools.wpt.run import create_parser, setup_wptrunner
-from tools.wpt import markdown
-from tools import localpaths # noqa: F401
-
-logger = None
-run_step, write_inconsistent, write_slow_tests, write_results = None, None, None, None
-wptrunner = None
-
-def setup_logging():
- """Set up basic debug logger."""
- global logger
- logger = logging.getLogger(here)
- handler = logging.StreamHandler(sys.stdout)
- formatter = logging.Formatter(logging.BASIC_FORMAT, None)
- handler.setFormatter(formatter)
- logger.addHandler(handler)
- logger.setLevel(logging.DEBUG)
- wptrun.setup_logging({})
-
-def do_delayed_imports():
- global wptrunner, run_step, write_inconsistent, write_slow_tests, write_results
- from wptrunner import wptrunner
- from wptrunner.stability import run_step, write_inconsistent, write_slow_tests, write_results
-
-
-class TravisFold(object):
- """Context for TravisCI folding mechanism. Subclasses object.
-
- See: https://blog.travis-ci.com/2013-05-22-improving-build-visibility-log-folds/
- """
-
- def __init__(self, name):
- """Register TravisCI folding section name."""
- self.name = name
-
- def __enter__(self):
- """Emit fold start syntax."""
- print("travis_fold:start:%s" % self.name, file=sys.stderr)
-
- def __exit__(self, type, value, traceback):
- """Emit fold end syntax."""
- print("travis_fold:end:%s" % self.name, file=sys.stderr)
-
-
-class FilteredIO(object):
- """Wrap a file object, invoking the provided callback for every call to
- `write` and only proceeding with the operation when that callback returns
- True."""
- def __init__(self, original, on_write):
- self.original = original
- self.on_write = on_write
-
- def __getattr__(self, name):
- return getattr(self.original, name)
-
- def disable(self):
- self.write = lambda msg: None
-
- def write(self, msg):
- encoded = msg.encode("utf8", "backslashreplace").decode("utf8")
- if self.on_write(self.original, encoded) is True:
- self.original.write(encoded)
-
-
-def replace_streams(capacity, warning_msg):
- # Value must be boxed to support modification from inner function scope
- count = [0]
- capacity -= 2 + len(warning_msg)
- stderr = sys.stderr
-
- def on_write(handle, msg):
- length = len(msg)
- count[0] += length
-
- if count[0] > capacity:
- wrapped_stdout.disable()
- wrapped_stderr.disable()
- handle.write(msg[0:capacity - count[0]])
- handle.flush()
- stderr.write("\n%s\n" % warning_msg)
- return False
-
- return True
-
- # Store local references to the replaced streams to guard against the case
- # where other code replace the global references.
- sys.stdout = wrapped_stdout = FilteredIO(sys.stdout, on_write)
- sys.stderr = wrapped_stderr = FilteredIO(sys.stderr, on_write)
-
-
-def call(*args):
- """Log terminal command, invoke it as a subprocess.
-
- Returns a bytestring of the subprocess output if no error.
- """
- logger.debug(" ".join(args))
- try:
- return subprocess.check_output(args)
- except subprocess.CalledProcessError as e:
- logger.critical("%s exited with return code %i" %
- (e.cmd, e.returncode))
- logger.critical(e.output)
- raise
-
-
-def fetch_wpt(user, *args):
- git = get_git_cmd(wpt_root)
- git("fetch", "https://github.com/%s/web-platform-tests.git" % user, *args)
-
-
-def get_sha1():
- """ Get and return sha1 of current git branch HEAD commit."""
- git = get_git_cmd(wpt_root)
- return git("rev-parse", "HEAD").strip()
-
-
-def deepen_checkout(user):
- """Convert from a shallow checkout to a full one"""
- fetch_args = [user, "+refs/heads/*:refs/remotes/origin/*"]
- if os.path.exists(os.path.join(wpt_root, ".git", "shallow")):
- fetch_args.insert(1, "--unshallow")
- fetch_wpt(*fetch_args)
-
-
-def get_parser():
- """Create and return script-specific argument parser."""
- description = """Detect instabilities in new tests by executing tests
- repeatedly and comparing results between executions."""
- parser = argparse.ArgumentParser(description=description)
- parser.add_argument("--user",
- action="store",
- # Travis docs say do not depend on USER env variable.
- # This is a workaround to get what should be the same value
- default=os.environ.get("TRAVIS_REPO_SLUG", "w3c").split('/')[0],
- help="Travis user name")
- parser.add_argument("--output-bytes",
- action="store",
- type=int,
- help="Maximum number of bytes to write to standard output/error")
- parser.add_argument("--metadata",
- dest="metadata_root",
- action="store",
- default=wpt_root,
- help="Directory that will contain MANIFEST.json")
- parser.add_argument("--config-file",
- action="store",
- type=str,
- help="Location of ini-formatted configuration file",
- default="check_stability.ini")
- parser.add_argument("--rev",
- action="store",
- default=None,
- help="Commit range to use")
- return parser
-
-
-def pr():
- pr = os.environ.get("TRAVIS_PULL_REQUEST", "false")
- return pr if pr != "false" else None
-
-
-def get_changed_files(manifest_path, rev, ignore_changes):
- if not rev:
- branch_point = testfiles.branch_point()
- revish = "%s..HEAD" % branch_point
- else:
- revish = rev
-
- files_changed, files_ignored = testfiles.files_changed(revish, ignore_changes)
-
- if files_ignored:
- logger.info("Ignoring %s changed files:\n%s" %
- (len(files_ignored), "".join(" * %s\n" % item for item in files_ignored)))
-
- tests_changed, files_affected = testfiles.affected_testfiles(files_changed,
- manifest_path=manifest_path)
-
- return tests_changed, files_affected
-
-
-def main():
- """Perform check_stability functionality and return exit code."""
-
- venv = Virtualenv(os.environ.get("VIRTUAL_ENV", os.path.join(wpt_root, "_venv")))
- venv.install_requirements(os.path.join(wpt_root, "tools", "wptrunner", "requirements.txt"))
-
- args, wpt_args = get_parser().parse_known_args()
- return run(venv, wpt_args, **vars(args))
-
-
-def run(venv, wpt_args, **kwargs):
- do_delayed_imports()
-
- setup_logging()
-
- retcode = 0
-
- wpt_args = create_parser().parse_args(wpt_args)
-
- with open(kwargs["config_file"], 'r') as config_fp:
- config = SafeConfigParser()
- config.readfp(config_fp)
- ignore_changes = set(config.get("file detection", "ignore_changes").split())
-
- if kwargs["output_bytes"] is not None:
- replace_streams(kwargs["output_bytes"],
- "Log reached capacity (%s bytes); output disabled." % kwargs["output_bytes"])
-
-
- wpt_args.metadata_root = kwargs["metadata_root"]
- try:
- os.makedirs(wpt_args.metadata_root)
- except OSError:
- pass
-
- pr_number = pr()
-
- with TravisFold("browser_setup"):
- logger.info(markdown.format_comment_title(wpt_args.product))
-
- if pr is not None:
- deepen_checkout(kwargs["user"])
-
- # Ensure we have a branch called "master"
- fetch_wpt(kwargs["user"], "master:master")
-
- head_sha1 = get_sha1()
- logger.info("Testing web-platform-tests at revision %s" % head_sha1)
-
- wpt_kwargs = Kwargs(vars(wpt_args))
-
- if not wpt_kwargs["test_list"]:
- manifest_path = os.path.join(wpt_kwargs["metadata_root"], "MANIFEST.json")
- tests_changed, files_affected = get_changed_files(manifest_path, kwargs["rev"],
- ignore_changes)
-
- if not (tests_changed or files_affected):
- logger.info("No tests changed")
- return 0
-
- if tests_changed:
- logger.debug("Tests changed:\n%s" % "".join(" * %s\n" % item for item in tests_changed))
-
- if files_affected:
- logger.debug("Affected tests:\n%s" % "".join(" * %s\n" % item for item in files_affected))
-
- wpt_kwargs["test_list"] = list(tests_changed | files_affected)
-
- do_delayed_imports()
-
- wpt_kwargs["prompt"] = False
- wpt_kwargs["install_browser"] = wpt_kwargs["product"].split(":")[0] == "firefox"
-
- wpt_kwargs["pause_after_test"] = False
- wpt_kwargs["verify_log_full"] = False
- if wpt_kwargs["repeat"] == 1:
- wpt_kwargs["repeat"] = 10
- wpt_kwargs["headless"] = False
-
- wpt_kwargs["log_tbpl"] = [sys.stdout]
-
- wpt_kwargs = setup_wptrunner(venv, **wpt_kwargs)
-
- logger.info("Using binary %s" % wpt_kwargs["binary"])
-
-
- with TravisFold("running_tests"):
- logger.info("Starting tests")
-
- wpt_logger = wptrunner.logger
- results, inconsistent, slow, iterations = run_step(wpt_logger, wpt_kwargs["repeat"], True, {}, **wpt_kwargs)
-
- if results:
- if inconsistent:
- write_inconsistent(logger.error, inconsistent, iterations)
- retcode = 2
- elif slow:
- write_slow_tests(logger.error, slow)
- retcode = 2
- else:
- logger.info("All results were stable\n")
- with TravisFold("full_results"):
- write_results(logger.info, results, iterations,
- pr_number=pr_number,
- use_details=True)
- else:
- logger.info("No tests run.")
- # Be conservative and only return errors when we know for sure tests are changed.
- if tests_changed:
- retcode = 3
-
- return retcode
-
-
-if __name__ == "__main__":
- try:
- sys.exit(main())
- except Exception:
- import traceback
- traceback.print_exc()
- sys.exit(1)
diff --git a/tests/wpt/web-platform-tests/tools/ci/commands.json b/tests/wpt/web-platform-tests/tools/ci/commands.json
index 361c9e4f3de..841fd855c80 100644
--- a/tests/wpt/web-platform-tests/tools/ci/commands.json
+++ b/tests/wpt/web-platform-tests/tools/ci/commands.json
@@ -6,20 +6,6 @@
"help": "List test jobs that should run for a set of commits",
"virtualenv": false
},
- "check-stability": {
- "path": "check_stability.py",
- "script": "run",
- "parser": "get_parser",
- "parse_known": true,
- "help": "Check test stability",
- "virtualenv": true,
- "install": [
- "requests"
- ],
- "requirements": [
- "../wptrunner/requirements.txt"
- ]
- },
"make-hosts-file": {
"path": "make_hosts_file.py",
"script": "run",
diff --git a/tests/wpt/web-platform-tests/tools/ci/start.sh b/tests/wpt/web-platform-tests/tools/ci/start.sh
index 9f621b2326e..580bfb937dd 100644
--- a/tests/wpt/web-platform-tests/tools/ci/start.sh
+++ b/tests/wpt/web-platform-tests/tools/ci/start.sh
@@ -28,3 +28,4 @@ then
fi
sudo Xvfb $DISPLAY -screen 0 ${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_DEPTH} &
+sudo fluxbox -display $DISPLAY &
diff --git a/tests/wpt/web-platform-tests/tools/docker/Dockerfile b/tests/wpt/web-platform-tests/tools/docker/Dockerfile
index 20f6ef26c7a..53564ac135c 100644
--- a/tests/wpt/web-platform-tests/tools/docker/Dockerfile
+++ b/tests/wpt/web-platform-tests/tools/docker/Dockerfile
@@ -11,6 +11,7 @@ RUN apt-get -qqy update \
ca-certificates \
dbus-x11 \
earlyoom \
+ fluxbox \
gdebi \
git \
locales \
diff --git a/tests/wpt/web-platform-tests/tools/requirements_flake8.txt b/tests/wpt/web-platform-tests/tools/requirements_flake8.txt
index d2e7dd64232..00d182e2d0f 100644
--- a/tests/wpt/web-platform-tests/tools/requirements_flake8.txt
+++ b/tests/wpt/web-platform-tests/tools/requirements_flake8.txt
@@ -1,4 +1,4 @@
flake8==3.6.0
pycodestyle==2.4.0
-pyflakes==2.0.0
+pyflakes==2.1.0
pep8-naming==0.7.0
diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py b/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py
index bf6250f2903..1ddac67a39a 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py
@@ -412,6 +412,5 @@ def test_serve():
# The following commands are slow running and used implicitly in other CI
# jobs, so we skip them here:
-# wpt check-stability
# wpt manifest
# wpt lint
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py
index 3b5c96caed6..67d5b6ec2f5 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py
@@ -76,6 +76,7 @@ def browser_kwargs(test_type, run_info_data, config, **kwargs):
"certutil_binary": kwargs["certutil_binary"],
"ca_certificate_path": config.ssl_config["ca_cert_path"],
"e10s": kwargs["gecko_e10s"],
+ "lsan_dir": kwargs["lsan_dir"],
"stackfix_dir": kwargs["stackfix_dir"],
"binary_args": kwargs["binary_args"],
"timeout_multiplier": get_timeout_multiplier(test_type,
@@ -181,7 +182,7 @@ class FirefoxBrowser(Browser):
def __init__(self, logger, binary, prefs_root, test_type, extra_prefs=None, debug_info=None,
symbols_path=None, stackwalk_binary=None, certutil_binary=None,
- ca_certificate_path=None, e10s=False, stackfix_dir=None,
+ ca_certificate_path=None, e10s=False, lsan_dir=None, stackfix_dir=None,
binary_args=None, timeout_multiplier=None, leak_check=False, asan=False,
stylo_threads=1, chaos_mode_flags=None, config=None, headless=None, **kwargs):
Browser.__init__(self, logger)
@@ -210,6 +211,7 @@ class FirefoxBrowser(Browser):
self.init_timeout = self.init_timeout * timeout_multiplier
self.asan = asan
+ self.lsan_dir = lsan_dir
self.lsan_allowed = None
self.lsan_max_stack_depth = None
self.leak_check = leak_check
@@ -243,7 +245,7 @@ class FirefoxBrowser(Browser):
env = test_environment(xrePath=os.path.dirname(self.binary),
debugger=self.debug_info is not None,
log=self.logger,
- lsanPath=self.prefs_root)
+ lsanPath=self.lsan_dir)
env["STYLO_THREADS"] = str(self.stylo_threads)
if self.chaos_mode_flags is not None:
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py
index 94560cd93ff..b170fc66316 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py
@@ -479,7 +479,7 @@ class PackedResultList(object):
prop = prop_intern.get((packed & 0xF000) >> 12)
value_idx = (packed & 0x0F00) >> 8
- if value_idx is 0:
+ if value_idx == 0:
value = self.raw_data[idx]
else:
value = status_intern.get(value_idx)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
index 8443a01c7de..0a3a8c2b6f7 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
@@ -256,6 +256,8 @@ scheme host and port.""")
help="Run tests without electrolysis preferences")
gecko_group.add_argument("--stackfix-dir", dest="stackfix_dir", action="store",
help="Path to directory containing assertion stack fixing scripts")
+ gecko_group.add_argument("--lsan-dir", dest="lsan_dir", action="store",
+ help="Path to directory containing LSAN suppressions file")
gecko_group.add_argument("--setpref", dest="extra_prefs", action='append',
default=[], metavar="PREF=VALUE",
help="Defines an extra user preference (overrides those in prefs_root)")
@@ -527,6 +529,9 @@ def check_args(kwargs):
if kwargs["reftest_internal"] is None:
kwargs["reftest_internal"] = True
+ if kwargs["lsan_dir"] is None:
+ kwargs["lsan_dir"] = kwargs["prefs_root"]
+
return kwargs
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-supported-by-feature-policy.html
new file mode 100644
index 00000000000..d6289fff43c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-supported-by-feature-policy.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that wake-lock is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://w3c.github.io/wake-lock/#dfn-wake-lock-feature">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('wake-lock', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise wake-lock.');
+</script>
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/new_window/new_tab.py b/tests/wpt/web-platform-tests/webdriver/tests/new_window/new_tab.py
index fbb249fd783..0bf94496572 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/new_window/new_tab.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/new_window/new_tab.py
@@ -26,7 +26,7 @@ def test_new_tab_opens_about_blank(session):
value = assert_success(response)
assert value["type"] == "tab"
- session.handle = value["handle"]
+ session.window_handle = value["handle"]
assert session.url == "about:blank"
@@ -35,7 +35,7 @@ def test_new_tab_sets_no_window_name(session):
value = assert_success(response)
assert value["type"] == "tab"
- session.handle = value["handle"]
+ session.window_handle = value["handle"]
assert window_name(session) == ""
@@ -44,5 +44,5 @@ def test_new_tab_sets_no_opener(session):
value = assert_success(response)
assert value["type"] == "tab"
- session.handle = value["handle"]
+ session.window_handle = value["handle"]
assert opener(session) is None
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/new_window/new_window.py b/tests/wpt/web-platform-tests/webdriver/tests/new_window/new_window.py
index eb4db6729ec..8b12248a552 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/new_window/new_window.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/new_window/new_window.py
@@ -26,7 +26,7 @@ def test_new_window_opens_about_blank(session):
value = assert_success(response)
assert value["type"] == "window"
- session.handle = value["handle"]
+ session.window_handle = value["handle"]
assert session.url == "about:blank"
@@ -35,7 +35,7 @@ def test_new_window_sets_no_window_name(session):
value = assert_success(response)
assert value["type"] == "window"
- session.handle = value["handle"]
+ session.window_handle = value["handle"]
assert window_name(session) == ""
@@ -44,5 +44,5 @@ def test_new_window_sets_no_opener(session):
value = assert_success(response)
assert value["type"] == "window"
- session.handle = value["handle"]
+ session.window_handle = value["handle"]
assert opener(session) is None
diff --git a/tests/wpt/web-platform-tests/webrtc-quic/RTCQuicTransport.https.html b/tests/wpt/web-platform-tests/webrtc-quic/RTCQuicTransport.https.html
index c64ed6af093..82427e67cb4 100644
--- a/tests/wpt/web-platform-tests/webrtc-quic/RTCQuicTransport.https.html
+++ b/tests/wpt/web-platform-tests/webrtc-quic/RTCQuicTransport.https.html
@@ -5,6 +5,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="../webrtc/RTCIceTransport-extension-helper.js"></script>
<script src="RTCQuicTransport-helper.js"></script>
+<script src="../webrtc/dictionary-helper.js"></script>
<script>
'use strict';
@@ -21,6 +22,7 @@
// makeStandaloneQuicTransport
// makeAndStartTwoQuicTransports
// makeTwoConnectedQuicTransports
+// sleep
test(t => {
const iceTransport = makeIceTransport(t);
@@ -174,5 +176,93 @@ test(t => {
assert_not_equals(update_key, new Uint8Array(new_key));
}, 'Cannot mutate key retrieved from getKey().');
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ makeAndStartTwoQuicTransports(t);
+ const stats = await localQuicTransport.getStats();
+ assert_number_field(stats, 'timestamp');
+ assert_unsigned_int_field(stats, 'bytesSent');
+ assert_unsigned_int_field(stats, 'packetsSent');
+ assert_unsigned_int_field(stats, 'streamBytesSent');
+ assert_unsigned_int_field(stats, 'streamBytesReceived');
+ assert_unsigned_int_field(stats, 'numOutgoingStreamsCreated');
+ assert_unsigned_int_field(stats, 'numIncomingStreamsCreated');
+ assert_unsigned_int_field(stats, 'bytesReceived');
+ assert_unsigned_int_field(stats, 'packetsReceived');
+ assert_unsigned_int_field(stats, 'packetsProcessed');
+ assert_unsigned_int_field(stats, 'bytesRetransmitted');
+ assert_unsigned_int_field(stats, 'packetsRetransmitted');
+ assert_unsigned_int_field(stats, 'packetsLost');
+ assert_unsigned_int_field(stats, 'packetsDropped');
+ assert_unsigned_int_field(stats, 'cryptoRetransmitCount');
+ assert_unsigned_int_field(stats, 'minRttUs');
+ assert_unsigned_int_field(stats, 'smoothedRttUs');
+ assert_unsigned_int_field(stats, 'maxPacketSize');
+ assert_unsigned_int_field(stats, 'maxReceivedPacketSize');
+ assert_unsigned_int_field(stats, 'estimatedBandwidthBps');
+ assert_unsigned_int_field(stats, 'packetsReordered');
+ assert_unsigned_int_field(stats, 'blockedFramesReceived');
+ assert_unsigned_int_field(stats, 'blockedFramesSent');
+ assert_unsigned_int_field(stats, 'connectivityProbingPacketsReceived');
+}, 'Stats returned by getStats() are present.');
+
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ await makeTwoConnectedQuicTransports(t);
+ const localStream = localQuicTransport.createStream();
+ localStream.write({ finish: true });
+ const remoteWatcher = new EventWatcher(t, remoteQuicTransport, 'quicstream');
+ await remoteWatcher.wait_for('quicstream');
+ const localStats = await localQuicTransport.getStats();
+ const remoteStats = await remoteQuicTransport.getStats();
+ assert_equals(localStats.numOutgoingStreamsCreated, 1);
+ assert_equals(localStats.numIncomingStreamsCreated, 0);
+ assert_equals(remoteStats.numOutgoingStreamsCreated, 0);
+ assert_equals(remoteStats.numIncomingStreamsCreated, 1);
+}, 'getStats() returns proper stream counts after creating streams.');
+
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ makeAndStartTwoQuicTransports(t);
+ const stats1 = await localQuicTransport.getStats();
+ await new Promise(resolve => t.step_timeout(resolve, 20));
+ const stats2 = await localQuicTransport.getStats();
+ assert_greater_than(stats2.timestamp, stats1.timestamp);
+}, 'Two separate stats returned by getStats() give different timestamps.');
+
+promise_test(async t => {
+ const quicTransport = makeStandaloneQuicTransport(t);
+ const promise = quicTransport.getStats();
+ promise_rejects(t, 'InvalidStateError', promise);
+}, 'getStats() promises immediately rejected with InvalidStateError ' +
+ `if called before 'connecting'.`);
+
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ await makeTwoConnectedQuicTransports(t);
+ const promise = localQuicTransport.getStats();
+ localQuicTransport.stop();
+ promise_rejects(t, 'InvalidStateError', promise);
+}, 'getStats() promises rejected with InvalidStateError if stop() ' +
+ 'is called before being fulfilled.');
+
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ await makeTwoConnectedQuicTransports(t);
+ const promise = localQuicTransport.getStats();
+ localQuicTransport.transport.stop();
+ promise_rejects(t, 'InvalidStateError', promise);
+}, 'getStats() promises rejected with InvalidStateError if ' +
+ 'RTCIceTransport calls stop() before being fulfilled.');
+
+promise_test(async t => {
+ const [ localQuicTransport, remoteQuicTransport ] =
+ await makeTwoConnectedQuicTransports(t);
+ localQuicTransport.transport.stop();
+ const promise = localQuicTransport.getStats();
+ promise_rejects(t, 'InvalidStateError', promise);
+}, 'getStats() promises immediately rejected if called after' +
+ `'closed' state.`);
+
</script>
diff --git a/tests/wpt/web-platform-tests/webrtc-stats/idlharness.window.js b/tests/wpt/web-platform-tests/webrtc-stats/idlharness.window.js
index 23741201b61..d98712fc485 100644
--- a/tests/wpt/web-platform-tests/webrtc-stats/idlharness.window.js
+++ b/tests/wpt/web-platform-tests/webrtc-stats/idlharness.window.js
@@ -7,7 +7,7 @@
idl_test(
['webrtc-stats'],
- [], // No deps
+ ['webrtc'],
idl_array => {
// No interfaces to test
}
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.html
index 4071033a3c9..b647b3d3e35 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.html
@@ -64,6 +64,12 @@
assert_equals(pc.iceConnectionState, 'new');
}, 'Initial iceConnectionState should be new');
+ test(t => {
+ const pc = new RTCPeerConnection();
+ pc.close();
+ assert_equals(pc.iceConnectionState, 'closed');
+ }, 'Closing the connection should set iceConnectionState to closed');
+
/*
4.4.4 RTCIceConnectionState Enum
checking
@@ -106,6 +112,35 @@
const pc1 = new RTCPeerConnection();
t.add_cleanup(() => pc1.close());
const pc2 = new RTCPeerConnection();
+ t.add_cleanup(() => pc2.close());
+
+ let had_checking = false;
+
+ const onIceConnectionStateChange = t.step_func(() => {
+ const {iceConnectionState} = pc1;
+ if (iceConnectionState === 'checking') {
+ had_checking = true;
+ } else if (iceConnectionState === 'connected' ||
+ iceConnectionState === 'completed') {
+ assert_true(had_checking, 'state should pass checking before' +
+ ' reaching connected or completed');
+ t.done();
+ }
+ });
+
+ pc1.createDataChannel('test');
+
+ pc1.addEventListener('iceconnectionstatechange', onIceConnectionStateChange);
+
+ exchangeIceCandidates(pc1, pc2);
+ doSignalingHandshake(pc1, pc2);
+ }, 'connection with one data channel should eventually have connected or ' +
+ 'completed connection state');
+
+async_test(t => {
+ const pc1 = new RTCPeerConnection();
+ t.add_cleanup(() => pc1.close());
+ const pc2 = new RTCPeerConnection();
t.add_cleanup(() => pc2.close());
@@ -116,19 +151,22 @@
const iceTransport = pc1.sctp.transport.transport;
assert_equals(iceTransport.state, 'checking',
- 'Expect ICE transport to be in checking state when iceConnectionState is checking');
+ 'Expect ICE transport to be in checking state when' +
+ ' iceConnectionState is checking');
} else if(iceConnectionState === 'connected') {
const iceTransport = pc1.sctp.transport.transport;
assert_equals(iceTransport.state, 'connected',
- 'Expect ICE transport to be in connected state when iceConnectionState is connected');
+ 'Expect ICE transport to be in connected state when' +
+ ' iceConnectionState is connected');
} else if(iceConnectionState === 'completed') {
const iceTransport = pc1.sctp.transport.transport;
assert_equals(iceTransport.state, 'completed',
- 'Expect ICE transport to be in connected state when iceConnectionState is completed');
+ 'Expect ICE transport to be in connected state when' +
+ ' iceConnectionState is completed');
}
});
@@ -141,7 +179,8 @@
exchangeIceCandidates(pc1, pc2);
doSignalingHandshake(pc1, pc2);
- }, 'connection with one data channel should eventually have connected connection state');
+ }, 'connection with one data channel should eventually ' +
+ 'have connected connection state');
/*
TODO
diff --git a/tests/wpt/web-platform-tests/webusb/usb-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/webusb/usb-supported-by-feature-policy.html
new file mode 100644
index 00000000000..d5b585a094f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webusb/usb-supported-by-feature-policy.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that usb is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://wicg.github.io/webusb/#feature-policy">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('usb', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise usb.');
+</script>
diff --git a/tests/wpt/web-platform-tests/webvr/webvr-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/webvr/webvr-supported-by-feature-policy.html
new file mode 100644
index 00000000000..9487c3516b7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webvr/webvr-supported-by-feature-policy.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that xr is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://immersive-web.github.io/webxr/#feature-policy">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('xr', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise xr.');
+</script>
diff --git a/tests/wpt/web-platform-tests/xhr/sync-xhr-supported-by-feature-policy.html b/tests/wpt/web-platform-tests/xhr/sync-xhr-supported-by-feature-policy.html
new file mode 100644
index 00000000000..45588bf6af5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/xhr/sync-xhr-supported-by-feature-policy.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Test that sync-xhr is advertised in the feature list</title>
+<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
+<link rel="help" href="https://xhr.spec.whatwg.org/#feature-policy-integration">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_in_array('sync-xhr', document.featurePolicy.features());
+}, 'document.featurePolicy.features should advertise sync-xhr.');
+</script>