diff options
87 files changed, 1441 insertions, 451 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 3aa3d2388ba..a234e25c27b 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -129333,6 +129333,18 @@ {} ] ], + "css/css-position/position-sticky-child-multicolumn.html": [ + [ + "/css/css-position/position-sticky-child-multicolumn.html", + [ + [ + "/css/css-position/position-sticky-child-multicolumn-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-position/position-sticky-flexbox.html": [ [ "/css/css-position/position-sticky-flexbox.html", @@ -171217,6 +171229,18 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html": [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html", + [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-no-principal-box-001.html": [ [ "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-no-principal-box-001.html", @@ -171409,6 +171433,18 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html": [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html", + [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-internal-table-001a.html": [ [ "/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-internal-table-001a.html", @@ -222588,6 +222624,11 @@ {} ] ], + "content-security-policy/navigate-to/support/delayed_frame.py": [ + [ + {} + ] + ], "content-security-policy/navigate-to/support/form_action_navigation.sub.html": [ [ {} @@ -222648,6 +222689,26 @@ {} ] ], + "content-security-policy/navigate-to/support/spv-test-iframe1.sub.html": [ + [ + {} + ] + ], + "content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/navigate-to/support/spv-test-iframe2.sub.html": [ + [ + {} + ] + ], + "content-security-policy/navigate-to/support/spv-test-iframe3.sub.html": [ + [ + {} + ] + ], "content-security-policy/navigate-to/support/wait_for_navigation.html": [ [ {} @@ -262343,6 +262404,11 @@ {} ] ], + "css/css-position/position-sticky-child-multicolumn-ref.html": [ + [ + {} + ] + ], "css/css-position/position-sticky-flexbox-ref.html": [ [ {} @@ -275573,6 +275639,11 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html": [ + [ + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-no-principal-box-002-ref.html": [ [ {} @@ -275638,6 +275709,11 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html": [ + [ + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-internal-table-001-ref.html": [ [ {} @@ -315058,6 +315134,11 @@ {} ] ], + "webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js": [ + [ + {} + ] + ], "webaudio/the-audio-api/the-audioworklet-interface/processors/timing-info-processor.js": [ [ {} @@ -330715,9 +330796,7 @@ "content-security-policy/navigate-to/child-navigates-parent-allowed.html": [ [ "/content-security-policy/navigate-to/child-navigates-parent-allowed.html", - { - "timeout": "long" - } + {} ] ], "content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html": [ @@ -330825,9 +330904,7 @@ "content-security-policy/navigate-to/link-click-allowed.html": [ [ "/content-security-policy/navigate-to/link-click-allowed.html", - { - "timeout": "long" - } + {} ] ], "content-security-policy/navigate-to/link-click-blocked.sub.html": [ @@ -330839,33 +330916,25 @@ "content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html": [ [ "/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html", - { - "timeout": "long" - } + {} ] ], "content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html": [ [ "/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html", - { - "timeout": "long" - } + {} ] ], "content-security-policy/navigate-to/link-click-redirected-allowed.html": [ [ "/content-security-policy/navigate-to/link-click-redirected-allowed.html", - { - "timeout": "long" - } + {} ] ], "content-security-policy/navigate-to/link-click-redirected-blocked.sub.html": [ [ "/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html", - { - "timeout": "long" - } + {} ] ], "content-security-policy/navigate-to/meta-refresh-allowed.html": [ @@ -330916,6 +330985,30 @@ {} ] ], + "content-security-policy/navigate-to/spv-only-sent-to-initiator.html": [ + [ + "/content-security-policy/navigate-to/spv-only-sent-to-initiator.html", + {} + ] + ], + "content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html": [ + [ + "/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html", + {} + ] + ], + "content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html": [ + [ + "/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html", + {} + ] + ], + "content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html": [ + [ + "/content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html", + {} + ] + ], "content-security-policy/navigation/javascript-url-navigation-inherits-csp.html": [ [ "/content-security-policy/navigation/javascript-url-navigation-inherits-csp.html", @@ -398398,6 +398491,12 @@ {} ] ], + "service-workers/service-worker/fetch-audio-tainting.https.html": [ + [ + "/service-workers/service-worker/fetch-audio-tainting.https.html", + {} + ] + ], "service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html": [ [ "/service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html", @@ -404646,6 +404745,12 @@ {} ] ], + "webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html": [ + [ + "/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html", + {} + ] + ], "webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html": [ [ "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html", @@ -463714,7 +463819,7 @@ "support" ], "content-security-policy/navigate-to/child-navigates-parent-allowed.html": [ - "6c05478190f5c33b42ee87fe94d012eacaecb89c", + "7b4b455d8d4e783d6006e58d9423943efa0241df", "testharness" ], "content-security-policy/navigate-to/child-navigates-parent-allowed.html.headers": [ @@ -463722,7 +463827,7 @@ "support" ], "content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html": [ - "2acf417a3b901d6e6cdac4eded279444c6ad0cf4", + "4e50617e3c253eae90e7e4ea5094e4cbca3b5fd0", "testharness" ], "content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html.headers": [ @@ -463730,19 +463835,19 @@ "support" ], "content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html": [ - "452b881829f65ba7f69cd2eb4780b6be802e4dcd", + "458373fbc01591c25a901379282a5370989b5084", "testharness" ], "content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-blocks.html": [ - "44dcc516357ce96d635ec95d3fd515dd4605811f", + "3ed4815bff6c363661ab94bdc1796067870aadab", "testharness" ], "content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.html": [ - "5e6557d9d9bb0a5f64f495b21d30a84763e3495d", + "f3f7896e932aafa137cf11b76c38246a101f4a00", "testharness" ], "content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.html": [ - "9f9c803d53ad05a3c621159e19df762ee2e30a0a", + "08e0cbe3fb9b39f8b4945b422c5e459a2f862fb9", "testharness" ], "content-security-policy/navigate-to/form-allowed.html": [ @@ -463750,7 +463855,7 @@ "testharness" ], "content-security-policy/navigate-to/form-blocked.sub.html": [ - "beb22214faaec7d109b6757ff85cefc846a41fba", + "72db7b8d1d584292ac3eeaef6919229d3cedf369", "testharness" ], "content-security-policy/navigate-to/form-cross-origin-allowed.sub.html": [ @@ -463758,7 +463863,7 @@ "testharness" ], "content-security-policy/navigate-to/form-cross-origin-blocked.sub.html": [ - "49fe958adb771249198f641a926fc0404217e8eb", + "be5f70c8b1e07de9b8d7934d7427cfc445d6226f", "testharness" ], "content-security-policy/navigate-to/form-redirected-allowed.html": [ @@ -463766,7 +463871,7 @@ "testharness" ], "content-security-policy/navigate-to/form-redirected-blocked.sub.html": [ - "6adc9efdaaf827bf2f4ee0e394619c101bdacd50", + "d60b8a7aa8d41d9498a72a60e5d3ae807d31fea2", "testharness" ], "content-security-policy/navigate-to/href-location-allowed.html": [ @@ -463774,7 +463879,7 @@ "testharness" ], "content-security-policy/navigate-to/href-location-blocked.sub.html": [ - "6aef250eeedd1a0163fa32b000ee740e233d0d6c", + "721f055c71507ec85fea9a4d86b107fe0e91d2f7", "testharness" ], "content-security-policy/navigate-to/href-location-cross-origin-allowed.sub.html": [ @@ -463782,7 +463887,7 @@ "testharness" ], "content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html": [ - "894719b3ac869d517b353623127666ae848af044", + "cd0cd9106dbb429e2d8ec4cbbc7c3fcb6c56aa93", "testharness" ], "content-security-policy/navigate-to/href-location-redirected-allowed.html": [ @@ -463790,31 +463895,31 @@ "testharness" ], "content-security-policy/navigate-to/href-location-redirected-blocked.sub.html": [ - "b91c473bef4148bd8943d30fcae56d9f7dfb3df8", + "5d8fafb31313f0ec18306d4ee1c071f278a34272", "testharness" ], "content-security-policy/navigate-to/link-click-allowed.html": [ - "667a3a59f2fafd4022f769a05e7e83d1eddcb4c3", + "977b85dfb2cbaaa4a69288e8d283c483e35eed97", "testharness" ], "content-security-policy/navigate-to/link-click-blocked.sub.html": [ - "0ad98264c9636884ad353efa875110f9c6bea4e0", + "29686fcaeff6b57eca88ccfd599727bd2cc06464", "testharness" ], "content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html": [ - "2f9f0e2af0ce68585a9d0f96d3afc067c5c1a75b", + "4381bcb08d6ed73abf13da54c9ccf583bd5d7523", "testharness" ], "content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html": [ - "970f5a2d3065c66dbc650dcff0de7b1227a8e038", + "f2b106c57730c00b95cbe6cb66582c2d33dcdede", "testharness" ], "content-security-policy/navigate-to/link-click-redirected-allowed.html": [ - "81c4f4e1677f07df0e2ab3187e8b03d5978e74c5", + "87dea95b1dc0b238b8c033b815daba960935f5d8", "testharness" ], "content-security-policy/navigate-to/link-click-redirected-blocked.sub.html": [ - "bb61126244e5602f76d080746302bdfbb32e2ca0", + "9b9205a526a4834e8ba918e86c67710353a4ccd8", "testharness" ], "content-security-policy/navigate-to/meta-refresh-allowed.html": [ @@ -463822,7 +463927,7 @@ "testharness" ], "content-security-policy/navigate-to/meta-refresh-blocked.sub.html": [ - "d4d52a51ccbc959694e738fb7824cc74bddd9ad8", + "1292c9ba5fc0b7bb7383e584296c29c627a87a96", "testharness" ], "content-security-policy/navigate-to/meta-refresh-cross-origin-allowed.sub.html": [ @@ -463830,7 +463935,7 @@ "testharness" ], "content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html": [ - "2118b27ba33c784066faaa5dee114fc455ea7e92", + "d7ccd336205da0087c67bc8cdb778d426f167188", "testharness" ], "content-security-policy/navigate-to/meta-refresh-redirected-allowed.html": [ @@ -463838,11 +463943,11 @@ "testharness" ], "content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html": [ - "55e3295ec1abc57a0ec57076b518b61c094446d3", + "0734473ee6331318a3913e6dd2ba41d52ed2c02c", "testharness" ], "content-security-policy/navigate-to/parent-navigates-child-allowed.html": [ - "e5455ceaa275b0723b90bac2f3fcfe8f37a6591c", + "47a661157c3f9b27184cf6f391bd0c55ecb2cc72", "testharness" ], "content-security-policy/navigate-to/parent-navigates-child-allowed.html.headers": [ @@ -463850,13 +463955,21 @@ "support" ], "content-security-policy/navigate-to/parent-navigates-child-blocked.html": [ - "fc549b47fd8b6e941ab92d4e8a0cca69afe2bd89", + "c662da95fa1b89e13c61c7b65226cb55a15d93e1", "testharness" ], "content-security-policy/navigate-to/parent-navigates-child-blocked.html.sub.headers": [ "6784a56c8eb5e84d9434676d2c335173c7de1970", "support" ], + "content-security-policy/navigate-to/spv-only-sent-to-initiator.html": [ + "a09057e71567efa082578541a624b9fe51e13737", + "testharness" + ], + "content-security-policy/navigate-to/support/delayed_frame.py": [ + "21886c7092a63b77239ba3af92194b5d185ac2d1", + "support" + ], "content-security-policy/navigate-to/support/form_action_navigation.sub.html": [ "3e3e2afcaccec7ea72f0b1b4a7afab46d8900ba3", "support" @@ -463866,7 +463979,7 @@ "support" ], "content-security-policy/navigate-to/support/href_location_navigation.sub.html": [ - "c577e935cd43d558fcdba417606c512fdd79753e", + "15b1365cc21fbccb02fd11c9e46a067a8fa40b6f", "support" ], "content-security-policy/navigate-to/support/href_location_navigation.sub.html.sub.headers": [ @@ -463874,7 +463987,7 @@ "support" ], "content-security-policy/navigate-to/support/link_click_navigation.sub.html": [ - "f1b42428344368f8567bb254e1fe40a7a0f87897", + "2434271211f36a456ea2bf61e717e4233a660bba", "support" ], "content-security-policy/navigate-to/support/link_click_navigation.sub.html.sub.headers": [ @@ -463902,7 +464015,23 @@ "support" ], "content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py": [ - "652f9a57b967c64630bc30203e6370ce43da0745", + "d22e9202a2a57fac314b1fee26a9a88d68db6c26", + "support" + ], + "content-security-policy/navigate-to/support/spv-test-iframe1.sub.html": [ + "9e26c02be3110c19b7b6f69719fc5cd9cfcf2086", + "support" + ], + "content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers": [ + "50d77dc7dbb24583e7e91a4e8e2128e73c69336a", + "support" + ], + "content-security-policy/navigate-to/support/spv-test-iframe2.sub.html": [ + "1329683c88bf584cbc63479f3ba3f6e06281f223", + "support" + ], + "content-security-policy/navigate-to/support/spv-test-iframe3.sub.html": [ + "09dbf6863dc7c8374fc082aa63f36690fe80a4a0", "support" ], "content-security-policy/navigate-to/support/wait_for_navigation.html": [ @@ -463913,6 +464042,18 @@ "d3c635b9a062bba15489562293cf0ebf3d2aa0c1", "support" ], + "content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html": [ + "192477296b61d283d9a229ede466a4ed516e46f3", + "testharness" + ], + "content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html": [ + "74fe8f2e7a673564ebf2502d07ec4136802b1537", + "testharness" + ], + "content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html": [ + "86e54b3d93745d4eb892ba33074f66fa4dfa9bd9", + "testharness" + ], "content-security-policy/navigation/javascript-url-navigation-inherits-csp.html": [ "21c4fb33ce2d66db750d92a892e3871bd5d9b576", "testharness" @@ -553138,7 +553279,7 @@ "support" ], "css/css-paint-api/registered-property-type.https.html": [ - "6ff7ce4e0af6b290ea269573c596caa364a5c1c8", + "8f02008333c9ed50091fb6605c5d4432ff0a87b4", "reftest" ], "css/css-paint-api/resources/html5.png": [ @@ -553301,6 +553442,14 @@ "ba23f0145cf497c4d21b36f387d2017acf45bf34", "testharness" ], + "css/css-position/position-sticky-child-multicolumn-ref.html": [ + "c44f9f43eb51df8a8499a53db3d7c47d76f38829", + "support" + ], + "css/css-position/position-sticky-child-multicolumn.html": [ + "b5b180a4b1b85ee40120c4e2a5b2af8a02529370", + "reftest" + ], "css/css-position/position-sticky-flexbox-ref.html": [ "554ffa6d6bc9a7d76087b45649c1a69824eb2e59", "support" @@ -553582,7 +553731,7 @@ "support" ], "css/css-properties-values-api/typedom.tentative.html": [ - "1d757df168b0db1acfdbd358951b30dbb25d3016", + "6d0623bba420dfe5becafb9eb59cbdf4ad115954", "testharness" ], "css/css-properties-values-api/unit-cycles.html": [ @@ -586133,6 +586282,14 @@ "a8520ee2d1c81d46dac54d8fb4bcb667fa22d40f", "reftest" ], + "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html": [ + "eb787424ed47314b50fa9a47986a68e785d346fa", + "support" + ], + "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html": [ + "d9f976deb8ca604315f105a339de9eac7ee48741", + "reftest" + ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-no-principal-box-001.html": [ "bd2f4cb8178054e0aab0b208610e8a2ba97b1141", "reftest" @@ -586249,6 +586406,14 @@ "d37464228658dbf60e8dfbb59ee86dcd9c9f6ad7", "reftest" ], + "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html": [ + "8a698b9d2ce2deea6b86aa667e53247f57f3d998", + "support" + ], + "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html": [ + "eb21a2d460957cb6fdd887c69dec4f9247bcd951", + "reftest" + ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-internal-table-001-ref.html": [ "d23678941e2f0188a2cadfe06264a98ffd161bcb", "support" @@ -586298,11 +586463,11 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001-ref.html": [ - "b8f983a8153bcbaf5f1de41ca41aba2cca4b9fea", + "7f13a517a6656dbe70957b0a12f3c6688d16c75e", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001.html": [ - "c5bdc6adead0dd31147ded92e3c2cf2db87d86e4", + "20272cff8ff20b4330a8fb987a31ef62a93358c0", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-button-001-ref.html": [ @@ -586314,19 +586479,19 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html": [ - "a7869752692542a724826426f026c32db6f3ae51", + "6a77ee68879cddb13bfd01ac4e9271f341d93e9c", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001.html": [ - "c21e5517225e81b086ea7d24a6e8a40b787a168a", + "8cea7f5a60e71cf598ce5889df3af2dfe78bc329", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002-ref.html": [ - "040da171aaf07aef505d89802ee228c645cd1626", + "31ca88312da778b688138e3313e4bde43ec93554", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html": [ - "18d6ad8c3c692689f30f44e64caaac0ab105ef95", + "67aa64bb271c924dd4e36fcec625053a0c4a7acf", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-flex-001-ref.html": [ @@ -586346,19 +586511,19 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001-ref.html": [ - "56d1cdd8cee77b81d3229e6843b8a646608928ae", + "92a6c7de5ee4fdc19be842955fc413f36097cc4b", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001.html": [ - "48f8bc279a6a43848232fee8dcd8a57a82fedfdd", + "41458550272f896d47e15210c82f4c22d386d9e0", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001-ref.html": [ - "fb013752d058a263474183b7cfb20e7d122a6841", + "93a263b5b2ffc131bdfe4989c3d90c312cadf6e4", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001.html": [ - "e79d0c18599f655d9ed49637fa32158ea31ef530", + "15a2c943bb65e658de58330b4cec76fbdc5294ad", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-001-ref.html": [ @@ -586394,7 +586559,7 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/contain/reftest.list": [ - "6b2e31bcd46c4dd38bbf45f2515a6bdc84128e43", + "6b872e79f2e15cdb55d9a12ea95c5d981e9ed2d0", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/dependent-builtin-ref.html": [ @@ -599454,15 +599619,15 @@ "support" ], "feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ - "c591be46479223b686f8e831c36dfd7b70d62257", + "e2b52f257a12aae267c96eab1a20cc805f007abb", "testharness" ], "feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html": [ - "8a0a4374b2dfed303b112121eb24decfbb9f848e", + "0c3897a4ad0f33c1cffd90f063c9d3425d506bd0", "testharness" ], "feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html": [ - "0f8a0c0665250a659c0452a20f0b60a951346b02", + "1ecd874c009a89241902950ac916b5cac22799eb", "testharness" ], "feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html.headers": [ @@ -599470,11 +599635,11 @@ "support" ], "feature-policy/picture-in-picture-default-feature-policy.https.sub.html": [ - "f47661bd7d50cd6afb66c00dec630c8b2439fed0", + "12bbf7f2f1f80fa28c43c85e028649e3bcedc896", "testharness" ], "feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html": [ - "2f7576b16e1355a3fe7c6e81b385386e83356335", + "b36afbda503f523d7298021ee8ea3f7a2f71a433", "testharness" ], "feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html.headers": [ @@ -599550,7 +599715,7 @@ "support" ], "feature-policy/reporting/picture-in-picture-reporting.html": [ - "a8a998ed2a15af10ffa6dba02273bc8d0b2d5eb4", + "60e4825d988218bda9422ec6342597823aebabef", "testharness" ], "feature-policy/reporting/picture-in-picture-reporting.html.headers": [ @@ -599622,7 +599787,7 @@ "support" ], "feature-policy/resources/feature-policy-picture-in-picture.html": [ - "436682d8754bb5855e1bdee68a9fe5560a7f417d", + "2f33c449536d1b0253a9a1c0b52073bc500121f3", "support" ], "feature-policy/resources/feature-policy-usb-worker.html": [ @@ -599650,7 +599815,7 @@ "support" ], "feature-policy/resources/picture-in-picture.js": [ - "e7aabcd5083355e5fd9b6300c90a7f29d07ba702", + "e245d798acfc2ebbe9e1524ec8413156b8967a84", "support" ], "feature-policy/resources/redirect-on-load.html": [ @@ -623682,7 +623847,7 @@ "manual" ], "mediacapture-streams/MediaStream-MediaElement-srcObject.https.html": [ - "fc2e619a463c6e18433f395090fdb7a42d863cb6", + "4b9a3c8246d04aafff5877fc78001a5f9d00f82d", "testharness" ], "mediacapture-streams/MediaStream-add-audio-track.https.html": [ @@ -634178,47 +634343,47 @@ "support" ], "picture-in-picture/disable-picture-in-picture.html": [ - "efde31bc3a30914d4e2e932a7de3522c105f5d62", + "31e0d12ad770fb9bcc8bbc2f7f86d690efe3c06d", "testharness" ], "picture-in-picture/enter-picture-in-picture.html": [ - "9df2bfabcf272a25a6f5177c128e095f8b970427", + "a9d7b5c04899c72f91c07d614dbf7df3b37757bc", "testharness" ], "picture-in-picture/exit-picture-in-picture.html": [ - "9a5eedd9be8f98e8d0317de7ea2cb644d353f4e1", + "c8d76f5244a41754e4a8a5b0c9fd01d056caee96", "testharness" ], "picture-in-picture/idlharness.window.js": [ - "a7f25e3be588e876168625c254b3d5e4a79ecaba", + "31cd4a14177bccd277023a98ea5956e5f018e2e1", "testharness" ], "picture-in-picture/leave-picture-in-picture.html": [ - "5a5182bf64d7fd6414e1e0b264759f6a53950537", + "04de95e47ecc6373fd45906b28ba88ad46f4fcc8", "testharness" ], "picture-in-picture/picture-in-picture-element.html": [ - "809b3eeabcc30acc48d65e8d63ffcd52bf9a8e95", + "2763eca476d716aeb88bf923f32279a3bc55998a", "testharness" ], "picture-in-picture/picture-in-picture-window.html": [ - "693a13717e2e283e25d1cb338e7310728bbd521b", + "c32787f46f771c7e8d7f689ea328f626dce70908", "testharness" ], "picture-in-picture/request-picture-in-picture-twice.html": [ - "0924ad21a4f5eaad75b43fb19d3ad8eb2bc51e91", + "17e494bbe88b52b68a6e34e5be37a346479087e1", "testharness" ], "picture-in-picture/request-picture-in-picture.html": [ - "403d416c7d454fb0a6a2f8442cc23c53f83212e1", + "37ae94829f3c6590ef61841c070eeffaf28e770a", "testharness" ], "picture-in-picture/resources/picture-in-picture-helpers.js": [ - "55eed5393d62628313a558fab121230705fd85ac", + "96972dcbc8ef07aa7ea0150c4ee645507eea0856", "support" ], "picture-in-picture/shadow-dom.html": [ - "e36acc02193c6ef10daa1ef74a511adffe5515f3", + "17816b93c94b1de504062f934437ecc090213819", "testharness" ], "pointerevents/META.yml": [ @@ -646589,6 +646754,10 @@ "8e790d0ef5ad6d851534362de5647d96699a65f7", "testharness" ], + "service-workers/service-worker/fetch-audio-tainting.https.html": [ + "9821759bc7b311672a54387edc7d8c26a11d5e54", + "testharness" + ], "service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html": [ "213238112257923657fe84a637ddd45cc0c038c5", "testharness" @@ -659178,7 +659347,7 @@ "support" ], "tools/wptrunner/wptrunner/testrunner.py": [ - "46e3ff7926de2f2a2c86c8971e9f5a07f1f33a8a", + "2b7c091c84722c750b46d6143c74c8d329a7fd99", "support" ], "tools/wptrunner/wptrunner/tests/__init__.py": [ @@ -663125,6 +663294,10 @@ "546bd1d0d0e34480113290bcc5008f0240be8d4a", "testharness" ], + "webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html": [ + "8194d1977ad452390efb870197057bcf48fad499", + "testharness" + ], "webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html": [ "d87e35b571d75c0ff595ab023f4a54a420111523", "testharness" @@ -663205,6 +663378,10 @@ "5a8baf03372d25b906948dcdd6c40990eeb860fa", "support" ], + "webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js": [ + "2ccacccd4bb0a4d289ddccd9cafa4e29a0484730", + "support" + ], "webaudio/the-audio-api/the-audioworklet-interface/processors/timing-info-processor.js": [ "714e32dbb5c1d0fbe4d0ff2ae38deaed75b4b96e", "support" 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 98c044f3c1a..97a457d2897 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 @@ -71,3 +71,6 @@ [bottom intermediate] expected: FAIL + [border-bottom-width end] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini index 0d630fb814a..3951cd266d5 100644 --- a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini +++ b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini @@ -1,5 +1,4 @@ [fetch-in-iframe.html] - expected: CRASH [Untitled] 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/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini index 6b57ca778ee..6a2b93b1aa8 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini @@ -5,20 +5,20 @@ expected: TIMEOUT [picture: source (max-width:500px) valid image, img valid image, resize to wide] - expected: TIMEOUT + expected: FAIL [picture: source (max-width:500px) valid image, img broken image, resize to narrow] expected: TIMEOUT [picture: source (max-width:500px) valid image, img valid image, resize to narrow] - expected: FAIL + expected: TIMEOUT - [picture: source (max-width:500px) broken image, img valid image, resize to narrow] + [img (srcset 1 cand) valid image, resize to wide] expected: FAIL - [img (srcset 1 cand) valid image, resize to narrow] + [picture: same URL in source (max-width:500px) and img, resize to wide] expected: FAIL - [picture: same URL in source (max-width:500px) and img, resize to narrow] + [picture: source (max-width:500px) valid image, img broken image, resize to wide] 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 new file mode 100644 index 00000000000..8cc42056d34 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini @@ -0,0 +1,10 @@ +[non-active-document.html] + [DOMParser] + expected: FAIL + + [createHTMLDocument] + expected: FAIL + + [<template>] + expected: FAIL + diff --git a/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini deleted file mode 100644 index c7e9c7434f5..00000000000 --- a/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini +++ /dev/null @@ -1,283 +0,0 @@ -[limited-quirks.html] - [top: -\\31 .5] - expected: FAIL - - [bottom: -1A] - expected: FAIL - - [bottom: -1a] - expected: FAIL - - [top: @1] - expected: FAIL - - [top: "1a"] - expected: FAIL - - [top: @a] - expected: FAIL - - [bottom: "1"] - expected: FAIL - - [bottom: -/**/1] - expected: FAIL - - [top: +/**/1] - expected: FAIL - - [bottom: @1a] - expected: FAIL - - [top: 1\\31 ] - expected: FAIL - - [top: url('1')] - expected: FAIL - - [bottom: -\\31 ] - expected: FAIL - - [top: calc(1)] - expected: FAIL - - [top: \\31 ] - expected: FAIL - - [bottom: +1\\31 ] - expected: FAIL - - [bottom: 1\\31 .5] - expected: FAIL - - [bottom: #0001] - expected: FAIL - - [top: calc(2 * 2px)] - expected: FAIL - - [bottom: 1a] - expected: FAIL - - [bottom: A] - expected: FAIL - - [bottom: #01] - expected: FAIL - - [top: +\\31 .5] - expected: FAIL - - [bottom: #1] - expected: FAIL - - [top: -/**/1] - expected: FAIL - - [bottom: +\\31 .5] - expected: FAIL - - [bottom: \\31 ] - expected: FAIL - - [bottom: calc(1)] - expected: FAIL - - [top: #001] - expected: FAIL - - [top: +\\31 ] - expected: FAIL - - [bottom: +\\31 ] - expected: FAIL - - [top: +1.5] - expected: FAIL - - [top: +1\\31 ] - expected: FAIL - - [bottom: @a] - expected: FAIL - - [bottom: @1] - expected: FAIL - - [top: #1] - expected: FAIL - - [top: 1a] - expected: FAIL - - [bottom: +1a] - expected: FAIL - - [bottom: +1A] - expected: FAIL - - [bottom: "a"] - expected: FAIL - - [top: #00001] - expected: FAIL - - [bottom: -1\\31 .5] - expected: FAIL - - [top: "1"] - expected: FAIL - - [bottom: 1.5] - expected: FAIL - - [bottom: -\\31 .5] - expected: FAIL - - [bottom: url('1')] - expected: FAIL - - [bottom: -1.5] - expected: FAIL - - [top: \\31 .5] - expected: FAIL - - [bottom: "1a"] - expected: FAIL - - [bottom: calc(2 * 2px)] - expected: FAIL - - [bottom: +1\\31 .5] - expected: FAIL - - [bottom: 1\\31 ] - expected: FAIL - - [bottom: +/**/1] - expected: FAIL - - [bottom: #00001] - expected: FAIL - - [top: url(1)] - expected: FAIL - - [bottom: #001] - expected: FAIL - - [top: +1\\31 .5] - expected: FAIL - - [top: -1a] - expected: FAIL - - [top: -1A] - expected: FAIL - - [bottom: url(1)] - expected: FAIL - - [top: a] - expected: FAIL - - [top: A] - expected: FAIL - - [top: #000001] - expected: FAIL - - [top: 1] - expected: FAIL - - [top: 1\\31 .5] - expected: FAIL - - [bottom: a] - expected: FAIL - - [bottom: 1] - expected: FAIL - - [bottom: +1] - expected: FAIL - - [bottom: #000001] - expected: FAIL - - [bottom: +a] - expected: FAIL - - [bottom: +A] - expected: FAIL - - [top: 1.5] - expected: FAIL - - [top: +A] - expected: FAIL - - [top: +a] - expected: FAIL - - [top: +1] - expected: FAIL - - [top: -1.5] - expected: FAIL - - [top: -1\\31 .5] - expected: FAIL - - [top: +1a] - expected: FAIL - - [top: +1A] - expected: FAIL - - [top: @1a] - expected: FAIL - - [bottom: \\31 .5] - expected: FAIL - - [top: "a"] - expected: FAIL - - [top: #01] - expected: FAIL - - [bottom: +1.5] - expected: FAIL - - [bottom: -A] - expected: FAIL - - [bottom: -a] - expected: FAIL - - [bottom: -1\\31 ] - expected: FAIL - - [top: #0001] - expected: FAIL - - [bottom: -1] - expected: FAIL - - [top: -\\31 ] - expected: FAIL - - [top: -A] - expected: FAIL - - [top: -a] - expected: FAIL - - [top: -1] - expected: FAIL - - [top: -1\\31 ] - expected: FAIL - diff --git a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini index 29123761468..8408c819fd6 100644 --- a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini +++ b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini @@ -1,10 +1,4 @@ [urlencoded-parser.any.html] - [response.formData() with input: _charset_=windows-1252&test=%C2x] - expected: FAIL - - [request.formData() with input: _charset_=windows-1252&test=%C2x] - expected: FAIL - [request.formData() with input: &&&a=b&&&&c=d&] expected: FAIL @@ -17,17 +11,11 @@ [response.formData() with input: a=b&c=d&] expected: FAIL - [request.formData() with input: a=b&c=d] - expected: FAIL - [urlencoded-parser.any.worker.html] [request.formData() with input: a&b&c] expected: FAIL - [request.formData() with input: a=b&c=d&] - expected: FAIL - [response.formData() with input: a&b&c] expected: FAIL @@ -40,6 +28,3 @@ [request.formData() with input: a=b&c=d] expected: FAIL - [response.formData() with input: _charset_=windows-1252&test=%C2x] - expected: FAIL - diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html.ini new file mode 100644 index 00000000000..476a2e87036 --- /dev/null +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html.ini @@ -0,0 +1,4 @@ +[audioworklet-postmessage-sharedarraybuffer.https.html] + [\n Test passing SharedArrayBuffer to an AudioWorklet\n ] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html index 6c05478190f..7b4b455d8d4 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html @@ -1,14 +1,13 @@ <!DOCTYPE html> <head> -<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> </head> <body> <script> - var t = async_test("Test that the child can navigate the parent because the relevant policy belongs to the navigation initiator (in this case the child)"); + var t = async_test("Test that the child can navigate the parent because the relevant policy belongs to the navigation initiator (in this case the child, which has the policy `navigate-to 'self'`)"); window.onmessage = t.step_func_done(function(e) { assert_equals(e.data.result, 'success'); }); diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html index 2acf417a3b9..4e50617e3c2 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html @@ -6,7 +6,14 @@ </head> <body> +<script> + var t = async_test("Test that the child can't navigate the parent because the relevant policy belongs to the navigation initiator (in this case the child which has the policy `navigate-to 'none'`)"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); +</script> <iframe srcdoc="<iframe src='support/navigate_parent.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}'>"></iframe> <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27none%27&reportID={{$id}}'></script> -</body>
\ No newline at end of file +</body> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html index 452b881829f..458373fbc01 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html @@ -12,5 +12,5 @@ assert_equals(e.data.result, 'success'); }); </script> -<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27%3B%20form-action%20%27self%27%3B&action=post_message_to_frame_owner.html"> +<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27%3B%20form-action%20%27self%27%3B&action=post_message_to_frame_owner.html&report_id=dummy"> </body>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-blocks.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-blocks.html index 44dcc516357..3ed4815bff6 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-blocks.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-blocks.html @@ -12,5 +12,5 @@ assert_equals(e.data.result, 'success'); }); </script> -<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27%3B%20form-action%20%27self%27%3B&action=post_message_to_frame_owner.html"> +<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27%3B%20form-action%20%27self%27%3B&action=post_message_to_frame_owner.html&report_id=dummy"> </body>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.html index 5e6557d9d9b..f3f7896e932 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-allows.html @@ -13,5 +13,5 @@ assert_equals(e.data.violatedDirective, 'form-action'); }); </script> -<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27%3B%20form-action%20%27none%27%3B&action=post_message_to_frame_owner.html"> +<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27%3B%20form-action%20%27none%27%3B&action=post_message_to_frame_owner.html&report_id=dummy"> </body>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.html index 9f9c803d53a..08e0cbe3fb9 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-action/form-action-blocks-navigate-to-blocks.html @@ -13,5 +13,5 @@ assert_equals(e.data.violatedDirective, 'form-action'); }); </script> -<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27%3B%20form-action%20%27none%27%3B&action=post_message_to_frame_owner.html"> +<iframe src="../support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27%3B%20form-action%20%27none%27%3B&action=post_message_to_frame_owner.html&report_id=dummy"> </body>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-blocked.sub.html index beb22214faa..72db7b8d1d5 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-blocked.sub.html @@ -6,6 +6,13 @@ </head> <body> +<script> + var t = async_test("Test that the child iframe navigation is not allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); +</script> <iframe src="support/form_action_navigation.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}&action=post_message_to_frame_owner.html"></iframe> <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27none%27&reportID={{$id}}'></script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-cross-origin-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-cross-origin-blocked.sub.html index 49fe958adb7..be5f70c8b1e 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-cross-origin-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-cross-origin-blocked.sub.html @@ -6,6 +6,13 @@ </head> <body> +<script> + var t = async_test("Test that the child iframe navigation is not allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); +</script> <iframe src="support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&action=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe> <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-redirected-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-redirected-blocked.sub.html index 6adc9efdaaf..d60b8a7aa8d 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-redirected-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/form-redirected-blocked.sub.html @@ -6,6 +6,14 @@ </head> <body> +<script> + var t = async_test("Test that the child iframe navigation is not allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); +</script> + <iframe src="support/form_action_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&action=redirect_to_post_message_to_frame_owner.py%3Flocation%3Dhttp%3A%2F%2F{{domains[www1]}}%3A{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe> <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-blocked.sub.html index 6aef250eeed..721f055c715 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-blocked.sub.html @@ -7,6 +7,12 @@ <body> <script> + var t = async_test("Test that the child iframe navigation is not allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); + window.open("support/href_location_navigation.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}&target=post_message_to_frame_owner.html", "_blank"); </script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html index 894719b3ac8..cd0cd9106db 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html @@ -7,6 +7,12 @@ <body> <script> + var t = async_test("Test that the child iframe navigation is not allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); + window.open("support/href_location_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html", "_blank"); </script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-redirected-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-redirected-blocked.sub.html index b91c473bef4..5d8fafb3131 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-redirected-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/href-location-redirected-blocked.sub.html @@ -7,6 +7,12 @@ <body> <script> + var t = async_test("Test that the child iframe navigation is not allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); + window.open("support/href_location_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=redirect_to_post_message_to_frame_owner.py%3Flocation%3Dhttp%3A%2F%2F{{domains[www1]}}%3A{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html", "_blank"); </script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html index 667a3a59f2f..977b85dfb2c 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html @@ -1,7 +1,6 @@ <!DOCTYPE html> <head> -<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> </head> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.sub.html index 0ad98264c96..29686fcaeff 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.sub.html @@ -6,7 +6,14 @@ </head> <body> +<script> + var t = async_test("Test that the child iframe navigation is not allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); +</script> <iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}&target=post_message_to_frame_owner.html"></iframe> -<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27none%27&reportID={{$id}}'></script> +<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script> </body>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html index 2f9f0e2af0c..4381bcb08d6 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html @@ -1,7 +1,6 @@ <!DOCTYPE html> <head> -<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> </head> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html index 970f5a2d306..f2b106c5773 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html @@ -1,12 +1,19 @@ <!DOCTYPE html> <head> -<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> </head> <body> +<script> + var t = async_test("Test that the child iframe navigation is not allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); +</script> + <iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe> <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html index 81c4f4e1677..87dea95b1dc 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html @@ -1,7 +1,6 @@ <!DOCTYPE html> <head> -<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> </head> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html index bb61126244e..9b9205a526a 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html @@ -1,12 +1,18 @@ <!DOCTYPE html> <head> -<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> </head> <body> +<script> + var t = async_test("Test that the child iframe navigation is not allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); +</script> <iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=redirect_to_post_message_to_frame_owner.py%3Flocation%3Dhttp%3A%2F%2F{{domains[www1]}}%3A{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe> <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-blocked.sub.html index d4d52a51ccb..1292c9ba5fc 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-blocked.sub.html @@ -6,6 +6,14 @@ </head> <body> +<script> + var t = async_test("Test that the child iframe navigation is not allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); +</script> + <iframe src="support/meta_refresh_navigation.sub.html?csp=navigate-to%20%27none%27&report_id={{$id:uuid()}}&target=post_message_to_frame_owner.html"></iframe> <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27none%27&reportID={{$id}}'></script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html index 2118b27ba33..d7ccd336205 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html @@ -6,6 +6,14 @@ </head> <body> +<script> + var t = async_test("Test that the child iframe navigation is not allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); +</script> + <iframe src="support/meta_refresh_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe> <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html index 55e3295ec1a..0734473ee63 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html @@ -6,6 +6,14 @@ </head> <body> +<script> + var t = async_test("Test that the child iframe navigation is not allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); +</script> + <iframe src="support/meta_refresh_navigation.sub.html?csp=navigate-to%20%27self%27&report_id={{$id:uuid()}}&target=redirect_to_post_message_to_frame_owner.py%3Flocation%3Dhttp%3A%2F%2F{{domains[www1]}}%3A{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html"></iframe> <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20%27self%27&reportID={{$id}}'></script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-allowed.html index e5455ceaa27..47a661157c3 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-allowed.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-allowed.html @@ -7,7 +7,7 @@ <body> <script> - var t = async_test("Test that the parent can navigate the child because the relevant policy belongs to the navigation initiator (in this case the parent)"); + var t = async_test("Test that the parent can navigate the child because the relevant policy belongs to the navigation initiator (in this case the parent, which has the policy `navigate-to 'self'`)"); window.onmessage = t.step_func_done(function(e) { assert_equals(e.data.result, 'success'); }); @@ -23,4 +23,4 @@ i.src = "support/wait_for_navigation.html?csp=navigate-to%20%none%27"; document.body.appendChild(i); </script> -</body>
\ No newline at end of file +</body> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-blocked.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-blocked.html index fc549b47fd8..c662da95fa1 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-blocked.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/parent-navigates-child-blocked.html @@ -7,6 +7,12 @@ <body> <script> + var t = async_test("Test that the parent can't navigate the child because the relevant policy belongs to the navigation initiator (in this case the parent, which has the policy `navigate-to support/wait_for_navigation.html;`)"); + window.onmessage = t.unreached_func("Should not have received a message as the navigation should not have been successful"); + window.addEventListener('securitypolicyviolation', t.step_func_done(function(e) { + assert_equals(e.violatedDirective, 'navigate-to'); + })); + var i = document.createElement('iframe'); var src_changed = false; i.onload = function() { @@ -17,5 +23,6 @@ i.src = "support/wait_for_navigation.html?csp=navigate-to%20%27self%27"; document.body.appendChild(i); </script> + <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=navigate-to%20support%2Fwait_for_navigation.html'></script> -</body>
\ No newline at end of file +</body> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/spv-only-sent-to-initiator.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/spv-only-sent-to-initiator.html new file mode 100644 index 00000000000..a09057e7156 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/spv-only-sent-to-initiator.html @@ -0,0 +1,48 @@ +<!DOCTYPE html> + +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +</head> +<body> +<!-- This tests that a navigation initiator that has been replaced by the time + the navigation it initiates is blocked, will not receive the SPV event. + + An iframe will navigate another iframe and the navigate itself. + The second iframe's navigation response will be delayed by the server but will + eventually be blocked by the CSP of the first iframe. + By the time this happens the first iframe should be an entirely different + document and it should not receive a SPV event --> +<script> + var t = async_test("Test that no spv event is raised"); + window.onmessage = t.step_func(function(e) { + if (e.data == "end_test") t.done(); + else assert_unreached("Should not have raised a spv event"); + }); + + var frames_loaded_count = 0; + var frame_loaded = function() { + if (++frames_loaded_count == 2) { + // both child frame have loaded we can start the + // test now, send a message to iframe1 so it knows to start + document.getElementById('iframe1').contentWindow.postMessage('start_test', '*'); + } + } + var i1 = document.createElement('iframe'); + i1.src = "support/spv-test-iframe1.sub.html?report_id={{$id:uuid()}}"; + i1.id = "iframe1"; + i1.name = "iframe1"; + i1.onload = frame_loaded; + document.body.appendChild(i1); + + var i2 = document.createElement('iframe'); + i2.src = "support/spv-test-iframe2.sub.html"; + i2.id = "iframe2"; + i2.name = "iframe2"; + i2.onload = frame_loaded; + document.body.appendChild(i2); +</script> + +<script async defer src='../support/checkReport.sub.js?reportExists=false&reportID={{$id}}'></script> + +</body> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/delayed_frame.py b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/delayed_frame.py new file mode 100644 index 00000000000..21886c7092a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/delayed_frame.py @@ -0,0 +1,12 @@ +import time +def main(request, response): + time.sleep(1) + headers = [("Content-Type", "text/html")] + return headers, ''' +<!DOCTYPE html> +<head> +</head> +<body> + DELAYED FRAME +</body +''' diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/href_location_navigation.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/href_location_navigation.sub.html index c577e935cd4..15b1365cc21 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/href_location_navigation.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/href_location_navigation.sub.html @@ -6,6 +6,10 @@ <body> <script> + window.addEventListener('securitypolicyviolation', function(e) { + opener.postMessage({result: 'fail', violatedDirective: e.violatedDirective}, '*'); + }); + try { location.href = "{{GET[target]}}"; } catch(ex) {} diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/link_click_navigation.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/link_click_navigation.sub.html index f1b42428344..2434271211f 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/link_click_navigation.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/link_click_navigation.sub.html @@ -7,6 +7,10 @@ <body> <a href="{{GET[target]}}" id="link">dummy link</a> <script> + window.addEventListener('securitypolicyviolation', function(e) { + top.postMessage({result: 'fail', violatedDirective: e.violatedDirective}, '*'); + }); + document.getElementById('link').click(); </script> </body>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py index 652f9a57b96..d22e9202a2a 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py @@ -3,4 +3,4 @@ def main(request, response): if "location" in request.GET: response.headers.set("Location", request.GET["location"]) else: - response.headers.set("Location", "post_message_to_frame_owner.html")
\ No newline at end of file + response.headers.set("Location", "post_message_to_frame_owner.html") diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html new file mode 100644 index 00000000000..9e26c02be31 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<head> + <script> + window.onmessage = function(e) { + if (e.data == "start_test") { + document.getElementById('link').click(); + location.href = "{{location[server]}}/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html"; + } + } + window.addEventListener('securitypolicyviolation', function(e) { + top.postMessage({iframe: 'iframe1', violatedDirective: e.violatedDirective}, '*'); + }); + </script> +</head> + +<body> + <a href="{{location[server]}}/content-security-policy/navigate-to/support/delayed_frame.py" id="link" target="iframe2">dummy link</a> + IFRAME 1 +</body> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers new file mode 100644 index 00000000000..50d77dc7dbb --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe1.sub.html.sub.headers @@ -0,0 +1,4 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Pragma: no-cache +Content-Security-Policy: navigate-to {{location[server]}}/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html 'unsafe-allow-redirects'; report-uri /content-security-policy/support/report.py?op=put&reportID={{GET[report_id]}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe2.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe2.sub.html new file mode 100644 index 00000000000..1329683c88b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe2.sub.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<head> +</head> +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + top.postMessage({iframe: 'iframe1', violatedDirective: e.violatedDirective}, '*'); + }); + setTimeout(function() { + top.postMessage("end_test", "*"); + }, 4000); + </script> + IFRAME 2 +</body> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html new file mode 100644 index 00000000000..09dbf6863dc --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/support/spv-test-iframe3.sub.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<head> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + top.postMessage({iframe: 'iframe3', violatedDirective: e.violatedDirective}, '*'); + }); + </script> +</head> + +<body> + IFRAME 3 +</body> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html new file mode 100644 index 00000000000..192477296b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain-because-of-same-origin.sub.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> + +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +</head> + +<body> +<script> + var t = async_test("Test that the child iframe navigation is allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'success'); + }); + + // the iframe will navigate to: + // [www2]/..../redirect.py (which is not in the navigate-to source list) which will in turn navigate to + // [www1]/..../post_message_to_frame_owner.html which is not exactly in + // the list but the check should be reduced to an origin check since there has been a redirect. + // Because of 'unsafe-allow-redirects' only the second one is checked since the first is a redirect + + var i = document.createElement('iframe'); + i.src = "../support/link_click_navigation.sub.html" + + "?csp=" + encodeURIComponent("navigate-to {{location[scheme]}}://{{domains[www1]}}:{{location[port]}}/some-path/ 'unsafe-allow-redirects'") + + "&target=" + encodeURIComponent("{{location[scheme]}}://{{domains[www2]}}:{{location[port]}}/common/redirect.py?location=" + + encodeURIComponent("{{location[scheme]}}://{{domains[www1]}}:{{location[port]}}/content-security-policy/navigate-to/support/post_message_to_frame_owner.html")); + document.body.appendChild(i); +</script> + +</body> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html new file mode 100644 index 00000000000..74fe8f2e7a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/allowed-end-of-chain.sub.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> + +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +</head> + +<body> +<script> + var t = async_test("Test that the child iframe navigation is allowed"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'success'); + }); + + // the iframe will navigate to: + // [www2]/..../redirect.py (which is not in the navigate-to source list) which will in turn navigate to + // [www1]/..../post_message_to_frame_owner.html which is in the list + // because of 'unsafe-allow-redirects' only the second one is checked since the first is a redirect + + var i = document.createElement('iframe'); + i.src = "../support/link_click_navigation.sub.html" + + "?csp=" + encodeURIComponent("navigate-to {{location[scheme]}}://{{domains[www1]}}:{{location[port]}} 'unsafe-allow-redirects'") + + "&target=" + encodeURIComponent("{{location[scheme]}}://{{domains[www2]}}:{{location[port]}}/common/redirect.py?location=" + + encodeURIComponent("{{location[scheme]}}://{{domains[www1]}}:{{location[port]}}/content-security-policy/navigate-to/support/post_message_to_frame_owner.html")); + document.body.appendChild(i); +</script> + +</body> diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html new file mode 100644 index 00000000000..86e54b3d937 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> + +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +</head> + +<body> +<script> + var t = async_test("Test that the child iframe navigation is blocked"); + window.onmessage = t.step_func_done(function(e) { + assert_equals(e.data.result, 'fail'); + assert_equals(e.data.violatedDirective, 'navigate-to'); + }); + + // the iframe will navigate to: + // [www2]/..../redirect.py (which is not in the navigate-to source list) which will in turn navigate to + // [www2]/..../post_message_to_frame_owner.html which is also not in the list + // because of 'unsafe-allow-redirects' only the second one is checked since the first is a redirect + + var i = document.createElement('iframe'); + i.src = "../support/link_click_navigation.sub.html" + + "?csp=" + encodeURIComponent("navigate-to {{location[scheme]}}://{{domains[www1]}}:{{location[port]}} 'unsafe-allow-redirects'") + + "&target=" + encodeURIComponent("{{location[scheme]}}://{{domains[www2]}}:{{location[port]}}/common/redirect.py?location=" + + encodeURIComponent("{{location[scheme]}}://{{domains[www2]}}:{{location[port]}}/content-security-policy/navigate-to/support/post_message_to_frame_owner.html")); + document.body.appendChild(i); +</script> + +</body> diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-type.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-type.https.html index 6ff7ce4e0af..8f02008333c 100644 --- a/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-type.https.html +++ b/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-type.https.html @@ -27,16 +27,42 @@ paint(ctx, geom, styleMap) { ctx.strokeStyle = 'green'; for (let prop of props) { - let first = styleMap.get(prop.name); - let all = styleMap.getAll(prop.name); + // Read values using get, getAll and iterator: + let valueFromGet = styleMap.get(prop.name); + let valueFromGetAll = styleMap.getAll(prop.name); + let valueFromIterator = Array.from(styleMap).filter(e => e[0] == prop.name)[0][1]; + + // Serialize 'actual'-values for all three cases: let serialize = v => v.constructor.name + '=' + v.toString() - let actual = all.map(serialize).join(','); - let expected = prop.expected.join(','); - let pass = actual === expected - && serialize(first) === prop.expected[0]; + let actualFromGet = serialize(valueFromGet); + let actualFromGetAll = valueFromGetAll.map(serialize).join(','); + let actualFromIterator = valueFromIterator.map(serialize).join(','); + + // Create 'expected'-values for all three cases: + let expectedForGet = prop.expected[0]; + let expectedForGetAll = prop.expected.join(','); + let expectedForIterator = expectedForGetAll; + + let pass = true; + + // Assertions: + if (actualFromGet !== expectedForGet) { + debugLog(`FAIL: StylePropertyMap.get: actual: ${actualFromGet} expected: ${expectedForGet}`); + pass = false; + } + if (actualFromGetAll !== expectedForGetAll) { + debugLog(`FAIL: StylePropertyMap.getAll: actual: ${actualFromGetAll} expected: ${expectedForGetAll}`); + pass = false; + } + if (actualFromIterator !== expectedForIterator) { + debugLog(`FAIL: StylePropertyMap iterator: actual: ${actualFromIterator} expected: ${expectedForIterator}`); + pass = false; + } + if (!pass) ctx.strokeStyle = 'red'; - debugLog(pass ? 'PASS' : 'FAIL', prop.syntax, actual, expected); + else + debugLog('PASS', prop.syntax, actualFromGetAll, expectedForGetAll); } ctx.lineWidth = 4; ctx.strokeRect(0, 0, geom.width, geom.height); diff --git a/tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn-ref.html b/tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn-ref.html new file mode 100644 index 00000000000..c44f9f43eb5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn-ref.html @@ -0,0 +1,50 @@ +<!DOCTYPE html> +<title>Reference for multicolumn under position:sticky should be positioned correctly</title> +<style> + body { + margin: 0; + } + #scroller { + overflow-y: scroll; + width: 200px; + height: 200px; + } + #relative { + position: relative; + top: 100px; + margin: 10px; + } + #child { + width: 100px; + height: 100px; + background: green; + } + #contents { + position: relative; + top: 10%; + left: 10%; + width: 80%; + height: 80%; + background: lightgreen; + } + #spacer { + height: 400px; + } +</style> + +<div id="scroller"> + <div id="relative"> + <div id="child"> + <div id="contents"></div> + </div> + </div> + <div id="spacer"></div> +</div> + +<div>You should see a light green box above with a dark green border.</div> + +<script> + window.addEventListener('load', function() { + scroller.scrollTop = 100; + }); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn.html b/tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn.html new file mode 100644 index 00000000000..b5b180a4b1b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-sticky-child-multicolumn.html @@ -0,0 +1,55 @@ +<!DOCTYPE html> +<title>Multicolumn under position:sticky should be positioned correctly</title> +<link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" /> +<link rel="match" href="position-sticky-child-multicolumn-ref.html" /> +<link rel="author" title="Philip Rogers" href="mailto:pdr@chromium.org" /> +<meta name="assert" content="This test checks that a multicolumn element is positioned relative to a sticky position" /> + +<style> + body { + margin: 0; + } + #scroller { + overflow-y: scroll; + width: 200px; + height: 200px; + } + #sticky { + position: sticky; + top: 10px; + margin: 10px; + } + #multicolumn { + width: 100px; + height: 100px; + background: green; + columns: 1; + } + #contents { + margin-left: 10%; + margin-top: 10%; + width: 80%; + height: 80%; + background: lightgreen; + } + #spacer { + height: 400px; + } +</style> + +<div id="scroller"> + <div id="sticky"> + <div id="multicolumn"> + <div id="contents"></div> + </div> + </div> + <div id="spacer"></div> +</div> + +<div>You should see a light green box above with a dark green border.</div> + +<script> + window.addEventListener('load', function() { + scroller.scrollTop = 100; + }); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/typedom.tentative.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/typedom.tentative.html index 1d757df168b..6d0623bba42 100644 --- a/tests/wpt/web-platform-tests/css/css-properties-values-api/typedom.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/typedom.tentative.html @@ -33,6 +33,13 @@ function gen_prop(syntax, initialValue) { return name; } +// Cleans style rules used for testing between every test. +add_result_callback(function(){ + target.attributeStyleMap.clear(); + // Clears 'div' rule in #style: + style.sheet.rules[0].styleMap.clear(); +}); + // On the target element, verify that computed value of 'name' is an instance // of 'expected' and not an instance of CSSUnparsedValue. // @@ -594,4 +601,124 @@ test(function(){ } }, 'Direct CSSStyleValue instances are tied to their associated property'); +// StylePropertyMapReadOnly iteration + +test(function(){ + let name = gen_prop('<length>', '10px'); + let result = Array.from(target.computedStyleMap()).filter(e => e[0] == name)[0]; + assert_true(typeof(result) !== 'undefined'); +}, 'Registered property with initial value show up on iteration of computedStyleMap'); + +// Verifies that iterating a StylePropertyMap[ReadOnly] yields correctly +// typed objects for a given syntax/value. +function test_iteration_type_for_property_map(propertyMapName, propertyMap, options) { + test(function(){ + let name = gen_prop(options.syntax, options.initialValue); + if (propertyMap instanceof StylePropertyMap) { + // Only set the value if the propertyMap is mutable. + propertyMap.set(name, options.value); + } + let result = Array.from(propertyMap).filter(e => e[0] == name)[0]; + let value = result[1]; + assert_true(options.expect(value)); + }, `Iteration on ${propertyMapName} produces correct type for ${options.syntax}`); +} + +function test_iteration_type(options) { + test_iteration_type_for_property_map('computedStyleMap', target.computedStyleMap(), options); + test_iteration_type_for_property_map('attributeStyleMap', target.attributeStyleMap, options); + test_iteration_type_for_property_map('styleMap', style.sheet.rules[0].styleMap, options); +} + +test_iteration_type({ + syntax: '*', + initialValue: 'none', + value: 'thing', + expect: v => v.length == 1 && v[0] instanceof CSSUnparsedValue, +}); + +test_iteration_type({ + syntax: '<angle>', + initialValue: '0deg', + value: '42deg', + expect: v => v.length == 1 && v[0] instanceof CSSUnitValue, +}); + +test_iteration_type({ + syntax: '<custom-ident>', + initialValue: 'none', + value: 'thing', + expect: v => v.length == 1 && v[0] instanceof CSSKeywordValue, +}); + +test_iteration_type({ + syntax: '<image>', + initialValue: 'url(a)', + value: 'url(b)', + expect: v => v.length == 1 && v[0] instanceof CSSImageValue, +}); + +test_iteration_type({ + syntax: '<integer>', + initialValue: '0', + value: '100', + expect: v => v.length == 1 && v[0] instanceof CSSUnitValue, +}); + +test_iteration_type({ + syntax: '<length>', + initialValue: '0px', + value: '10px', + expect: v => v.length == 1 && v[0] instanceof CSSUnitValue, +}); + +test_iteration_type({ + syntax: '<number>', + initialValue: '0', + value: '42', + expect: v => v.length == 1 && v[0] instanceof CSSUnitValue, +}); + +test_iteration_type({ + syntax: '<percentage>', + initialValue: '0%', + value: '10%', + expect: v => v.length == 1 && v[0] instanceof CSSUnitValue, +}); + +test_iteration_type({ + syntax: '<resolution>', + initialValue: '0dpi', + value: '300dpi', + expect: v => v.length == 1 && v[0] instanceof CSSUnitValue, +}); + +test_iteration_type({ + syntax: '<time>', + initialValue: '0s', + value: '10s', + expect: v => v.length == 1 && v[0] instanceof CSSUnitValue, +}); + +test_iteration_type({ + syntax: '<url>', + initialValue: 'url(a)', + value: 'url(b)', + expect: v => v.length == 1 && v[0].constructor === CSSStyleValue, +}); + +test_iteration_type({ + syntax: 'none | thing | THING', + initialValue: 'none', + value: 'THING', + expect: v => v.length == 1 && v[0] instanceof CSSKeywordValue, +}); + +test_iteration_type({ + syntax: '<angle> | <length>', + initialValue: '0deg', + value: '10px', + expect: v => v.length == 1 && v[0] instanceof CSSUnitValue, +}); + </script> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html new file mode 100644 index 00000000000..eb787424ed4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001-ref.html @@ -0,0 +1,76 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>CSS Reftest Reference</title> + <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"> + <style> + .abspos-box { + position: absolute; + width: 200px; + height: 200px; + } + + /* The boxes should stack in the order that I've listed their CSS classes + here. The class names' first word (outside/before/inside/after) refers + to the boxes' DOM position, and "background"/"midground"/"foreground" + refers to their z-index values. */ + + .before-IB-background { + background: darkmagenta; + z-index: -1; + top: 50px; + left: 50px; + } + .after-IB-background { + background: magenta; + z-index: -1; + top: 70px; + left: 70px; + } + .outside-span-midground { + background: darkkhaki; + top: 90px; + left: 90px; + } + .inside-IB-midground { + background: khaki; + top: 110px; + left: 110px; + } + .before-IB-foreground { + background: darkcyan; + z-index: 1; + top: 130px; + left: 130px; + } + .after-IB-foreground { + background: cyan; + z-index: 1; + top: 150px; + left: 150px; + } + </style> +</head> +<body> + <!-- The expectation here is that 'abspos-box' elements will all interact in + the same top-level stacking context. That means the box ordering should + be (back to front): darkmagenta/magenta/darkkhaki/khaki/darkcyan/cyan, + with the boxes stacked (visually) from top-left to bottom-right. --> + + <div class="abspos-box outside-span-midground"></div> + + <!-- Note: this file is identical to the testcase, + except for the lack of "contain: layout" on this span. --> + <span> + <div class="abspos-box before-IB-background"></div> + <div class="abspos-box before-IB-foreground"></div> + <!-- This unstyled div crates the IB split: --> + <div> + <div class="abspos-box inside-IB-midground"></div> + </div> + <div class="abspos-box after-IB-background"></div> + <div class="abspos-box after-IB-foreground"></div> + </span> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html new file mode 100644 index 00000000000..d9f976deb8c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-layout-ignored-cases-ib-split-001.html @@ -0,0 +1,77 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>CSS Test: 'contain: layout' should have no effect on non-atomic inline + (including its block part, if there's a block-in-inline split)</title> + <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"> + <link rel="help" href="https://drafts.csswg.org/css-contain/#containment-layout"> + <link rel="match" href="contain-layout-ignored-cases-ib-split-001-ref.html"> + <style> + .abspos-box { + position: absolute; + width: 200px; + height: 200px; + } + + /* The boxes should stack in the order that I've listed their CSS classes + here. The class names' first word (outside/before/inside/after) refers + to the boxes' DOM position, and "background"/"midground"/"foreground" + refers to their z-index values. */ + + .before-IB-background { + background: darkmagenta; + z-index: -1; + top: 50px; + left: 50px; + } + .after-IB-background { + background: magenta; + z-index: -1; + top: 70px; + left: 70px; + } + .outside-span-midground { + background: darkkhaki; + top: 90px; + left: 90px; + } + .inside-IB-midground { + background: khaki; + top: 110px; + left: 110px; + } + .before-IB-foreground { + background: darkcyan; + z-index: 1; + top: 130px; + left: 130px; + } + .after-IB-foreground { + background: cyan; + z-index: 1; + top: 150px; + left: 150px; + } + </style> +</head> +<body> + <!-- The expectation here is that 'abspos-box' elements will all interact in + the same top-level stacking context. That means the box ordering should + be (back to front): darkmagenta/magenta/darkkhaki/khaki/darkcyan/cyan, + with the boxes stacked (visually) from top-left to bottom-right. --> + + <div class="abspos-box outside-span-midground"></div> + + <span style="contain: layout"> + <div class="abspos-box before-IB-background"></div> + <div class="abspos-box before-IB-foreground"></div> + <!-- This unstyled div crates the IB split: --> + <div> + <div class="abspos-box inside-IB-midground"></div> + </div> + <div class="abspos-box after-IB-background"></div> + <div class="abspos-box after-IB-foreground"></div> + </span> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html new file mode 100644 index 00000000000..8a698b9d2ce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001-ref.html @@ -0,0 +1,76 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>CSS Reftest Reference</title> + <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"> + <style> + .abspos-box { + position: absolute; + width: 200px; + height: 200px; + } + + /* The boxes should stack in the order that I've listed their CSS classes + here. The class names' first word (outside/before/inside/after) refers + to the boxes' DOM position, and "background"/"midground"/"foreground" + refers to their z-index values. */ + + .before-IB-background { + background: darkmagenta; + z-index: -1; + top: 50px; + left: 50px; + } + .after-IB-background { + background: magenta; + z-index: -1; + top: 70px; + left: 70px; + } + .outside-span-midground { + background: darkkhaki; + top: 90px; + left: 90px; + } + .inside-IB-midground { + background: khaki; + top: 110px; + left: 110px; + } + .before-IB-foreground { + background: darkcyan; + z-index: 1; + top: 130px; + left: 130px; + } + .after-IB-foreground { + background: cyan; + z-index: 1; + top: 150px; + left: 150px; + } + </style> +</head> +<body> + <!-- The expectation here is that 'abspos-box' elements will all interact in + the same top-level stacking context. That means the box ordering should + be (back to front): darkmagenta/magenta/darkkhaki/khaki/darkcyan/cyan, + with the boxes stacked (visually) from top-left to bottom-right. --> + + <div class="abspos-box outside-span-midground"></div> + + <!-- Note: this file is identical to the testcase, + except for the lack of "contain: paint" on this span. --> + <span> + <div class="abspos-box before-IB-background"></div> + <div class="abspos-box before-IB-foreground"></div> + <!-- This unstyled div crates the IB split: --> + <div> + <div class="abspos-box inside-IB-midground"></div> + </div> + <div class="abspos-box after-IB-background"></div> + <div class="abspos-box after-IB-foreground"></div> + </span> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html new file mode 100644 index 00000000000..eb21a2d4609 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ib-split-001.html @@ -0,0 +1,77 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>CSS Test: 'contain: paint' should have no effect on non-atomic inline + (including its block part, if there's a block-in-inline split)</title> + <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"> + <link rel="help" href="https://drafts.csswg.org/css-contain/#containment-paint"> + <link rel="match" href="contain-paint-ignored-cases-ib-split-001-ref.html"> + <style> + .abspos-box { + position: absolute; + width: 200px; + height: 200px; + } + + /* The boxes should stack in the order that I've listed their CSS classes + here. The class names' first word (outside/before/inside/after) refers + to the boxes' DOM position, and "background"/"midground"/"foreground" + refers to their z-index values. */ + + .before-IB-background { + background: darkmagenta; + z-index: -1; + top: 50px; + left: 50px; + } + .after-IB-background { + background: magenta; + z-index: -1; + top: 70px; + left: 70px; + } + .outside-span-midground { + background: darkkhaki; + top: 90px; + left: 90px; + } + .inside-IB-midground { + background: khaki; + top: 110px; + left: 110px; + } + .before-IB-foreground { + background: darkcyan; + z-index: 1; + top: 130px; + left: 130px; + } + .after-IB-foreground { + background: cyan; + z-index: 1; + top: 150px; + left: 150px; + } + </style> +</head> +<body> + <!-- The expectation here is that 'abspos-box' elements will all interact in + the same top-level stacking context. That means the box ordering should + be (back to front): darkmagenta/magenta/darkkhaki/khaki/darkcyan/cyan, + with the boxes stacked (visually) from top-left to bottom-right. --> + + <div class="abspos-box outside-span-midground"></div> + + <span style="contain: paint"> + <div class="abspos-box before-IB-background"></div> + <div class="abspos-box before-IB-foreground"></div> + <!-- This unstyled div crates the IB split: --> + <div> + <div class="abspos-box inside-IB-midground"></div> + </div> + <div class="abspos-box after-IB-background"></div> + <div class="abspos-box after-IB-foreground"></div> + </span> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001-ref.html index b8f983a8153..7f13a517a66 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001-ref.html +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001-ref.html @@ -26,6 +26,11 @@ display: flex; align-items: baseline; } + .innerContents { + color: transparent; + width: 0; + height: 0; + } </style> </head> <body> @@ -51,7 +56,7 @@ <br> <div class="flexBaselineCheck"> - outside before<div class="basic"></div>outside after + outside before<div class="basic innerContents">i</div>outside after </div> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001.html index c5bdc6adead..20272cff8ff 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001.html +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-block-001.html @@ -73,7 +73,7 @@ <div class="contain floatLWidth"><div class="innerContents">inner</div></div> <br> - <!--CSS Test: A size-contained block element should perform baseline alignment as if the container were empty.--> + <!--CSS Test: A size-contained block element should perform baseline alignment regularly.--> <div class="flexBaselineCheck"> outside before<div class="contain"><div class="innerContents">inner</div></div>outside after </div> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html index a7869752692..6a77ee68879 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001-ref.html @@ -12,6 +12,7 @@ .container { border: 10px solid green; display: inline-block; + vertical-align: top; } .height { height: 30px; diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001.html index c21e5517225..8cea7f5a60e 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001.html +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-001.html @@ -16,6 +16,7 @@ .container { border: 10px solid green; display: inline-block; + vertical-align: top; } .innerContents { height: 50px; diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002-ref.html index 040da171aaf..31ca88312da 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002-ref.html +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002-ref.html @@ -24,11 +24,23 @@ display: flex; align-items: baseline; } + fieldset { + border: none; + color: transparent; + } + legend, .innerContents { + width: 0; + height: 0; + padding: 0; + } </style> </head> <body> <div class="flexBaselineCheck"> - outside before<fieldset class="basic"></fieldset>outside after + outside before<fieldset class="basc"> + <legend>l</legend> + <div class="innerContents">i</div> + </fieldset>outside after </div> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html index 18d6ad8c3c6..67aa64bb271 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html @@ -2,7 +2,7 @@ <html> <head> <meta charset="utf-8"> - <title>CSS Test: 'contain: size' on fieldset elements should cause them to be baseline-aligned as if they had no contents.</title> + <title>CSS Test: 'contain: size' on fieldset elements shouldn't prevent them from being baseline-aligned regularly.</title> <link rel="author" title="Morgan Rae Reschenberg" href="mailto:mreschenberg@berkeley.edu"> <link rel="help" href="https://drafts.csswg.org/css-contain/#containment-size"> <link rel="match" href="contain-size-fieldset-002-ref.html"> @@ -24,7 +24,7 @@ </style> </head> <body> - <!--CSS Test: A size-contained fieldset element should perform baseline alignment as if the container were empty.--> + <!--CSS Test: A size-contained fieldset element should perform baseline alignment regularly.--> <div class="flexBaselineCheck"> outside before<fieldset class="contain"> <legend>legend</legend> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001-ref.html index 56d1cdd8cee..92a6c7de5ee 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001-ref.html +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001-ref.html @@ -15,24 +15,29 @@ .width-ref { width: 50px; } + .innerContents { + color: transparent; + width: 0; + height: 0; + } </style> </head> <body> - <div class="basic"></div> + <div class="basic"><div class="innerContents">i</div></div> <br> - outside before<div class="basic"></div>outside after + outside before<div class="basic"><div class="innerContents">i</div></div>outside after <br> - <div class="basic height-ref"></div> + <div class="basic height-ref"><div class="innerContents">i</div></div> <br> - <div class="basic height-ref"></div> + <div class="basic height-ref"><div class="innerContents">i</div></div> <br> - <div class="basic width-ref"></div> + <div class="basic width-ref"><div class="innerContents">i</div></div> <br> - <div class="basic width-ref"></div> + <div class="basic width-ref"><div class="innerContents">i</div></div> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001.html index 48f8bc279a6..41458550272 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001.html +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-block-001.html @@ -2,7 +2,7 @@ <html> <head> <meta charset="utf-8"> - <title>CSS Test: 'contain: size' on inline-block elements should cause them to be sized and baseline-aligned as if they had no contents.</title> + <title>CSS Test: 'contain: size' on inline-block elements should cause them to be sized as if they had no contents and baseline-aligned regularly.</title> <link rel="author" title="Morgan Rae Reschenberg" href="mailto:mreschenberg@berkeley.edu"> <link rel="help" href="https://drafts.csswg.org/css-contain/#containment-size"> <link rel="match" href="contain-size-inline-block-001-ref.html"> @@ -37,7 +37,7 @@ <div class="contain"><div class="innerContents">inner</div></div> <br> - <!--CSS Test: A size-contained inline-block element should perform baseline alignment as if the container were empty.--> + <!--CSS Test: A size-contained inline-block element should perform baseline alignment regularly.--> outside before<div class="contain"><div class="innerContents">inner</div></div>outside after <br> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001-ref.html index fb013752d05..93a263b5b2f 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001-ref.html +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001-ref.html @@ -12,12 +12,17 @@ .width-ref { width: 50px; } + .innerContents { + color: transparent; + width: 0; + height: 0; + } </style> </head> <body> - aa<div class="basic"></div>bb + aa<div class="basic"><div class="innerContents">i</div></div>bb <br> - aa<div class="basic width-ref"></div>bb + aa<div class="basic width-ref"><div class="innerContents">i</div></div>bb </body> </html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001.html index e79d0c18599..15a2c943bb6 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001.html +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-inline-flex-001.html @@ -2,7 +2,7 @@ <html> <head> <meta charset="utf-8"> - <title>CSS Test: 'contain: size' on inline-flex elements should cause them to be sized and baseline-aligned as if they had no contents.</title> + <title>CSS Test: 'contain: size' on inline-flex elements should cause them to be sized as if they had no contents and baseline-aligned regularly.</title> <link rel="author" title="Morgan Rae Reschenberg" href="mailto:mreschenberg@berkeley.edu"> <link rel="help" href="https://drafts.csswg.org/css-contain/#containment-size"> <link rel="match" href="contain-size-inline-flex-001-ref.html"> @@ -24,11 +24,11 @@ </style> </head> <body> - <!--CSS Test: A size-contained inline-flex element without dimensions should ensure baseline alignment behaviour matches that of an empty object of the same type.--> + <!--CSS Test: A size-contained inline-flex element without dimensions should ensure baseline alignment behaves regularly.--> aa<div class="contain"><div class="innerContents">inner</div></div>bb <br> - <!--CSS Test: A size-contained inline-flex element with specified width should ensure baseline alignment behaviour matches that of an empty object of the same type.--> + <!--CSS Test: A size-contained inline-flex element with specified width should ensure baseline alignment behaves regularly.--> aa<div class="contain width"><div class="innerContents">inner</div></div>bb </body> </html> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/reftest.list index 6b2e31bcd46..6b872e79f2e 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/reftest.list +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/contain/reftest.list @@ -9,6 +9,7 @@ == contain-paint-containing-block-fixed-001.html contain-paint-containing-block-fixed-001-ref.html == contain-paint-formatting-context-float-001.html contain-paint-formatting-context-float-001-ref.html == contain-paint-formatting-context-margin-001.html contain-paint-formatting-context-margin-001-ref.html +== contain-paint-ignored-cases-ib-split-001.html contain-paint-ignored-cases-ib-split-001-ref.html == contain-paint-ignored-cases-internal-table-001a.html contain-paint-ignored-cases-internal-table-001-ref.html == contain-paint-ignored-cases-internal-table-001b.html contain-paint-ignored-cases-internal-table-001-ref.html == contain-paint-ignored-cases-no-principal-box-001.html contain-paint-ignored-cases-no-principal-box-001-ref.html @@ -35,6 +36,7 @@ == contain-layout-formatting-context-margin-001.html contain-layout-formatting-context-margin-001-ref.html == contain-layout-containing-block-fixed-001.html contain-paint-containing-block-fixed-001-ref.html == contain-layout-containing-block-absolute-001.html contain-paint-containing-block-absolute-001-ref.html +== contain-layout-ignored-cases-ib-split-001.html contain-layout-ignored-cases-ib-split-001-ref.html == contain-layout-ignored-cases-no-principal-box-001.html contain-paint-ignored-cases-no-principal-box-001-ref.html == contain-layout-ignored-cases-no-principal-box-002.html contain-layout-ignored-cases-no-principal-box-002-ref.html == contain-layout-ignored-cases-no-principal-box-003.html contain-layout-ignored-cases-no-principal-box-003-ref.html diff --git a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html index c591be46479..e2b52f257a1 100644 --- a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> + <script src=/common/media.js></script> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=/resources/testdriver.js></script> diff --git a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html index 8a0a4374b2d..0c3897a4ad0 100644 --- a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> + <script src=/common/media.js></script> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=/resources/testdriver.js></script> diff --git a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html index 0f8a0c06652..1ecd874c009 100644 --- a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> + <script src=/common/media.js></script> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=/resources/testdriver.js></script> diff --git a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-default-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-default-feature-policy.https.sub.html index f47661bd7d5..12bbf7f2f1f 100644 --- a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-default-feature-policy.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-default-feature-policy.https.sub.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> + <script src=/common/media.js></script> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=/resources/testdriver.js></script> diff --git a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html index 2f7576b16e1..b36afbda503 100644 --- a/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html +++ b/tests/wpt/web-platform-tests/feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> + <script src=/common/media.js></script> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=/resources/testdriver.js></script> diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html b/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html index a8a998ed2a1..60e4825d988 100644 --- a/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html +++ b/tests/wpt/web-platform-tests/feature-policy/reporting/picture-in-picture-reporting.html @@ -1,6 +1,7 @@ <!DOCTYPE html> <html> <head> + <script src='/common/media.js'></script> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script src="/resources/testdriver.js"></script> @@ -21,7 +22,7 @@ const check_report_format = (reports, observer) => { const loadVideo = () => new Promise(resolve => { const video = document.createElement('video'); - video.src = '/media/movie_5.ogv'; + video.src = getVideoURI('/media/movie_5'); video.addEventListener('loadedmetadata', () => { resolve(video); }, { once: true }); diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-picture-in-picture.html b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-picture-in-picture.html index 436682d8754..2f33c449536 100644 --- a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-picture-in-picture.html +++ b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-picture-in-picture.html @@ -1,3 +1,4 @@ +<script src=/common/media.js></script> <script src=/feature-policy/resources/picture-in-picture.js></script> <script> 'use strict'; diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/picture-in-picture.js b/tests/wpt/web-platform-tests/feature-policy/resources/picture-in-picture.js index e7aabcd5083..e245d798acf 100644 --- a/tests/wpt/web-platform-tests/feature-policy/resources/picture-in-picture.js +++ b/tests/wpt/web-platform-tests/feature-policy/resources/picture-in-picture.js @@ -4,7 +4,7 @@ function isPictureInPictureAllowed() { return new Promise(resolve => { let video = document.createElement('video'); - video.src = '/media/movie_5.ogv'; + video.src = getVideoURI('/media/movie_5'); video.onloadedmetadata = () => { video.requestPictureInPicture() .then(() => resolve(document.pictureInPictureEnabled)) diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html index fc2e619a463..4b9a3c8246d 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html @@ -28,15 +28,26 @@ promise_test(async t => { const stream = await timeout(navigator.mediaDevices.getUserMedia({video: true}), 10000, "getUserMedia timeout"); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + vid.defaultPlaybackRate = 0.4; + vid.playbackRate = 0.4; + vid.preload = "metadata"; vid.srcObject = stream; + vid.onratechange = t.unreached_func('ratechange event must not be fired'); vid.play(); assert_true(!vid.seeking, "A MediaStream is not seekable"); assert_equals(vid.seekable.length, 0, "A MediaStream is not seekable"); assert_equals(vid.defaultPlaybackRate, 1, "playback rate is always 1"); + vid.defaultPlaybackRate = 0.5; + assert_equals(vid.defaultPlaybackRate, 1, "Setting defaultPlaybackRate must be ignored"); assert_equals(vid.playbackRate, 1, "playback rate is always 1"); + vid.playbackRate = 0.5; + assert_equals(vid.playbackRate, 1, "Setting playbackRate must be ignored"); assert_equals(vid.buffered.length, 0, "A MediaStream cannot be preloaded. Therefore, there is no buffered timeranges"); assert_equals(vid.readyState, vid.HAVE_NOTHING, "readyState is HAVE_NOTHING initially"); assert_equals(vid.duration, NaN, "A MediaStream does not have any duration initially."); + assert_equals(vid.preload, "none", "preload must always be none"); + vid.preload = "metadata"; + assert_equals(vid.preload, "none", "Setting preload must be ignored"); const haveLoadedData = new Promise(r => vid.addEventListener("loadeddata", r, {once: true})); diff --git a/tests/wpt/web-platform-tests/picture-in-picture/disable-picture-in-picture.html b/tests/wpt/web-platform-tests/picture-in-picture/disable-picture-in-picture.html index efde31bc3a3..31e0d12ad77 100644 --- a/tests/wpt/web-platform-tests/picture-in-picture/disable-picture-in-picture.html +++ b/tests/wpt/web-platform-tests/picture-in-picture/disable-picture-in-picture.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>Test disable Picture-in-Picture</title> +<script src="/common/media.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> @@ -33,12 +34,11 @@ promise_test(async t => { promise_test(async t => { const video = await loadVideo(); - return test_driver.bless('request Picture-in-Picture', async () => { - const promise = video.requestPictureInPicture(); - video.disablePictureInPicture = true; - await promise_rejects(t, 'InvalidStateError', promise); - assert_equals(document.pictureInPictureElement, null); - }); + await test_driver.bless('request Picture-in-Picture'); + const promise = video.requestPictureInPicture(); + video.disablePictureInPicture = true; + await promise_rejects(t, 'InvalidStateError', promise); + assert_equals(document.pictureInPictureElement, null); }, 'Request Picture-in-Picture rejects if disablePictureInPicture becomes ' + 'true before promise resolves.'); diff --git a/tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html b/tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html index 9df2bfabcf2..a9d7b5c0489 100644 --- a/tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html +++ b/tests/wpt/web-platform-tests/picture-in-picture/enter-picture-in-picture.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>Test enterpictureinpicture event</title> +<script src="/common/media.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> diff --git a/tests/wpt/web-platform-tests/picture-in-picture/exit-picture-in-picture.html b/tests/wpt/web-platform-tests/picture-in-picture/exit-picture-in-picture.html index 9a5eedd9be8..c8d76f5244a 100644 --- a/tests/wpt/web-platform-tests/picture-in-picture/exit-picture-in-picture.html +++ b/tests/wpt/web-platform-tests/picture-in-picture/exit-picture-in-picture.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>Test exit Picture-in-Picture</title> +<script src="/common/media.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> diff --git a/tests/wpt/web-platform-tests/picture-in-picture/idlharness.window.js b/tests/wpt/web-platform-tests/picture-in-picture/idlharness.window.js index a7f25e3be58..31cd4a14177 100644 --- a/tests/wpt/web-platform-tests/picture-in-picture/idlharness.window.js +++ b/tests/wpt/web-platform-tests/picture-in-picture/idlharness.window.js @@ -1,3 +1,4 @@ +// META: script=/common/media.js // META: script=/resources/WebIDLParser.js // META: script=/resources/idlharness.js // META: script=/resources/testdriver.js diff --git a/tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html b/tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html index 5a5182bf64d..04de95e47ec 100644 --- a/tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html +++ b/tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>Test leavepictureinpicture event</title> +<script src="/common/media.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> diff --git a/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-element.html b/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-element.html index 809b3eeabcc..2763eca476d 100644 --- a/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-element.html +++ b/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-element.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>Test Picture-in-Picture element</title> +<script src="/common/media.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> diff --git a/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-window.html b/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-window.html index 693a13717e2..c32787f46f7 100644 --- a/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-window.html +++ b/tests/wpt/web-platform-tests/picture-in-picture/picture-in-picture-window.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>Test Picture-in-Picture window</title> +<script src="/common/media.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> diff --git a/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture-twice.html b/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture-twice.html index 0924ad21a4f..17e494bbe88 100644 --- a/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture-twice.html +++ b/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture-twice.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>Test request Picture-in-Picture on two videos</title> +<script src="/common/media.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> @@ -10,12 +11,9 @@ promise_test(async t => { const video1 = await loadVideo(); const video2 = await loadVideo(); - return test_driver.bless( - 'request Picture-in-Picture', - async () => { - video1.requestPictureInPicture(); - promise_rejects(t, 'NotAllowedError', video2.requestPictureInPicture()); - } - ); + await test_driver.bless('request Picture-in-Picture'); + const promise = video1.requestPictureInPicture(); + await promise_rejects(t, 'NotAllowedError', video2.requestPictureInPicture()); + return promise; }, 'request Picture-in-Picture consumes user gesture'); </script> diff --git a/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture.html b/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture.html index 403d416c7d4..37ae94829f3 100644 --- a/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture.html +++ b/tests/wpt/web-platform-tests/picture-in-picture/request-picture-in-picture.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>Test request Picture-in-Picture</title> +<script src="/common/media.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> @@ -21,7 +22,7 @@ promise_test(t => { promise_test(async t => { const video = document.createElement('video'); await new Promise(resolve => { - video.src = '/media/sound_5.oga'; + video.src = getAudioURI('/media/sound_5'); video.onloadeddata = resolve; }).then(() => { return promise_rejects(t, 'InvalidStateError', diff --git a/tests/wpt/web-platform-tests/picture-in-picture/resources/picture-in-picture-helpers.js b/tests/wpt/web-platform-tests/picture-in-picture/resources/picture-in-picture-helpers.js index 55eed5393d6..96972dcbc8e 100644 --- a/tests/wpt/web-platform-tests/picture-in-picture/resources/picture-in-picture-helpers.js +++ b/tests/wpt/web-platform-tests/picture-in-picture/resources/picture-in-picture-helpers.js @@ -8,15 +8,14 @@ function loadVideo(activeDocument, sourceUrl) { return new Promise((resolve, reject) => { const document = activeDocument || window.document; const video = document.createElement('video'); - video.src = sourceUrl || '/media/movie_5.ogv'; + video.src = sourceUrl || getVideoURI('/media/movie_5'); video.onloadedmetadata = () => { resolve(video); }; video.onerror = error => { reject(error); }; }); } // Calls requestPictureInPicture() in a context that's 'allowed to request PiP'. -function requestPictureInPictureWithTrustedClick(videoElement) { - return test_driver.bless( - 'request Picture-in-Picture', - () => videoElement.requestPictureInPicture()); +async function requestPictureInPictureWithTrustedClick(videoElement) { + await test_driver.bless('request Picture-in-Picture'); + return videoElement.requestPictureInPicture(); } diff --git a/tests/wpt/web-platform-tests/picture-in-picture/shadow-dom.html b/tests/wpt/web-platform-tests/picture-in-picture/shadow-dom.html index e36acc02193..17816b93c94 100644 --- a/tests/wpt/web-platform-tests/picture-in-picture/shadow-dom.html +++ b/tests/wpt/web-platform-tests/picture-in-picture/shadow-dom.html @@ -1,11 +1,12 @@ <!DOCTYPE html> <title>Test for pictureInPictureElement adjustment for Shadow DOM</title> -<script src='/resources/testharness.js'></script> -<script src='/resources/testharnessreport.js'></script> +<script src="/common/media.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-vendor.js"></script> <script src="resources/picture-in-picture-helpers.js"></script> -<script src='../shadow-dom/resources/shadow-dom.js'></script> +<script src="../shadow-dom/resources/shadow-dom.js"></script> <body> <div id='host'> <template data-mode='open' id='root'> @@ -45,7 +46,7 @@ promise_test(async t => { assert_equals(ids.root5.pictureInPictureElement, null); await new Promise(resolve => { - ids.video.src = '/media/movie_5.ogv'; + ids.video.src = getVideoURI('/media/movie_5'); ids.video.onloadeddata = resolve; }) .then(() => requestPictureInPictureWithTrustedClick(ids.video)) @@ -58,4 +59,4 @@ promise_test(async t => { assert_equals(ids.root5.pictureInPictureElement, null); }) }); -</script>
\ No newline at end of file +</script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-audio-tainting.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-audio-tainting.https.html new file mode 100644 index 00000000000..9821759bc7b --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-audio-tainting.https.html @@ -0,0 +1,47 @@ +<!doctype html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/test-helpers.sub.js?pipe=sub"></script> +<script> +promise_test(async (t) => { + const SCOPE = 'resources/empty.html'; + const SCRIPT = 'resources/fetch-rewrite-worker.js'; + const host_info = get_host_info(); + const REMOTE_ORIGIN = host_info.HTTPS_REMOTE_ORIGIN; + + const reg = await service_worker_unregister_and_register(t, SCRIPT, SCOPE); + await wait_for_state(t, reg.installing, 'activated'); + const frame = await with_iframe(SCOPE); + + const doc = frame.contentDocument; + const win = frame.contentWindow; + + const context = new win.AudioContext(); + try { + context.suspend(); + const audio = doc.createElement('audio'); + audio.autoplay = true; + const source = context.createMediaElementSource(audio); + const spn = context.createScriptProcessor(16384, 1, 1); + source.connect(spn).connect(context.destination); + const url = `${REMOTE_ORIGIN}/webaudio/resources/sin_440Hz_-6dBFS_1s.wav`; + audio.src = '/test?url=' + encodeURIComponent(url); + doc.body.appendChild(audio); + + await new Promise((resolve) => { + audio.addEventListener('playing', resolve); + }); + await context.resume(); + const event = await new Promise((resolve) => { + spn.addEventListener('audioprocess', resolve); + }); + const data = event.inputBuffer.getChannelData(0); + for (const e of data) { + assert_equals(e, 0); + } + } finally { + context.close(); + } + }, 'Verify CORS XHR of fetch() in a Service Worker'); +</script> diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py index 46e3ff7926d..2b7c091c847 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py @@ -693,7 +693,16 @@ class TestRunnerManager(threading.Thread): # This might leak a file handle from the queue self.logger.warning("Forcibly terminating runner process") self.test_runner_proc.terminate() - self.test_runner_proc.join(10) + + # Multiprocessing queues are backed by operating system pipes. If + # the pipe in the child process had buffered data at the time of + # forced termination, the queue is no longer in a usable state + # (subsequent attempts to retrieve items may block indefinitely). + # Discard the potentially-corrupted queue and create a new one. + self.command_queue.close() + self.command_queue = Queue() + self.remote_queue.close() + self.remote_queue = Queue() else: self.logger.debug("Runner process exited with code %i" % self.test_runner_proc.exitcode) diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html new file mode 100644 index 00000000000..8194d1977ad --- /dev/null +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html @@ -0,0 +1,85 @@ +<!DOCTYPE html> +<html> + <head> + <title> + Test passing SharedArrayBuffer to an AudioWorklet + </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/webaudio/resources/audit.js"></script> + </head> + <body> + <script id="layout-test-code"> + let audit = Audit.createTaskRunner(); + + let context = new AudioContext(); + + let filePath = 'processors/sharedarraybuffer-processor.js'; + + if (window.SharedArrayBuffer) { + audit.define( + 'Test postMessage from AudioWorkletProcessor to AudioWorkletNode', + (task, should) => { + let workletNode = + new AudioWorkletNode(context, 'sharedarraybuffer-processor'); + + // After it is created, the worklet will send a new + // SharedArrayBuffer to the main thread. + // + // The worklet will then wait to receive a message from the main + // thread. + // + // When it receives the message, it will check whether it is a + // SharedArrayBuffer, and send this information back to the main + // thread. + + workletNode.port.onmessage = (event) => { + let data = event.data; + switch (data.state) { + case 'created': + should( + data.sab instanceof SharedArrayBuffer, + 'event.data.sab from worklet is an instance of SharedArrayBuffer') + .beTrue(); + + // Send a SharedArrayBuffer back to the worklet. + let sab = new SharedArrayBuffer(8); + workletNode.port.postMessage(sab); + break; + + case 'received message': + should(data.isSab, 'event.data from main thread is an instance of SharedArrayBuffer') + .beTrue(); + task.done(); + break; + + default: + should(false, + `Got unexpected message from worklet: ${data.state}`) + .beTrue(); + task.done(); + break; + } + }; + + workletNode.port.onmessageerror = (event) => { + should(false, 'Got messageerror from worklet').beTrue(); + task.done(); + }; + }); + } else { + // NOTE(binji): SharedArrayBuffer is only enabled where we have site + // isolation. + audit.define('Skipping test because SharedArrayBuffer is not defined', + (task, should) => { + task.done(); + }); + } + + context.audioWorklet.addModule(filePath).then(() => { + audit.run(); + }); + </script> + </body> +</html> + diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js new file mode 100644 index 00000000000..2ccacccd4bb --- /dev/null +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/sharedarraybuffer-processor.js @@ -0,0 +1,35 @@ +/** + * @class SharedArrayBufferProcessor + * @extends AudioWorkletProcessor + * + * This processor class demonstrates passing SharedArrayBuffers to and from + * workers. + */ +class SharedArrayBufferProcessor extends AudioWorkletProcessor { + constructor() { + super(); + this.port.onmessage = this.handleMessage.bind(this); + this.port.onmessageerror = this.handleMessageError.bind(this); + let sab = new SharedArrayBuffer(8); + this.port.postMessage({state: 'created', sab}); + } + + handleMessage(event) { + this.port.postMessage({ + state: 'received message', + isSab: event.data instanceof SharedArrayBuffer + }); + } + + handleMessageError(event) { + this.port.postMessage({ + state: 'received messageerror' + }); + } + + process() { + return true; + } +} + +registerProcessor('sharedarraybuffer-processor', SharedArrayBufferProcessor); |