aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/MANIFEST.json730
-rw-r--r--tests/wpt/metadata/css/css-paint-api/parse-input-arguments-002.https.html.ini1
-rw-r--r--tests/wpt/metadata/css/css-paint-api/parse-input-arguments-003.https.html.ini1
-rw-r--r--tests/wpt/metadata/css/css-paint-api/parse-input-arguments-005.https.html.ini1
-rw-r--r--tests/wpt/metadata/css/css-paint-api/parse-input-arguments-006.https.html.ini1
-rw-r--r--tests/wpt/metadata/css/css-paint-api/parse-input-arguments-008.https.html.ini1
-rw-r--r--tests/wpt/metadata/css/css-paint-api/parse-input-arguments-009.https.html.ini1
-rw-r--r--tests/wpt/metadata/css/css-paint-api/parse-input-arguments-010.https.html.ini1
-rw-r--r--tests/wpt/metadata/css/css-paint-api/parse-input-arguments-011.https.html.ini1
-rw-r--r--tests/wpt/metadata/css/css-paint-api/parse-input-arguments-012.https.html.ini1
-rw-r--r--tests/wpt/metadata/css/css-paint-api/parse-input-arguments-016.https.html.ini1
-rw-r--r--tests/wpt/metadata/custom-elements/reactions/HTMLAreaElement.html.ini43
-rw-r--r--tests/wpt/metadata/custom-elements/reactions/HTMLEmbedElement.html.ini25
-rw-r--r--tests/wpt/metadata/custom-elements/reactions/HTMLFieldSetElement.html.ini7
-rw-r--r--tests/wpt/metadata/custom-elements/reactions/HTMLImageElement.html.ini19
-rw-r--r--tests/wpt/metadata/encoding/single-byte-decoder.html.ini64
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini16
-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_1.html.ini4
-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/browsers/the-window-object/focus.window.js.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini10
-rw-r--r--tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini3
-rw-r--r--tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-002.https.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-003.https.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-005.https.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-006.https.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-008.https.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-009.https.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-010.https.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-011.https.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-012.https.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-016.https.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-001.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-002.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-003.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-004.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-005.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-006.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-007.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-008.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-009.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-010.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-011.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-012.html17
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html35
-rw-r--r--tests/wpt/web-platform-tests/custom-elements/reactions/HTMLAreaElement.html69
-rw-r--r--tests/wpt/web-platform-tests/custom-elements/reactions/HTMLButtonElement.html111
-rw-r--r--tests/wpt/web-platform-tests/custom-elements/reactions/HTMLEmbedElement.html35
-rw-r--r--tests/wpt/web-platform-tests/custom-elements/reactions/HTMLFieldSetElement.html32
-rw-r--r--tests/wpt/web-platform-tests/custom-elements/reactions/HTMLImageElement.html89
-rw-r--r--tests/wpt/web-platform-tests/custom-elements/reactions/resources/reactions.js46
-rw-r--r--tests/wpt/web-platform-tests/docs/_running-tests/custom-runner.md25
-rw-r--r--tests/wpt/web-platform-tests/docs/_running-tests/from-local-system.md114
-rw-r--r--tests/wpt/web-platform-tests/docs/_running-tests/from-web.md26
-rw-r--r--tests/wpt/web-platform-tests/docs/_running-tests/index.md82
-rw-r--r--tests/wpt/web-platform-tests/docs/_writing-tests/h2tests.md7
-rw-r--r--tests/wpt/web-platform-tests/docs/introduction.md86
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/the-window-object/focus.window.js15
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/windows/embedded-opener-remove-frame.html46
-rw-r--r--tests/wpt/web-platform-tests/mathml/META.yml2
-rw-r--r--tests/wpt/web-platform-tests/mathml/README.md10
-rw-r--r--tests/wpt/web-platform-tests/network-error-logging/support/nel.sub.js7
-rw-r--r--tests/wpt/web-platform-tests/network-error-logging/support/pass.png.sub.headers2
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/devicemotionevent-init.https.html (renamed from tests/wpt/web-platform-tests/orientation-event/devicemotionevent-init.html)0
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/deviceorientationabsoluteevent.https.html (renamed from tests/wpt/web-platform-tests/orientation-event/deviceorientationabsoluteevent.html)0
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/deviceorientationevent-init.https.html (renamed from tests/wpt/web-platform-tests/orientation-event/deviceorientationevent-init.html)0
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.https.html (renamed from tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.html)0
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error-downgraded.tentative.html64
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error.tentative.html76
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error-downgraded.tentative.html65
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error.tentative.html76
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error-downgraded.tentative.html65
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error.tentative.html60
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-failed-zero-success-fraction.tentative.html69
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-invalid_integrity_header.tentative.html61
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-mi_error.tentative.html67
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-parse_error.tentative.html64
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error-downgraded.tentative.html65
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error.tentative.html60
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error-downgraded.tentative.html62
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error.tentative.html73
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error-downgraded.tentative.html63
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error.tentative.html73
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error-downgraded.tentative.html62
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error.tentative.html57
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-failed-zero-success-feaction.tentative.html67
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-invalid_integrity_header.tentative.html58
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-mi_error.tentative.html58
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-parse_error.tentative.html54
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error-downgraded.tentative.html62
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error.tentative.html57
-rwxr-xr-xtests/wpt/web-platform-tests/signed-exchange/resources/generate-test-sxgs.sh130
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/invalid-cert-format.cbor1
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/invalid-cert-format.cbor.headers1
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-cert-not-found-on-alt-origin.sxgbin0 -> 996 bytes
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-cert-not-found.sxgbin0 -> 992 bytes
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-format-on-alt-origin.sxgbin0 -> 997 bytes
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-format.sxgbin0 -> 993 bytes
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-sha256-cert-on-alt-origin.sxgbin0 -> 995 bytes
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-sha256.sxgbin0 -> 991 bytes
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-format.sxg1
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-integrity-header.sxgbin0 -> 991 bytes
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-location-cert-on-alt-origin.sxgbin0 -> 995 bytes
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-validity-period-too-long-cert-on-alt-origin.sxgbin0 -> 995 bytes
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-validity-period-too-long.sxgbin0 -> 991 bytes
-rw-r--r--tests/wpt/web-platform-tests/svg/pservers/reftests/radialgradient-fully-overlapping.svg16
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/azure/fyi_hook.yml4
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html30
111 files changed, 3427 insertions, 314 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 7f923cec6e6..e7f500bbecc 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -132321,6 +132321,150 @@
{}
]
],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-001.html": [
+ [
+ "/css/css-position/static-position/inline-level-absolute-in-block-level-context-001.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-002.html": [
+ [
+ "/css/css-position/static-position/inline-level-absolute-in-block-level-context-002.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-003.html": [
+ [
+ "/css/css-position/static-position/inline-level-absolute-in-block-level-context-003.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-004.html": [
+ [
+ "/css/css-position/static-position/inline-level-absolute-in-block-level-context-004.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-005.html": [
+ [
+ "/css/css-position/static-position/inline-level-absolute-in-block-level-context-005.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-006.html": [
+ [
+ "/css/css-position/static-position/inline-level-absolute-in-block-level-context-006.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-007.html": [
+ [
+ "/css/css-position/static-position/inline-level-absolute-in-block-level-context-007.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-008.html": [
+ [
+ "/css/css-position/static-position/inline-level-absolute-in-block-level-context-008.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-009.html": [
+ [
+ "/css/css-position/static-position/inline-level-absolute-in-block-level-context-009.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-010.html": [
+ [
+ "/css/css-position/static-position/inline-level-absolute-in-block-level-context-010.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-011.html": [
+ [
+ "/css/css-position/static-position/inline-level-absolute-in-block-level-context-011.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-012.html": [
+ [
+ "/css/css-position/static-position/inline-level-absolute-in-block-level-context-012.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-position/static-position/vlr-ltr-ltr.html": [
[
"/css/css-position/static-position/vlr-ltr-ltr.html",
@@ -195781,6 +195925,18 @@
{}
]
],
+ "svg/pservers/reftests/radialgradient-fully-overlapping.svg": [
+ [
+ "/svg/pservers/reftests/radialgradient-fully-overlapping.svg",
+ [
+ [
+ "/svg/pservers/reftests/reference/green-100x100.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"svg/pservers/reftests/stop-color-currentcolor-dynamic-001.svg": [
[
"/svg/pservers/reftests/stop-color-currentcolor-dynamic-001.svg",
@@ -286663,6 +286819,21 @@
{}
]
],
+ "docs/_running-tests/custom-runner.md": [
+ [
+ {}
+ ]
+ ],
+ "docs/_running-tests/from-local-system.md": [
+ [
+ {}
+ ]
+ ],
+ "docs/_running-tests/from-web.md": [
+ [
+ {}
+ ]
+ ],
"docs/_running-tests/index.md": [
[
{}
@@ -314143,6 +314314,16 @@
{}
]
],
+ "signed-exchange/resources/invalid-cert-format.cbor": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/resources/invalid-cert-format.cbor.headers": [
+ [
+ {}
+ ]
+ ],
"signed-exchange/resources/sxg-location.html": [
[
{}
@@ -314193,6 +314374,16 @@
{}
]
],
+ "signed-exchange/resources/sxg/sxg-cert-not-found-on-alt-origin.sxg": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/resources/sxg/sxg-cert-not-found.sxg": [
+ [
+ {}
+ ]
+ ],
"signed-exchange/resources/sxg/sxg-hsts.sxg": [
[
{}
@@ -314203,6 +314394,36 @@
{}
]
],
+ "signed-exchange/resources/sxg/sxg-invalid-cert-format-on-alt-origin.sxg": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/resources/sxg/sxg-invalid-cert-format.sxg": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/resources/sxg/sxg-invalid-cert-sha256-cert-on-alt-origin.sxg": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/resources/sxg/sxg-invalid-cert-sha256.sxg": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/resources/sxg/sxg-invalid-format.sxg": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/resources/sxg/sxg-invalid-integrity-header.sxg": [
+ [
+ {}
+ ]
+ ],
"signed-exchange/resources/sxg/sxg-invalid-utf8-inner-url.sxg": [
[
{}
@@ -314213,6 +314434,11 @@
{}
]
],
+ "signed-exchange/resources/sxg/sxg-location-cert-on-alt-origin.sxg": [
+ [
+ {}
+ ]
+ ],
"signed-exchange/resources/sxg/sxg-location.sxg": [
[
{}
@@ -314243,6 +314469,16 @@
{}
]
],
+ "signed-exchange/resources/sxg/sxg-validity-period-too-long-cert-on-alt-origin.sxg": [
+ [
+ {}
+ ]
+ ],
+ "signed-exchange/resources/sxg/sxg-validity-period-too-long.sxg": [
+ [
+ {}
+ ]
+ ],
"speech-api/META.yml": [
[
{}
@@ -357251,6 +357487,12 @@
{}
]
],
+ "custom-elements/reactions/HTMLAreaElement.html": [
+ [
+ "/custom-elements/reactions/HTMLAreaElement.html",
+ {}
+ ]
+ ],
"custom-elements/reactions/HTMLBaseElement.html": [
[
"/custom-elements/reactions/HTMLBaseElement.html",
@@ -357287,6 +357529,24 @@
{}
]
],
+ "custom-elements/reactions/HTMLEmbedElement.html": [
+ [
+ "/custom-elements/reactions/HTMLEmbedElement.html",
+ {}
+ ]
+ ],
+ "custom-elements/reactions/HTMLFieldSetElement.html": [
+ [
+ "/custom-elements/reactions/HTMLFieldSetElement.html",
+ {}
+ ]
+ ],
+ "custom-elements/reactions/HTMLImageElement.html": [
+ [
+ "/custom-elements/reactions/HTMLImageElement.html",
+ {}
+ ]
+ ],
"custom-elements/reactions/HTMLInputElement.html": [
[
"/custom-elements/reactions/HTMLInputElement.html",
@@ -373417,6 +373677,12 @@
}
]
],
+ "html/browsers/the-window-object/focus.window.js": [
+ [
+ "/html/browsers/the-window-object/focus.window.html",
+ {}
+ ]
+ ],
"html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_1.html": [
[
"/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_1.html",
@@ -373721,6 +373987,12 @@
{}
]
],
+ "html/browsers/windows/embedded-opener-remove-frame.html": [
+ [
+ "/html/browsers/windows/embedded-opener-remove-frame.html",
+ {}
+ ]
+ ],
"html/browsers/windows/embedded-opener.html": [
[
"/html/browsers/windows/embedded-opener.html",
@@ -400111,21 +400383,21 @@
{}
]
],
- "orientation-event/devicemotionevent-init.html": [
+ "orientation-event/devicemotionevent-init.https.html": [
[
- "/orientation-event/devicemotionevent-init.html",
+ "/orientation-event/devicemotionevent-init.https.html",
{}
]
],
- "orientation-event/deviceorientationabsoluteevent.html": [
+ "orientation-event/deviceorientationabsoluteevent.https.html": [
[
- "/orientation-event/deviceorientationabsoluteevent.html",
+ "/orientation-event/deviceorientationabsoluteevent.https.html",
{}
]
],
- "orientation-event/deviceorientationevent-init.html": [
+ "orientation-event/deviceorientationevent-init.https.html": [
[
- "/orientation-event/deviceorientationevent-init.html",
+ "/orientation-event/deviceorientationevent-init.https.html",
{}
]
],
@@ -400135,9 +400407,9 @@
{}
]
],
- "orientation-event/ondeviceorientationabsolute.html": [
+ "orientation-event/ondeviceorientationabsolute.https.html": [
[
- "/orientation-event/ondeviceorientationabsolute.html",
+ "/orientation-event/ondeviceorientationabsolute.https.html",
{}
]
],
@@ -414655,18 +414927,162 @@
{}
]
],
+ "signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error-downgraded.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error-downgraded.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error-downgraded.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error-downgraded.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error-downgraded.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error-downgraded.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-failed-zero-success-fraction.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-navigation-failed-zero-success-fraction.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-invalid_integrity_header.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-navigation-invalid_integrity_header.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-mi_error.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-navigation-mi_error.tentative.html",
+ {}
+ ]
+ ],
"signed-exchange/reporting/sxg-reporting-navigation-ok.tentative.html": [
[
"/signed-exchange/reporting/sxg-reporting-navigation-ok.tentative.html",
{}
]
],
+ "signed-exchange/reporting/sxg-reporting-navigation-parse_error.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-navigation-parse_error.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error-downgraded.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error-downgraded.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error-downgraded.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error-downgraded.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error-downgraded.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error-downgraded.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error-downgraded.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error-downgraded.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-failed-zero-success-feaction.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-prefetch-failed-zero-success-feaction.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-invalid_integrity_header.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-prefetch-invalid_integrity_header.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-mi_error.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-prefetch-mi_error.tentative.html",
+ {}
+ ]
+ ],
"signed-exchange/reporting/sxg-reporting-prefetch-ok.tentative.html": [
[
"/signed-exchange/reporting/sxg-reporting-prefetch-ok.tentative.html",
{}
]
],
+ "signed-exchange/reporting/sxg-reporting-prefetch-parse_error.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-prefetch-parse_error.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error-downgraded.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error-downgraded.tentative.html",
+ {}
+ ]
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error.tentative.html": [
+ [
+ "/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error.tentative.html",
+ {}
+ ]
+ ],
"signed-exchange/sxg-double-prefetch.tentative.html": [
[
"/signed-exchange/sxg-double-prefetch.tentative.html",
@@ -422555,6 +422971,12 @@
{}
]
],
+ "webrtc/RTCPeerConnection-onsignalingstatechanged.https.html": [
+ [
+ "/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html",
+ {}
+ ]
+ ],
"webrtc/RTCPeerConnection-ontrack.https.html": [
[
"/webrtc/RTCPeerConnection-ontrack.https.html",
@@ -571379,11 +571801,11 @@
"reftest"
],
"css/css-paint-api/parse-input-arguments-002.https.html": [
- "6fc16c74701fd99b310f3624c357ad0d52be9234",
+ "b1b50e04045fb05ad7f967a7db26f86dcf5d36b7",
"reftest"
],
"css/css-paint-api/parse-input-arguments-003.https.html": [
- "44fd850f9ab81756acf131839188de89ab807d86",
+ "3b1b0014f78a3ed0908273f0dc72b714f32c9aab",
"reftest"
],
"css/css-paint-api/parse-input-arguments-004.https.html": [
@@ -571391,11 +571813,11 @@
"reftest"
],
"css/css-paint-api/parse-input-arguments-005.https.html": [
- "c12e00c92f5b8f9e0c99609251c872c083fb67df",
+ "0c5e539381bd8bc9295bfa54db070c2e6b9e2ac2",
"reftest"
],
"css/css-paint-api/parse-input-arguments-006.https.html": [
- "664b7a8c1a0d4d40ce725b941f6c86a5dd0d647a",
+ "e99ab05a88d9fb6d8dff1a8a7dff880bc6bf0728",
"reftest"
],
"css/css-paint-api/parse-input-arguments-007.https.html": [
@@ -571403,23 +571825,23 @@
"reftest"
],
"css/css-paint-api/parse-input-arguments-008.https.html": [
- "1914e3cf044e9c25340bcb88bd155429f721e312",
+ "e6b863c641c0a201851c1910da158db377292217",
"reftest"
],
"css/css-paint-api/parse-input-arguments-009.https.html": [
- "21d004df0eee51e50a1b9359a1e70d5b3bf5923b",
+ "b23191ae34015c9a4fb7b3a4f711228b57b98b34",
"reftest"
],
"css/css-paint-api/parse-input-arguments-010.https.html": [
- "d923479ea81a3345885012efa5ed610146333ece",
+ "e98b431648932559400e721a0414a3955403b50a",
"reftest"
],
"css/css-paint-api/parse-input-arguments-011.https.html": [
- "6cea438fce21baf8de53649229414b1bb73bb2e7",
+ "b9d54bf413d79a13b89decb578d17834a7649799",
"reftest"
],
"css/css-paint-api/parse-input-arguments-012.https.html": [
- "938150aa9aaf0400950f7ae6f1b6da2657ffb50f",
+ "14eebeb635a73feb7303c178818f1e02df3d854d",
"reftest"
],
"css/css-paint-api/parse-input-arguments-013.https.html": [
@@ -571435,7 +571857,7 @@
"reftest"
],
"css/css-paint-api/parse-input-arguments-016.https.html": [
- "8c9d05dcd1ae3b1a6e8857509f8df25b92a16987",
+ "31cca45facab4fb2c312f57f0c42b3e361d4baef",
"reftest"
],
"css/css-paint-api/parse-input-arguments-017.https.html": [
@@ -572162,6 +572584,54 @@
"279754ca4ea2102b8fd84b3225495f2a17816a08",
"reftest"
],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-001.html": [
+ "d6f8ed4e39ae3627cf91120b9d7679126fdaf016",
+ "reftest"
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-002.html": [
+ "9b0f5c2beaf49036c4f669112a137c5ada66b610",
+ "reftest"
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-003.html": [
+ "90db2d4f80d069c17cc490280e9ab82db8b61d9d",
+ "reftest"
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-004.html": [
+ "a6b13b26c8f4972800a1473ad24f0e2f32636a73",
+ "reftest"
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-005.html": [
+ "481c83a757d43b267da8475750312214daacff3d",
+ "reftest"
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-006.html": [
+ "de5322f81998d2705405906d2946fce352baea11",
+ "reftest"
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-007.html": [
+ "1168b1d2287c3e0797d64fcaeda5582a3976d475",
+ "reftest"
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-008.html": [
+ "e10a7e191d3548b95b46d289ab57af6324581134",
+ "reftest"
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-009.html": [
+ "86102fa1d9955594a0e7a49d323d118f729131d9",
+ "reftest"
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-010.html": [
+ "95d43b9cfb2b1719bc5f8015e3773a9971d483db",
+ "reftest"
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-011.html": [
+ "375566388ef6c88833e25241810c4e886aa5f3de",
+ "reftest"
+ ],
+ "css/css-position/static-position/inline-level-absolute-in-block-level-context-012.html": [
+ "1972317822b945b2a70712884ddb2d39b924420e",
+ "reftest"
+ ],
"css/css-position/static-position/vlr-ltr-ltr.html": [
"1d95b46a0ff039ebd37b5de429ef755029d3cb79",
"reftest"
@@ -601511,7 +601981,7 @@
"testharness"
],
"css/cssom/CSSStyleSheet-constructable.html": [
- "80189fe2f36e7c89f0445511460732fa77169108",
+ "5ee86ae4a6775abb47abff558b292b2303e2ef27",
"testharness"
],
"css/cssom/CSSStyleSheet.html": [
@@ -614854,12 +615324,16 @@
"c6eeb1dce90b2a3ffe099cba80e64d71f2741f81",
"testharness"
],
+ "custom-elements/reactions/HTMLAreaElement.html": [
+ "95059b7c8d08606c45aa315eba27c30945ad96e5",
+ "testharness"
+ ],
"custom-elements/reactions/HTMLBaseElement.html": [
"82ab9228043053d26496c6ec106b812da5a66267",
"testharness"
],
"custom-elements/reactions/HTMLButtonElement.html": [
- "b97d479d7c6ddcc4dc05d3a3501fe60b21ff051d",
+ "f97b6daa0b5c23b83ea916e2bf756b49ecf3a51a",
"testharness"
],
"custom-elements/reactions/HTMLCanvasElement.html": [
@@ -614878,6 +615352,18 @@
"5fe422cdfc1df56d58e4eeac1be4669ba8fee967",
"testharness"
],
+ "custom-elements/reactions/HTMLEmbedElement.html": [
+ "505d9e3215b1b2f075e396dfba4ed0f14421079a",
+ "testharness"
+ ],
+ "custom-elements/reactions/HTMLFieldSetElement.html": [
+ "4aea2780ba5d279bcd54f9785e364d012b25c079",
+ "testharness"
+ ],
+ "custom-elements/reactions/HTMLImageElement.html": [
+ "b483c3664051e4c5e43f9f9103ea072ba5b97df5",
+ "testharness"
+ ],
"custom-elements/reactions/HTMLInputElement.html": [
"dc4b22a22eea3ea841b1380e7db3e75e7f4eb256",
"testharness"
@@ -614963,7 +615449,7 @@
"testharness"
],
"custom-elements/reactions/resources/reactions.js": [
- "84d039bad9fb3674e124f7f852e77b2fcdf21a28",
+ "87510ceee164ffb331808d1c0a026af43fde1fbc",
"support"
],
"custom-elements/reactions/with-exceptions.html": [
@@ -615126,8 +615612,20 @@
"d6cad0acd4a9572764cab46545ba293bcff90ba8",
"support"
],
+ "docs/_running-tests/custom-runner.md": [
+ "6e6c73f79b6814daddb45081b978e6c1a778faef",
+ "support"
+ ],
+ "docs/_running-tests/from-local-system.md": [
+ "1ee09ca59e76fded5db6d987bbc562bccee3d128",
+ "support"
+ ],
+ "docs/_running-tests/from-web.md": [
+ "686f4e3b66b089c748a64cfd76d7759f6f092bf5",
+ "support"
+ ],
"docs/_running-tests/index.md": [
- "48d7f8dad77d84425c4b7c725272844a6f1b4a66",
+ "f34c06d6fbaaab664cde2ebdc7ff7a494b53e361",
"support"
],
"docs/_running-tests/safari.md": [
@@ -615159,7 +615657,7 @@
"support"
],
"docs/_writing-tests/h2tests.md": [
- "0d19f7de19ca32543e575998d92c53a325f72d21",
+ "3e5a9918c4d2532be53aa709fc57bbfa0fba302e",
"support"
],
"docs/_writing-tests/idlharness.md": [
@@ -615275,7 +615773,7 @@
"support"
],
"docs/introduction.md": [
- "191e76d39970eab49f4717a6a9838d1590255abc",
+ "28d8f3ea3659ef42ae8ffc738236a622fd1b52b7",
"support"
],
"dom/META.yml": [
@@ -625850,6 +626348,10 @@
"07662c63cd01337e3b6a53ce6001d187b719fbe7",
"support"
],
+ "html/browsers/the-window-object/focus.window.js": [
+ "6ec7feee281e756ae6452e0f9b17d9b93032d010",
+ "testharness"
+ ],
"html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_1-1.html": [
"217608e46ef78a915c4d6192505187067199273c",
"support"
@@ -626242,6 +626744,10 @@
"e1ec760b926670e610a96f02c935cf169563714a",
"testharness"
],
+ "html/browsers/windows/embedded-opener-remove-frame.html": [
+ "9bce93f0888ea25d713944efc9c8a4fdcc371da0",
+ "testharness"
+ ],
"html/browsers/windows/embedded-opener.html": [
"8e02664342f5493faa1f68e67804f2dd7f4d6491",
"testharness"
@@ -644535,11 +645041,11 @@
"testharness"
],
"mathml/META.yml": [
- "a410f582f0a9b006946e8d9c46e1e0a2b5acea43",
+ "5aea9088d744bfa835ca91217c9a6d9f60253e3e",
"support"
],
"mathml/README.md": [
- "bab35474dd5726d8310f22c826da0e6cff86ab7e",
+ "175c1813deeb7b784925cbb87e7990fb3f056fce",
"support"
],
"mathml/presentation-markup/fractions/frac-1.html": [
@@ -649075,7 +649581,7 @@
"support"
],
"network-error-logging/support/nel.sub.js": [
- "16aebd54a97cdcd9329c42eba6b4116c40993ca0",
+ "8fa83505320c997b877b9b4883cf2d96993afe84",
"support"
],
"network-error-logging/support/no-policy-pass.png": [
@@ -649087,7 +649593,7 @@
"support"
],
"network-error-logging/support/pass.png.sub.headers": [
- "70796e913ace97d4d1a21ac0b1c19f6fbb6d01fc",
+ "15d246d8d9dd2070d4467071166cdda076324d8a",
"support"
],
"network-error-logging/support/redirect.py": [
@@ -655590,15 +656096,15 @@
"ba1811f6742078a6d05139527ac3873539a7d7ce",
"support"
],
- "orientation-event/devicemotionevent-init.html": [
+ "orientation-event/devicemotionevent-init.https.html": [
"90563d8bbaea35f05bbe72df5acbae199fa4e02a",
"testharness"
],
- "orientation-event/deviceorientationabsoluteevent.html": [
+ "orientation-event/deviceorientationabsoluteevent.https.html": [
"8ccf671cb3b84665eaa048f528e64a95c8793e65",
"testharness"
],
- "orientation-event/deviceorientationevent-init.html": [
+ "orientation-event/deviceorientationevent-init.https.html": [
"b6485f696b446c83389518b9aaead9f1cb74884a",
"testharness"
],
@@ -655614,7 +656120,7 @@
"ed8309d6480eaaec45e986a3391854d67b01ba2d",
"testharness"
],
- "orientation-event/ondeviceorientationabsolute.html": [
+ "orientation-event/ondeviceorientationabsolute.https.html": [
"73ce97ab5c1fd7220fb65e53fb51e0bfa86beb28",
"testharness"
],
@@ -672846,14 +673352,110 @@
"f1167f919ab39a85e38778c39fc64305eecd4921",
"testharness"
],
+ "signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error-downgraded.tentative.html": [
+ "845b7e01ff28b92f4db7919a3f29661ee78df544",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error.tentative.html": [
+ "476af828e636a7587a3618acad1ce41a9715c0a3",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error-downgraded.tentative.html": [
+ "d962b884e53c02fe483cfa7e92777e40b44f3767",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error.tentative.html": [
+ "11dc4141b8a6f5f30ad8556dcc9ab6eeacb15be0",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error-downgraded.tentative.html": [
+ "a1358e753000ecffc3caa0ee31427f38816cae30",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error.tentative.html": [
+ "81520f9df987b0b85cebdac81a12be66882042c9",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-failed-zero-success-fraction.tentative.html": [
+ "c0e06c8a197b3af5749ff4d3f8c3aa07e1cefa42",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-invalid_integrity_header.tentative.html": [
+ "aaad0c84b7b532a0e3f8b5d923e9668d941c7c47",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-mi_error.tentative.html": [
+ "40d1ae01fc450d3c51bc482dff3acf77aa6a3dfc",
+ "testharness"
+ ],
"signed-exchange/reporting/sxg-reporting-navigation-ok.tentative.html": [
"ee9a50966d8f5581084b3518757ff74a6abed692",
"testharness"
],
+ "signed-exchange/reporting/sxg-reporting-navigation-parse_error.tentative.html": [
+ "aaaa3872511aaf205f306e78769187d854b6ad15",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error-downgraded.tentative.html": [
+ "87bbc369f2419ad65715f070ae5dbabba82e4607",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error.tentative.html": [
+ "f57fd4d59670855bbf7edbfafac623ff38009f95",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error-downgraded.tentative.html": [
+ "f663f35ce761f65686468b54884cd2ca37a1168c",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error.tentative.html": [
+ "c17fc5c02986789e251004fc31fa23801c1f5302",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error-downgraded.tentative.html": [
+ "f1a5eb17f6211f01891c7608518f38794cd2b65f",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error.tentative.html": [
+ "00f41c0861c7aab56ffe6f184e4252a90823ed97",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error-downgraded.tentative.html": [
+ "4836dc1b94660071da2eeb39e460bcfebef2ab03",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error.tentative.html": [
+ "441a17af1052019494b998a0ca2dfa2a8ebca5ba",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-failed-zero-success-feaction.tentative.html": [
+ "b0f7103053ba8e8ae938be3831de9b785d78047c",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-invalid_integrity_header.tentative.html": [
+ "1fd431c1a0b056ef6d8550fb35e984ba2802e677",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-mi_error.tentative.html": [
+ "2bbf0e8f2582f1dee3b73360f9f4240f52dc596f",
+ "testharness"
+ ],
"signed-exchange/reporting/sxg-reporting-prefetch-ok.tentative.html": [
"fb5fb58c9f7063c2abd45130ec4bfdf4b6bcc8cb",
"testharness"
],
+ "signed-exchange/reporting/sxg-reporting-prefetch-parse_error.tentative.html": [
+ "171baf1b4a93d7e317592b431c92045d3313c132",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error-downgraded.tentative.html": [
+ "7340b75e35eb439a99f2b6869f8b24ddf4105325",
+ "testharness"
+ ],
+ "signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error.tentative.html": [
+ "d552c4a8c339777a4f6fa7c1ad9c9bd0c2a6b5b2",
+ "testharness"
+ ],
"signed-exchange/resources/127.0.0.1.sxg.ext": [
"8cdc25a9a7f36f3313813e967eb9e68f5e546ff6",
"support"
@@ -672887,13 +673489,21 @@
"support"
],
"signed-exchange/resources/generate-test-sxgs.sh": [
- "bb95df83295e1b2f81a569e93fd5d9d0ce548574",
+ "bae4ce0eaed3ffcd36d70e4931ea39ff1a3c3346",
"support"
],
"signed-exchange/resources/inner-url.html": [
"5b247bbfe99a5e502f8d775c37c5d543dfea3fe3",
"support"
],
+ "signed-exchange/resources/invalid-cert-format.cbor": [
+ "82f15ff924af48d09609ff12a9d43fbe672d5efd",
+ "support"
+ ],
+ "signed-exchange/resources/invalid-cert-format.cbor.headers": [
+ "d581d5987ea0f9d7c8164d680a4527f2ea519cd4",
+ "support"
+ ],
"signed-exchange/resources/sxg-location.html": [
"b3ebd2bde7acd2d1885838a37ab9cfc91c250551",
"support"
@@ -672934,6 +673544,14 @@
"6d8538882d27c40b0ffcf0845c090844aaec87b7",
"support"
],
+ "signed-exchange/resources/sxg/sxg-cert-not-found-on-alt-origin.sxg": [
+ "2a7dbf6fa69ae29055e51f6c7d32d3ab4ceb6765",
+ "support"
+ ],
+ "signed-exchange/resources/sxg/sxg-cert-not-found.sxg": [
+ "072125400abb5b6a19039d798a5f29261154efaf",
+ "support"
+ ],
"signed-exchange/resources/sxg/sxg-hsts.sxg": [
"8f57c63dfab73eb5d05600f7563bb0a4ae938834",
"support"
@@ -672942,6 +673560,30 @@
"0093eb1d37d0df6e9a63569bab16133ead012d52",
"support"
],
+ "signed-exchange/resources/sxg/sxg-invalid-cert-format-on-alt-origin.sxg": [
+ "62acedd390e1a40379f4f48994d6ef7673a46f0d",
+ "support"
+ ],
+ "signed-exchange/resources/sxg/sxg-invalid-cert-format.sxg": [
+ "30e4fcd9124955b498810069492ab7e83b208e63",
+ "support"
+ ],
+ "signed-exchange/resources/sxg/sxg-invalid-cert-sha256-cert-on-alt-origin.sxg": [
+ "066a3cc0a4d4c31c342fc06107e459e1def04cad",
+ "support"
+ ],
+ "signed-exchange/resources/sxg/sxg-invalid-cert-sha256.sxg": [
+ "46d2bb1386ea08ed742b786ac2ec710bedaa9db2",
+ "support"
+ ],
+ "signed-exchange/resources/sxg/sxg-invalid-format.sxg": [
+ "3fbb151b5ca329edd43d40c3289dbacbee328746",
+ "support"
+ ],
+ "signed-exchange/resources/sxg/sxg-invalid-integrity-header.sxg": [
+ "95d358245c909d7da0c2b6bbf08913c60aceda20",
+ "support"
+ ],
"signed-exchange/resources/sxg/sxg-invalid-utf8-inner-url.sxg": [
"65357e14ac671610935693d409da9c58c1fa75c7",
"support"
@@ -672950,6 +673592,10 @@
"62e88d638641ed4ed026319b27a53c6d04351076",
"support"
],
+ "signed-exchange/resources/sxg/sxg-location-cert-on-alt-origin.sxg": [
+ "a2ddc77951cebbbdbcd95a4d275501b4f64677f5",
+ "support"
+ ],
"signed-exchange/resources/sxg/sxg-location.sxg": [
"1678b751bcba390d35687730bb24e13232e33eda",
"support"
@@ -672974,6 +673620,14 @@
"3edf285f1bd5affc5c575ca258a8cd3cfa546e35",
"support"
],
+ "signed-exchange/resources/sxg/sxg-validity-period-too-long-cert-on-alt-origin.sxg": [
+ "294f97b097a457f06c38d209ba24344bcab719ba",
+ "support"
+ ],
+ "signed-exchange/resources/sxg/sxg-validity-period-too-long.sxg": [
+ "e90d9bc66de7fd3937c119afecec3cb4db5fa87c",
+ "support"
+ ],
"signed-exchange/sxg-double-prefetch.tentative.html": [
"d682741744fed929bee8e62fbae4857a4bfbf1d5",
"testharness"
@@ -676822,6 +677476,10 @@
"04d8d3025ee0f039a05bdd439f2dc02c13f49a23",
"reftest"
],
+ "svg/pservers/reftests/radialgradient-fully-overlapping.svg": [
+ "e16bb4ab917178b7a17bcb82b74046a457e9c03f",
+ "reftest"
+ ],
"svg/pservers/reftests/reference/green-100x100.svg": [
"120941444a4898197d6b6001f9908a6cd48b62ba",
"support"
@@ -677567,7 +678225,7 @@
"support"
],
"tools/ci/azure/fyi_hook.yml": [
- "bcad6c33dbb64c96c4e85882fa2cb6976265afbb",
+ "ddfbe3d3cf8e1db0453a4b909a7b6176dc32a96f",
"support"
],
"tools/ci/azure/install_certs.yml": [
@@ -689466,6 +690124,10 @@
"ac9d70c43eff1ddd0995dcea741f3b6ea850464b",
"testharness"
],
+ "webrtc/RTCPeerConnection-onsignalingstatechanged.https.html": [
+ "fc3182d3d59ea5ba80cbcf022a76c4fc40f18a1a",
+ "testharness"
+ ],
"webrtc/RTCPeerConnection-ontrack.https.html": [
"10210129acd598fd959124fbe51462de8a1cdb0b",
"testharness"
diff --git a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-002.https.html.ini b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-002.https.html.ini
index d747392eb3b..86d08faea46 100644
--- a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-002.https.html.ini
+++ b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-002.https.html.ini
@@ -1,4 +1,3 @@
[parse-input-arguments-002.https.html]
type: reftest
- expected: FAIL
bug: https://github.com/servo/servo/issues/17852
diff --git a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-003.https.html.ini b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-003.https.html.ini
index 8c925cb0088..6262474d196 100644
--- a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-003.https.html.ini
+++ b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-003.https.html.ini
@@ -1,4 +1,3 @@
[parse-input-arguments-003.https.html]
type: reftest
- expected: FAIL
bug: https://github.com/servo/servo/issues/17852
diff --git a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-005.https.html.ini b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-005.https.html.ini
index 270647ca332..56c27026efc 100644
--- a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-005.https.html.ini
+++ b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-005.https.html.ini
@@ -1,4 +1,3 @@
[parse-input-arguments-005.https.html]
type: reftest
- expected: FAIL
bug: https://github.com/servo/servo/issues/17852
diff --git a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-006.https.html.ini b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-006.https.html.ini
index eb77aa65f63..5329501fd03 100644
--- a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-006.https.html.ini
+++ b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-006.https.html.ini
@@ -1,4 +1,3 @@
[parse-input-arguments-006.https.html]
type: reftest
- expected: FAIL
bug: https://github.com/servo/servo/issues/17852
diff --git a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-008.https.html.ini b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-008.https.html.ini
index 773a2c4c43c..0511e68318d 100644
--- a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-008.https.html.ini
+++ b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-008.https.html.ini
@@ -1,4 +1,3 @@
[parse-input-arguments-008.https.html]
type: reftest
- expected: FAIL
bug: https://github.com/servo/servo/issues/17852
diff --git a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-009.https.html.ini b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-009.https.html.ini
index 3e7ac7e9277..ae92e1907f7 100644
--- a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-009.https.html.ini
+++ b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-009.https.html.ini
@@ -1,4 +1,3 @@
[parse-input-arguments-009.https.html]
type: reftest
- expected: FAIL
bug: https://github.com/servo/servo/issues/17852
diff --git a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-010.https.html.ini b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-010.https.html.ini
index 742b2ff5c26..e9ca37a27e1 100644
--- a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-010.https.html.ini
+++ b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-010.https.html.ini
@@ -1,4 +1,3 @@
[parse-input-arguments-010.https.html]
type: reftest
- expected: FAIL
bug: https://github.com/servo/servo/issues/17852
diff --git a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-011.https.html.ini b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-011.https.html.ini
index 6c51f66c0f7..b6e0272ac24 100644
--- a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-011.https.html.ini
+++ b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-011.https.html.ini
@@ -1,4 +1,3 @@
[parse-input-arguments-011.https.html]
type: reftest
- expected: FAIL
bug: https://github.com/servo/servo/issues/17852
diff --git a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-012.https.html.ini b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-012.https.html.ini
index 056507d65af..927fd4189bc 100644
--- a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-012.https.html.ini
+++ b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-012.https.html.ini
@@ -1,4 +1,3 @@
[parse-input-arguments-012.https.html]
type: reftest
- expected: FAIL
bug: https://github.com/servo/servo/issues/17852
diff --git a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-016.https.html.ini b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-016.https.html.ini
index 1ba90f98ec4..685d1f18027 100644
--- a/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-016.https.html.ini
+++ b/tests/wpt/metadata/css/css-paint-api/parse-input-arguments-016.https.html.ini
@@ -1,4 +1,3 @@
[parse-input-arguments-016.https.html]
type: reftest
- expected: FAIL
bug: https://github.com/servo/servo/issues/17852
diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLAreaElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLAreaElement.html.ini
new file mode 100644
index 00000000000..6f1efd09327
--- /dev/null
+++ b/tests/wpt/metadata/custom-elements/reactions/HTMLAreaElement.html.ini
@@ -0,0 +1,43 @@
+[HTMLAreaElement.html]
+ [alt on HTMLAreaElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [shape on HTMLAreaElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [referrerPolicy on HTMLAreaElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [download on HTMLAreaElement must enqueue an attributeChanged reaction when adding a new attribute]
+ expected: FAIL
+
+ [coords on HTMLAreaElement must enqueue an attributeChanged reaction when adding a new attribute]
+ expected: FAIL
+
+ [alt on HTMLAreaElement must enqueue an attributeChanged reaction when adding a new attribute]
+ expected: FAIL
+
+ [rel on HTMLAreaElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [rel on HTMLAreaElement must enqueue an attributeChanged reaction when adding a new attribute]
+ expected: FAIL
+
+ [ping on HTMLAreaElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [ping on HTMLAreaElement must enqueue an attributeChanged reaction when adding a new attribute]
+ expected: FAIL
+
+ [referrerPolicy on HTMLAreaElement must enqueue an attributeChanged reaction when adding a new attribute]
+ expected: FAIL
+
+ [download on HTMLAreaElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [coords on HTMLAreaElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [shape on HTMLAreaElement must enqueue an attributeChanged reaction when adding a new attribute]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLEmbedElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLEmbedElement.html.ini
new file mode 100644
index 00000000000..b67dd39418e
--- /dev/null
+++ b/tests/wpt/metadata/custom-elements/reactions/HTMLEmbedElement.html.ini
@@ -0,0 +1,25 @@
+[HTMLEmbedElement.html]
+ [src on HTMLEmbedElement must enqueue an attributeChanged reaction when adding src content attribute]
+ expected: FAIL
+
+ [height on HTMLEmbedElement must enqueue an attributeChanged reaction when adding height content attribute]
+ expected: FAIL
+
+ [type on HTMLEmbedElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [type on HTMLEmbedElement must enqueue an attributeChanged reaction when adding type content attribute]
+ expected: FAIL
+
+ [src on HTMLEmbedElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [width on HTMLEmbedElement must enqueue an attributeChanged reaction when adding width content attribute]
+ expected: FAIL
+
+ [width on HTMLEmbedElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [height on HTMLEmbedElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLFieldSetElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLFieldSetElement.html.ini
new file mode 100644
index 00000000000..dd0110b37ad
--- /dev/null
+++ b/tests/wpt/metadata/custom-elements/reactions/HTMLFieldSetElement.html.ini
@@ -0,0 +1,7 @@
+[HTMLFieldSetElement.html]
+ [name on HTMLFieldSetElement must enqueue an attributeChanged reaction when adding a new attribute]
+ expected: FAIL
+
+ [name on HTMLFieldSetElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLImageElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLImageElement.html.ini
new file mode 100644
index 00000000000..54f8f4da9a6
--- /dev/null
+++ b/tests/wpt/metadata/custom-elements/reactions/HTMLImageElement.html.ini
@@ -0,0 +1,19 @@
+[HTMLImageElement.html]
+ [referrerPolicy on HTMLImageElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [referrerPolicy on HTMLImageElement must enqueue an attributeChanged reaction when adding a new attribute]
+ expected: FAIL
+
+ [decoding on HTMLImageElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [decoding on HTMLImageElement must enqueue an attributeChanged reaction when adding a new attribute]
+ expected: FAIL
+
+ [sizes on HTMLImageElement must enqueue an attributeChanged reaction when replacing an existing attribute]
+ expected: FAIL
+
+ [sizes on HTMLImageElement must enqueue an attributeChanged reaction when adding a new attribute]
+ 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 ba73113f0bc..8eb25104301 100644
--- a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
+++ b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
@@ -32,7 +32,7 @@
[single-byte-decoder.html?XMLHttpRequest]
- expected: CRASH
+ expected: TIMEOUT
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
expected: FAIL
@@ -55,12 +55,9 @@
expected: FAIL
[windows-1252: iso_8859-1:1987 (XMLHttpRequest)]
- expected: FAIL
-
- [windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1254: iso_8859-9 (XMLHttpRequest)]
+ [windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1254: windows-1254 (XMLHttpRequest)]
@@ -87,9 +84,6 @@
[windows-1255: cp1255 (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1257: windows-1257 (XMLHttpRequest)]
- expected: TIMEOUT
-
[windows-1254: iso88599 (XMLHttpRequest)]
expected: TIMEOUT
@@ -111,5 +105,59 @@
[x-mac-cyrillic: x-mac-cyrillic (XMLHttpRequest)]
expected: TIMEOUT
+ [windows-1258: cp1258 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1253: x-cp1253 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1256: cp1256 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: iso88591 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: iso-8859-9 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: iso_8859-1 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: latin1 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: csisolatin5 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1257: x-cp1257 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: cp1254 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1253: windows-1253 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: iso8859-1 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: iso-ir-148 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: l1 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: iso-8859-1 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: iso-ir-100 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1252: us-ascii (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1256: windows-1256 (XMLHttpRequest)]
+ expected: TIMEOUT
+
[single-byte-decoder.html?TextDecoder]
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 079232caa74..45bd4120ca4 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,24 +312,12 @@
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;x=" text/plain]
- expected: FAIL
-
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" text/plain]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: */* text/html]
- expected: FAIL
-
- [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ [<iframe>: separate response Content-Type: text/html;charset=gbk text/plain text/html]
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 ef3edb78985..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%20%22nosniFF%22]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_1.html]
+ [Multiple history traversals from the same task]
+ 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
new file mode 100644
index 00000000000..dc2e45516de
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_5.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/focus.window.js.ini b/tests/wpt/metadata/html/browsers/the-window-object/focus.window.js.ini
new file mode 100644
index 00000000000..b5cc11a44a9
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/the-window-object/focus.window.js.ini
@@ -0,0 +1,4 @@
+[focus.window.html]
+ [focus]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini b/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini
new file mode 100644
index 00000000000..8eb496ddcd1
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini
@@ -0,0 +1,4 @@
+[embedded-opener-remove-frame.html]
+ [opener and "removed" embedded documents]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
deleted file mode 100644
index 8cc42056d34..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[non-active-document.html]
- [DOMParser]
- expected: FAIL
-
- [createHTMLDocument]
- expected: FAIL
-
- [<template>]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
index 99a24216c88..7725b118e9d 100644
--- a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
+++ b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
@@ -12,3 +12,6 @@
[Verifies the resolution of entry.startTime is at least 5 microseconds.]
expected: TIMEOUT
+ [Verifies the resolution of performance.now() is at least 5 microseconds.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
index 268949ced5c..f584fce5df1 100644
--- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
+++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
@@ -1,4 +1,5 @@
[005.html]
+ expected: ERROR
[dedicated worker in shared worker in dedicated worker]
expected: FAIL
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-002.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-002.https.html
index 6fc16c74701..b1b50e04045 100644
--- a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-002.https.html
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-002.https.html
@@ -25,7 +25,8 @@ try {
}
});
} catch(ex) {
- if (ex.name == "TypeError" && ex.message == "Failed to execute 'registerPaint' on 'PaintWorkletGlobalScope': The provided value cannot be converted to a sequence.")
+ // 'inputArguments' property is a string, not a sequence.
+ if (ex.name == 'TypeError')
testsPassed = true;
}
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-003.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-003.https.html
index 44fd850f9ab..3b1b0014f78 100644
--- a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-003.https.html
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-003.https.html
@@ -25,7 +25,8 @@ try {
}
});
} catch(ex) {
- if (ex.name == "TypeError" && ex.message == "Failed to execute 'registerPaint' on 'PaintWorkletGlobalScope': Invalid argument types.")
+ // 'non-sense-type' is not a proper name of CSS properties.
+ if (ex.name == 'TypeError')
testsPassed = true;
}
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-005.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-005.https.html
index c12e00c92f5..0c5e539381b 100644
--- a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-005.https.html
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-005.https.html
@@ -22,7 +22,8 @@ try {
registerPaint('foo', class { paint() { } });
registerPaint('foo', class { paint() { } });
} catch(ex) {
- if (ex.name == "NotSupportedError" && ex.message == "Failed to execute 'registerPaint' on 'PaintWorkletGlobalScope': A class with name:'foo' is already registered.")
+ // 'foo' gets registered twice.
+ if (ex.name == 'InvalidModificationError')
testsPassed = true;
}
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-006.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-006.https.html
index 664b7a8c1a0..e99ab05a88d 100644
--- a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-006.https.html
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-006.https.html
@@ -21,7 +21,8 @@ var testsPassed = false;
try {
registerPaint('', class { });
} catch(ex) {
- if (ex.name == 'TypeError' && ex.message == "Failed to execute 'registerPaint' on 'PaintWorkletGlobalScope': The empty string is not a valid name.")
+ // The empty string is not a valid name.
+ if (ex.name == 'TypeError')
testsPassed = true;
}
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-008.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-008.https.html
index 1914e3cf044..e6b863c641c 100644
--- a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-008.https.html
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-008.https.html
@@ -25,7 +25,8 @@ try {
}
});
} catch(ex) {
- if (ex.name == 'TypeError' && ex.message == "Failed to execute 'registerPaint' on 'PaintWorkletGlobalScope': The provided value cannot be converted to a sequence.")
+ // 'inputProperties' property is 42, not a sequence<DOMString>.
+ if (ex.name == 'TypeError')
testsPassed = true;
}
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-009.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-009.https.html
index 21d004df0ee..b23191ae340 100644
--- a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-009.https.html
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-009.https.html
@@ -23,7 +23,8 @@ try {
a.prototype = undefined;
registerPaint('foo5', a);
} catch(ex) {
- if (ex.name == 'TypeError' && ex.message == "Failed to execute 'registerPaint' on 'PaintWorkletGlobalScope': The 'prototype' object on the class does not exist.")
+ // The prototype object is undefined, not an object.
+ if (ex.name == 'TypeError')
testsPassed = true;
}
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-010.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-010.https.html
index d923479ea81..e98b4316489 100644
--- a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-010.https.html
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-010.https.html
@@ -23,7 +23,8 @@ try {
b.prototype = 42;
registerPaint('foo6', b);
} catch(ex) {
- if (ex.name == 'TypeError' && ex.message == "Failed to execute 'registerPaint' on 'PaintWorkletGlobalScope': The 'prototype' property on the class is not an object.")
+ // The prototype object is 42, not an object.
+ if (ex.name == 'TypeError')
testsPassed = true;
}
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-011.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-011.https.html
index 6cea438fce2..b9d54bf413d 100644
--- a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-011.https.html
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-011.https.html
@@ -21,7 +21,8 @@ var testsPassed = false;
try {
registerPaint('foo7', class { });
} catch(ex) {
- if (ex.name == 'TypeError' && ex.message == "Failed to execute 'registerPaint' on 'PaintWorkletGlobalScope': The 'paint' property on the prototype does not exist.")
+ // 'paint' property doesn't exist on the prototype chain.
+ if (ex.name == 'TypeError')
testsPassed = true;
}
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-012.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-012.https.html
index 938150aa9aa..14eebeb635a 100644
--- a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-012.https.html
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-012.https.html
@@ -25,7 +25,8 @@ try {
}
});
} catch(ex) {
- if (ex.name == 'TypeError' && ex.message == "Failed to execute 'registerPaint' on 'PaintWorkletGlobalScope': The 'paint' property on the prototype is not a function.")
+ // 'paint' property's value is 42, not a function.
+ if (ex.name == 'TypeError')
testsPassed = true;
}
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-016.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-016.https.html
index 8c9d05dcd1a..31cca45faca 100644
--- a/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-016.https.html
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/parse-input-arguments-016.https.html
@@ -25,7 +25,8 @@ try {
}
});
} catch(ex) {
- if (ex.name == "TypeError" && ex.message == "Failed to execute 'registerPaint' on 'PaintWorkletGlobalScope': cannot convert to dictionary.")
+ // 'contextOptions' property is 42, not a dictionary.
+ if (ex.name == 'TypeError')
testsPassed = true;
}
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-001.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-001.html
new file mode 100644
index 00000000000..d6f8ed4e39a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-001.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Tests the static position of inline-level absolute-positioned elements, with combinations of float, direction, and text-align." />
+<style>
+#container { position: relative; background: red; width: 100px; height: 100px; }
+#container > div { background: green; }
+#inflow { height: 50px; }
+#float { float: left; width: 50px; height: 50px; }
+#abs { display: inline; position: absolute; width: 50px; height: 50px; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container style="direction: ltr; text-align: left;">
+ <div id=inflow></div>
+ <div id=float style="float: left;"></div>
+ <div id=abs style="transform: translateX(0%);"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-002.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-002.html
new file mode 100644
index 00000000000..9b0f5c2beaf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-002.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Tests the static position of inline-level absolute-positioned elements, with combinations of float, direction, and text-align." />
+<style>
+#container { position: relative; background: red; width: 100px; height: 100px; }
+#container > div { background: green; }
+#inflow { height: 50px; }
+#float { float: left; width: 50px; height: 50px; }
+#abs { display: inline; position: absolute; width: 50px; height: 50px; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container style="direction: ltr; text-align: center;">
+ <div id=inflow></div>
+ <div id=float style="float: left;"></div>
+ <div id=abs style="transform: translateX(-50%);"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-003.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-003.html
new file mode 100644
index 00000000000..90db2d4f80d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-003.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Tests the static position of inline-level absolute-positioned elements, with combinations of float, direction, and text-align." />
+<style>
+#container { position: relative; background: red; width: 100px; height: 100px; }
+#container > div { background: green; }
+#inflow { height: 50px; }
+#float { float: left; width: 50px; height: 50px; }
+#abs { display: inline; position: absolute; width: 50px; height: 50px; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container style="direction: ltr; text-align: right;">
+ <div id=inflow></div>
+ <div id=float style="float: left;"></div>
+ <div id=abs style="transform: translateX(-100%);"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-004.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-004.html
new file mode 100644
index 00000000000..a6b13b26c8f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-004.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Tests the static position of inline-level absolute-positioned elements, with combinations of float, direction, and text-align." />
+<style>
+#container { position: relative; background: red; width: 100px; height: 100px; }
+#container > div { background: green; }
+#inflow { height: 50px; }
+#float { float: left; width: 50px; height: 50px; }
+#abs { display: inline; position: absolute; width: 50px; height: 50px; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container style="direction: ltr; text-align: left;">
+ <div id=inflow></div>
+ <div id=float style="float: right;"></div>
+ <div id=abs style="transform: translateX(0%);"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-005.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-005.html
new file mode 100644
index 00000000000..481c83a757d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-005.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Tests the static position of inline-level absolute-positioned elements, with combinations of float, direction, and text-align." />
+<style>
+#container { position: relative; background: red; width: 100px; height: 100px; }
+#container > div { background: green; }
+#inflow { height: 50px; }
+#float { float: left; width: 50px; height: 50px; }
+#abs { display: inline; position: absolute; width: 50px; height: 50px; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container style="direction: ltr; text-align: center;">
+ <div id=inflow></div>
+ <div id=float style="float: right;"></div>
+ <div id=abs style="transform: translateX(-50%);"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-006.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-006.html
new file mode 100644
index 00000000000..de5322f8199
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-006.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Tests the static position of inline-level absolute-positioned elements, with combinations of float, direction, and text-align." />
+<style>
+#container { position: relative; background: red; width: 100px; height: 100px; }
+#container > div { background: green; }
+#inflow { height: 50px; }
+#float { float: left; width: 50px; height: 50px; }
+#abs { display: inline; position: absolute; width: 50px; height: 50px; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container style="direction: ltr; text-align: right;">
+ <div id=inflow></div>
+ <div id=float style="float: right;"></div>
+ <div id=abs style="transform: translateX(-100%);"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-007.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-007.html
new file mode 100644
index 00000000000..1168b1d2287
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-007.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Tests the static position of inline-level absolute-positioned elements, with combinations of float, direction, and text-align." />
+<style>
+#container { position: relative; background: red; width: 100px; height: 100px; }
+#container > div { background: green; }
+#inflow { height: 50px; }
+#float { float: left; width: 50px; height: 50px; }
+#abs { display: inline; position: absolute; width: 50px; height: 50px; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container style="direction: rtl; text-align: right;">
+ <div id=inflow></div>
+ <div id=float style="float: left;"></div>
+ <div id=abs style="transform: translateX(0%);"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-008.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-008.html
new file mode 100644
index 00000000000..e10a7e191d3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-008.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Tests the static position of inline-level absolute-positioned elements, with combinations of float, direction, and text-align." />
+<style>
+#container { position: relative; background: red; width: 100px; height: 100px; }
+#container > div { background: green; }
+#inflow { height: 50px; }
+#float { float: left; width: 50px; height: 50px; }
+#abs { display: inline; position: absolute; width: 50px; height: 50px; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container style="direction: rtl; text-align: center;">
+ <div id=inflow></div>
+ <div id=float style="float: left;"></div>
+ <div id=abs style="transform: translateX(50%);"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-009.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-009.html
new file mode 100644
index 00000000000..86102fa1d99
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-009.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Tests the static position of inline-level absolute-positioned elements, with combinations of float, direction, and text-align." />
+<style>
+#container { position: relative; background: red; width: 100px; height: 100px; }
+#container > div { background: green; }
+#inflow { height: 50px; }
+#float { float: left; width: 50px; height: 50px; }
+#abs { display: inline; position: absolute; width: 50px; height: 50px; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container style="direction: rtl; text-align: left;">
+ <div id=inflow></div>
+ <div id=float style="float: left;"></div>
+ <div id=abs style="transform: translateX(100%);"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-010.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-010.html
new file mode 100644
index 00000000000..95d43b9cfb2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-010.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Tests the static position of inline-level absolute-positioned elements, with combinations of float, direction, and text-align." />
+<style>
+#container { position: relative; background: red; width: 100px; height: 100px; }
+#container > div { background: green; }
+#inflow { height: 50px; }
+#float { float: left; width: 50px; height: 50px; }
+#abs { display: inline; position: absolute; width: 50px; height: 50px; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container style="direction: rtl; text-align: right;">
+ <div id=inflow></div>
+ <div id=float style="float: right;"></div>
+ <div id=abs style="transform: translateX(0%);"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-011.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-011.html
new file mode 100644
index 00000000000..375566388ef
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-011.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Tests the static position of inline-level absolute-positioned elements, with combinations of float, direction, and text-align." />
+<style>
+#container { position: relative; background: red; width: 100px; height: 100px; }
+#container > div { background: green; }
+#inflow { height: 50px; }
+#float { float: left; width: 50px; height: 50px; }
+#abs { display: inline; position: absolute; width: 50px; height: 50px; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container style="direction: rtl; text-align: center;">
+ <div id=inflow></div>
+ <div id=float style="float: right;"></div>
+ <div id=abs style="transform: translateX(50%);"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-012.html b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-012.html
new file mode 100644
index 00000000000..1972317822b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/static-position/inline-level-absolute-in-block-level-context-012.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#abs-non-replaced-width" />
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Tests the static position of inline-level absolute-positioned elements, with combinations of float, direction, and text-align." />
+<style>
+#container { position: relative; background: red; width: 100px; height: 100px; }
+#container > div { background: green; }
+#inflow { height: 50px; }
+#float { float: left; width: 50px; height: 50px; }
+#abs { display: inline; position: absolute; width: 50px; height: 50px; }
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id=container style="direction: rtl; text-align: left;">
+ <div id=inflow></div>
+ <div id=float style="float: right;"></div>
+ <div id=abs style="transform: translateX(100%);"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html
index 80189fe2f36..5ee86ae4a67 100644
--- a/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html
+++ b/tests/wpt/web-platform-tests/css/cssom/CSSStyleSheet-constructable.html
@@ -228,6 +228,41 @@ promise_test(() => {
});
}, 'Re-attaching shadow host with adopted stylesheets work');
+test(() => {
+ const sheet = new CSSStyleSheet();
+ sheet.replaceSync(":host { color: red; }");
+ const host = document.createElement("div");
+ let sr = host.attachShadow({mode: "open"});
+ sr.adoptedStyleSheets = [sheet];
+ document.body.appendChild(host);
+ assert_equals(getComputedStyle(host).color, "rgb(255, 0, 0)", "Style applies when connected");
+ sheet.replaceSync(":host { color: blue; }");
+ assert_equals(getComputedStyle(host).color, "rgb(0, 0, 255)", "Style update applies when connected");
+}, 'Attaching a shadow root that already has adopted stylesheets work');
+
+test(() => {
+
+ const sheet = new CSSStyleSheet();
+ sheet.replaceSync(":host([red]) { color: red; } :host(.blue) { color: blue; }");
+ const host = document.createElement("div");
+ host.toggleAttribute("red");
+ document.body.appendChild(host);
+ assert_equals(getComputedStyle(host).color, "rgb(0, 0, 0)", "No style applies yet");
+
+ let sr = host.attachShadow({mode: "open"});
+ sr.adoptedStyleSheets = [sheet];
+
+ assert_equals(getComputedStyle(host).color, "rgb(255, 0, 0)", "Style applies after adding style");
+ document.body.removeChild(host);
+ document.body.appendChild(host);
+ assert_equals(getComputedStyle(host).color, "rgb(255, 0, 0)", "Style applies after reattachment");
+ host.toggleAttribute("red");
+ assert_equals(getComputedStyle(host).color, "rgb(0, 0, 0)", "Attribute updates to the element after reattachment apply");
+ host.classList.toggle("blue");
+ assert_equals(getComputedStyle(host).color, "rgb(0, 0, 255)", "Class updates to the element after reattachment apply");
+
+}, "Re-attaching shadow host and updating attributes work");
+
promise_test(() => {
const plainSheet = new CSSStyleSheet();
const redStyleSheetPromise = plainSheet.replace(redStyleTexts[0]);
diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLAreaElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLAreaElement.html
new file mode 100644
index 00000000000..95059b7c8d0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLAreaElement.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<title>Custom Elements: CEReactions on HTMLAreaElement interface</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<meta name="assert" content="alt, coords, shape, target, download, ping, rel,
+ referrerPolicy of HTMLAreaElement interface must have CEReactions">
+<meta name="help" content="https://html.spec.whatwg.org/#the-area-element">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/custom-elements-helpers.js"></script>
+<script src="./resources/reactions.js"></script>
+
+<map name="yellow" id="map">
+</map>
+<img usemap="#yellow" src="/images/yellow.png" alt="yellow pic">
+
+<script>
+
+function getParentElement() {
+ let map = document.getElementById('map');
+ return map;
+}
+
+function setAttributes(instance) {
+ instance.setAttribute('href', '/images/yellow.png');
+}
+
+testReflectAttributeWithDependentAttributes(
+ 'alt', 'alt', 'yellow pic',
+ 'yellow pic2', 'alt on HTMLAreaElement', 'area',
+ getParentElement, instance => setAttributes(instance), HTMLAreaElement
+);
+testReflectAttributeWithParentNode(
+ 'coords', 'coords', '1, 1, 5, 5',
+ '2, 2, 6, 6', 'coords on HTMLAreaElement', 'area',
+ getParentElement, HTMLAreaElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'shape', 'shape', 'rectangle',
+ 'default', 'shape on HTMLAreaElement', 'area',
+ getParentElement, instance => instance.setAttribute('coords', '1, 1, 5, 5'),
+ HTMLAreaElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'target', 'target', '_blank',
+ '_top', 'target on HTMLAreaElement', 'area',
+ getParentElement, instance => setAttributes(instance), HTMLAreaElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'download', 'download', 'pic1',
+ 'pic2', 'download on HTMLAreaElement', 'area',
+ getParentElement, instance => setAttributes(instance), HTMLAreaElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'ping', 'ping', 'location.href',
+ `${location.protocol}\/\/${location.host}`, 'ping on HTMLAreaElement', 'area',
+ getParentElement, instance => setAttributes(instance), HTMLAreaElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'rel', 'rel', 'help',
+ 'noreferrer', 'rel on HTMLAreaElement', 'area',
+ getParentElement, instance => setAttributes(instance), HTMLAreaElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'referrerPolicy', 'referrerpolicy', 'same-origin',
+ 'origin', 'referrerPolicy on HTMLAreaElement', 'area',
+ getParentElement, instance => setAttributes(instance), HTMLAreaElement
+);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLButtonElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLButtonElement.html
index b97d479d7c6..f97b6daa0b5 100644
--- a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLButtonElement.html
+++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLButtonElement.html
@@ -1,7 +1,9 @@
<!DOCTYPE html>
<title>Custom Elements: CEReactions on HTMLButtonElement interface</title>
<meta name="author" title="Zhang Xiaoyu" href="xiaoyux.zhang@intel.com">
-<meta name="assert" content=" autofocus, disabled, formAction, formEnctype, formMethod, formNoValidate, formTarget, name, type, value of HTMLButtonElement interface must have CEReactions">
+<meta name="assert" content=" autofocus, disabled, formAction, formEnctype,
+ formMethod, formNoValidate, formTarget, name, type, value
+ of HTMLButtonElement interface must have CEReactions">
<meta name="help" content="https://html.spec.whatwg.org/#htmlbuttonelement">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
@@ -16,60 +18,63 @@ function getParentElement(parentElementName) {
return parentElement;
}
-testReflectBooleanAttribute('autofocus', 'autofocus', 'autofocus on HTMLButtonElement', 'button', HTMLButtonElement);
-testReflectBooleanAttribute('disabled', 'disabled', 'disabled on HTMLButtonElement', 'button', HTMLButtonElement);
-testReflectAttribute('name', 'name', 'intel', 'intel1', 'name on HTMLButtonElement', 'button', HTMLButtonElement);
-testReflectAttribute('value', 'value', 'HTML', 'CSS', 'value on HTMLButtonElement', 'button', HTMLButtonElement);
-testReflectAttributeWithParentNode('type', 'type', 'submit', 'reset', 'type on HTMLButtonElement', 'button', () => getParentElement('form'), HTMLButtonElement);
-testReflectAttrWithDepAttr('formAction', 'formaction', 'type', 'intel.asp', 'intel1.asp', 'submit', 'formAction on HTMLButtonElement', 'button', 'form', HTMLButtonElement);
-testReflectAttrWithDepAttr('formEnctype', 'formenctype', 'type', 'text/plain', 'multipart/form-data', 'submit', 'formEnctype on HTMLButtonElement', 'button', 'form', HTMLButtonElement);
-testReflectAttrWithDepAttr('formMethod', 'formmethod', 'type', 'get', 'post', 'submit', 'formMethod on HTMLButtonElement', 'button', 'form', HTMLButtonElement);
-testReflectAttrWithContentValuesAndDepAttr('formNoValidate', 'formnovalidate', 'type', true, '', false, null, 'submit', 'formNoValidate on HTMLButtonElement', 'button', 'form', HTMLButtonElement);
-testReflectAttrWithDepAttr('formTarget', 'formtarget', 'type', '_blank', '_self', 'submit', 'formTarget on HTMLButtonElement', 'button', 'form', HTMLButtonElement);
-
-//In parent node, sub node's observeAttribute which depends another attribute can enqueue by changing attribute value
-//Test reflect attribute with content values and dependent attribute
-function testReflectAttrWithContentValuesAndDepAttr(jsAtName, coAtName, deAtName, jsAtValue1, coAtValue1, jsAtValue2, coAtValue2, deAtValue, name, elementName, pElementName, interfaceName) {
- var parentElement = document.createElement(pElementName);
- document.body.appendChild(parentElement);
-
- test(() => {
- var element = define_build_in_custom_element([coAtName], interfaceName, elementName);
- var instance = document.createElement(elementName, { is: element.name });
-
- assert_array_equals(element.takeLog().types(), ['constructed']);
- parentElement.appendChild(instance);
- assert_array_equals(element.takeLog().types(), ['connected']);
- instance.setAttribute(deAtName, deAtValue);
- instance[jsAtName] = jsAtValue1;
- var logEntries = element.takeLog();
- assert_array_equals(logEntries.types(), ['attributeChanged']);
- assert_attribute_log_entry(logEntries.last(), { name: coAtName, oldValue: null, newValue: coAtValue1, namespace: null });
-
- }, name + ' must enqueue an attributeChanged reaction when adding a new attribute');
-
- test(() => {
- var element = define_build_in_custom_element([coAtName], interfaceName, elementName);
- var instance = document.createElement(elementName, { is: element.name });
- parentElement.appendChild(instance);
- instance.setAttribute(deAtName, deAtValue);
- instance[jsAtName] = jsAtValue1;
-
- assert_array_equals(element.takeLog().types(), ['constructed', 'connected', 'attributeChanged']);
- instance[jsAtName] = jsAtValue2;
- var logEntries = element.takeLog();
- assert_array_equals(logEntries.types(), ['attributeChanged']);
- assert_attribute_log_entry(logEntries.last(), { name: coAtName, oldValue: coAtValue1, newValue: coAtValue2, namespace: null });
-
- }, name + ' must enqueue an attributeChanged reaction when replacing an existing attribute');
-
- parentElement.parentNode.removeChild(parentElement);
+function setAttributes(instance) {
+ instance.setAttribute('type', 'submit');
}
-//Package reflect attribute with dependent attribute
-function testReflectAttrWithDepAttr(jsAtName, coAtName, deAtName, jsAtValue1, jsAtValue2, deAtValue, name, elementName, pElementName, interfaceName) {
- testReflectAttrWithContentValuesAndDepAttr(jsAtName, coAtName, deAtName, jsAtValue1, jsAtValue1, jsAtValue2, jsAtValue2, deAtValue, name, elementName, pElementName, interfaceName);
-}
+testReflectBooleanAttribute(
+ 'autofocus', 'autofocus', 'autofocus on HTMLButtonElement',
+ 'button', HTMLButtonElement
+);
+testReflectBooleanAttribute(
+ 'disabled', 'disabled','disabled on HTMLButtonElement',
+ 'button', HTMLButtonElement
+);
+testReflectAttribute(
+ 'name', 'name', 'intel',
+ 'intel1', 'name on HTMLButtonElement', 'button',
+ HTMLButtonElement
+);
+testReflectAttribute(
+ 'value', 'value', 'HTML',
+ 'CSS', 'value on HTMLButtonElement', 'button',
+ HTMLButtonElement
+);
+testReflectAttributeWithParentNode(
+ 'type', 'type', 'submit',
+ 'reset', 'type on HTMLButtonElement', 'button',
+ () => getParentElement('form'), HTMLButtonElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'formAction', 'formaction', 'intel.asp',
+ 'intel1.asp', 'formAction on HTMLButtonElement', 'button',
+ () => getParentElement('form'), instance => setAttributes(instance),
+ HTMLButtonElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'formEnctype', 'formenctype', 'text/plain', 'multipart/form-data',
+ 'formEnctype on HTMLButtonElement', 'button', () => getParentElement('form'),
+ instance => setAttributes(instance),
+ HTMLButtonElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'formMethod', 'formmethod', 'get',
+ 'post', 'formMethod on HTMLButtonElement', 'button',
+ () => getParentElement('form'), instance => setAttributes(instance),
+ HTMLButtonElement
+);
+testReflectBooleanAttributeWithDependentAttributes(
+ 'formNoValidate', 'formnovalidate', 'formNoValidate on HTMLButtonElement',
+ 'button', () => getParentElement('form'),
+ instance => setAttributes(instance),
+ HTMLButtonElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'formTarget', 'formtarget', '_blank',
+ '_self', 'formTarget on HTMLButtonElement', 'button',
+ () => getParentElement('form'), instance => setAttributes(instance),
+ HTMLButtonElement
+);
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLEmbedElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLEmbedElement.html
new file mode 100644
index 00000000000..505d9e3215b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLEmbedElement.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<title>Custom Elements: CEReactions on HTMLEmbedElement interface</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<meta name="assert" content="src, type, width, height of
+ HTMLEmbedElement interface must have CEReactions">
+<meta name="help" content="https://html.spec.whatwg.org/#the-embed-element">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/custom-elements-helpers.js"></script>
+<script src="./resources/reactions.js"></script>
+
+<script>
+
+testReflectAttribute(
+ 'src', 'src', '/media/movie_5.mp4',
+ '/media/sound_5.mp3', 'src on HTMLEmbedElement', 'embed',
+ HTMLEmbedElement
+);
+testReflectAttribute(
+ 'type', 'type', 'video/webm',
+ 'video/mp4', 'type on HTMLEmbedElement', 'embed',
+ HTMLEmbedElement
+);
+testReflectAttribute(
+ 'width', 'width', '100',
+ '120', 'width on HTMLEmbedElement', 'embed',
+ HTMLEmbedElement
+);
+testReflectAttribute(
+ 'height', 'height', '100',
+ '120', 'height on HTMLEmbedElement', 'embed',
+ HTMLEmbedElement
+);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLFieldSetElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLFieldSetElement.html
new file mode 100644
index 00000000000..4aea2780ba5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLFieldSetElement.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<title>Custom Elements: CEReactions on HTMLFieldSetElement interface</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<meta name="assert" content="disabled, name of
+ HTMLFieldSetElement interface must have CEReactions">
+<meta name="help" content="https://html.spec.whatwg.org/#the-fieldset-element">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/custom-elements-helpers.js"></script>
+<script src="./resources/reactions.js"></script>
+
+<body>
+<script>
+
+function getParentElement() {
+ let form = document.createElement("form");
+ document.body.appendChild(form);
+ return form;
+}
+
+testReflectBooleanAttributeWithParentNode(
+ 'disabled', 'disabled', 'disabled on HTMLFieldSetElement',
+ 'fieldset', getParentElement, HTMLFieldSetElement
+);
+testReflectAttributeWithParentNode(
+ 'name', 'name', 'fieldset1',
+ 'fieldset2', 'name on HTMLFieldSetElement', 'fieldset',
+ getParentElement, HTMLFieldSetElement
+);
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLImageElement.html b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLImageElement.html
new file mode 100644
index 00000000000..b483c366405
--- /dev/null
+++ b/tests/wpt/web-platform-tests/custom-elements/reactions/HTMLImageElement.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<title>Custom Elements: CEReactions on HTMLImageElement interface</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<meta name="assert" content="alt, src, srcset, sizes, crossOrigin, useMap,
+ isMap, width, height, referrerPolicy, decoding of
+ HTMLImageElement interface must have CEReactions">
+<meta name="help" content="https://html.spec.whatwg.org/#the-img-element">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/custom-elements-helpers.js"></script>
+<script src="./resources/reactions.js"></script>
+
+<map name="yellow"></map>
+<map name="green"></map>
+<a href="/" id="a">
+</a>
+<body>
+<script>
+
+function getParentElement() {
+ return document.body;
+}
+
+function setAttributes(instance) {
+ instance.setAttribute('src', '/images/green-1x1.png');
+}
+
+testReflectAttributeWithDependentAttributes(
+ 'alt', 'alt', 'image1',
+ 'image2', 'alt on HTMLImageElement', 'img',
+ getParentElement, instance => setAttributes(instance), HTMLImageElement
+);
+testReflectAttributeWithParentNode(
+ 'src', 'src', '/images/green-1x1.png',
+ '/images/green-2x2.png', 'src on HTMLImageElement', 'img',
+ getParentElement, HTMLImageElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'srcset', 'srcset', '/images/green.png',
+ '/images/green-2x2.png', 'srcset on HTMLImageElement', 'img',
+ getParentElement, instance => setAttributes(instance), HTMLImageElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'sizes', 'sizes', '(max-width: 32px) 28px',
+ '(max-width: 48px) 44px', 'sizes on HTMLImageElement', 'img',
+ getParentElement, instance => {
+ instance.setAttribute('src', '/images/green-1x1.png');
+ instance.setAttribute('srcset', '/images/green-2x2.png 1x');
+ }, HTMLImageElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'crossOrigin', 'crossorigin', 'use-credentials',
+ 'anonymous', 'crossOrigin on HTMLImageElement', 'img',
+ getParentElement, instance => setAttributes(instance), HTMLImageElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'useMap', 'usemap', '#yellow',
+ '#green', 'useMap on HTMLImageElement', 'img',
+ getParentElement, instance => setAttributes(instance), HTMLImageElement
+);
+testReflectBooleanAttributeWithDependentAttributes(
+ 'isMap', 'ismap', 'isMap on HTMLImageElement',
+ 'img', () => { return document.getElementById('a') },
+ instance => setAttributes(instance),
+ HTMLImageElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'width', 'width', '1',
+ '2', 'width on HTMLImageElement', 'img',
+ getParentElement, instance => setAttributes(instance), HTMLImageElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'height', 'height', '1',
+ '2', 'height on HTMLImageElement', 'img',
+ getParentElement, instance => setAttributes(instance), HTMLImageElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'referrerPolicy', 'referrerpolicy', 'same-origin',
+ 'origin', 'referrerPolicy on HTMLImageElement', 'img',
+ getParentElement, instance => setAttributes(instance), HTMLImageElement
+);
+testReflectAttributeWithDependentAttributes(
+ 'decoding', 'decoding', 'async',
+ 'sync', 'decoding on HTMLImageElement', 'img',
+ getParentElement, instance => setAttributes(instance), HTMLImageElement
+);
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/custom-elements/reactions/resources/reactions.js b/tests/wpt/web-platform-tests/custom-elements/reactions/resources/reactions.js
index 84d039bad9f..87510ceee16 100644
--- a/tests/wpt/web-platform-tests/custom-elements/reactions/resources/reactions.js
+++ b/tests/wpt/web-platform-tests/custom-elements/reactions/resources/reactions.js
@@ -168,6 +168,48 @@ function testReflectBooleanAttribute(jsAttributeName, contentAttributeName, name
testReflectAttributeWithContentValues(jsAttributeName, contentAttributeName, true, '', false, null, name, elementName, interfaceName);
}
+function testReflectAttributeWithContentValuesAndDependentAttributes(jsAttributeName, contentAttributeName, validValue1, contentValue1, validValue2, contentValue2, name, elementName, getParentElement, setAttributes, interfaceName) {
+ let parentElement = getParentElement();
+
+ test(() => {
+ let element = define_build_in_custom_element([contentAttributeName], interfaceName, elementName);
+ let instance = document.createElement(elementName, { is: element.name });
+
+ assert_array_equals(element.takeLog().types(), ['constructed']);
+ parentElement.appendChild(instance);
+ assert_array_equals(element.takeLog().types(), ['connected']);
+ setAttributes(instance);
+ instance[jsAttributeName] = validValue1;
+ let logEntries = element.takeLog();
+ assert_array_equals(logEntries.types(), ['attributeChanged']);
+ assert_attribute_log_entry(logEntries.last(), { name: contentAttributeName, oldValue: null, newValue: contentValue1, namespace: null });
+
+ }, name + ' must enqueue an attributeChanged reaction when adding a new attribute');
+
+ test(() => {
+ let element = define_build_in_custom_element([contentAttributeName], interfaceName, elementName);
+ let instance = document.createElement(elementName, { is: element.name });
+ parentElement.appendChild(instance);
+ setAttributes(instance);
+ instance[jsAttributeName] = validValue1;
+
+ assert_array_equals(element.takeLog().types(), ['constructed', 'connected', 'attributeChanged']);
+ instance[jsAttributeName] = validValue2;
+ let logEntries = element.takeLog();
+ assert_array_equals(logEntries.types(), ['attributeChanged']);
+ assert_attribute_log_entry(logEntries.last(), { name: contentAttributeName, oldValue: contentValue1, newValue: contentValue2, namespace: null });
+
+ }, name + ' must enqueue an attributeChanged reaction when replacing an existing attribute');
+}
+
+function testReflectAttributeWithDependentAttributes(jsAttributeName, contentAttributeName, validValue1, validValue2, name, elementName, getParentElement, setAttributes, interfaceName) {
+ testReflectAttributeWithContentValuesAndDependentAttributes(jsAttributeName, contentAttributeName, validValue1, validValue1, validValue2, validValue2, name, elementName, getParentElement, setAttributes, interfaceName);
+}
+
+function testReflectBooleanAttributeWithDependentAttributes(jsAttributeName, contentAttributeName, name, elementName, getParentElement, setAttributes, interfaceName) {
+ testReflectAttributeWithContentValuesAndDependentAttributes(jsAttributeName, contentAttributeName, true, '', false, null, name, elementName, getParentElement, setAttributes, interfaceName);
+}
+
function testReflectAttributeWithContentValuesAndParentNode(jsAttributeName, contentAttributeName, validValue1, contentValue1, validValue2, contentValue2, name, elementName, getParentElement, interfaceName) {
let parentElement = getParentElement();
@@ -203,6 +245,10 @@ function testReflectAttributeWithParentNode(jsAttributeName, contentAttributeNam
testReflectAttributeWithContentValuesAndParentNode(jsAttributeName, contentAttributeName, validValue1, validValue1, validValue2, validValue2, name, elementName, getParentElement, interfaceName);
}
+function testReflectBooleanAttributeWithParentNode(jsAttributeName, contentAttributeName, name, elementName, getParentElement, interfaceName) {
+ testReflectAttributeWithContentValuesAndParentNode(jsAttributeName, contentAttributeName, true, '', false, null, name, elementName, getParentElement, interfaceName);
+}
+
function testAttributeAdder(testFunction, name) {
test(function () {
var element = define_new_custom_element(['id']);
diff --git a/tests/wpt/web-platform-tests/docs/_running-tests/custom-runner.md b/tests/wpt/web-platform-tests/docs/_running-tests/custom-runner.md
new file mode 100644
index 00000000000..6e6c73f79b6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/docs/_running-tests/custom-runner.md
@@ -0,0 +1,25 @@
+---
+layout: page
+title: Writing Your Own Runner
+---
+
+Most test runners have two stages: finding all tests, followed by
+executing them (or a subset thereof).
+
+To find all tests in the repository, it is **strongly** recommended to
+use the included `wpt manifest` tool: the required behaviors are more
+complex than what are documented (especially when it comes to
+precedence of the various possibilities and some undocumented legacy
+ways to define test types), and hence its behavior should be
+considered the canonical definition of how to enumerate tests and find
+their type in the repository.
+
+For test execution, please read the documentation for the various test types
+very carefully and then check your understanding on
+the [mailing list][public-test-infra] or [IRC][] ([webclient][web irc], join
+channel `#testing`). It's possible edge-case behavior isn't properly
+documented!
+
+[public-test-infra]: https://lists.w3.org/Archives/Public/public-test-infra/
+[IRC]: irc://irc.w3.org:6667/testing
+[web irc]: http://irc.w3.org
diff --git a/tests/wpt/web-platform-tests/docs/_running-tests/from-local-system.md b/tests/wpt/web-platform-tests/docs/_running-tests/from-local-system.md
new file mode 100644
index 00000000000..1ee09ca59e7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/docs/_running-tests/from-local-system.md
@@ -0,0 +1,114 @@
+---
+layout: page
+title: Running Tests from the Local System
+---
+
+The tests are designed to be run from your local computer.
+
+## System Setup
+
+The test environment requires [Python 2.7+](http://www.python.org/downloads)
+(but not Python 3.x).
+
+On Windows, be sure to add the Python directory (`c:\python2x`, by default) to
+your `%Path%` [Environment Variable](http://www.computerhope.com/issues/ch000549.htm),
+and read the [Windows Notes](#windows-notes) section below.
+
+To get the tests running, you need to set up the test domains in your
+[`hosts` file](http://en.wikipedia.org/wiki/Hosts_%28file%29%23Location_in_the_file_system).
+
+The necessary content can be generated with `./wpt make-hosts-file`; on
+Windows, you will need to preceed the prior command with `python` or
+the path to the Python binary (`python wpt make-hosts-file`).
+
+For example, on most UNIX-like systems, you can setup the hosts file with:
+
+```bash
+./wpt make-hosts-file | sudo tee -a /etc/hosts
+```
+
+And on Windows (this must be run in a PowerShell session with Administrator privileges):
+
+```bash
+python wpt make-hosts-file | Out-File %SystemRoot%\System32\drivers\etc\hosts -Encoding ascii -Append
+```
+
+If you are behind a proxy, you also need to make sure the domains above are
+excluded from your proxy lookups.
+
+### Windows Notes
+
+Generally Windows Subsystem for Linux will provide the smoothest user
+experience for running web-platform-tests on Windows.
+
+The standard Windows shell requires that all `wpt` commands are prefixed
+by the Python binary i.e. assuming `python` is on your path the server is
+started using:
+
+`python wpt serve`
+
+## Via the browser
+
+The test environment can then be started using
+
+ ./wpt serve
+
+This will start HTTP servers on two ports and a websockets server on
+one port. By default the web servers start on ports 8000 and 8443 and the other
+ports are randomly-chosen free ports. Tests must be loaded from the
+*first* HTTP server in the output. To change the ports,
+create a `config.json` file in the wpt root directory, and add
+port definitions of your choice e.g.:
+
+```
+{
+ "ports": {
+ "http": [1234, "auto"],
+ "https":[5678]
+ }
+}
+```
+
+After your `hosts` file is configured, the servers will be locally accessible at:
+
+http://web-platform.test:8000/<br>
+https://web-platform.test:8443/ *
+
+This server has all the capabilities of the publicly-deployed version--see
+[Running the Tests from the Web][from-web].
+
+\**See [Trusting Root CA](https://github.com/web-platform-tests/wpt/blob/master/README.md#trusting-root-ca)*
+
+## Via the command line
+
+Many tests can be automatically executed in a new browser instance using
+
+ ./wpt run [browsername] [tests]
+
+This will automatically load the tests in the chosen browser and extract the
+test results. For example to run the `dom/historical.html` tests in a local
+copy of Chrome:
+
+ ./wpt run chrome dom/historical.html
+
+Or to run in a specified copy of Firefox:
+
+ ./wpt run --binary ~/local/firefox/firefox firefox dom/historical.html
+
+For details on the supported products and a large number of other options for
+customising the test run:
+
+ ./wpt run --help
+
+Additional browser-specific documentation:
+
+ * [Chrome][chrome]
+
+ * [Chrome for Android][chrome android]
+
+ * [Safari][safari]
+
+[from-web]: {{ site.baseurl }}{% link _running-tests/from-web.md %}
+[chrome]: {{ site.baseurl }}{% link _running-tests/chrome.md %}
+[chrome android]: {{ site.baseurl }}{% link _running-tests/chrome_android.md %}
+[safari]: {{ site.baseurl }}{% link _running-tests/safari.md %}
diff --git a/tests/wpt/web-platform-tests/docs/_running-tests/from-web.md b/tests/wpt/web-platform-tests/docs/_running-tests/from-web.md
new file mode 100644
index 00000000000..686f4e3b66b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/docs/_running-tests/from-web.md
@@ -0,0 +1,26 @@
+---
+layout: page
+title: Running Tests from the Web
+---
+
+Tests that have been merged on GitHub are mirrored at [http://w3c-test.org/][w3c-test].
+[On properly-configured systems](from-local-system), local files may also be
+served from the URL [http://web-platform.test](http://web-platform.test).
+
+For running multiple tests inside a browser, there is a test runner
+located at `/tools/runner/index.html`.
+
+This allows all the tests, or those matching a specific prefix
+(e.g. all tests under `/dom/`) to be run. For testharness.js tests,
+the results will be automatically collected, while the runner
+provides a simple UI for manually comparing reftest rendering and
+running manual tests.
+
+Note, however, it does not currently handle more complex reftests with
+more than one reference involved.
+
+Because it runs entirely in-browser, this runner cannot deal with
+edge-cases like tests that cause the browser to crash or hang.
+
+[w3c-test]: http://w3c-test.org
+[from-local-system]: {{ site.baseurl }}{% link _running-tests/from-local-system.md %}
diff --git a/tests/wpt/web-platform-tests/docs/_running-tests/index.md b/tests/wpt/web-platform-tests/docs/_running-tests/index.md
index 48d7f8dad77..f34c06d6fba 100644
--- a/tests/wpt/web-platform-tests/docs/_running-tests/index.md
+++ b/tests/wpt/web-platform-tests/docs/_running-tests/index.md
@@ -2,79 +2,17 @@
layout: page
title: Running Tests
---
-In simple cases individual tests can be run by simply loading the page
-in a browser window. For running larger groups of tests, or running
-tests frequently, this is not a practical approach and several better
-options exist.
-## From the Command Line
+The simplest way to run the tests is via the public website. More detail on
+that approach is available in [Running tests from the Web][from-web].
-The simplest way to run tests is to use the `wpt run` command from the
-root of the repository. This will automatically load the tests in the
-chosen browser, and extract the test results. For example to run the
-`dom/historical.html` tests in a local copy of Chrome:
+Contributors who are interested in modifying and creating tests should refer to
+[Running Tests from the Local System][from-local-system].
- ./wpt run chrome dom/historical.html
+Advanced use cases may call for a customized method of executing the tests.
+Guidelines for writing a custom "runner" are available at [Writing Your Own
+Runner][custom-runner].
-Or to run in a specified copy of Firefox:
-
- ./wpt run --binary ~/local/firefox/firefox firefox dom/historical.html
-
-For details on the supported products and a large number of other options for
-customising the test run:
-
- ./wpt run --help
-
-Additional browser-specific documentation:
-
- * [Chrome][chrome]
-
- * [Chrome for Android][chrome android]
-
- * [Safari][safari]
-
-## From Inside a Browser
-Tests that have been merged on GitHub are mirrored at [http://w3c-test.org/][w3c-test].
-
-For running multiple tests inside a browser, there is a test runner
-located at `/tools/runner/index.html`.
-
-This allows all the tests, or those matching a specific prefix
-(e.g. all tests under `/dom/`) to be run. For testharness.js tests,
-the results will be automatically collected, while the runner
-provides a simple UI for manually comparing reftest rendering and
-running manual tests.
-
-Note, however, it does not currently handle more complex reftests with
-more than one reference involved.
-
-Because it runs entirely in-browser, this runner cannot deal with
-edge-cases like tests that cause the browser to crash or hang.
-
-## Writing Your Own Runner
-
-Most test runners have two stages: finding all tests, followed by
-executing them (or a subset thereof).
-
-To find all tests in the repository, it is **strongly** recommended to
-use the included `wpt manifest` tool: the required behaviors are more
-complex than what are documented (especially when it comes to
-precedence of the various possibilities and some undocumented legacy
-ways to define test types), and hence its behavior should be
-considered the canonical definition of how to enumerate tests and find
-their type in the repository.
-
-For test execution, please read the documentation for the various test types
-very carefully and then check your understanding on
-the [mailing list][public-test-infra] or [IRC][] ([webclient][web irc], join
-channel `#testing`). It's possible edge-case behavior isn't properly
-documented!
-
-
-[chrome]: {{ site.baseurl }}{% link _running-tests/chrome.md %}
-[chrome android]: {{ site.baseurl }}{% link _running-tests/chrome_android.md %}
-[safari]: {{ site.baseurl }}{% link _running-tests/safari.md %}
-[public-test-infra]: https://lists.w3.org/Archives/Public/public-test-infra/
-[IRC]: irc://irc.w3.org:6667/testing
-[web irc]: http://irc.w3.org
-[w3c-test]: http://w3c-test.org
+[custom-runner]: {{ site.baseurl }}{% link _running-tests/custom-runner.md %}
+[from-web]: {{ site.baseurl }}{% link _running-tests/from-web.md %}
+[from-local-system]: {{ site.baseurl }}{% link _running-tests/from-local-system.md %}
diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/h2tests.md b/tests/wpt/web-platform-tests/docs/_writing-tests/h2tests.md
index 0d19f7de19c..3e5a9918c4d 100644
--- a/tests/wpt/web-platform-tests/docs/_writing-tests/h2tests.md
+++ b/tests/wpt/web-platform-tests/docs/_writing-tests/h2tests.md
@@ -1,4 +1,9 @@
-# Writing H2 Tests
+---
+layout: page
+title: Writing H2 Tests
+order: 2
+---
+
> <b>Important:</b> The HTTP/2.0 server requires you to have Python 2.7.10+
and OpenSSL 1.0.2+. This is because HTTP/2.0 is negotiated using the
[TLS ALPN](https://tools.ietf.org/html/rfc7301) extension, which is only supported in [OpenSSL 1.0.2](https://www.openssl.org/news/openssl-1.0.2-notes.html) and up.
diff --git a/tests/wpt/web-platform-tests/docs/introduction.md b/tests/wpt/web-platform-tests/docs/introduction.md
index 191e76d3997..28d8f3ea365 100644
--- a/tests/wpt/web-platform-tests/docs/introduction.md
+++ b/tests/wpt/web-platform-tests/docs/introduction.md
@@ -96,92 +96,6 @@ recursively: `a/META.yml` will get notified for `a/foo.html` and
If you want to be notified about changes to tests in a directory, feel
free to add yourself to the META.yml file!
-
-## Local Setup
-
-The tests are designed to be run from your local computer. The test
-environment requires [Python 2.7+](http://www.python.org/downloads) (but not Python 3.x).
-
-On Windows, be sure to add the Python directory (`c:\python2x`, by default) to
-your `%Path%` [Environment Variable](http://www.computerhope.com/issues/ch000549.htm),
-and read the [Windows Notes](#windows-notes) section below.
-
-To get the tests running, you need to set up the test domains in your
-[`hosts` file](http://en.wikipedia.org/wiki/Hosts_%28file%29%23Location_in_the_file_system).
-
-The necessary content can be generated with `./wpt make-hosts-file`; on
-Windows, you will need to preceed the prior command with `python` or
-the path to the Python binary (`python wpt make-hosts-file`).
-
-For example, on most UNIX-like systems, you can setup the hosts file with:
-
-```bash
-./wpt make-hosts-file | sudo tee -a /etc/hosts
-```
-
-And on Windows (this must be run in a PowerShell session with Administrator privileges):
-
-```bash
-python wpt make-hosts-file | Out-File %SystemRoot%\System32\drivers\etc\hosts -Encoding ascii -Append
-```
-
-If you are behind a proxy, you also need to make sure the domains above are
-excluded from your proxy lookups.
-
-The test environment can then be started using
-
- ./wpt serve
-
-This will start HTTP servers on two ports and a websockets server on
-one port. By default the web servers start on ports 8000 and 8443 and the other
-ports are randomly-chosen free ports. Tests must be loaded from the
-*first* HTTP server in the output. To change the ports,
-create a `config.json` file in the wpt root directory, and add
-port definitions of your choice e.g.:
-
-```
-{
- "ports": {
- "http": [1234, "auto"],
- "https":[5678]
- }
-}
-```
-
-After your `hosts` file is configured, the servers will be locally accessible at:
-
-http://web-platform.test:8000/<br>
-https://web-platform.test:8443/ *
-
-\**See [Trusting Root CA](https://github.com/web-platform-tests/wpt/blob/master/README.md#trusting-root-ca)*
-
-## Running tests automatically
-
-The `wpt run` command provides a frontend for running tests automatically
-in various browsers. The general syntax is:
-
-```
-wpt run [options] <product> [test paths]
-```
-
-e.g. to run `dom/historical.html` in Firefox, the required command is:
-
-```
-wpt run firefox dom/historical.html
-```
-
-### Windows Notes
-
-Generally Windows Subsystem for Linux will provide the smoothest user
-experience for running web-platform-tests on Windows.
-
-The standard Windows shell requires that all `wpt` commands are prefixed
-by the Python binary i.e. assuming `python` is on your path the server is
-started using:
-
-`python wpt serve`
-
-
[web-platform]: https://platform.html5.org
[test262]: https://github.com/tc39/test262
[webgl]: https://github.com/KhronosGroup/WebGL
diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/focus.window.js b/tests/wpt/web-platform-tests/html/browsers/the-window-object/focus.window.js
new file mode 100644
index 00000000000..6ec7feee281
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/focus.window.js
@@ -0,0 +1,15 @@
+async_test(t => {
+ const input = document.body.appendChild(document.createElement("input"));
+ input.onfocus = t.step_func(() => {
+ const frame = document.body.appendChild(document.createElement("iframe")),
+ frameW = frame.contentWindow;
+ frameW.onfocus = t.unreached_func();
+ frame.remove();
+ frameW.focus();
+ t.step_timeout(() => {
+ assert_equals(document.activeElement, input);
+ t.done();
+ }, 100);
+ });
+ input.focus();
+});
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/embedded-opener-remove-frame.html b/tests/wpt/web-platform-tests/html/browsers/windows/embedded-opener-remove-frame.html
new file mode 100644
index 00000000000..9bce93f0888
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/windows/embedded-opener-remove-frame.html
@@ -0,0 +1,46 @@
+<!doctype html>
+<title>opener and "removed" embedded documents</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<iframe name=matchesastring></iframe>
+<script>
+async_test(t => {
+ const frame = document.querySelector("iframe"),
+ frameW = frame.contentWindow;
+ frame.onload = t.step_func(() => {
+ // Firefox and Chrome/Safari load differently
+ if (frame.contentWindow.location.href === "about:blank") {
+ return;
+ }
+
+ // Test bits
+ assert_equals(frameW.opener, window, "opener before removal");
+
+ const openerDesc = Object.getOwnPropertyDescriptor(frameW, "opener"),
+ openerGet = openerDesc.get;
+
+ assert_equals(openerGet(), window, "opener before removal via directly invoking the getter");
+ frame.remove();
+ assert_equals(frameW.opener, null, "opener after removal");
+ assert_equals(openerGet(), null, "opener after removal via directly invoking the getter");
+
+ frameW.opener = null;
+ assert_equals(openerGet(), null, "opener after setting it null via directly invoking the getter");
+ const openerDescNull = Object.getOwnPropertyDescriptor(frameW, "opener");
+ assert_not_equals(openerDescNull, openerDesc);
+ assert_object_equals(openerDescNull, openerDesc);
+
+ frameW.opener = "immaterial";
+ assert_equals(openerGet(), null, "opener after setting it \"immaterial\" via directly invoking the getter");
+ const openerDescImmaterial = Object.getOwnPropertyDescriptor(frameW, "opener");
+ assert_equals(openerDescImmaterial.value, "immaterial");
+ assert_true(openerDescImmaterial.writable);
+ assert_true(openerDescImmaterial.enumerable);
+ assert_true(openerDescImmaterial.configurable);
+
+ t.done();
+ });
+ window.open("/common/blank.html", "matchesastring");
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/mathml/META.yml b/tests/wpt/web-platform-tests/mathml/META.yml
index a410f582f0a..5aea9088d74 100644
--- a/tests/wpt/web-platform-tests/mathml/META.yml
+++ b/tests/wpt/web-platform-tests/mathml/META.yml
@@ -1,3 +1,3 @@
-spec: http://www.mathml-association.org/MathMLinHTML5/
+spec: https://mathml-refresh.github.io/mathml-core/
suggested_reviewers:
- fred-wang
diff --git a/tests/wpt/web-platform-tests/mathml/README.md b/tests/wpt/web-platform-tests/mathml/README.md
index bab35474dd5..175c1813dee 100644
--- a/tests/wpt/web-platform-tests/mathml/README.md
+++ b/tests/wpt/web-platform-tests/mathml/README.md
@@ -1,13 +1,7 @@
-# MathML: Tests for the MathML in HTML5 implementation note
+# MathML: Tests for the MathML Core specification
This directory contains tests for the
-[MathML in HTML5 implementation note](http://www.mathml-association.org/MathMLinHTML5/)
-which is itself based on the
-[HTML5 W3C recommendation](https://www.w3.org/TR/html5/),
-on the [MathML3 W3C recommendation](https://www.w3.org/TR/MathML3/)
-and on the
-[Open Font Format 3](http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=66391) standard.
-
+[MathML Core specification](https://mathml-refresh.github.io/mathml-core/).
Many of the tests verify OpenType features and require specific Web fonts for
that purpose. WOFF fonts are generated by scripts in the `tools/` folder using
the Python API of
diff --git a/tests/wpt/web-platform-tests/network-error-logging/support/nel.sub.js b/tests/wpt/web-platform-tests/network-error-logging/support/nel.sub.js
index 16aebd54a97..8fa83505320 100644
--- a/tests/wpt/web-platform-tests/network-error-logging/support/nel.sub.js
+++ b/tests/wpt/web-platform-tests/network-error-logging/support/nel.sub.js
@@ -55,7 +55,7 @@ function _getNELResourceURL(subdomain, suffix) {
*/
function getURLForResourceWithBasicPolicy(subdomain) {
- return _getNELResourceURL(subdomain, "pass.png?id="+reportID);
+ return _getNELResourceURL(subdomain, "pass.png?id="+reportID+"&success_fraction=1.0");
}
function fetchResourceWithBasicPolicy(subdomain) {
@@ -63,6 +63,11 @@ function fetchResourceWithBasicPolicy(subdomain) {
return fetch(url, {mode: "no-cors"});
}
+function fetchResourceWithZeroSuccessFractionPolicy(subdomain) {
+ const url = _getNELResourceURL(subdomain, "pass.png?id="+reportID+"&success_fraction=0.0");
+ return fetch(url, {mode: "no-cors"});
+}
+
/*
* Fetches a resource whose headers define an include_subdomains NEL policy.
*/
diff --git a/tests/wpt/web-platform-tests/network-error-logging/support/pass.png.sub.headers b/tests/wpt/web-platform-tests/network-error-logging/support/pass.png.sub.headers
index 70796e913ac..15d246d8d9d 100644
--- a/tests/wpt/web-platform-tests/network-error-logging/support/pass.png.sub.headers
+++ b/tests/wpt/web-platform-tests/network-error-logging/support/pass.png.sub.headers
@@ -3,4 +3,4 @@ Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0, false
Pragma: no-cache
Report-To: { "group": "nel-group", "max_age": 10886400, "endpoints": [{ "url": "https://{{hosts[][www]}}:{{ports[https][0]}}/network-error-logging/support/report.py?op=put&reportID={{GET[id]}}" }] }
-NEL: {"report_to": "nel-group", "max_age": 10886400, "success_fraction": 1.0}
+NEL: {"report_to": "nel-group", "max_age": 10886400, "success_fraction": {{GET[success_fraction]}}}
diff --git a/tests/wpt/web-platform-tests/orientation-event/devicemotionevent-init.html b/tests/wpt/web-platform-tests/orientation-event/devicemotionevent-init.https.html
index 90563d8bbae..90563d8bbae 100644
--- a/tests/wpt/web-platform-tests/orientation-event/devicemotionevent-init.html
+++ b/tests/wpt/web-platform-tests/orientation-event/devicemotionevent-init.https.html
diff --git a/tests/wpt/web-platform-tests/orientation-event/deviceorientationabsoluteevent.html b/tests/wpt/web-platform-tests/orientation-event/deviceorientationabsoluteevent.https.html
index 8ccf671cb3b..8ccf671cb3b 100644
--- a/tests/wpt/web-platform-tests/orientation-event/deviceorientationabsoluteevent.html
+++ b/tests/wpt/web-platform-tests/orientation-event/deviceorientationabsoluteevent.https.html
diff --git a/tests/wpt/web-platform-tests/orientation-event/deviceorientationevent-init.html b/tests/wpt/web-platform-tests/orientation-event/deviceorientationevent-init.https.html
index b6485f696b4..b6485f696b4 100644
--- a/tests/wpt/web-platform-tests/orientation-event/deviceorientationevent-init.html
+++ b/tests/wpt/web-platform-tests/orientation-event/deviceorientationevent-init.https.html
diff --git a/tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.html b/tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.https.html
index 73ce97ab5c1..73ce97ab5c1 100644
--- a/tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.html
+++ b/tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.https.html
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error-downgraded.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error-downgraded.tentative.html
new file mode 100644
index 00000000000..845b7e01ff2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error-downgraded.tentative.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.failed downgraded from sxg.cert_fetch_error for navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin + '/signed-exchange/resources/sxg/sxg-cert-not-found.sxg?navigation';
+ const cert_url = test_origin + '/signed-exchange/resources/not_found_certfile.cbor';
+ const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
+ assert_equals(message.location,
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html');
+ assert_true(message.is_fallback);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is different from the reporting
+ // origin. So the report must be downgraded.
+ type: "sxg.failed",
+ elapsed_time: 0,
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.failed downgraded from sxg.cert_fetch_error for' +
+ ' navigation.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error.tentative.html
new file mode 100644
index 00000000000..476af828e63
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error.tentative.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.cert_fetch_error for navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-cert-not-found-on-alt-origin.sxg?navigation';
+ const cert_url =
+ alt_origin + '/signed-exchange/resources/not_found_certfile.cbor';
+ const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
+ assert_equals(message.location,
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html');
+ assert_true(message.is_fallback);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is same as the reporting origin. So
+ // the report must not be downgraded.
+ type: "sxg.cert_fetch_error",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: cert_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "http.error",
+ status_code: 404,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.cert_fetch_error for navigation.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error-downgraded.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error-downgraded.tentative.html
new file mode 100644
index 00000000000..d962b884e53
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error-downgraded.tentative.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.failed downgraded from sxg.cert_parse_error for navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-invalid-cert-format.sxg?navigation';
+ const cert_url =
+ test_origin + '/signed-exchange/resources/invalid-cert-format.cbor';
+ const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
+ assert_equals(message.location,
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html');
+ assert_true(message.is_fallback);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is different from the reporting
+ // origin. So the report must be downgraded.
+ type: "sxg.failed",
+ elapsed_time: 0,
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.failed downgraded from sxg.cert_parse_error for navigation.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error.tentative.html
new file mode 100644
index 00000000000..11dc4141b8a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error.tentative.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.cert_parse_error for navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-invalid-cert-format-on-alt-origin.sxg?navigation';
+ const cert_url =
+ alt_origin + '/signed-exchange/resources/invalid-cert-format.cbor';
+ const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
+ assert_equals(message.location,
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html');
+ assert_true(message.is_fallback);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is same as the reporting origin. So
+ // the report must not be downgraded.
+ type: "sxg.cert_parse_error",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: cert_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.cert_parse_error for navigation.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error-downgraded.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error-downgraded.tentative.html
new file mode 100644
index 00000000000..a1358e75300
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error-downgraded.tentative.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.failed downgraded from sxg.cert_verification_error for navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-validity-period-too-long.sxg?navigation';
+ const cert_url = test_origin + '/signed-exchange/resources/127.0.0.1.sxg.pem.cbor';
+ const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
+ assert_equals(message.location,
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html', 'location');
+ assert_true(message.is_fallback, 'is_fallback');
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is different from the reporting
+ // origin. So the report must be downgraded.
+ type: "sxg.failed",
+ elapsed_time: 0,
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.failed downgraded from ' +
+ 'sxg.cert_verification_error for navigation.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error.tentative.html
new file mode 100644
index 00000000000..81520f9df98
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error.tentative.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.cert_verification_error for navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-validity-period-too-long-cert-on-alt-origin.sxg?navigation';
+ const cert_url = alt_origin + '/signed-exchange/resources/127.0.0.1.sxg.pem.cbor';
+ const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
+ assert_equals(message.location,
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html');
+ assert_true(message.is_fallback);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ type: "sxg.cert_verification_error",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.cert_verification_error for navigation.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-failed-zero-success-fraction.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-failed-zero-success-fraction.tentative.html
new file mode 100644
index 00000000000..c0e06c8a197
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-failed-zero-success-fraction.tentative.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.failed for navigation (zero success fraction)</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithZeroSuccessFractionPolicy();
+ const sxg_url =
+ alt_origin + '/signed-exchange/resources/sxg/sxg-cert-not-found.sxg?navigation';
+ const cert_url = test_origin + '/signed-exchange/resources/not_found_certfile.cbor';
+ const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
+ assert_equals(message.location,
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html');
+ assert_true(message.is_fallback);
+ assert_true(await reportExists(
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is different from the reporting
+ // origin. So the report must be downgraded.
+ type: "sxg.failed",
+ elapsed_time: 0,
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: cert_url
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ }
+ ), 'SXG error reporting must be downgraded when the cert URL is different ' +
+ 'from the reporting origin');
+ assert_false(await reportExists(
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ }
+ ), 'Succeeded normal NEL report should not be sent when success fraction ' +
+ 'is zero.');
+}, 'SXG error report must be downgraded when the cert URL is different from ' +
+ 'the reporting origin. And succeeded normal NEL report should not be sent ' +
+ ' when success fraction is zero.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-invalid_integrity_header.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-invalid_integrity_header.tentative.html
new file mode 100644
index 00000000000..aaad0c84b7b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-invalid_integrity_header.tentative.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.invalid_integrity_header for navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-invalid-integrity-header.sxg?navigation';
+ const cert_url = test_origin + '/signed-exchange/resources/127.0.0.1.sxg.pem.cbor';
+ const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
+ assert_equals(message.location,
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html');
+ assert_true(message.is_fallback);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ type: "sxg.invalid_integrity_header",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.invalid_integrity_header for navigation.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-mi_error.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-mi_error.tentative.html
new file mode 100644
index 00000000000..40d1ae01fc4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-mi_error.tentative.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.mi_error for navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-merkle-integrity-error.sxg?navigation';
+ const cert_url = test_origin + '/signed-exchange/resources/127.0.0.1.sxg.pem.cbor';
+ try {
+ const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
+ if (message.is_fallback) {
+ assert_unreached('Fallback redirect should not have happened');
+ } else {
+ assert_unreached('SXG should not have loaded');
+ }
+ } catch (e) {
+ assert_equals(e, 'timeout');
+ }
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ type: "sxg.mi_error",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ }
+ ]));
+}, 'SXG reporting test of sxg.mi_error for navigation.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-parse_error.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-parse_error.tentative.html
new file mode 100644
index 00000000000..aaaa3872511
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-parse_error.tentative.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.parse_error for navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-invalid-format.sxg?navigation';
+ try {
+ const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
+ if (message.is_fallback) {
+ assert_unreached('Fallback redirect should not have happened');
+ } else {
+ assert_unreached('SXG should not have loaded');
+ }
+ } catch (e) {
+ assert_equals(e, 'timeout');
+ }
+
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ type: "sxg.parse_error",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ cert_url: []
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.parse_error for navigation.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error-downgraded.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error-downgraded.tentative.html
new file mode 100644
index 00000000000..87bbc369f24
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error-downgraded.tentative.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.failed downgraded from sxg.signature_verification_error for navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-invalid-cert-sha256.sxg?navigation';
+ const cert_url = test_origin + '/signed-exchange/resources/127.0.0.1.sxg.pem.cbor';
+ const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
+ assert_equals(message.location,
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html');
+ assert_true(message.is_fallback);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is different from the reporting
+ // origin. So the report must be downgraded.
+ type: "sxg.failed",
+ elapsed_time: 0,
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.failed downgraded from ' +
+ 'sxg.signature_verification_error for navigation.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error.tentative.html
new file mode 100644
index 00000000000..f57fd4d5967
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error.tentative.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.signature_verification_error for navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-invalid-cert-sha256-cert-on-alt-origin.sxg?navigation';
+ const cert_url = alt_origin + '/signed-exchange/resources/127.0.0.1.sxg.pem.cbor';
+ const message = await openSXGInIframeAndWaitForMessage(t, sxg_url);
+ assert_equals(message.location,
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html');
+ assert_true(message.is_fallback);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ type: "sxg.signature_verification_error",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.signature_verification_error for navigation.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error-downgraded.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error-downgraded.tentative.html
new file mode 100644
index 00000000000..f663f35ce76
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error-downgraded.tentative.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.failed downgraded from sxg.cert_fetch_error for prefetch</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin + '/signed-exchange/resources/sxg/sxg-cert-not-found.sxg?prefetch';
+ const cert_url =
+ test_origin + '/signed-exchange/resources/not_found_certfile.cbor';
+ addPrefetch(sxg_url);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is different from the reporting
+ // origin. So the report must be downgraded.
+ type: "sxg.failed",
+ elapsed_time: 0,
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.failed downgraded from ' +
+ 'sxg.cert_fetch_error for prefetch.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error.tentative.html
new file mode 100644
index 00000000000..c17fc5c0298
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error.tentative.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.cert_fetch_error for prefetch</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-cert-not-found-on-alt-origin.sxg?prefetch';
+ const cert_url =
+ alt_origin + '/signed-exchange/resources/not_found_certfile.cbor';
+ addPrefetch(sxg_url);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is same as the reporting origin. So
+ // the report must not be downgraded.
+ type: "sxg.cert_fetch_error",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: cert_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "http.error",
+ status_code: 404,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.cert_fetch_error for prefetch.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error-downgraded.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error-downgraded.tentative.html
new file mode 100644
index 00000000000..f1a5eb17f62
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error-downgraded.tentative.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.failed downgraded from sxg.cert_parse_error for prefetch</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-invalid-cert-format.sxg?prefetch';
+ const cert_url =
+ test_origin + '/signed-exchange/resources/invalid-cert-format.cbor';
+ addPrefetch(sxg_url);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is different from the reporting
+ // origin. So the report must be downgraded.
+ type: "sxg.failed",
+ elapsed_time: 0,
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.failed downgraded from sxg.cert_parse_error for' +
+ ' prefetch.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error.tentative.html
new file mode 100644
index 00000000000..00f41c0861c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error.tentative.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.cert_parse_error for prefetch</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-invalid-cert-format-on-alt-origin.sxg?prefetch';
+ const cert_url =
+ alt_origin + '/signed-exchange/resources/invalid-cert-format.cbor';
+ addPrefetch(sxg_url);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is same as the reporting origin. So
+ // the report must not be downgraded.
+ type: "sxg.cert_parse_error",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: cert_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.cert_parse_error for prefetch.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error-downgraded.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error-downgraded.tentative.html
new file mode 100644
index 00000000000..4836dc1b946
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error-downgraded.tentative.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.failed downgraded from sxg.cert_verification_error for prefetch</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-validity-period-too-long.sxg?prefetch';
+ const cert_url = test_origin + '/signed-exchange/resources/127.0.0.1.sxg.pem.cbor';
+ addPrefetch(sxg_url);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is different from the reporting
+ // origin. So the report must be downgraded.
+ type: "sxg.failed",
+ elapsed_time: 0,
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.failed downgraded from ' +
+ 'sxg.cert_verification_error for prefetch.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error.tentative.html
new file mode 100644
index 00000000000..441a17af105
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error.tentative.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.cert_verification_error for prefetch</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-validity-period-too-long-cert-on-alt-origin.sxg?prefetch';
+ const cert_url = alt_origin + '/signed-exchange/resources/127.0.0.1.sxg.pem.cbor';
+ addPrefetch(sxg_url);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ type: "sxg.cert_verification_error",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.cert_verification_error for prefetch.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-failed-zero-success-feaction.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-failed-zero-success-feaction.tentative.html
new file mode 100644
index 00000000000..b0f7103053b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-failed-zero-success-feaction.tentative.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.failed for prefetch (zero success fraction)</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithZeroSuccessFractionPolicy();
+ const sxg_url =
+ alt_origin + '/signed-exchange/resources/sxg/sxg-cert-not-found.sxg?prefetch';
+ const cert_url =
+ test_origin + '/signed-exchange/resources/not_found_certfile.cbor';
+ addPrefetch(sxg_url);
+ assert_true(await reportExists(
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is different from the reporting
+ // origin. So the report must be downgraded.
+ type: "sxg.failed",
+ elapsed_time: 0,
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ), 'SXG error reporting must be downgraded when the cert URL is different ' +
+ 'from the reporting origin');
+ assert_false(await reportExists(
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ }
+ ), 'Succeeded normal NEL report should not be sent when success fraction ' +
+ 'is zero.');
+}, 'SXG error report must be downgraded when the cert URL is different from ' +
+ 'the reporting origin. And succeeded normal NEL report should not be sent ' +
+ ' when success fraction is zero.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-invalid_integrity_header.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-invalid_integrity_header.tentative.html
new file mode 100644
index 00000000000..1fd431c1a0b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-invalid_integrity_header.tentative.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.invalid_integrity_header for prefetch</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-invalid-integrity-header.sxg?prefetch';
+ const cert_url = test_origin + '/signed-exchange/resources/127.0.0.1.sxg.pem.cbor';
+ addPrefetch(sxg_url);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ type: "sxg.invalid_integrity_header",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.invalid_integrity_header for prefetch.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-mi_error.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-mi_error.tentative.html
new file mode 100644
index 00000000000..2bbf0e8f258
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-mi_error.tentative.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.mi_error for prefetch</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-merkle-integrity-error.sxg?prefetch';
+ const cert_url = test_origin + '/signed-exchange/resources/127.0.0.1.sxg.pem.cbor';
+ addPrefetch(sxg_url);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ type: "sxg.mi_error",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ }
+ ]));
+}, 'SXG reporting test of sxg.mi_error for prefetch.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-parse_error.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-parse_error.tentative.html
new file mode 100644
index 00000000000..171baf1b4a9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-parse_error.tentative.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.parse_error for prefetch</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-invalid-format.sxg?prefetch';
+ addPrefetch(sxg_url);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ type: "sxg.parse_error",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ cert_url: []
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.parse_error for prefetch.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error-downgraded.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error-downgraded.tentative.html
new file mode 100644
index 00000000000..7340b75e35e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error-downgraded.tentative.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.failed downgraded from sxg.signature_verification_error for prefetch</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const test_origin = get_host_info().HTTPS_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-invalid-cert-sha256.sxg?prefetch';
+ const cert_url = test_origin + '/signed-exchange/resources/127.0.0.1.sxg.pem.cbor';
+ addPrefetch(sxg_url);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ // The origin of this SXG's certURL is different from the reporting
+ // origin. So the report must be downgraded.
+ type: "sxg.failed",
+ elapsed_time: 0,
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.failed downgraded from ' +
+ 'sxg.signature_verification_error for prefetch.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error.tentative.html
new file mode 100644
index 00000000000..d552c4a8c33
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error.tentative.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<title>SXG reporting test of sxg.signature_verification_error for prefetch</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/network-error-logging/support/nel.sub.js"></script>
+<script src="../resources/sxg-util.js"></script>
+<body>
+<script>
+const alt_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+
+nel_test(async t => {
+ await fetchResourceWithBasicPolicy();
+ const sxg_url =
+ alt_origin +
+ '/signed-exchange/resources/sxg/sxg-invalid-cert-sha256-cert-on-alt-origin.sxg?prefetch';
+ const cert_url = alt_origin + '/signed-exchange/resources/127.0.0.1.sxg.pem.cbor';
+ addPrefetch(sxg_url);
+ assert_true(await reportsExist([
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "sxg",
+ type: "sxg.signature_verification_error",
+ status_code: 200,
+ referrer: location.href,
+ sxg: {
+ outer_url: sxg_url,
+ inner_url:
+ innerURLOrigin() + '/signed-exchange/resources/inner-url.html',
+ cert_url: [cert_url]
+ }
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ {
+ url: sxg_url,
+ user_agent: navigator.userAgent,
+ type: "network-error",
+ body: {
+ phase: "application",
+ type: "ok",
+ status_code: 200,
+ referrer: location.href,
+ },
+ metadata: {
+ content_type: "application/reports+json",
+ },
+ },
+ ]));
+}, 'SXG reporting test of sxg.signature_verification_error for prefetch.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/generate-test-sxgs.sh b/tests/wpt/web-platform-tests/signed-exchange/resources/generate-test-sxgs.sh
index bb95df83295..bae4ce0eaed 100755
--- a/tests/wpt/web-platform-tests/signed-exchange/resources/generate-test-sxgs.sh
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/generate-test-sxgs.sh
@@ -7,6 +7,7 @@ inner_url_origin=https://127.0.0.1:8444
# the fly.
wpt_test_origin=https://web-platform.test:8444
wpt_test_remote_origin=https://www1.web-platform.test:8444
+wpt_test_alt_origin=https://not-web-platform.test:8444
cert_url_origin=$wpt_test_origin
sxg_content_type='content-type: application/signed-exchange;v=b3'
@@ -40,6 +41,22 @@ gen-signedexchange \
-o sxg/sxg-location.sxg \
-miRecordSize 100
+# A valid Signed Exchange. The origin of certUrl is the "alt" origin where NEL
+# policy is installed in reporting tests.
+gen-signedexchange \
+ -version $sxg_version \
+ -uri $inner_url_origin/signed-exchange/resources/inner-url.html \
+ -status 200 \
+ -content sxg-location.html \
+ -certificate $certfile \
+ -certUrl $wpt_test_alt_origin/signed-exchange/resources/$certfile.cbor \
+ -validityUrl $inner_url_origin/signed-exchange/resources/resource.validity.msg \
+ -privateKey $keyfile \
+ -date 2018-04-01T00:00:00Z \
+ -expire 168h \
+ -o sxg/sxg-location-cert-on-alt-origin.sxg \
+ -miRecordSize 100
+
# A signed exchange of unsupported version.
gen-signedexchange \
-version 1b2 \
@@ -154,6 +171,38 @@ gen-signedexchange \
-miRecordSize 100 \
-ignoreErrors true
+# certUrl is 404 and the origin of certUrl is different from the "alt" origin
+# where NEL policy is installed in reporting tests.
+gen-signedexchange \
+ -version $sxg_version \
+ -uri $inner_url_origin/signed-exchange/resources/inner-url.html \
+ -status 200 \
+ -content sxg-location.html \
+ -certificate $certfile \
+ -certUrl $cert_url_origin/signed-exchange/resources/not_found_certfile.cbor \
+ -validityUrl $inner_url_origin/signed-exchange/resources/resource.validity.msg \
+ -privateKey $keyfile \
+ -date 2018-04-01T00:00:00Z \
+ -expire 168h \
+ -o sxg/sxg-cert-not-found.sxg \
+ -miRecordSize 100
+
+# certUrl is 404 and the origin of certUrl is the "alt" origin where NEL policy
+# is installed in reporting tests.
+gen-signedexchange \
+ -version $sxg_version \
+ -uri $inner_url_origin/signed-exchange/resources/inner-url.html \
+ -status 200 \
+ -content sxg-location.html \
+ -certificate $certfile \
+ -certUrl $wpt_test_alt_origin/signed-exchange/resources/not_found_certfile.cbor \
+ -validityUrl $inner_url_origin/signed-exchange/resources/resource.validity.msg \
+ -privateKey $keyfile \
+ -date 2018-04-01T00:00:00Z \
+ -expire 168h \
+ -o sxg/sxg-cert-not-found-on-alt-origin.sxg \
+ -miRecordSize 100
+
# certUrl is 404 and fallback URL is another signed exchange.
gen-signedexchange \
-version $sxg_version \
@@ -170,6 +219,38 @@ gen-signedexchange \
-miRecordSize 100 \
-ignoreErrors true
+# certUrl is an invalid cert and the origin of certUrl is different from the
+# "alt" origin where NEL policy is installed in reporting tests.
+gen-signedexchange \
+ -version $sxg_version \
+ -uri $inner_url_origin/signed-exchange/resources/inner-url.html \
+ -status 200 \
+ -content sxg-location.html \
+ -certificate $certfile \
+ -certUrl $cert_url_origin/signed-exchange/resources/invalid-cert-format.cbor \
+ -validityUrl $inner_url_origin/signed-exchange/resources/resource.validity.msg \
+ -privateKey $keyfile \
+ -date 2018-04-01T00:00:00Z \
+ -expire 168h \
+ -o sxg/sxg-invalid-cert-format.sxg \
+ -miRecordSize 100
+
+# certUrl is an invalid cert and the origin of certUrl is the "alt" origin where
+# NEL policy is installed in reporting tests.
+gen-signedexchange \
+ -version $sxg_version \
+ -uri $inner_url_origin/signed-exchange/resources/inner-url.html \
+ -status 200 \
+ -content sxg-location.html \
+ -certificate $certfile \
+ -certUrl $wpt_test_alt_origin/signed-exchange/resources/invalid-cert-format.cbor \
+ -validityUrl $inner_url_origin/signed-exchange/resources/resource.validity.msg \
+ -privateKey $keyfile \
+ -date 2018-04-01T00:00:00Z \
+ -expire 168h \
+ -o sxg/sxg-invalid-cert-format-on-alt-origin.sxg \
+ -miRecordSize 100
+
# Nested signed exchange.
gen-signedexchange \
-version $sxg_version \
@@ -272,7 +353,56 @@ gen-signedexchange \
-miRecordSize 100 \
-ignoreErrors true
+
+
# Signed Exchange with payload integrity error.
echo 'garbage' | cat sxg/sxg-location.sxg - >sxg/sxg-merkle-integrity-error.sxg
+# An invalid signed exchange which integrity header is invalid.
+cat sxg/sxg-location.sxg |
+ sed 's/digest\/mi-sha256-03/digest\/mi-sha256-xx/' \
+ > sxg/sxg-invalid-integrity-header.sxg
+
+# An invalid signed exchange which cert-sha256 is invalid.
+dummy_sha256=`echo "dummy" | openssl dgst -binary -sha256 | base64`
+cat sxg/sxg-location.sxg |
+ sed "s/cert-sha256=\*[^*]*\*;/cert-sha256=*$dummy_sha256*;/" \
+ > sxg/sxg-invalid-cert-sha256.sxg
+cat sxg/sxg-location-cert-on-alt-origin.sxg |
+ sed "s/cert-sha256=\*[^*]*\*;/cert-sha256=*$dummy_sha256*;/" \
+ > sxg/sxg-invalid-cert-sha256-cert-on-alt-origin.sxg
+
+# An invalid signed exchange which validity period is too long.
+gen-signedexchange \
+ -version $sxg_version \
+ -uri $inner_url_origin/signed-exchange/resources/inner-url.html \
+ -status 200 \
+ -content sxg-location.html \
+ -certificate $certfile \
+ -certUrl $cert_url_origin/signed-exchange/resources/$certfile.cbor \
+ -validityUrl $inner_url_origin/signed-exchange/resources/resource.validity.msg \
+ -privateKey $keyfile \
+ -date 2018-04-01T00:00:00Z \
+ -expire 300h \
+ -o sxg/sxg-validity-period-too-long.sxg \
+ -miRecordSize 100 \
+ -ignoreErrors true
+
+# An invalid signed exchange which validity period is too long. The origin of
+# certUrl is the "alt" origin where NEL policy is installed in reporting tests.
+gen-signedexchange \
+ -version $sxg_version \
+ -uri $inner_url_origin/signed-exchange/resources/inner-url.html \
+ -status 200 \
+ -content sxg-location.html \
+ -certificate $certfile \
+ -certUrl $wpt_test_alt_origin/signed-exchange/resources/$certfile.cbor \
+ -validityUrl $inner_url_origin/signed-exchange/resources/resource.validity.msg \
+ -privateKey $keyfile \
+ -date 2018-04-01T00:00:00Z \
+ -expire 300h \
+ -o sxg/sxg-validity-period-too-long-cert-on-alt-origin.sxg \
+ -miRecordSize 100 \
+ -ignoreErrors true
+
rm -fr $tmpdir
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/invalid-cert-format.cbor b/tests/wpt/web-platform-tests/signed-exchange/resources/invalid-cert-format.cbor
new file mode 100644
index 00000000000..82f15ff924a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/invalid-cert-format.cbor
@@ -0,0 +1 @@
+This is an invalid certificate file.
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/invalid-cert-format.cbor.headers b/tests/wpt/web-platform-tests/signed-exchange/resources/invalid-cert-format.cbor.headers
new file mode 100644
index 00000000000..d581d5987ea
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/invalid-cert-format.cbor.headers
@@ -0,0 +1 @@
+Content-Type: application/cert-chain+cbor
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-cert-not-found-on-alt-origin.sxg b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-cert-not-found-on-alt-origin.sxg
new file mode 100644
index 00000000000..2a7dbf6fa69
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-cert-not-found-on-alt-origin.sxg
Binary files differ
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-cert-not-found.sxg b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-cert-not-found.sxg
new file mode 100644
index 00000000000..072125400ab
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-cert-not-found.sxg
Binary files differ
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-format-on-alt-origin.sxg b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-format-on-alt-origin.sxg
new file mode 100644
index 00000000000..62acedd390e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-format-on-alt-origin.sxg
Binary files differ
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-format.sxg b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-format.sxg
new file mode 100644
index 00000000000..30e4fcd9124
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-format.sxg
Binary files differ
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-sha256-cert-on-alt-origin.sxg b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-sha256-cert-on-alt-origin.sxg
new file mode 100644
index 00000000000..066a3cc0a4d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-sha256-cert-on-alt-origin.sxg
Binary files differ
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-sha256.sxg b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-sha256.sxg
new file mode 100644
index 00000000000..46d2bb1386e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-sha256.sxg
Binary files differ
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-format.sxg b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-format.sxg
new file mode 100644
index 00000000000..3fbb151b5ca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-format.sxg
@@ -0,0 +1 @@
+This is an invalid Signed Exchange.
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-integrity-header.sxg b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-integrity-header.sxg
new file mode 100644
index 00000000000..95d358245c9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-integrity-header.sxg
Binary files differ
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-location-cert-on-alt-origin.sxg b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-location-cert-on-alt-origin.sxg
new file mode 100644
index 00000000000..a2ddc77951c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-location-cert-on-alt-origin.sxg
Binary files differ
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-validity-period-too-long-cert-on-alt-origin.sxg b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-validity-period-too-long-cert-on-alt-origin.sxg
new file mode 100644
index 00000000000..294f97b097a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-validity-period-too-long-cert-on-alt-origin.sxg
Binary files differ
diff --git a/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-validity-period-too-long.sxg b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-validity-period-too-long.sxg
new file mode 100644
index 00000000000..e90d9bc66de
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-validity-period-too-long.sxg
Binary files differ
diff --git a/tests/wpt/web-platform-tests/svg/pservers/reftests/radialgradient-fully-overlapping.svg b/tests/wpt/web-platform-tests/svg/pservers/reftests/radialgradient-fully-overlapping.svg
new file mode 100644
index 00000000000..e16bb4ab917
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/pservers/reftests/radialgradient-fully-overlapping.svg
@@ -0,0 +1,16 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>Radial gradient with overlapping start and end circles</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html#RadialGradientNotes"/>
+ <h:link rel="match" href="reference/green-100x100.svg"/>
+ <h:meta name="assert" content="If the start circle fully overlaps with the end circle, no gradient is drawn."/>
+ </metadata>
+
+ <rect width="100" height="100" fill="green"/>
+
+ <radialGradient id="fully_overlapping" r="100" fr="100">
+ <stop stop-color="red"/>
+ <stop stop-color="red" offset="1"/>
+ </radialGradient>
+ <rect width="100" height="100" fill="url(#fully_overlapping) orange"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/tools/ci/azure/fyi_hook.yml b/tests/wpt/web-platform-tests/tools/ci/azure/fyi_hook.yml
index bcad6c33dbb..ddfbe3d3cf8 100644
--- a/tests/wpt/web-platform-tests/tools/ci/azure/fyi_hook.yml
+++ b/tests/wpt/web-platform-tests/tools/ci/azure/fyi_hook.yml
@@ -12,7 +12,7 @@ jobs:
pool:
vmImage: 'ubuntu-16.04'
steps:
- - script: curl -s -S https://wpt.fyi/api/checks/azure/$(Build.BuildId)?artifact=${{ parameters.artifactName }}
+ - script: curl -s -S -d "artifact=${{ parameters.artifactName }}" -X POST https://wpt.fyi/api/checks/azure/$(Build.BuildId)
displayName: 'Invoke wpt.fyi hook'
- - script: curl -s -S https://staging.wpt.fyi/api/checks/azure/$(Build.BuildId)?artifact=${{ parameters.artifactName }}
+ - script: curl -s -S -d "artifact=${{ parameters.artifactName }}" -X POST https://staging.wpt.fyi/api/checks/azure/$(Build.BuildId)
displayName: 'Invoke staging.wpt.fyi hook'
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html
new file mode 100644
index 00000000000..fc3182d3d59
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>RTCPeerConnection onsignalingstatechanged</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="RTCPeerConnection-helper.js"></script>
+<script>
+
+promise_test(async t => {
+ const [track] = (await navigator.mediaDevices.getUserMedia({video: true})).getTracks();
+ t.add_cleanup(() => track.stop());
+ const pc1 = new RTCPeerConnection();
+ t.add_cleanup(() => pc1.close());
+ const pc2 = new RTCPeerConnection();
+ t.add_cleanup(() => pc2.close());
+ pc1.addTrack(track, new MediaStream());
+ await pc1.setLocalDescription(await pc1.createOffer());
+ await pc2.setRemoteDescription(pc1.localDescription);
+ const signalingStateChangeResolver = new Resolver();
+ pc2.onsignalingstatechange = t.step_func(e => {
+ const transceiver = pc2.getTransceivers()[0];
+ assert_equals(pc2.signalingState, "stable");
+ assert_equals(transceiver.currentDirection, "recvonly");
+ signalingStateChangeResolver.resolve();
+ });
+ await pc2.setLocalDescription(await pc2.createAnswer());
+ await signalingStateChangeResolver;
+});
+
+</script>