diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini index 6a3af4e2ece2..3a3d15b84062 100644 --- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini @@ -37,3 +37,6 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL + [Revoke blob URL after calling fetch, fetch should succeed] + expected: FAIL + diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index ca67f6af07f9..7f923cec6e69 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -299318,6 +299318,11 @@ {} ] ], + "html/semantics/embedded-content/the-iframe-element/support/download_stash.py": [ + [ + {} + ] + ], "html/semantics/embedded-content/the-iframe-element/support/iframe-that-checks-contentDocument.html": [ [ {} @@ -299478,6 +299483,11 @@ {} ] ], + "html/semantics/embedded-content/the-iframe-element/support/iframe_sandbox_download_helper.js": [ + [ + {} + ] + ], "html/semantics/embedded-content/the-iframe-element/support/load-into-the-iframe.html": [ [ {} @@ -304298,6 +304308,11 @@ {} ] ], + "mixed-content/generic/script.js": [ + [ + {} + ] + ], "mixed-content/generic/template/disclaimer.template": [ [ {} @@ -315273,6 +315288,11 @@ {} ] ], + "tools/ci/azure/fyi_hook.yml": [ + [ + {} + ] + ], "tools/ci/azure/install_certs.yml": [ [ {} @@ -322603,6 +322623,21 @@ {} ] ], + "trusted-types/trusted-types-report-only.tentative.https.html.headers": [ + [ + {} + ] + ], + "trusted-types/trusted-types-reporting-check-report.https.html.sub.headers": [ + [ + {} + ] + ], + "trusted-types/trusted-types-reporting.tentative.https.html.headers": [ + [ + {} + ] + ], "uievents/META.yml": [ [ {} @@ -348466,6 +348501,12 @@ {} ] ], + "css/css-scroll-snap/scroll-snap-stop-always.html": [ + [ + "/css/css-scroll-snap/scroll-snap-stop-always.html", + {} + ] + ], "css/css-scroll-snap/scroll-snap-type-proximity.html": [ [ "/css/css-scroll-snap/scroll-snap-type-proximity.html", @@ -356970,6 +357011,12 @@ {} ] ], + "custom-elements/HTMLElement-attachInternals.html": [ + [ + "/custom-elements/HTMLElement-attachInternals.html", + {} + ] + ], "custom-elements/HTMLElement-constructor.html": [ [ "/custom-elements/HTMLElement-constructor.html", @@ -378228,6 +378275,18 @@ {} ] ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative.html": [ + [ + "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative.html", + {} + ] + ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads_without_user_activation.sub.tentative.html": [ + [ + "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads_without_user_activation.sub.tentative.html", + {} + ] + ], "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_block_modals-1.html": [ [ "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_block_modals-1.html", @@ -378276,6 +378335,18 @@ {} ] ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative.html": [ + [ + "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative.html", + {} + ] + ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads_without_user_activation.sub.tentative.html": [ + [ + "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads_without_user_activation.sub.tentative.html", + {} + ] + ], "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html": [ [ "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html", @@ -414584,6 +414655,18 @@ {} ] ], + "signed-exchange/reporting/sxg-reporting-navigation-ok.tentative.html": [ + [ + "/signed-exchange/reporting/sxg-reporting-navigation-ok.tentative.html", + {} + ] + ], + "signed-exchange/reporting/sxg-reporting-prefetch-ok.tentative.html": [ + [ + "/signed-exchange/reporting/sxg-reporting-prefetch-ok.tentative.html", + {} + ] + ], "signed-exchange/sxg-double-prefetch.tentative.html": [ [ "/signed-exchange/sxg-double-prefetch.tentative.html", @@ -416582,6 +416665,18 @@ {} ] ], + "svg/geometry/svg-image-intrinsic-size-with-cssstyle-auto-dynamic-image-change.html": [ + [ + "/svg/geometry/svg-image-intrinsic-size-with-cssstyle-auto-dynamic-image-change.html", + {} + ] + ], + "svg/geometry/svg-image-intrinsic-size-with-cssstyle-auto.html": [ + [ + "/svg/geometry/svg-image-intrinsic-size-with-cssstyle-auto.html", + {} + ] + ], "svg/historical.html": [ [ "/svg/historical.html", @@ -417842,6 +417937,24 @@ {} ] ], + "trusted-types/trusted-types-report-only.tentative.https.html": [ + [ + "/trusted-types/trusted-types-report-only.tentative.https.html", + {} + ] + ], + "trusted-types/trusted-types-reporting-check-report.https.html": [ + [ + "/trusted-types/trusted-types-reporting-check-report.https.html", + {} + ] + ], + "trusted-types/trusted-types-reporting.tentative.https.html": [ + [ + "/trusted-types/trusted-types-reporting.tentative.https.html", + {} + ] + ], "uievents/click/auxclick_event.html": [ [ "/uievents/click/auxclick_event.html", @@ -450106,7 +450219,7 @@ }, "paths": { ".azure-pipelines.yml": [ - "cb204cabe288508280622c59b1d30bf18b74c1a1", + "b4f71f048b8147ee0acbd5887c79b153faa2dee9", "support" ], ".codecov.yml": [ @@ -461386,23 +461499,23 @@ "testharness" ], "clipboard-apis/async-navigator-clipboard-basics.https.html": [ - "5a23598fb0bd41dbc854cebb340d6f6ed8db54db", + "3c1a0af76c2674960a871f82c908b9044240f967", "testharness" ], "clipboard-apis/async-write-blobtext-read-blobtext-manual.https.html": [ - "f860bf23db2ee381805ed5b4053c309a45954342", + "ea6e9369517976642cf158d3273a56f321249813", "manual" ], "clipboard-apis/async-write-blobtext-read-text-manual.https.html": [ - "685b6cb603ddeb66e68cd23efe85d744f8a17223", + "ecb744a65704a2ff449391f84d6c20e1474a52d5", "manual" ], "clipboard-apis/async-write-image-read-image-manual.https.html": [ - "ee90e7e89a8994ba728d673e1da031c21cf38a04", + "a8e2956b7e14784d917a2dcf3f5b7e571b81c042", "manual" ], "clipboard-apis/async-write-text-read-blobtext-manual.https.html": [ - "69f72db82c07d2bca7446cf65d6d3056bebe24e2", + "7e682f1dbdd4f02de5a00addf9be1fbdcc4ca8f0", "manual" ], "clipboard-apis/async-write-text-read-text-manual.https.html": [ @@ -575013,6 +575126,10 @@ "fde2211f9253467544376643d2e842c61adfe8be", "testharness" ], + "css/css-scroll-snap/scroll-snap-stop-always.html": [ + "62446f54632f943eacf7e2bcd4bd1d98d346e97c", + "testharness" + ], "css/css-scroll-snap/scroll-snap-type-proximity.html": [ "cfe990c4fcab85898899039f71fa353484558789", "testharness" @@ -614573,6 +614690,10 @@ "32613c47e241078fae04ecdd7ee9e5b0236819fc", "testharness" ], + "custom-elements/HTMLElement-attachInternals.html": [ + "e537983059054eb6193434bfbeb700226e3c5fb7", + "testharness" + ], "custom-elements/HTMLElement-constructor.html": [ "a0bfa909bae1e98febaa5ef8eb3170ca30b58c13", "testharness" @@ -622098,7 +622219,7 @@ "testharness" ], "fetch/sec-metadata/img.tentative.https.sub.html": [ - "252b220011c553b2b941dbc9fdce427990bb1131", + "befc7a973bbe2f751088089533414fa6b2dd8669", "testharness" ], "fetch/sec-metadata/object.tentative.https.sub.html": [ @@ -635709,6 +635830,14 @@ "042851bbb492365e9d176aff8d678feb645f1d18", "testharness" ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative.html": [ + "32409f220f0a273f165741e2d79ca60846d61648", + "testharness" + ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_block_downloads_without_user_activation.sub.tentative.html": [ + "abd4d7c5e0d76d04cd678b00a153d5a8f10bddf7", + "testharness" + ], "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_block_modals-1.html": [ "ce171bfb8e10f90ed581fbcdc0b4e0605d150b88", "testharness" @@ -635741,6 +635870,14 @@ "12c4e0ca50236caacae89c76da3b81effd7b44be", "testharness" ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative.html": [ + "4fee27f9ba92482b85ecbcb7e1abe541fbfe83b9", + "testharness" + ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads_without_user_activation.sub.tentative.html": [ + "9b9246c393ec9b4ee3b9762d6d06ea65ff0ff5d1", + "testharness" + ], "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html": [ "342d422036426655457bb5e886871a310bb1dd3a", "testharness" @@ -635945,6 +636082,10 @@ "18ecdcb795c33d6ab7bbb43f647947defca5634d", "support" ], + "html/semantics/embedded-content/the-iframe-element/support/download_stash.py": [ + "24e1dfd58f760e1fa99846e0fac063a32a258e58", + "support" + ], "html/semantics/embedded-content/the-iframe-element/support/iframe-that-checks-contentDocument.html": [ "bc35a977e8b27360f75a901d44fedf47ad496e37", "support" @@ -636073,6 +636214,10 @@ "67733d8101b94e788f670393f624b35b7a9c7876", "support" ], + "html/semantics/embedded-content/the-iframe-element/support/iframe_sandbox_download_helper.js": [ + "7090e7662ca8e2f5cd0e732a8ea3c386abc273b1", + "support" + ], "html/semantics/embedded-content/the-iframe-element/support/load-into-the-iframe.html": [ "05a80be73745465ddcd65bc5745a674824974590", "support" @@ -643474,7 +643619,7 @@ "support" ], "interfaces/html.idl": [ - "f530f3559b68af565fc07f4372a1444d5036eac2", + "641213d1bb6fd47d3cb66f84661b8d658e76b641", "support" ], "interfaces/image-capture.idl": [ @@ -643542,7 +643687,7 @@ "support" ], "interfaces/netinfo.idl": [ - "a4876c9991069b48ff037e8105f05ebbd31202b1", + "729678396884a19874239468075bfd587c621305", "support" ], "interfaces/notifications.idl": [ @@ -643722,7 +643867,7 @@ "support" ], "interfaces/web-nfc.idl": [ - "913d1fe808adf50f66fa621eb62d12b1b41a3a05", + "11a36cde6eb7d2d287310635e867f2fe65f4a4fa", "support" ], "interfaces/web-share.idl": [ @@ -644294,7 +644439,7 @@ "testharness" ], "longtask-timing/longtask-in-sibling-iframe.html": [ - "b8a4270163a1ef4de3a0dfd4aaf82f9404497882", + "16f0998c2234f39257694817436b6e6178632433", "testharness" ], "longtask-timing/longtask-tojson.html": [ @@ -646362,21 +646507,25 @@ "testharness" ], "mixed-content/generic/common.js": [ - "63383f87e3a2b5ce9482d9c869ed39438cac6052", + "f1574e99360f456640d0c1a2882a54eb98fce17b", "support" ], "mixed-content/generic/expect.py": [ - "672a54c3a6ebff3dc16b86b44ec511102eb29501", + "2c360c1d9315db12f3463c2d005a111b02b3818a", "support" ], "mixed-content/generic/mixed-content-test-case.js": [ - "8708f5a9357d188014fae8a630a152d1c02e295a", + "b2c0bcdea1eea2603d0cc76f626f4dff3ace00bd", "support" ], "mixed-content/generic/sanity-checker.js": [ "55a103adf0f29c615d40bc47943be1aec25c8f1e", "support" ], + "mixed-content/generic/script.js": [ + "2d1cdf0a4bbdb465c45a47cf676c8e6d23f1ddc0", + "support" + ], "mixed-content/generic/template/disclaimer.template": [ "66c43ed6f21324d44b1596c09a02fecf53f41323", "support" @@ -648926,7 +649075,7 @@ "support" ], "network-error-logging/support/nel.sub.js": [ - "759d0337fa677da751c93146f057b05c53f9fa57", + "16aebd54a97cdcd9329c42eba6b4116c40993ca0", "support" ], "network-error-logging/support/no-policy-pass.png": [ @@ -648946,7 +649095,7 @@ "support" ], "network-error-logging/support/report.py": [ - "49af9fe34ccac87f3dffa7c9da9b4486eb140764", + "4bb7e3d248bbff52c042eee6ada3f6df079fb5b6", "support" ], "network-error-logging/support/subdomains-pass.png": [ @@ -657594,103 +657743,103 @@ "support" ], "referrer-policy/css-integration/child-css/external-import-stylesheet.html": [ - "40f4234ad48d19162cefae933fd0f53a72ff0c19", + "6be475e98bc2736a0f1409261d48f8f02a6c9461", "testharness" ], "referrer-policy/css-integration/child-css/internal-import-stylesheet.html": [ - "30c5ea2903094af38dea9a7a565255d178069178", + "37370fdd3710c8459e3f6b19980f4308559ad7f4", "testharness" ], "referrer-policy/css-integration/child-css/processing-instruction.html": [ - "52a0ded42a185ed5ff6f449879e0ce50f8255868", + "5362234177418da5eba46bbcbc5e5f62d3366de9", "testharness" ], "referrer-policy/css-integration/css-test-helper.js": [ - "788df16a456b83a23de662b710c200042a1e7254", + "0afa9e1b87ca7dca7ad4fae541cf68d80c62ec91", "support" ], "referrer-policy/css-integration/font-face/external-import-stylesheet.html": [ - "80e3587ad62f040f2cfb28645437fcbc0e66b415", + "300960d2944d11fa327077ac57df5336b0337296", "testharness" ], "referrer-policy/css-integration/font-face/external-stylesheet.html": [ - "a91eb3fe758299229040466deb2d1b0263f77197", + "45da018cb02e82ac17ec74d5e63747ad2aa972fa", "testharness" ], "referrer-policy/css-integration/font-face/internal-import-stylesheet.html": [ - "a637082a4ce7dff612b223fc8a4c2195db300013", + "dd06b7d7bb1f7a0fccf532e395f32cc2026235de", "testharness" ], "referrer-policy/css-integration/font-face/internal-stylesheet.html": [ - "eebd864bc56725b79c1f29c0597466574e2af091", + "a0a9067b3b846edcc4acc548c74e6b643116cab3", "testharness" ], "referrer-policy/css-integration/font-face/processing-instruction.html": [ - "bfc42d9fcbe355514c7bf72ac087d7159439824e", + "a9d79a33b08e6b10a17495663fb4c7d9337370ef", "testharness" ], "referrer-policy/css-integration/image/external-import-stylesheet.html": [ - "80c71b0e215b547d664aee8757d70188c012a9c0", + "2a7ac43a75466ec6e1c47d57ad14c01453728c3d", "testharness" ], "referrer-policy/css-integration/image/external-stylesheet.html": [ - "ba7497b97de6911c149b423bf25305123e97150e", + "c763ecbcff781a7e047b1425f7bf993e363721a0", "testharness" ], "referrer-policy/css-integration/image/inline-style.html": [ - "758b6d91852f67d4e47726815804a5e366fe534d", + "da571afbbc830b7ccdb7b24ced20bf7aa20c9529", "testharness" ], "referrer-policy/css-integration/image/internal-import-stylesheet.html": [ - "24aa1858304a2130624589b0a64c6f9ec9cac5a1", + "e320e063f2df492e99944328dc3f009cfd9bcbb8", "testharness" ], "referrer-policy/css-integration/image/internal-stylesheet.html": [ - "f4567885e1f1e215487a11f1023d117517cd88b8", + "3e2fc109936203732e0b25fbc96e3ac519df559b", "testharness" ], "referrer-policy/css-integration/image/presentation-attribute.html": [ - "d0a4d96f84c8e48ea5daf5699c7b04bbc877ba86", + "e810df54b8291120b13fb68cbecd9d1a71b1f8ce", "testharness" ], "referrer-policy/css-integration/image/processing-instruction.html": [ - "926147be489a85164758dcf644c715e4a5c02de6", + "e5a1e20af72468994fc6120f1d29e894804c13a8", "testharness" ], "referrer-policy/css-integration/svg/external-stylesheet.html": [ - "148584a0b23bbd900d62e28e679d308aa1b204c9", + "dfa6fd073b9b1e2268e1cc66754d7d0e442bdc02", "testharness" ], "referrer-policy/css-integration/svg/inline-style.html": [ - "1f46acb4a3216e3e5ac81afee50b83ba72ef4852", + "fd6e4baeae57d1546de2b47766dfa507b23361e1", "testharness" ], "referrer-policy/css-integration/svg/internal-stylesheet.html": [ - "08be4effa475b232bc2be621dbf24f34ab0e39dd", + "228de6d700b96cfc7ae85ff9c7ebb60f20197afd", "testharness" ], "referrer-policy/css-integration/svg/presentation-attribute.html": [ - "edeceb1a785484111858b650da55a6ec965f5b40", + "65bb642f5bf3e3a6fdf27a39c55b536365375a23", "testharness" ], "referrer-policy/css-integration/svg/processing-instruction.html": [ - "ba0e6673a3871495c226baf8d3c3daf8ae9e138d", + "c0e8d4bf8169bf210674d7d9acf7bda994b01bf4", "testharness" ], "referrer-policy/generic/common.js": [ - "a16691bccb2543ad68b81e9a16fa261d3cce6a9f", + "f1574e99360f456640d0c1a2882a54eb98fce17b", "support" ], "referrer-policy/generic/iframe-inheritance.html": [ - "478a7ce6fe6aa13e54dfaa3eb493bdaad7753c38", + "6c54c43a81542a8349eebcbd0d35c28fb15d3e23", "testharness" ], "referrer-policy/generic/link-rel-prefetch.html": [ - "54963141b1916688fba7c8c1269a6f310efbb13a", + "16452b1d690bd19ac118f34efac385264450569d", "testharness" ], "referrer-policy/generic/multiple-headers-and-values.html": [ - "682199b917c37b9b11ef0eaa9897ebbfb50f5eb7", + "ccbc02bec1bc5bced33bf88b97e4afc49f7949c2", "testharness" ], "referrer-policy/generic/multiple-headers-and-values.html.headers": [ @@ -657698,7 +657847,7 @@ "support" ], "referrer-policy/generic/multiple-headers-combined.html": [ - "ad02ae84bd7458c13e7621db7eadbd19a82ffbb5", + "7def76b9dd1e8754f6c8a243683eaeb4c25989ee", "testharness" ], "referrer-policy/generic/multiple-headers-combined.html.headers": [ @@ -657706,7 +657855,7 @@ "support" ], "referrer-policy/generic/multiple-headers-one-invalid.html": [ - "b1384b14a0e859d8fba0f564e6b9c51333339fc4", + "eb6c21731b39ebd310526cc3345be0ac868dd919", "testharness" ], "referrer-policy/generic/multiple-headers-one-invalid.html.headers": [ @@ -657714,7 +657863,7 @@ "support" ], "referrer-policy/generic/multiple-headers-one-unknown-token.html": [ - "3273c0dbedfea3c3917ff0e16f29ff2273f32352", + "91e216b22a1392867d27db0b02aa318aef65d613", "testharness" ], "referrer-policy/generic/multiple-headers-one-unknown-token.html.headers": [ @@ -657722,7 +657871,7 @@ "support" ], "referrer-policy/generic/multiple-headers.html": [ - "5f6a749b4bd2003b1b434b070d436ac1a2d8d6e5", + "a74cf60d89a5e4ee4a036613745acea5a83cae25", "testharness" ], "referrer-policy/generic/multiple-headers.html.headers": [ @@ -657730,11 +657879,11 @@ "support" ], "referrer-policy/generic/referrer-policy-test-case.js": [ - "2385cc2a1c4e51a2855299e42b69ac12362cd699", + "2c5c8eb80cc6ea3ed79bd0004365324ce4f1baec", "support" ], "referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html": [ - "1b2b12bf6910e075338462de577dc4228f52a21f", + "73b48f1d5c042cd121a2d3715ac4be70007bbb87", "testharness" ], "referrer-policy/generic/sanity-checker.js": [ @@ -657742,7 +657891,7 @@ "support" ], "referrer-policy/generic/subresource-test/area-navigate.html": [ - "3eb824521b7801c518a7b36218075eb3d74bd639", + "c601c249d0ff1c226dd495a23bb348010e1c16f2", "testharness" ], "referrer-policy/generic/subresource-test/attr-referrer-invalid-value.html": [ @@ -657750,31 +657899,31 @@ "testharness" ], "referrer-policy/generic/subresource-test/fetch-messaging.html": [ - "edb159d9eb1cf5eed6af249a40f70d9ecd079d68", + "4d40245123ff6071aa3db4e96c379ec553866154", "testharness" ], "referrer-policy/generic/subresource-test/iframe-messaging.html": [ - "606e18b281f6c3498573dc9bfaefefca1390026a", + "3072436bc64a11299233132297147a028c9a8065", "testharness" ], "referrer-policy/generic/subresource-test/image-decoding.html": [ - "9c50ea6619389dad8ad81c4c2afbeb8030b176db", + "b132c06c3f15dbe497e58c1be31aa75c112b2cfb", "testharness" ], "referrer-policy/generic/subresource-test/link-navigate.html": [ - "95582f65bac8a3b478cc8cd4fe9b883fb507237f", + "583458b535945f77f89879bd56ad0527ffa6df81", "testharness" ], "referrer-policy/generic/subresource-test/script-messaging.html": [ - "f73f4406df20694480f82570ed8674fe283ea375", + "7bc36dc7abf068116ee457a292cc29c72d7926ef", "testharness" ], "referrer-policy/generic/subresource-test/worker-messaging.html": [ - "fd7591882e91e7265fd740b9018248d21f13b5b9", + "9daf6d5f9027a51f5bcac2d2364d6cd8722dcbad", "testharness" ], "referrer-policy/generic/subresource-test/xhr-messaging.html": [ - "6ef4a9cfd4b98c3562fe7ef6e04eb931073166de", + "a0208051206a4cf4b48ba0574c63fea589df1202", "testharness" ], "referrer-policy/generic/subresource/__init__.py": [ @@ -657902,7 +658051,7 @@ "support" ], "referrer-policy/generic/unsupported-csp-referrer-directive.html": [ - "475efa55091778e747fa36030f7b422b89d6d4b9", + "40942a8a0358149f1408010b224a4317a1f940ce", "testharness" ], "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/a-tag/no-redirect/insecure-protocol.http.html": [ @@ -672697,6 +672846,14 @@ "f1167f919ab39a85e38778c39fc64305eecd4921", "testharness" ], + "signed-exchange/reporting/sxg-reporting-navigation-ok.tentative.html": [ + "ee9a50966d8f5581084b3518757ff74a6abed692", + "testharness" + ], + "signed-exchange/reporting/sxg-reporting-prefetch-ok.tentative.html": [ + "fb5fb58c9f7063c2abd45130ec4bfdf4b6bcc8cb", + "testharness" + ], "signed-exchange/resources/127.0.0.1.sxg.ext": [ "8cdc25a9a7f36f3313813e967eb9e68f5e546ff6", "support" @@ -672742,7 +672899,7 @@ "support" ], "signed-exchange/resources/sxg-util.js": [ - "67439c8a6e4f111d0095519a77dc0e6ffd380e2c", + "7abb3cf2079087092ac4a7f7332ecf72f9cabd75", "support" ], "signed-exchange/resources/sxg-version1b2.sxg": [ @@ -673713,6 +673870,14 @@ "c2ca49341c5ec5d4d96d1541999893053146eecd", "reftest" ], + "svg/geometry/svg-image-intrinsic-size-with-cssstyle-auto-dynamic-image-change.html": [ + "8d5e2e982e82bd73e45cf86688e637a65f5d6535", + "testharness" + ], + "svg/geometry/svg-image-intrinsic-size-with-cssstyle-auto.html": [ + "6b49f62296433892913e74d0cc9c6bed7567fe31", + "testharness" + ], "svg/historical.html": [ "1b73ca8d2236c7afdb9b331c532c84b6083f2968", "testharness" @@ -677401,6 +677566,10 @@ "ba08b7eafabfb1bd03e8cbb8b421a6e85ed5960a", "support" ], + "tools/ci/azure/fyi_hook.yml": [ + "bcad6c33dbb64c96c4e85882fa2cb6976265afbb", + "support" + ], "tools/ci/azure/install_certs.yml": [ "5682199b3873a279ede0345c60ce37dc280fa2a2", "support" @@ -682746,7 +682915,7 @@ "support" ], "tools/wptrunner/wptrunner/testrunner.py": [ - "05b3190a5f44ec83311c8df9e72fadea46594b95", + "d638d394be2d6f6d8dd0ea07dbd96c7a4a05655f", "support" ], "tools/wptrunner/wptrunner/tests/__init__.py": [ @@ -683194,7 +683363,7 @@ "support" ], "tools/wptserve/wptserve/request.py": [ - "aa6306a533e2136a2dc5eea33ebeb18706eb1736", + "1b1061ba7b7a94e83ed5177cdbe15e61591491a2", "support" ], "tools/wptserve/wptserve/response.py": [ @@ -683469,6 +683638,30 @@ "4079f7e9c7933cf9ee195fe0e7a54e0f56f184ab", "support" ], + "trusted-types/trusted-types-report-only.tentative.https.html": [ + "f33183b4906975f03ebb3f3a21adb63839c89adb", + "testharness" + ], + "trusted-types/trusted-types-report-only.tentative.https.html.headers": [ + "b38cfae2cb209eec5b8c9e8b0c774262694c1aec", + "support" + ], + "trusted-types/trusted-types-reporting-check-report.https.html": [ + "111907788d279a722aced631dc19b20afb6f0285", + "testharness" + ], + "trusted-types/trusted-types-reporting-check-report.https.html.sub.headers": [ + "5830239f5ca4c45ff97f8fa9f53daba82e0e9685", + "support" + ], + "trusted-types/trusted-types-reporting.tentative.https.html": [ + "3074895ba13f7f734d00898e723b4b604234a9cb", + "testharness" + ], + "trusted-types/trusted-types-reporting.tentative.https.html.headers": [ + "8093b8474d686fd665c6e835c6d0ed8f337cf2cd", + "support" + ], "uievents/META.yml": [ "2f1ec58efec10e0dd6374aac05cb926c8cffa3f1", "support" @@ -684082,7 +684275,7 @@ "support" ], "upgrade-insecure-requests/support/testharness-helper.sub.js": [ - "8b58eb9560426ce6a67ac4826000134d32d1b7a1", + "d7be710dd24b750a0d214fd8d24210c2ab3f9802", "support" ], "upgrade-insecure-requests/support/worker.js": [ @@ -685650,11 +685843,11 @@ "testharness" ], "wasm/jsapi/memory/constructor.any.js": [ - "11e309fe654f7a46c95c96dae78da2bef1a109f1", + "cef713fe0fe74f009e9f8aadd9168e7fa5138eb0", "testharness" ], "wasm/jsapi/memory/grow.any.js": [ - "1ccfb946756fef71b89672dfc86830c620a9e981", + "11c41942510b65b62b63468cc332b803445321de", "testharness" ], "wasm/jsapi/memory/toString.any.js": [ @@ -685666,7 +685859,7 @@ "testharness" ], "wasm/jsapi/module/customSections.any.js": [ - "04c5abed52435714a18467c419dce17dfcf4073d", + "387d4e4a31744d16627484650a35ecc86f992c66", "testharness" ], "wasm/jsapi/module/exports.any.js": [ @@ -685914,7 +686107,7 @@ "support" ], "web-animations/README.md": [ - "f6efbf977f95bc9ab3cb6a061a841c6d4942250e", + "75493ce57b4c242195d9fb56e73154865d6f59bf", "support" ], "web-animations/animation-model/animation-types/accumulation-per-property.html": [ @@ -689422,7 +689615,7 @@ "testharness" ], "webrtc/RTCRtpSender-transport.https.html": [ - "c687911d09d2184f49b4dabded7c95e6cb9d310a", + "fb8aaaf8ec3f85879c51ea9bbb0736b1558961b3", "testharness" ], "webrtc/RTCRtpTransceiver-direction.html": [ diff --git a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini index a100b2814538..8850ec200da2 100644 --- a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini +++ b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini @@ -74,6 +74,3 @@ [opacity end] expected: FAIL - [border-bottom-width end] - expected: FAIL - diff --git a/tests/wpt/metadata/custom-elements/HTMLElement-attachInternals.html.ini b/tests/wpt/metadata/custom-elements/HTMLElement-attachInternals.html.ini new file mode 100644 index 000000000000..247b2807fd61 --- /dev/null +++ b/tests/wpt/metadata/custom-elements/HTMLElement-attachInternals.html.ini @@ -0,0 +1,13 @@ +[HTMLElement-attachInternals.html] + [Successful attachInternals() and the second call.] + expected: FAIL + + [attachInternals() throws a NotSupportedError if it is called for a customized built-in element] + expected: FAIL + + [If a custom element definition for the local name of the element has disable internals flag, throw a NotSupportedError] + expected: FAIL + + [If a custom element definition for the local name of the element doesn't exist, throw an InvalidStateError] + 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 4acc2e997de6..ba73113f0bc8 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: TIMEOUT + expected: CRASH [ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)] expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index 8a008d8b2b87..079232caa745 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -312,9 +312,24 @@ [
diff --git a/tests/wpt/web-platform-tests/referrer-policy/css-integration/image/processing-instruction.html b/tests/wpt/web-platform-tests/referrer-policy/css-integration/image/processing-instruction.html index 926147be489a..e5a1e20af724 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/css-integration/image/processing-instruction.html +++ b/tests/wpt/web-platform-tests/referrer-policy/css-integration/image/processing-instruction.html @@ -7,6 +7,7 @@ + @@ -17,7 +18,7 @@ diff --git a/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/external-stylesheet.html b/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/external-stylesheet.html index 148584a0b23b..dfa6fd073b9b 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/external-stylesheet.html +++ b/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/external-stylesheet.html @@ -7,6 +7,7 @@ + diff --git a/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/inline-style.html b/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/inline-style.html index 1f46acb4a321..fd6e4baeae57 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/inline-style.html +++ b/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/inline-style.html @@ -7,6 +7,7 @@ + diff --git a/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/internal-stylesheet.html b/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/internal-stylesheet.html index 08be4effa475..228de6d700b9 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/internal-stylesheet.html +++ b/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/internal-stylesheet.html @@ -7,6 +7,7 @@ + diff --git a/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/presentation-attribute.html b/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/presentation-attribute.html index edeceb1a7854..65bb642f5bf3 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/presentation-attribute.html +++ b/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/presentation-attribute.html @@ -8,6 +8,7 @@ + diff --git a/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/processing-instruction.html b/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/processing-instruction.html index ba0e6673a387..c0e8d4bf8169 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/processing-instruction.html +++ b/tests/wpt/web-platform-tests/referrer-policy/css-integration/svg/processing-instruction.html @@ -8,6 +8,7 @@ + diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/common.js b/tests/wpt/web-platform-tests/referrer-policy/generic/common.js index a16691bccb25..f1574e99360f 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/common.js +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/common.js @@ -1,54 +1,267 @@ -// NOTE: This method only strips the fragment and is not in accordance to the -// recommended draft specification: -// https://w3c.github.io/webappsec/specs/referrer-policy/#null -// TODO(kristijanburnik): Implement this helper as defined by spec once added -// scenarios for URLs containing username/password/etc. -function stripUrlForUseAsReferrer(url) { - return url.replace(/#.*$/, ""); -} - -function parseUrlQueryString(queryString) { - var queries = queryString.replace(/^\?/, "").split("&"); - var params = {}; - - for (var i in queries) { - var kvp = queries[i].split("="); - params[kvp[0]] = kvp[1]; - } +/** + * @fileoverview Utilities for mixed-content in Web Platform Tests. + * @author burnik@google.com (Kristijan Burnik) + * Disclaimer: Some methods of other authors are annotated in the corresponding + * method's JSDoc. + */ + +// The same content is placed as +// - wpt/referrer-policy/generic/common.js and +// - wpt/mixed-content/generic/common.js. +// If you modify either one, please also update the other one. +// +// TODO(https://crbug.com/906850): These two files are going to be merged. +// Currently they are duplicated only to avoid frequent mass modification +// for each step of refactoring, as these file names are hard-coded in +// a large number of generated test files. + +function timeoutPromise(t, ms) { + return new Promise(resolve => { t.step_timeout(resolve, ms); }); +} + +/** + * Normalizes the target port for use in a URL. For default ports, this is the + * empty string (omitted port), otherwise it's a colon followed by the port + * number. Ports 80, 443 and an empty string are regarded as default ports. + * @param {number} targetPort The port to use + * @return {string} The port portion for using as part of a URL. + */ +function getNormalizedPort(targetPort) { + return ([80, 443, ""].indexOf(targetPort) >= 0) ? "" : ":" + targetPort; +} + +/** + * Creates a GUID. + * See: https://en.wikipedia.org/wiki/Globally_unique_identifier + * Original author: broofa (http://www.broofa.com/) + * Sourced from: http://stackoverflow.com/a/2117523/4949715 + * @return {string} A pseudo-random GUID. + */ +function guid() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + return v.toString(16); + }); +} + +/** + * Initiates a new XHR via GET. + * @param {string} url The endpoint URL for the XHR. + * @param {string} responseType Optional - how should the response be parsed. + * Default is "json". + * See: https://xhr.spec.whatwg.org/#dom-xmlhttprequest-responsetype + * @return {Promise} A promise wrapping the success and error events. + */ +function xhrRequest(url, responseType) { + return new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = responseType || "json"; + + xhr.addEventListener("error", function() { + reject(Error("Network Error")); + }); + + xhr.addEventListener("load", function() { + if (xhr.status != 200) + reject(Error(xhr.statusText)); + else + resolve(xhr.response); + }); + + xhr.send(); + }); +} + +/** + * Sets attributes on a given DOM element. + * @param {DOMElement} element The element on which to set the attributes. + * @param {object} An object with keys (serving as attribute names) and values. + */ +function setAttributes(el, attrs) { + attrs = attrs || {} + for (var attr in attrs) + el.setAttribute(attr, attrs[attr]); +} - return params; -}; +/** + * Binds to success and error events of an object wrapping them into a promise + * available through {@code element.eventPromise}. The success event + * resolves and error event rejects. + * This method adds event listeners, and then removes all the added listeners + * when one of listened event is fired. + * @param {object} element An object supporting events on which to bind the + * promise. + * @param {string} resolveEventName [="load"] The event name to bind resolve to. + * @param {string} rejectEventName [="error"] The event name to bind reject to. + */ +function bindEvents(element, resolveEventName, rejectEventName) { + element.eventPromise = + bindEvents2(element, resolveEventName, element, rejectEventName); +} -function appendIframeToBody(url, attributes) { - var iframe = document.createElement("iframe"); - iframe.src = url; - // Extend element with attributes. (E.g. "referrerPolicy" or "rel") - if (attributes) { - for (var attr in attributes) { - iframe[attr] = attributes[attr]; +// Returns a promise wrapping success and error events of objects. +// This is a variant of bindEvents that can accept separate objects for each +// events and two events to reject, and doesn't set `eventPromise`. +// +// When `resolveObject`'s `resolveEventName` event (default: "load") is +// fired, the promise is resolved with the event. +// +// When `rejectObject`'s `rejectEventName` event (default: "error") or +// `rejectObject2`'s `rejectEventName2` event (default: "error") is +// fired, the promise is rejected. +// +// `rejectObject2` is optional. +function bindEvents2(resolveObject, resolveEventName, rejectObject, rejectEventName, rejectObject2, rejectEventName2) { + return new Promise(function(resolve, reject) { + const actualResolveEventName = resolveEventName || "load"; + const actualRejectEventName = rejectEventName || "error"; + const actualRejectEventName2 = rejectEventName2 || "error"; + + const resolveHandler = function(event) { + cleanup(); + resolve(event); + }; + + const rejectHandler = function(event) { + // Chromium starts propagating errors from worker.onerror to + // window.onerror. This handles the uncaught exceptions in tests. + event.preventDefault(); + cleanup(); + reject(event); + }; + + const cleanup = function() { + resolveObject.removeEventListener(actualResolveEventName, resolveHandler); + rejectObject.removeEventListener(actualRejectEventName, rejectHandler); + if (rejectObject2) { + rejectObject2.removeEventListener(actualRejectEventName2, rejectHandler); + } + }; + + resolveObject.addEventListener(actualResolveEventName, resolveHandler); + rejectObject.addEventListener(actualRejectEventName, rejectHandler); + if (rejectObject2) { + rejectObject2.addEventListener(actualRejectEventName2, rejectHandler); } - } - document.body.appendChild(iframe); + }); +} - return iframe; +/** + * Creates a new DOM element. + * @param {string} tagName The type of the DOM element. + * @param {object} attrs A JSON with attributes to apply to the element. + * @param {DOMElement} parent Optional - an existing DOM element to append to + * If not provided, the returned element will remain orphaned. + * @param {boolean} doBindEvents Optional - Whether to bind to load and error + * events and provide the promise wrapping the events via the element's + * {@code eventPromise} property. Default value evaluates to false. + * @return {DOMElement} The newly created DOM element. + */ +function createElement(tagName, attrs, parentNode, doBindEvents) { + var element = document.createElement(tagName); + + if (doBindEvents) + bindEvents(element); + + // We set the attributes after binding to events to catch any + // event-triggering attribute changes. E.g. form submission. + // + // But be careful with images: unlike other elements they will start the load + // as soon as the attr is set, even if not in the document yet, and sometimes + // complete it synchronously, so the append doesn't have the effect we want. + // So for images, we want to set the attrs after appending, whereas for other + // elements we want to do it before appending. + var isImg = (tagName == "img"); + if (!isImg) + setAttributes(element, attrs); + + if (parentNode) + parentNode.appendChild(element); + + if (isImg) + setAttributes(element, attrs); + + return element; } -function loadImageInWindow(src, callback, attributes, w) { - var image = new w.Image(); - image.crossOrigin = "Anonymous"; - image.onload = function() { - callback(image); - } +function createRequestViaElement(tagName, attrs, parentNode) { + return createElement(tagName, attrs, parentNode, true).eventPromise; +} + +/** + * Creates a new empty iframe and appends it to {@code document.body} . + * @param {string} name The name and ID of the new iframe. + * @param {boolean} doBindEvents Whether to bind load and error events. + * @return {DOMElement} The newly created iframe. + */ +function createHelperIframe(name, doBindEvents) { + return createElement("iframe", + {"name": name, "id": name}, + document.body, + doBindEvents); +} - // Extend element with attributes. (E.g. "referrerPolicy" or "rel") - if (attributes) { - for (var attr in attributes) { - image[attr] = attributes[attr]; +/** + * requestVia*() functions return promises that are resolved on successful + * requests with objects of the same "type", i.e. objects that contains + * the same sets of keys that are fixed within one category of tests (e.g. + * within wpt/referrer-policy tests). + * wrapResult() (that should be defined outside this file) is used to convert + * the response bodies of subresources into the expected result objects in some + * cases, and in other cases the result objects are constructed more directly. + * TODO(https://crbug.com/906850): Clean up the semantics around this, e.g. + * use (or not use) wrapResult() consistently, unify the arguments, etc. + */ + +/** + * Creates a new iframe, binds load and error events, sets the src attribute and + * appends it to {@code document.body} . + * @param {string} url The src for the iframe. + * @return {Promise} The promise for success/error events. + */ +function requestViaIframe(url, additionalAttributes) { + const iframe = createElement( + "iframe", + Object.assign({"src": url}, additionalAttributes), + document.body, + false); + return bindEvents2(window, "message", iframe, "error", window, "error") + .then(event => { + assert_equals(event.source, iframe.contentWindow); + return event.data; + }); +} + +/** + * Creates a new image, binds load and error events, sets the src attribute and + * appends it to {@code document.body} . + * @param {string} url The src for the image. + * @return {Promise} The promise for success/error events. + */ +function requestViaImage(url) { + return createRequestViaElement("img", {"src": url}, document.body); +} + +// Helpers for requestViaImageForReferrerPolicy(). +function loadImageInWindow(src, attributes, w) { + return new Promise((resolve, reject) => { + var image = new w.Image(); + image.crossOrigin = "Anonymous"; + image.onload = function() { + resolve(image); + }; + + // Extend element with attributes. (E.g. "referrerPolicy" or "rel") + if (attributes) { + for (var attr in attributes) { + image[attr] = attributes[attr]; + } } - } - image.src = src; - w.document.body.appendChild(image) + image.src = src; + w.document.body.appendChild(image) + }); } function extractImageData(img) { @@ -83,35 +296,11 @@ function decodeImageData(rgba) { return JSON.parse(string_data); } -function normalizePort(targetPort) { - var defaultPorts = [80, 443]; - var isDefaultPortForProtocol = (defaultPorts.indexOf(targetPort) >= 0); - - return (targetPort == "" || isDefaultPortForProtocol) ? - "" : ":" + targetPort; -} - -function wrapResult(url, server_data) { - return { - location: url, - referrer: server_data.headers.referer, - headers: server_data.headers - } -} - -function queryIframe(url, callback, attributes, referrer_policy, test) { - var iframe = appendIframeToBody(url, attributes); - var listener = test.step_func(function(event) { - if (event.source != iframe.contentWindow) - return; - - callback(event.data, url); - window.removeEventListener("message", listener); - }); - window.addEventListener("message", listener); -} - -function queryImage(url, callback, attributes, referrerPolicy, test) { +// A variant of requestViaImage for referrer policy tests. +// This tests many patterns ofRunning...diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html index ad02ae84bd74..7def76b9dd1e 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html @@ -6,6 +6,7 @@ +
Running...diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html index b1384b14a0e8..eb6c21731b39 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html @@ -6,6 +6,7 @@ +
Running...diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html index 3273c0dbedfe..91e216b22a13 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html @@ -6,6 +6,7 @@ +
Running...diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html index 5f6a749b4bd2..a74cf60d89a5 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html @@ -6,6 +6,7 @@ +
Running...diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/referrer-policy-test-case.js b/tests/wpt/web-platform-tests/referrer-policy/generic/referrer-policy-test-case.js index 2385cc2a1c4e..2c5c8eb80cc6 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/referrer-policy-test-case.js +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/referrer-policy-test-case.js @@ -1,3 +1,27 @@ +function wrapResult(server_data) { + return { + referrer: server_data.headers.referer, + headers: server_data.headers + } +} + +// NOTE: This method only strips the fragment and is not in accordance to the +// recommended draft specification: +// https://w3c.github.io/webappsec/specs/referrer-policy/#null +// TODO(kristijanburnik): Implement this helper as defined by spec once added +// scenarios for URLs containing username/password/etc. +function stripUrlForUseAsReferrer(url) { + return url.replace(/#.*$/, ""); +} + +function normalizePort(targetPort) { + var defaultPorts = [80, 443]; + var isDefaultPortForProtocol = (defaultPorts.indexOf(targetPort) >= 0); + + return (targetPort == "" || isDefaultPortForProtocol) ? + "" : ":" + targetPort; +} + function ReferrerPolicyTestCase(scenario, testDescription, sanityChecker) { // Pass and skip rest of the test if browser does not support fetch. if (scenario.subresource == "fetch-request" && !window.fetch) { @@ -14,16 +38,16 @@ function ReferrerPolicyTestCase(scenario, testDescription, sanityChecker) { sanityChecker.checkScenario(scenario); var subresourceInvoker = { - "a-tag": queryLink, - "area-tag": queryAreaLink, - "fetch-request": queryFetch, - "iframe-tag": queryIframe, - "img-tag": queryImage, - "script-tag": queryScript, - "worker-request": queryWorker, - "module-worker": queryModuleWorkerTopLevel, - "shared-worker": querySharedWorker, - "xhr-request": queryXhr + "a-tag": requestViaAnchor, + "area-tag": requestViaArea, + "fetch-request": requestViaFetch, + "iframe-tag": requestViaIframe, + "img-tag": requestViaImageForReferrerPolicy, + "script-tag": requestViaScript, + "worker-request": url => requestViaDedicatedWorker(url, {}), + "module-worker": url => requestViaDedicatedWorker(url, {type: "module"}), + "shared-worker": requestViaSharedWorker, + "xhr-request": requestViaXhr }; var referrerUrlResolver = { @@ -41,8 +65,6 @@ function ReferrerPolicyTestCase(scenario, testDescription, sanityChecker) { var t = { _scenario: scenario, _testDescription: testDescription, - _subresourceUrl: null, - _expectedReferrerUrl: null, _constructSubresourceUrl: function() { // TODO(kristijanburnik): We should assert that these two domains are // different. E.g. If someone runs the tets over www, this would fail. @@ -60,19 +82,20 @@ function ReferrerPolicyTestCase(scenario, testDescription, sanityChecker) { var targetPort = portForProtocol[t._scenario.target_protocol]; - t._subresourceUrl = t._scenario.target_protocol + "://" + - domainForOrigin[t._scenario.origin] + - normalizePort(targetPort) + - t._scenario["subresource_path"] + - "?redirection=" + t._scenario["redirection"] + - "&cache_destroyer=" + (new Date()).getTime(); + return t._scenario.target_protocol + "://" + + domainForOrigin[t._scenario.origin] + + normalizePort(targetPort) + + t._scenario["subresource_path"] + + "?redirection=" + t._scenario["redirection"] + + "&cache_destroyer=" + (new Date()).getTime(); }, _constructExpectedReferrerUrl: function() { - t._expectedReferrerUrl = referrerUrlResolver[t._scenario.referrer_url](); + return referrerUrlResolver[t._scenario.referrer_url](); }, - _invokeSubresource: function(callback, test) { + // Returns a promise. + _invokeSubresource: function(resourceRequestUrl) { var invoker = subresourceInvoker[t._scenario.subresource]; // Depending on the delivery method, extend the subresource element with // these attributes. @@ -84,43 +107,35 @@ function ReferrerPolicyTestCase(scenario, testDescription, sanityChecker) { var delivery_method = t._scenario.delivery_method; if (delivery_method in elementAttributesForDeliveryMethod) { - invoker(t._subresourceUrl, - callback, - elementAttributesForDeliveryMethod[delivery_method], - t._scenario.referrer_policy, - test); + return invoker(resourceRequestUrl, + elementAttributesForDeliveryMethod[delivery_method], + t._scenario.referrer_policy); } else { - invoker(t._subresourceUrl, callback, null, t._scenario.referrer_policy, test); + return invoker(resourceRequestUrl, {}, t._scenario.referrer_policy); } - }, start: function() { - async_test(function(test) { - - t._constructSubresourceUrl(); - t._constructExpectedReferrerUrl(); - - t._invokeSubresource(test.step_func(function(result) { - // Check if the result is in valid format. NOOP in release. - sanityChecker.checkSubresourceResult( - test, t._scenario, t._subresourceUrl, result); - - // Check the reported URL. - test.step(function() { - assert_equals(result.referrer, - t._expectedReferrerUrl, - "Reported Referrer URL is '" + - t._scenario.referrer_url + "'."); - assert_equals(result.headers.referer, - t._expectedReferrerUrl, - "Reported Referrer URL from HTTP header is '" + - t._expectedReferrerUrl + "'"); - }, "Reported Referrer URL is as expected: " + t._scenario.referrer_url); - - test.done(); - }), test); - }, t._testDescription); + promise_test(test => { + const resourceRequestUrl = t._constructSubresourceUrl(); + const expectedReferrerUrl = t._constructExpectedReferrerUrl(); + return t._invokeSubresource(resourceRequestUrl) + .then(result => { + // Check if the result is in valid format. NOOP in release. + sanityChecker.checkSubresourceResult( + test, t._scenario, resourceRequestUrl, result); + + // Check the reported URL. + assert_equals(result.referrer, + expectedReferrerUrl, + "Reported Referrer URL is '" + + t._scenario.referrer_url + "'."); + assert_equals(result.headers.referer, + expectedReferrerUrl, + "Reported Referrer URL from HTTP header is '" + + expectedReferrerUrl + "'"); + }); + }, t._testDescription); } } diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html b/tests/wpt/web-platform-tests/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html index 1b2b12bf6910..73b48f1d5c04 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html @@ -8,6 +8,7 @@ +
Running...diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/fetch-messaging.html b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/fetch-messaging.html index edb159d9eb1c..4d40245123ff 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/fetch-messaging.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/fetch-messaging.html @@ -7,6 +7,7 @@ +
Running...diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/image-decoding.html b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/image-decoding.html index 9c50ea661938..b132c06c3f15 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/image-decoding.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/image-decoding.html @@ -7,6 +7,7 @@ +
Running...diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/link-navigate.html b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/link-navigate.html index 95582f65bac8..583458b53594 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/link-navigate.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/link-navigate.html @@ -7,6 +7,7 @@ +
Running...diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/script-messaging.html b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/script-messaging.html index f73f4406df20..7bc36dc7abf0 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/script-messaging.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/script-messaging.html @@ -7,6 +7,7 @@ +
Running...diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/worker-messaging.html b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/worker-messaging.html index fd7591882e91..9daf6d5f9027 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/worker-messaging.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/worker-messaging.html @@ -7,6 +7,7 @@ +
Running...diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/xhr-messaging.html b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/xhr-messaging.html index 6ef4a9cfd4b9..a0208051206a 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/xhr-messaging.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/xhr-messaging.html @@ -7,6 +7,7 @@ +
Running...diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html b/tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html index 475efa550917..40942a8a0358 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html @@ -7,6 +7,7 @@ +
Running...diff --git a/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-ok.tentative.html b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-ok.tentative.html new file mode 100644 index 000000000000..ee9a50966d8f --- /dev/null +++ b/tests/wpt/web-platform-tests/signed-exchange/reporting/sxg-reporting-navigation-ok.tentative.html @@ -0,0 +1,59 @@ + +