diff options
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 Binary files differnew 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 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 Binary files differnew file mode 100644 index 00000000000..072125400ab --- /dev/null +++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-cert-not-found.sxg 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 Binary files differnew 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 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 Binary files differnew file mode 100644 index 00000000000..30e4fcd9124 --- /dev/null +++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-format.sxg 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 Binary files differnew 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 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 Binary files differnew file mode 100644 index 00000000000..46d2bb1386e --- /dev/null +++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-cert-sha256.sxg 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 Binary files differnew file mode 100644 index 00000000000..95d358245c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-invalid-integrity-header.sxg 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 Binary files differnew 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 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 Binary files differnew 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 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 Binary files differnew file mode 100644 index 00000000000..e90d9bc66de --- /dev/null +++ b/tests/wpt/web-platform-tests/signed-exchange/resources/sxg/sxg-validity-period-too-long.sxg 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> |