diff options
119 files changed, 1446 insertions, 584 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini index a9e46713244..76b398963ae 100644 --- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini @@ -7,7 +7,7 @@ expected: FAIL [Opening a blob URL in a new window immediately before revoking it works.] - expected: TIMEOUT + expected: FAIL [Opening a blob URL in a noopener about:blank window immediately before revoking it works.] expected: FAIL diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 735905e5118..1750f277d6b 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -37,6 +37,18 @@ {} ] ], + "css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html": [ + [ + "css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html", + {} + ] + ], + "css/css-grid/subgrid/contain-strict-subgrid-crash.html": [ + [ + "css/css-grid/subgrid/contain-strict-subgrid-crash.html", + {} + ] + ], "css/css-multicol/abspos-in-multicol-with-spanner-crash.html": [ [ "css/css-multicol/abspos-in-multicol-with-spanner-crash.html", @@ -96279,6 +96291,18 @@ {} ] ], + "css/CSS2/text/bidi-span-003.html": [ + [ + "css/CSS2/text/bidi-span-003.html", + [ + [ + "/css/CSS2/text/bidi-span-003-ref.html", + "==" + ] + ], + {} + ] + ], "css/CSS2/text/letter-spacing-004.xht": [ [ "css/CSS2/text/letter-spacing-004.xht", @@ -123431,6 +123455,18 @@ {} ] ], + "css/css-flexbox/table-as-item-fixed-min-width.html": [ + [ + "css/css-flexbox/table-as-item-fixed-min-width.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/css-flexbox/table-as-item-narrow-content.html": [ [ "css/css-flexbox/table-as-item-narrow-content.html", @@ -123448,7 +123484,7 @@ "css/css-flexbox/table-as-item-wide-content.html", [ [ - "/css/reference/ref-filled-green-100px-square-only.html", + "/css/reference/ref-filled-green-100px-square.xht", "==" ] ], @@ -157957,6 +157993,30 @@ {} ] ], + "css/css-text/white-space/white-space-zero-fontsize-001.html": [ + [ + "css/css-text/white-space/white-space-zero-fontsize-001.html", + [ + [ + "/css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text/white-space/white-space-zero-fontsize-002.html": [ + [ + "css/css-text/white-space/white-space-zero-fontsize-002.html", + [ + [ + "/css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-text/word-boundary/word-boundary-001.html": [ [ "css/css-text/word-boundary/word-boundary-001.html", @@ -218267,64 +218327,70 @@ "client-hints/accept-ch-no-feature-policy-navigation.https.html.headers": [ [] ], - "client-hints/accept_ch.http.html.headers": [ + "client-hints/accept-ch-stickiness/resources/accept-ch-test.js": [ [] ], - "client-hints/accept_ch.tentative.sub.https.html.headers": [ + "client-hints/accept-ch-stickiness/resources/accept-ch.html": [ [] ], - "client-hints/accept_ch_feature_policy.tentative.sub.https.html.headers": [ + "client-hints/accept-ch-stickiness/resources/accept-ch.html.headers": [ [] ], - "client-hints/accept_ch_malformed_header.https.html.headers": [ + "client-hints/accept-ch-stickiness/resources/clear-site-data.html": [ [] ], - "client-hints/accept_ch_no_feature_policy.tentative.sub.https.html.headers": [ + "client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers": [ [] ], - "client-hints/echo_client_hints_received.py": [ + "client-hints/accept-ch-stickiness/resources/do-not-expect-client-hints-headers.html": [ [] ], - "client-hints/echo_ua_client_hints_received.py": [ + "client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py": [ [] ], - "client-hints/resources/accept-ch-lifetime-test.js": [ + "client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html": [ [] ], - "client-hints/resources/accept_ch.html": [ + "client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html": [ [] ], - "client-hints/resources/accept_ch.html.headers": [ + "client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html.headers": [ [] ], - "client-hints/resources/accept_ch_lifetime.html": [ + "client-hints/accept_ch.http.html.headers": [ [] ], - "client-hints/resources/accept_ch_lifetime.html.headers": [ + "client-hints/accept_ch.tentative.sub.https.html.headers": [ [] ], - "client-hints/resources/clear-site-data.html": [ + "client-hints/accept_ch_feature_policy.tentative.sub.https.html.headers": [ [] ], - "client-hints/resources/clear-site-data.html.headers": [ + "client-hints/accept_ch_malformed_header.https.html.headers": [ [] ], - "client-hints/resources/do_not_expect_client_hints_headers.html": [ + "client-hints/accept_ch_no_feature_policy.tentative.sub.https.html.headers": [ [] ], - "client-hints/resources/expect-client-hints-headers-iframe.py": [ + "client-hints/echo_client_hints_received.py": [ [] ], - "client-hints/resources/expect_client_hints_headers.html": [ + "client-hints/echo_ua_client_hints_received.py": [ [] ], - "client-hints/resources/feature-policy-navigation.js": [ + "client-hints/resources/accept_ch.html": [ [] ], - "client-hints/resources/http_equiv_accept_ch_lifetime.html": [ + "client-hints/resources/accept_ch.html.headers": [ [] ], - "client-hints/resources/http_equiv_accept_ch_lifetime.html.headers": [ + "client-hints/resources/expect-client-hints-headers-iframe.py": [ + [] + ], + "client-hints/resources/expect_client_hints_headers.html": [ + [] + ], + "client-hints/resources/feature-policy-navigation.js": [ [] ], "client-hints/resources/iframe-accept-ch-lifetime.html": [ @@ -218336,9 +218402,6 @@ "client-hints/resources/sec-ch-ua.py": [ [] ], - "client-hints/resources/square.png": [ - [] - ], "client-hints/resources/stale-echo-client-hints.py": [ [] ], @@ -244493,6 +244556,9 @@ "css/CSS2/text/bidi-span-002-ref.html": [ [] ], + "css/CSS2/text/bidi-span-003-ref.html": [ + [] + ], "css/CSS2/text/letter-spacing-004-ref.xht": [ [] ], @@ -261020,6 +261086,12 @@ "css/css-text/white-space/reference/white-space-wrap-after-nowrap-001-ref.html": [ [] ], + "css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html": [ + [] + ], + "css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html": [ + [] + ], "css/css-text/word-boundary/reference/word-boundary-001-ref.html": [ [] ], @@ -281687,18 +281759,15 @@ "mixed-content/generic/sanity-checker.js": [ [] ], - "mixed-content/generic/test-case.sub.js": [ + "mixed-content/generic/spec_json.js": [ [] ], - "mixed-content/generic/tools/generate.py": [ + "mixed-content/generic/test-case.sub.js": [ [] ], "mixed-content/spec.src.json": [ [] ], - "mixed-content/spec_json.js": [ - [] - ], "mst-content-hint/META.yml": [ [] ], @@ -284495,18 +284564,15 @@ "referrer-policy/generic/sanity-checker.js": [ [] ], - "referrer-policy/generic/test-case.sub.js": [ + "referrer-policy/generic/spec_json.js": [ [] ], - "referrer-policy/generic/tools/generate.py": [ + "referrer-policy/generic/test-case.sub.js": [ [] ], "referrer-policy/spec.src.json": [ [] ], - "referrer-policy/spec_json.js": [ - [] - ], "remote-playback/META.yml": [ [] ], @@ -292886,10 +292952,10 @@ "upgrade-insecure-requests/gen/top.http-rp/upgrade/xhr/same-https.downgrade.https.html.headers": [ [] ], - "upgrade-insecure-requests/generic/test-case.sub.js": [ + "upgrade-insecure-requests/generic/spec_json.js": [ [] ], - "upgrade-insecure-requests/generic/tools/generate.py": [ + "upgrade-insecure-requests/generic/test-case.sub.js": [ [] ], "upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html": [ @@ -292955,9 +293021,6 @@ "upgrade-insecure-requests/spec.src.json": [ [] ], - "upgrade-insecure-requests/spec_json.js": [ - [] - ], "upgrade-insecure-requests/support/redirect-cors.py": [ [] ], @@ -315548,20 +315611,122 @@ {} ] ], - "client-hints/accept-ch-lifetime.tentative.https.html": [ + "client-hints/accept-ch-no-feature-policy-navigation.https.html": [ [ - "client-hints/accept-ch-lifetime.tentative.https.html", + "client-hints/accept-ch-no-feature-policy-navigation.https.html", + {} + ] + ], + "client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html": [ + [ + "client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html", { "timeout": "long" } ] ], - "client-hints/accept-ch-no-feature-policy-navigation.https.html": [ + "client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html": [ [ - "client-hints/accept-ch-no-feature-policy-navigation.https.html", + "client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html", + { + "timeout": "long" + } + ] + ], + "client-hints/accept-ch-stickiness/cross-origin-navigation.https.html": [ + [ + "client-hints/accept-ch-stickiness/cross-origin-navigation.https.html", + { + "timeout": "long" + } + ] + ], + "client-hints/accept-ch-stickiness/cross-origin-subresource.https.html": [ + [ + "client-hints/accept-ch-stickiness/cross-origin-subresource.https.html", + { + "timeout": "long" + } + ] + ], + "client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html": [ + [ + "client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html", + { + "timeout": "long" + } + ] + ], + "client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html": [ + [ + "client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html", + { + "timeout": "long" + } + ] + ], + "client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html": [ + [ + "client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html", + { + "timeout": "long" + } + ] + ], + "client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html": [ + [ + "client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html", + { + "timeout": "long" + } + ] + ], + "client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html": [ + [ + "client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html", {} ] ], + "client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html": [ + [ + "client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html", + { + "timeout": "long" + } + ] + ], + "client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html": [ + [ + "client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html", + { + "timeout": "long" + } + ] + ], + "client-hints/accept-ch-stickiness/same-origin-iframe.https.html": [ + [ + "client-hints/accept-ch-stickiness/same-origin-iframe.https.html", + { + "timeout": "long" + } + ] + ], + "client-hints/accept-ch-stickiness/same-origin-navigation.https.html": [ + [ + "client-hints/accept-ch-stickiness/same-origin-navigation.https.html", + { + "timeout": "long" + } + ] + ], + "client-hints/accept-ch-stickiness/same-origin-subresource.https.html": [ + [ + "client-hints/accept-ch-stickiness/same-origin-subresource.https.html", + { + "timeout": "long" + } + ] + ], "client-hints/accept_ch.http.html": [ [ "client-hints/accept_ch.http.html", @@ -360904,6 +361069,12 @@ {} ] ], + "html/browsers/history/the-location-interface/location_reload_javascript_url.html": [ + [ + "html/browsers/history/the-location-interface/location_reload_javascript_url.html", + {} + ] + ], "html/browsers/history/the-location-interface/location_replace.html": [ [ "html/browsers/history/the-location-interface/location_replace.html", @@ -439449,6 +439620,24 @@ } ] ], + "webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html": [ + [ + "webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html", + {} + ] + ], + "webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html": [ + [ + "webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html", + {} + ] + ], + "webxr/ar-module/xrSession_environmentBlendMode.https.html": [ + [ + "webxr/ar-module/xrSession_environmentBlendMode.https.html", + {} + ] + ], "webxr/events_input_source_recreation.https.html": [ [ "webxr/events_input_source_recreation.https.html", @@ -472341,7 +472530,7 @@ "testharness" ], "WebIDL/ecmascript-binding/put-forwards.html": [ - "b004bd008d8ce679009e7ed339775fc253fdd6fa", + "d7cc389b1c88ec6f8c166115dbf45b4bc58b540b", "testharness" ], "WebIDL/ecmascript-binding/sequence-conversion.html": [ @@ -476560,10 +476749,6 @@ "f9595a794d9c93dca09f371f5797399a9204ed53", "support" ], - "client-hints/accept-ch-lifetime.tentative.https.html": [ - "f0b03ba0a8c311642af793a341653995fb73cbd9", - "testharness" - ], "client-hints/accept-ch-no-feature-policy-navigation.https.html": [ "5fb6c22f50873ce597e6d5ed04c1ebeef64a17c1", "testharness" @@ -476572,6 +476757,102 @@ "7eb28a000bdde9634e618701e2ba512e4a9ebc49", "support" ], + "client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html": [ + "5316c2874cf624751f846d554b35b57e8630af40", + "testharness" + ], + "client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html": [ + "f83aa6173e2dbca7de68d817914a56700a0cdd79", + "testharness" + ], + "client-hints/accept-ch-stickiness/cross-origin-navigation.https.html": [ + "e05c8e3ef5bf853c04acc396166e0cd5a6a00b60", + "testharness" + ], + "client-hints/accept-ch-stickiness/cross-origin-subresource.https.html": [ + "249ccb4a60d4756b1be34e2e324b29eae8e59370", + "testharness" + ], + "client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html": [ + "226b3116fc173ebb7c217df94addbcadbfacec04", + "testharness" + ], + "client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html": [ + "705b65a7bf44c1343a9e45045c17cd24cf2dbfd2", + "testharness" + ], + "client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html": [ + "ffebeb919f0d440579fd207ee8a4dee59102ceae", + "testharness" + ], + "client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html": [ + "7bb5d1520c746373d60bb9d0bee150d29dc0b048", + "testharness" + ], + "client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html": [ + "f07adaa901c4ed73bd27410cc081f9daed602918", + "testharness" + ], + "client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html": [ + "91b8cd639f26afe3d9d26bcbd92f9fc708a0bdb4", + "testharness" + ], + "client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html": [ + "793bf5e0796cb25c3847259bd56a74b0c1da108b", + "testharness" + ], + "client-hints/accept-ch-stickiness/resources/accept-ch-test.js": [ + "ed635513fd70f20ec2c5b51fd88a4b0380b77190", + "support" + ], + "client-hints/accept-ch-stickiness/resources/accept-ch.html": [ + "694c5b03bc18a0062689caaac5147e6aca8b6415", + "support" + ], + "client-hints/accept-ch-stickiness/resources/accept-ch.html.headers": [ + "370f9869226db4bdf8785c876b13d69b415e5abf", + "support" + ], + "client-hints/accept-ch-stickiness/resources/clear-site-data.html": [ + "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "support" + ], + "client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers": [ + "a0077c0577fc31220a63d0424f3fd4d1ab2de2bc", + "support" + ], + "client-hints/accept-ch-stickiness/resources/do-not-expect-client-hints-headers.html": [ + "147206b26aeb8fe3f4813e4b1f68d7a59b658c46", + "support" + ], + "client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py": [ + "be712293be3c749d98d328dd2fec7334da4ad9b2", + "support" + ], + "client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html": [ + "cda1f81978d9a8dbc7dd12286d8885f16007b9e0", + "support" + ], + "client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html": [ + "05e18a44fb96665299ab79f037a7ca20180bf92a", + "support" + ], + "client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html.headers": [ + "27140bf36e4dbd22b8f7190587f42a570c9d12bd", + "support" + ], + "client-hints/accept-ch-stickiness/same-origin-iframe.https.html": [ + "25e29017f403816e0917979a7c4886ac28f65fc4", + "testharness" + ], + "client-hints/accept-ch-stickiness/same-origin-navigation.https.html": [ + "e35cbdcedd0f30e31834764cb23a574ce75feed5", + "testharness" + ], + "client-hints/accept-ch-stickiness/same-origin-subresource.https.html": [ + "0b7151a2cca08d941d313e014e41769c08c350cc", + "testharness" + ], "client-hints/accept_ch.http.html": [ "50d77646f89aea13c212c6ecee4e7f32107007e9", "testharness" @@ -476640,10 +476921,6 @@ "dd516a97c965f4a248fa27ed8ce71dae6251e106", "testharness" ], - "client-hints/resources/accept-ch-lifetime-test.js": [ - "05aaec1aef8a50c9aac835fd523c48c680e998a3", - "support" - ], "client-hints/resources/accept_ch.html": [ "48d09f2d95c57875b71b088c2db8ce9585f5a237", "support" @@ -476652,26 +476929,6 @@ "91ee40652f06508478bb776bf4068fd61277cef3", "support" ], - "client-hints/resources/accept_ch_lifetime.html": [ - "a77eaab3f0baac62797e2b48592603da463c2f8a", - "support" - ], - "client-hints/resources/accept_ch_lifetime.html.headers": [ - "370f9869226db4bdf8785c876b13d69b415e5abf", - "support" - ], - "client-hints/resources/clear-site-data.html": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", - "support" - ], - "client-hints/resources/clear-site-data.html.headers": [ - "a0077c0577fc31220a63d0424f3fd4d1ab2de2bc", - "support" - ], - "client-hints/resources/do_not_expect_client_hints_headers.html": [ - "b3cf5df4c27224fe30a6ec3b4507aa30a8fe6a95", - "support" - ], "client-hints/resources/expect-client-hints-headers-iframe.py": [ "e72d77c47d9aae36c619e8e065e5685f7a9c166b", "support" @@ -476684,14 +476941,6 @@ "4487d9a447313f87dd2f230ce7d858b38008fae8", "support" ], - "client-hints/resources/http_equiv_accept_ch_lifetime.html": [ - "ab2ab9e60c8a4ee6d4fc088fb6c8d4d6d0daffd6", - "support" - ], - "client-hints/resources/http_equiv_accept_ch_lifetime.html.headers": [ - "27140bf36e4dbd22b8f7190587f42a570c9d12bd", - "support" - ], "client-hints/resources/iframe-accept-ch-lifetime.html": [ "693e4f94dcc3363f0d15e7c7a18a7a598c72cf77", "support" @@ -476704,10 +476953,6 @@ "a14a27dadf9e333784a5c636c821634b387e475f", "support" ], - "client-hints/resources/square.png": [ - "01c9666a8de9d5535615aff830810e5df4b2156f", - "support" - ], "client-hints/resources/stale-echo-client-hints.py": [ "769fa909fa4b3b960fbde2e6df282efc970b35d0", "support" @@ -476889,7 +477134,7 @@ "support" ], "common/security-features/README.md": [ - "c19874653a7cac4d314fd9dd0bf921082c6f8d70", + "2509d661b4afb68a5bfca0a41270d93586ddbe49", "support" ], "common/security-features/resources/common.sub.js": [ @@ -477013,15 +477258,15 @@ "support" ], "common/security-features/tools/generate.py": [ - "6fac19827aa1043ad7d3244cf78f44a8ed0b5cbc", + "3c298b5a3e20216f822b420d3460e1bea48e22d5", "support" ], "common/security-features/tools/spec_validator.py": [ - "06a5acce23a41ad0157871bc2d5de26d307a1c53", + "d845b086a3ed55aae6cd0645ece986c238a54a55", "support" ], "common/security-features/tools/template/disclaimer.template": [ - "66c43ed6f21324d44b1596c09a02fecf53f41323", + "ba9458cb31252aecf3c447b43c505a04d7abf92f", "support" ], "common/security-features/tools/template/spec_json.js.template": [ @@ -501181,7 +501426,7 @@ "testharness" ], "cors/preflight-cache.htm": [ - "0b6138bdffacee41537e4ed4131620e863ceb3d1", + "b3de663ebc1d32409c8ed376a3873b2a2b675eb5", "testharness" ], "cors/preflight-failure.htm": [ @@ -550460,6 +550705,14 @@ "d4fc6de070d23ebe8817e9a299c44e48cad256a9", "reftest" ], + "css/CSS2/text/bidi-span-003-ref.html": [ + "4cebcb90bba5d842f2f617c5f7878bca117d4acb", + "support" + ], + "css/CSS2/text/bidi-span-003.html": [ + "92a90d529c5a10ff099a03a3133f6c96c5b4d91c", + "reftest" + ], "css/CSS2/text/bidi-text-decoration-underline-001.xht": [ "e3efb521f2208113ad3278a261348bc5997240f5", "visual" @@ -574084,12 +574337,16 @@ "a83f518a232e82bf76a8b9c7a8d6cae71808b420", "reftest" ], + "css/css-flexbox/table-as-item-fixed-min-width.html": [ + "3a676babde0e573f3f801d1f498b02e8a6b891ff", + "reftest" + ], "css/css-flexbox/table-as-item-narrow-content.html": [ "31cf112518198044d485b4ba5ff477773c29487c", "reftest" ], "css/css-flexbox/table-as-item-wide-content.html": [ - "475adf548fdba180ec684ff4702aadc305d6c632", + "45ad49ec2d69808cb09892515ea882716edd369d", "reftest" ], "css/css-flexbox/table-with-infinite-max-intrinsic-width.html": [ @@ -582945,15 +583202,15 @@ "support" ], "css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html": [ - "8217f4dd2c3cfd031aece87d54a78d5bcec640ca", + "cecab3e213653fbb732cc12f04cc44daee6da5a5", "testharness" ], "css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html": [ - "096e3fd6910a09ba5097b66acdb1dcf8a6d5326e", + "40ee22190b917488af3005e16574a75f1de210ca", "testharness" ], "css/css-grid/alignment/grid-align-content-distribution.html": [ - "7b66ddb995191c67278d861aa6cb6a637bc6adaf", + "488fc05aad441bd2a648ad1a95c339ae82504ee1", "testharness" ], "css/css-grid/alignment/grid-align-content.html": [ @@ -584901,7 +585158,7 @@ "reftest" ], "css/css-grid/grid-layout-properties.html": [ - "0debe91f9246f67753cdb89c62ef818cbba73063", + "7cdda674b4759ef50766416fb5399033a0f09f06", "testharness" ], "css/css-grid/grid-model/display-grid.html": [ @@ -585504,6 +585761,14 @@ "995b1a8d2ae1aaa7c0230379e5b799b12ac9e93c", "reftest" ], + "css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html": [ + "a98e43777eee9347ba1d69a4b133140cea0577fc", + "crashtest" + ], + "css/css-grid/subgrid/contain-strict-subgrid-crash.html": [ + "0d377175b7b6aa6b8fd5ba0dc3e3f3ed20f8aad2", + "crashtest" + ], "css/css-grid/subgrid/grid-gap-001-ref.html": [ "e7909fc2064e4d3498ab90da179cf4ad0d0e9c79", "support" @@ -607712,6 +607977,14 @@ "80b2260cbbe6122e90c297ab1f2cd83917712030", "support" ], + "css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html": [ + "3c27ed25beed79a983f221c203f9aa72abe2beca", + "support" + ], + "css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html": [ + "6d2134ac4da3fc7bc3ce78fea834f2037e47cf6c", + "support" + ], "css/css-text/white-space/seg-break-transformation-000.html": [ "cb7b0f30b566320c1022f61fde44bc09695badb1", "testharness" @@ -608036,6 +608309,14 @@ "a484f1cf9167e468063cf2205493b8e71a254470", "reftest" ], + "css/css-text/white-space/white-space-zero-fontsize-001.html": [ + "900e1143f2fd84ed68892be4622f93e678250ab9", + "reftest" + ], + "css/css-text/white-space/white-space-zero-fontsize-002.html": [ + "1b8d3b7eb60f07d12ea87d3464c228269262ec7d", + "reftest" + ], "css/css-text/word-boundary/reference/word-boundary-001-ref.html": [ "620079f6ad48bba3d65a9bcd92edfd717228b973", "support" @@ -641845,7 +642126,7 @@ "support" ], "docs/writing-tests/python-handlers/index.md": [ - "f75703bb9efdb1a467b9172be9385bfdd63ad537", + "e3be1485bf0e6a07af647000c6dee0d69b79a2dc", "support" ], "docs/writing-tests/reftest-tutorial.md": [ @@ -646829,7 +647110,7 @@ "support" ], "encrypted-media/scripts/check-encryption-scheme.js": [ - "5d629271b42ff374e1b40a9a3b4113b42d1afbaf", + "ffab4a34911eb918d5e999e131205b4a9f92d92c", "support" ], "encrypted-media/scripts/check-initdata-type.js": [ @@ -647473,11 +647754,11 @@ "support" ], "eventsource/resources/cors-cookie.py": [ - "7deaff498d7c0c077f6417cd725725ca55039b96", + "c35824ff437feed72364181b57d7732c170722ab", "support" ], "eventsource/resources/cors.py": [ - "d01596c8366367b87e4fcfd971208c3e44604f31", + "42a0a0bb5843389674453fc56d8a87c67cd48dcd", "support" ], "eventsource/resources/eventsource-onmessage-realm.htm": [ @@ -647489,7 +647770,7 @@ "support" ], "eventsource/resources/last-event-id.py": [ - "09e4f29731a1d597172b64311c6400a189a4dd20", + "2b74bf66a286ff65b386662412018002c762dee2", "support" ], "eventsource/resources/message.py": [ @@ -653144,6 +653425,10 @@ "eb2c21b38a307b6ac015f018a8192384455ac9fb", "testharness" ], + "html/browsers/history/the-location-interface/location_reload_javascript_url.html": [ + "737cafbcd3ec2955102427227b58c63edf3ec525", + "testharness" + ], "html/browsers/history/the-location-interface/location_replace.html": [ "2f2d573084598e0de753b9e03045cbd281e3efe5", "testharness" @@ -679952,12 +680237,12 @@ "55a103adf0f29c615d40bc47943be1aec25c8f1e", "support" ], - "mixed-content/generic/test-case.sub.js": [ - "661cff12d00e1d7cc1f8e9b2ca2f4ff2b65f4e06", + "mixed-content/generic/spec_json.js": [ + "2f5212e9ff762d0f9e10a738120035beea618560", "support" ], - "mixed-content/generic/tools/generate.py": [ - "060bdabf91cc41f9be0d6c8e5bbf4a8e05c381c1", + "mixed-content/generic/test-case.sub.js": [ + "661cff12d00e1d7cc1f8e9b2ca2f4ff2b65f4e06", "support" ], "mixed-content/imageset.https.sub.html": [ @@ -679965,11 +680250,7 @@ "testharness" ], "mixed-content/spec.src.json": [ - "c272bb3f642bfd71ace5e4bcab4a66cadaf732c5", - "support" - ], - "mixed-content/spec_json.js": [ - "00428b1fa5e6396b82484d33cf36589a8c64dd9a", + "8ece6de3ffdf84c6acdcfd4c9c17ec5d83099212", "support" ], "mst-content-hint/META.yml": [ @@ -687789,15 +688070,15 @@ "testharness" ], "payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html": [ - "b0e0cbacbf2e611139cd30747acaaf1186ae21f6", + "64baebb50246514e9fd3db59d3dada4af9720825", "testharness" ], "payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html": [ - "45661de7e0dedd19cda4a7a2f0a76aaa72e91ccc", + "a741296d5da75460f3d2877f228d4c59e13d643c", "testharness" ], "payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html": [ - "06f0c8479da9450c748fe01c6d411f73355210da", + "c1d53a4bc261759d5ee7243c90e4beb7f8b7de4e", "testharness" ], "payment-request/billing-address-changed-manual.https.html": [ @@ -701872,6 +702153,10 @@ "e296ce93b965b788ea79f2f2b6cff45d5dce55f0", "support" ], + "referrer-policy/generic/spec_json.js": [ + "cad5e79f1f8b80bdc54f2f8e861d821770b29721", + "support" + ], "referrer-policy/generic/subresource-test/area-navigate.html": [ "2a4f29654df1da8e3f18359dacf6ce092c325a67", "testharness" @@ -701912,20 +702197,12 @@ "c8a6b139f33fa044ddb644409b1e4437d3df338c", "support" ], - "referrer-policy/generic/tools/generate.py": [ - "7cace61c0f0b7cd973bf2ea6f88d12a436805d48", - "support" - ], "referrer-policy/generic/unsupported-csp-referrer-directive.html": [ "a7f22210edd9703c67cf9df819c07117b5399445", "testharness" ], "referrer-policy/spec.src.json": [ - "2674a45d6db37fdd2fed84bf08fea51b5432f456", - "support" - ], - "referrer-policy/spec_json.js": [ - "8a15eaee1ebd7886a1f80dc7dc0bac46b08f595d", + "b0e07eb132861688d58126ab506afb4c8de03256", "support" ], "remote-playback/META.yml": [ @@ -702825,7 +703102,7 @@ "support" ], "resources/chromium/webxr-test.js": [ - "b45ff20dbc4ec9cf9fbcd36b8e3b7887ba512947", + "54788b4ca3de9fc99dd01d2693829bd5be08956f", "support" ], "resources/chromium/webxr-test.js.headers": [ @@ -702853,7 +703130,7 @@ "support" ], "resources/test/conftest.py": [ - "857f1b41bcb11c422d6603e79d8c98a6b1dfbb07", + "a9f4203f279cbadb702456b1d71d6aa60ed5d0ef", "support" ], "resources/test/harness.html": [ @@ -703193,7 +703470,7 @@ "support" ], "resources/test/tox.ini": [ - "d0c5186f15692153fe0d09ba727e4350f1de2ef7", + "a7a02e4b93bdc009ef0b05cbc039c3977fcdd46e", "support" ], "resources/test/variants.js": [ @@ -714765,7 +715042,7 @@ "support" ], "tools/serve/serve.py": [ - "1868b1a36e51c187491d73aa2708484da882042f", + "f33846bc24c042729857113f8e8be9387b9a8e56", "support" ], "tools/serve/test_functional.py": [ @@ -718721,7 +718998,7 @@ "support" ], "tools/wpt/browser.py": [ - "3ee98d959ec5befc58b884e0ec5385d554bc8725", + "6dd2f5c4c9001f1edfa0a723759444c53106d673", "support" ], "tools/wpt/commands.json": [ @@ -718733,7 +719010,7 @@ "support" ], "tools/wpt/install.py": [ - "24915f0c98d0be3a864a3a515ba0e162dc37da8c", + "3da697e5333a55510d0b63b74f79c236303b4c4f", "support" ], "tools/wpt/mach-emulator.manifest": [ @@ -718845,7 +719122,7 @@ "support" ], "tools/wptrunner/requirements.txt": [ - "3cd01446e25bceb4dadef48259117bd057ea6f48", + "74a358ed10b54d1482b4732fdc9c97e01c75c22d", "support" ], "tools/wptrunner/requirements_android_webview.txt": [ @@ -719125,7 +719402,7 @@ "support" ], "tools/wptrunner/wptrunner/environment.py": [ - "7dcea4aeafabb9c481dccdc1aaf9bd153572bb7d", + "608b24dfd3ad878a95d27b030e17890d27eb9a0a", "support" ], "tools/wptrunner/wptrunner/executors/__init__.py": [ @@ -719153,7 +719430,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executormarionette.py": [ - "01306397db7944cd0dfadf8f1bf0327dbacf94d6", + "837329fccb7795fbd612fea4c0b7cacbcaf469ed", "support" ], "tools/wptrunner/wptrunner/executors/executoropera.py": [ @@ -719169,7 +719446,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executorservo.py": [ - "2b8e865fa9bd1f0f62a1b9cbd6f79ffd0bcb8d46", + "8f8e120e66da6403f256f99f279f1f5dc8008272", "support" ], "tools/wptrunner/wptrunner/executors/executorservodriver.py": [ @@ -719469,7 +719746,7 @@ "support" ], "tools/wptrunner/wptrunner/wpttest.py": [ - "d650e98dfbf5976afa0138f0ac166e950e194e82", + "bff61f3e77657926ab0d501963d00621bdc2a78f", "support" ], "tools/wptserve/.gitignore": [ @@ -720389,11 +720666,11 @@ "manual" ], "uievents/order-of-events/mouse-events/wheel-basic-manual.html": [ - "093951dfe49b4f68e9015614f320f9254d54f391", + "c5a09f6cb4f8919539090187fa8be1a670617b33", "manual" ], "uievents/order-of-events/mouse-events/wheel-scrolling-manual.html": [ - "5acae6d4777ccff91d4bafcfa16cdde2eba69912", + "cae4cf6523b4a23d125d187215a96ad7918675cc", "manual" ], "uievents/resources/eventrecorder.js": [ @@ -723372,12 +723649,12 @@ "43c8dcf97b3ea5af9cee9403392b998c8d079a0a", "testharness" ], - "upgrade-insecure-requests/generic/test-case.sub.js": [ - "cde228dbad89f7b707a6332dc8ed3b41e0474555", + "upgrade-insecure-requests/generic/spec_json.js": [ + "89b17048e22f642255e67aa13bed9bdbecf01bec", "support" ], - "upgrade-insecure-requests/generic/tools/generate.py": [ - "4c19f4c34dab0ecd302ae22fcffdc3f07ce935c6", + "upgrade-insecure-requests/generic/test-case.sub.js": [ + "cde228dbad89f7b707a6332dc8ed3b41e0474555", "support" ], "upgrade-insecure-requests/link-upgrade.sub.https.html": [ @@ -723465,11 +723742,7 @@ "support" ], "upgrade-insecure-requests/spec.src.json": [ - "6aee9a280b0ff5001c77e2d8a688618c049dc226", - "support" - ], - "upgrade-insecure-requests/spec_json.js": [ - "9122ce38e31e1a2c2c2c3f4caa291ae24e91a8cb", + "dcf63008f63116fceb47d5d2bfb7aa15696202f0", "support" ], "upgrade-insecure-requests/support/redirect-cors.py": [ @@ -729117,7 +729390,7 @@ "support" ], "webrtc/RTCDTMFSender-insertDTMF.https.html": [ - "8ac144bab9286fbaa560272ae9c1ca7965090532", + "62a5f0472c1983140f1ccd29b10e5b86d302c79b", "testharness" ], "webrtc/RTCDTMFSender-ontonechange-long.https.html": [ @@ -729169,7 +729442,7 @@ "testharness" ], "webrtc/RTCIceConnectionState-candidate-pair.https.html": [ - "6c93aec9260d50d1d6cfcd637d15dd44385bee0d", + "0752c9aaee65cd4216861e9900c8f863f9d14456", "testharness" ], "webrtc/RTCIceTransport-extension-helper.js": [ @@ -729197,11 +729470,11 @@ "testharness" ], "webrtc/RTCPeerConnection-addTrack.https.html": [ - "1550fc4f7943b79cc331d5c93ca6d5643793dead", + "3f4f927883de757d23caf7fda2af30715d67d8ed", "testharness" ], "webrtc/RTCPeerConnection-addTransceiver.https.html": [ - "6df056117d02452e040b153147dbdad7bf8fa9bb", + "3640bfb31cd32b926c0493aa1d80f9d291dfae26", "testharness" ], "webrtc/RTCPeerConnection-canTrickleIceCandidates.html": [ @@ -729213,7 +729486,7 @@ "testharness" ], "webrtc/RTCPeerConnection-connectionState.https.html": [ - "a054a1e8cccbd02cc7b55f96ff483219846cf997", + "9e2f3649aec145f3f8787846c0cd3b9ac74a7a81", "testharness" ], "webrtc/RTCPeerConnection-constructor.html": [ @@ -729253,11 +729526,11 @@ "support" ], "webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html": [ - "dbfc41e0c375dea0711a8cf312846cbdb27c570b", + "ff405f32851037e3880b674b4553896d36d92544", "testharness" ], "webrtc/RTCPeerConnection-iceConnectionState.https.html": [ - "a2b2827b8494af7e33e5c81b765b92041064fe6f", + "a5bf7536ff5fa8dea448010c73dcbee4ad7532ff", "testharness" ], "webrtc/RTCPeerConnection-iceGatheringState.html": [ @@ -729281,7 +729554,7 @@ "testharness" ], "webrtc/RTCPeerConnection-onsignalingstatechanged.https.html": [ - "fc3182d3d59ea5ba80cbcf022a76c4fc40f18a1a", + "c09285956dfc73fba1390343903af377181ec08a", "testharness" ], "webrtc/RTCPeerConnection-ontrack.https.html": [ @@ -729293,7 +729566,7 @@ "testharness" ], "webrtc/RTCPeerConnection-removeTrack.https.html": [ - "f2add7f0d34bada5c156cafeac399e104b2a414a", + "10b4cfb3a613d8abc508da9ed12c3c3605d32ebe", "testharness" ], "webrtc/RTCPeerConnection-restartIce-onnegotiationneeded.https.html": [ @@ -729413,7 +729686,7 @@ "testharness" ], "webrtc/RTCRtpReceiver-getContributingSources.https.html": [ - "aa59f1b910aca14b2101b063654a17d1602ba26b", + "7245d477cc8994098e1d0af2a8a5ddbf2f57620e", "testharness" ], "webrtc/RTCRtpReceiver-getParameters.html": [ @@ -729425,7 +729698,7 @@ "testharness" ], "webrtc/RTCRtpReceiver-getSynchronizationSources.https.html": [ - "a78ede0d90863dbfa458807d435a34cd9087b61f", + "8436a44ebcd227fa934ceba5488918b10d92acd3", "testharness" ], "webrtc/RTCRtpSender-getCapabilities.html": [ @@ -729449,7 +729722,7 @@ "testharness" ], "webrtc/RTCRtpSender-transport.https.html": [ - "8c0552dd68aba8c707c6cbe2c7d6f9f3c5f64f17", + "cd419ebc186b720c2a5f961451eec723ad229fa8", "testharness" ], "webrtc/RTCRtpTransceiver-direction.html": [ @@ -729465,7 +729738,7 @@ "testharness" ], "webrtc/RTCRtpTransceiver.https.html": [ - "67571895175f19c008743523f035aa31fced9681", + "36708d11ec82bfff5e55489f334a74668cb51698", "testharness" ], "webrtc/RTCSctpTransport-constructor.html": [ @@ -734256,6 +734529,18 @@ "1268f4ea2a5eb228fb49a6f06d8905f8d9480ae7", "testharness" ], + "webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html": [ + "2cd36a17f62243eedd9eed8efcac416f5f029d8d", + "testharness" + ], + "webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html": [ + "c3fdeb34db0f65b9c0af3b79aa8adf22f799d6c6", + "testharness" + ], + "webxr/ar-module/xrSession_environmentBlendMode.https.html": [ + "da2ddc28d8dc8c4903b985dbe08f9ad034ef0f1b", + "testharness" + ], "webxr/events_input_source_recreation.https.html": [ "ecb4b022bf09410cae44b4f5a3c71bc5c054181e", "testharness" @@ -734345,7 +734630,7 @@ "support" ], "webxr/resources/webxr_test_constants.js": [ - "3d9bfa2082baa90670131774920805a7f16cd5a2", + "553a8127fcf80fd3999add61439fca4a58c5d065", "support" ], "webxr/resources/webxr_test_constants_fake_world.js": [ @@ -736705,7 +736990,7 @@ "support" ], "wpt.py": [ - "c65e1ed2c6cde4d3abd9e9a771f02542398fec49", + "affba7343eadfd1b6144febf6c0083ddd970db71", "support" ], "x-frame-options/META.yml": [ diff --git a/tests/wpt/metadata/cors/preflight-cache.htm.ini b/tests/wpt/metadata/cors/preflight-cache.htm.ini index 951b025fc02..39e05f5c64a 100644 --- a/tests/wpt/metadata/cors/preflight-cache.htm.ini +++ b/tests/wpt/metadata/cors/preflight-cache.htm.ini @@ -6,3 +6,6 @@ [preflight first request, second from cache, wait, third should preflight again] expected: FAIL + [age = blank, should be cached] + expected: FAIL + diff --git a/tests/wpt/metadata/css/CSS2/text/bidi-span-003.html.ini b/tests/wpt/metadata/css/CSS2/text/bidi-span-003.html.ini new file mode 100644 index 00000000000..a6a9aa51c11 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/text/bidi-span-003.html.ini @@ -0,0 +1,2 @@ +[bidi-span-003.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-flexbox/table-as-item-wide-content.html.ini b/tests/wpt/metadata/css/css-flexbox/table-as-item-wide-content.html.ini deleted file mode 100644 index f6def90a63b..00000000000 --- a/tests/wpt/metadata/css/css-flexbox/table-as-item-wide-content.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[table-as-item-wide-content.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-text/white-space/white-space-zero-fontsize-002.html.ini b/tests/wpt/metadata/css/css-text/white-space/white-space-zero-fontsize-002.html.ini new file mode 100644 index 00000000000..132bd51076f --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/white-space-zero-fontsize-002.html.ini @@ -0,0 +1,2 @@ +[white-space-zero-fontsize-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini deleted file mode 100644 index 4c79907309b..00000000000 --- a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[CaretPosition-001.html] - [Element at (400, 100)] - expected: FAIL - diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index 0ba07b8e86a..7807ef6db4c 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -312,21 +312,24 @@ [fetch(): separate response Content-Type: text/plain ] expected: NOTRUN - [<iframe>: combined response Content-Type: text/html;" \\" text/plain] + [<iframe>: separate response Content-Type: text/plain */*] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*] + [<iframe>: separate response Content-Type: text/html;" \\" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: text/html */*;charset=gbk] + [<iframe>: combined response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html;x=" text/plain] + [<iframe>: combined response Content-Type: */* text/html] expected: FAIL - [<iframe>: separate response Content-Type: text/html;" \\" text/plain] + [<iframe>: combined response Content-Type: text/html */*] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] + [<iframe>: combined response Content-Type: text/html;x=" text/plain] expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini index e67f0406fc3..d2df9b78483 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -53,3 +53,6 @@ [combined text/javascript ] expected: FAIL + [separate text/javascript x/x] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index ecd755157c7..f036bb9d96d 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -14,6 +14,6 @@ [X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff] expected: FAIL - [X-Content-Type-Options%3A%20%2Cnosniff] + [X-Content-Type-Options%3A%20%22nosniFF%22] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini deleted file mode 100644 index 385376c7321..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_4.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/location_reload_javascript_url.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/location_reload_javascript_url.html.ini new file mode 100644 index 00000000000..26688502d5d --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/location_reload_javascript_url.html.ini @@ -0,0 +1,4 @@ +[location_reload_javascript_url.html] + [location_reload_javascript_url] + expected: FAIL + diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini index c12c0f8ae48..6852d7663de 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini @@ -1,4 +1,8 @@ [skip-document-with-fragment.html] + expected: TIMEOUT [Autofocus elements in iframed documents with URL fragments should be skipped.] expected: FAIL + [Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini index 5f60c78e73c..b3bd9f4c289 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini @@ -1,6 +1,6 @@ [iframe_sandbox_popups_escaping-3.html] type: testharness - expected: TIMEOUT + expected: CRASH [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index dc856a3d5a3..e440b1e38c6 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -1,5 +1,6 @@ [iframe_sandbox_popups_nonescaping-3.html] type: testharness + expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini index 97f8a0cc51f..6d08beab111 100644 --- a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini +++ b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini @@ -10,6 +10,3 @@ [Verifies the resolution of entry.startTime is at least 20 microseconds.] expected: TIMEOUT - [Verifies the resolution of performance.now() is at least 5 microseconds.] - expected: FAIL - diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini new file mode 100644 index 00000000000..064cf47545b --- /dev/null +++ b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini @@ -0,0 +1,5 @@ +[017.html] + expected: TIMEOUT + [origin of the script that invoked the method, about:blank] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html.ini b/tests/wpt/metadata/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html.ini new file mode 100644 index 00000000000..b4c7bff7568 --- /dev/null +++ b/tests/wpt/metadata/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html.ini @@ -0,0 +1,7 @@ +[xrDevice_isSessionSupported_immersive-ar.https.html] + [isSessionSupported resolves to true for immersive-ar on a supported device] + expected: FAIL + + [isSessionSupported resolves to false for immersive-ar on an unsupported device] + expected: FAIL + diff --git a/tests/wpt/metadata/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html.ini b/tests/wpt/metadata/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html.ini new file mode 100644 index 00000000000..956d3ed136a --- /dev/null +++ b/tests/wpt/metadata/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html.ini @@ -0,0 +1,4 @@ +[xrDevice_requestSession_immersive-ar.https.html] + [Tests requestSession rejects immersive-ar mode when unsupported] + expected: FAIL + diff --git a/tests/wpt/metadata/webxr/ar-module/xrSession_environmentBlendMode.https.html.ini b/tests/wpt/metadata/webxr/ar-module/xrSession_environmentBlendMode.https.html.ini new file mode 100644 index 00000000000..76f40939f59 --- /dev/null +++ b/tests/wpt/metadata/webxr/ar-module/xrSession_environmentBlendMode.https.html.ini @@ -0,0 +1,4 @@ +[xrSession_environmentBlendMode.https.html] + [Tests environmentBlendMode for an AR device] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini index f584fce5df1..268949ced5c 100644 --- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini +++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini @@ -1,5 +1,4 @@ [005.html] - expected: ERROR [dedicated worker in shared worker in dedicated worker] expected: FAIL diff --git a/tests/wpt/web-platform-tests/WebIDL/ecmascript-binding/put-forwards.html b/tests/wpt/web-platform-tests/WebIDL/ecmascript-binding/put-forwards.html index b004bd008d8..d7cc389b1c8 100644 --- a/tests/wpt/web-platform-tests/WebIDL/ecmascript-binding/put-forwards.html +++ b/tests/wpt/web-platform-tests/WebIDL/ecmascript-binding/put-forwards.html @@ -114,4 +114,18 @@ test(() => { element.style = "color: green"; }); }, "TypeError when getter of [PutForwards] attribute returns non-object"); + +test(() => { + var element = document.createElement("div"); + + var element_style = element.style; + Object.defineProperty(element.style, "cssText", { + value: null, + writable: false, + }); + + element.style = "color: green"; + assert_equals(element.style, element_style); + assert_equals(element.style.cssText, null); +}, "Does not throw when setter of [PutForwards] attribute returns false"); </script> diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-lifetime.tentative.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-lifetime.tentative.https.html deleted file mode 100644 index f0b03ba0a8c..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/accept-ch-lifetime.tentative.https.html +++ /dev/null @@ -1,106 +0,0 @@ -<!doctype html> -<meta name="timeout" content="long"> -<title>Accept-CH-Lifetime test</title> -<body> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/common/get-host-info.sub.js"></script> -<script src="resources/accept-ch-lifetime-test.js"></script> - -<script> -setup({ explicit_done: true }); - -// Cross-origin header tests -run_test({ name: "cross origin iframe not setting other origins", - initial_url: echo, - accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept, - expect_url: do_not_expect, - type: "iframe" }); - -run_test({ name: "cross origin iframe not setting own origin", - initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo, - accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept, - expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect, - type: "iframe" }); - -run_test({ name: "cross origin navigation", - initial_url: echo, - accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept, - expect_url: host_info.HTTPS_REMOTE_ORIGIN + expect, - type: "navigation" }); - -run_test({ name: "cross origin subresource", - initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo, - accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept, - expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect, - type: "subresource" }); - -// Same origin header tests -run_test({ name: "same origin iframe", - initial_url: echo, - accept_url: accept, - expect_url: expect, - type: "iframe" }); - -run_test({ name: "same origin navigation", - initial_url: echo, - accept_url: accept, - expect_url: expect, - type: "navigation" }); - -run_test({ name: "same origin subresource", - initial_url: echo, - accept_url: accept, - expect_url: do_not_expect, - type: "subresource" }); - -// Cross-origin http-equiv tests -run_test({ name: "http-equiv cross origin iframe not setting other origins", - initial_url: echo, - accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept, - expect_url: do_not_expect, - type: "iframe" }); - -run_test({ name: "http-equiv cross origin iframe not setting own origin", - initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo, - accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept, - expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect, - type: "iframe" }); - -run_test({ name: "http-equiv cross origin navigation", - initial_url: echo, - accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept, - expect_url: host_info.HTTPS_REMOTE_ORIGIN + expect, - type: "navigation" }); - -run_test({ name: "http-equiv cross origin subresource", - initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo, - accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept, - expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect, - type: "subresource" }); - -// same-origin http-equiv tests -run_test({ name: "http-equiv same origin iframe", - initial_url: echo, - accept_url: httpequiv_accept, - expect_url: expect, - type: "iframe" }); - -run_test({ name: "http-equiv same origin navigation", - initial_url: echo, - accept_url: httpequiv_accept, - expect_url: expect, - type: "navigation" }); - -run_test({ name: "http-equiv same origin subresource", - initial_url: echo, - accept_url: httpequiv_accept, - expect_url: do_not_expect, - type: "subresource" }); - -done(); - -</script> -</body> -</html> - diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html new file mode 100644 index 00000000000..5316c2874cf --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "cross origin iframe not setting other origins", + initial_url: echo, + accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept, + expect_url: do_not_expect, + type: "iframe" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html new file mode 100644 index 00000000000..f83aa6173e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "cross origin iframe not setting own origin", + initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo, + accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept, + expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect, + type: "iframe" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-navigation.https.html new file mode 100644 index 00000000000..e05c8e3ef5b --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-navigation.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "cross origin navigation", + initial_url: echo, + accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept, + expect_url: host_info.HTTPS_REMOTE_ORIGIN + expect, + type: "navigation" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-subresource.https.html new file mode 100644 index 00000000000..249ccb4a60d --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/cross-origin-subresource.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "cross origin subresource", + initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo, + accept_url: host_info.HTTPS_REMOTE_ORIGIN + accept, + expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect, + type: "subresource" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html new file mode 100644 index 00000000000..226b3116fc1 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "http-equiv cross origin iframe not setting other origins", + initial_url: echo, + accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept, + expect_url: do_not_expect, + type: "iframe" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html new file mode 100644 index 00000000000..705b65a7bf4 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "http-equiv cross origin iframe not setting own origin", + initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo, + accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept, + expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect, + type: "iframe" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html new file mode 100644 index 00000000000..ffebeb919f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "http-equiv cross origin navigation", + initial_url: echo, + accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept, + expect_url: host_info.HTTPS_REMOTE_ORIGIN + expect, + type: "navigation" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html new file mode 100644 index 00000000000..7bb5d1520c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "http-equiv cross origin subresource", + initial_url: host_info.HTTPS_REMOTE_ORIGIN + echo, + accept_url: host_info.HTTPS_REMOTE_ORIGIN + httpequiv_accept, + expect_url: host_info.HTTPS_REMOTE_ORIGIN + do_not_expect, + type: "subresource" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html new file mode 100644 index 00000000000..f07adaa901c --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<!-- <meta name="timeout" content="long"> --> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "http-equiv same origin iframe", + initial_url: echo, + accept_url: httpequiv_accept, + expect_url: expect, + type: "iframe" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html new file mode 100644 index 00000000000..91b8cd639f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "http-equiv same origin navigation", + initial_url: echo, + accept_url: httpequiv_accept, + expect_url: expect, + type: "navigation" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html new file mode 100644 index 00000000000..793bf5e0796 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/http-equiv-same-origin-subresource.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "http-equiv same origin subresource", + initial_url: echo, + accept_url: httpequiv_accept, + expect_url: do_not_expect, + type: "subresource" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-lifetime-test.js b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch-test.js index 05aaec1aef8..ed635513fd7 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/accept-ch-lifetime-test.js +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch-test.js @@ -1,8 +1,8 @@ -const echo = "/client-hints/echo_client_hints_received.py"; -const accept = "/client-hints/resources/accept_ch_lifetime.html"; -const httpequiv_accept = "/client-hints/resources/http_equiv_accept_ch_lifetime.html"; -const expect = "/client-hints/resources/expect_client_hints_headers.html" -const do_not_expect = "/client-hints/resources/do_not_expect_client_hints_headers.html" +const echo = "/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py"; +const accept = "/client-hints/accept-ch-stickiness/resources/accept-ch.html"; +const httpequiv_accept = "/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html"; +const expect = "/client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html" +const do_not_expect = "/client-hints/accept-ch-stickiness/resources/do-not-expect-client-hints-headers.html" const host_info = get_host_info(); const run_test = test => { @@ -53,7 +53,7 @@ const run_test = test => { assert_unreached("unknown test type"); } }); - }, test.name + " set Accept-CH-Lifetime"); + }, test.name + " set Accept-CH"); // Finally, verify that CH are actually sent (or not) on requests promise_test(t => { @@ -62,7 +62,7 @@ const run_test = test => { window.addEventListener('message', t.step_func(function(e) { win.close(); assert_equals(e.data, "PASS", "message from opened page"); - fetch("/client-hints/resources/clear-site-data.html").then(resolve); + fetch("/client-hints/accept-ch-stickiness/resources/clear-site-data.html").then(resolve); })); // Open a new window. Verify that the user agent attaches client hints. win = window.open(test.expect_url); diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept_ch_lifetime.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch.html index a77eaab3f0b..694c5b03bc1 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/accept_ch_lifetime.html +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch.html @@ -2,10 +2,11 @@ <body> <!-- An empty webpage whose response headers include Accept-CH -and Accept-CH-Lifetime header. Fetching this webpage should cause +header. Fetching this webpage should cause user-agent to persist origin preferences for the client hints -specified in the Accept-CH header for a duration specified in -the Accept-CH-Lifetime header.--> +specified in the Accept-CH header until a Clear-Site-Data header +is sent or user action is take to clear the session or data about +the origin.--> <script> window.top.opener.postMessage('Loaded', '*'); </script> diff --git a/tests/wpt/web-platform-tests/client-hints/resources/accept_ch_lifetime.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch.html.headers index 370f9869226..370f9869226 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/accept_ch_lifetime.html.headers +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/accept-ch.html.headers diff --git a/tests/wpt/web-platform-tests/client-hints/resources/clear-site-data.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html index e69de29bb2d..e69de29bb2d 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/clear-site-data.html +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html diff --git a/tests/wpt/web-platform-tests/client-hints/resources/clear-site-data.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers index a0077c0577f..a0077c0577f 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/clear-site-data.html.headers +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/clear-site-data.html.headers diff --git a/tests/wpt/web-platform-tests/client-hints/resources/do_not_expect_client_hints_headers.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/do-not-expect-client-hints-headers.html index b3cf5df4c27..147206b26ae 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/do_not_expect_client_hints_headers.html +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/do-not-expect-client-hints-headers.html @@ -5,10 +5,10 @@ // This test checks if browser attaches the device-memory client hint in the // HTTP request headers. -// echo_client_hints_received.py sets the response headers depending on the set +// echo-client-hints-received.py sets the response headers depending on the set // of client hints it receives in the request headers. -fetch("../echo_client_hints_received.py").then(r => { +fetch("/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py").then(r => { if(r.status == 200 && !r.headers.has("device-memory-received")) { window.top.opener.postMessage('PASS', '*'); } diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py new file mode 100644 index 00000000000..be712293be3 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py @@ -0,0 +1,12 @@ +def main(request, response): + """ + Simple handler that sets a response header based on which client hint + request headers were received. + """ + + response.headers.append("Access-Control-Allow-Origin", "*") + response.headers.append("Access-Control-Allow-Headers", "*") + response.headers.append("Access-Control-Expose-Headers", "*") + + if "device-memory" in request.headers: + response.headers.set("device-memory-received", request.headers.get("device-memory")) diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html new file mode 100644 index 00000000000..cda1f81978d --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/expect-client-hints-headers.html @@ -0,0 +1,22 @@ +<html> +<body> +<script> + +// This test checks if browser attaches the device-memory client hint in the +// HTTP request headers. + +// echo-client-hints-received.py sets the response headers depending on the set +// of client hints it receives in the request headers. + +fetch("/client-hints/accept-ch-stickiness/resources/echo-client-hints-received.py").then(r => { + if(r.status == 200 && r.headers.has("device-memory-received")) { + window.top.opener.postMessage('PASS', '*'); + } + else { + window.top.opener.postMessage('FAIL', '*'); + } +}); + +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/client-hints/resources/http_equiv_accept_ch_lifetime.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html index ab2ab9e60c8..05e18a44fb9 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/http_equiv_accept_ch_lifetime.html +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html @@ -1,6 +1,5 @@ <html> <meta http-equiv="Accept-CH" content="device-memory"> -<meta http-equiv="Accept-CH-Lifetime" content="5"> <body> <script> window.top.opener.postMessage('Loaded', '*'); diff --git a/tests/wpt/web-platform-tests/client-hints/resources/http_equiv_accept_ch_lifetime.html.headers b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html.headers index 27140bf36e4..27140bf36e4 100644 --- a/tests/wpt/web-platform-tests/client-hints/resources/http_equiv_accept_ch_lifetime.html.headers +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/resources/http-equiv-accept-ch.html.headers diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-iframe.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-iframe.https.html new file mode 100644 index 00000000000..25e29017f40 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-iframe.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "same origin iframe", + initial_url: echo, + accept_url: accept, + expect_url: expect, + type: "iframe" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-navigation.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-navigation.https.html new file mode 100644 index 00000000000..e35cbdcedd0 --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-navigation.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "same origin navigation", + initial_url: echo, + accept_url: accept, + expect_url: expect, + type: "navigation" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-subresource.https.html b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-subresource.https.html new file mode 100644 index 00000000000..0b7151a2cca --- /dev/null +++ b/tests/wpt/web-platform-tests/client-hints/accept-ch-stickiness/same-origin-subresource.https.html @@ -0,0 +1,19 @@ +<!doctype html> +<meta name="timeout" content="long"> +<title>Accept-CH Persistence test</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/accept-ch-test.js"></script> + +<script> +run_test({ name: "same origin subresource", + initial_url: echo, + accept_url: accept, + expect_url: do_not_expect, + type: "subresource" }); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/client-hints/resources/square.png b/tests/wpt/web-platform-tests/client-hints/resources/square.png Binary files differdeleted file mode 100644 index 01c9666a8de..00000000000 --- a/tests/wpt/web-platform-tests/client-hints/resources/square.png +++ /dev/null diff --git a/tests/wpt/web-platform-tests/common/security-features/README.md b/tests/wpt/web-platform-tests/common/security-features/README.md index c19874653a7..2509d661b4a 100644 --- a/tests/wpt/web-platform-tests/common/security-features/README.md +++ b/tests/wpt/web-platform-tests/common/security-features/README.md @@ -39,28 +39,25 @@ project-directory/ (e.g. referrer-policy/) ├── spec.src.json ├── generic/ │ ├── test-case.sub.js - Per-project test helper -│ └── tools/ -│ └── generator.py - Per-project generator script +│ ├── sanity-checker.js (Used by debug target only) +│ └── spec_json.js (Used by debug target only) └── gen/ - generated tests ``` -Invoking `project-directory/generic/tools/generate.py` will parse the spec JSON and determine which tests to generate (or skip) while using templates. - ## Generating the tests -The repository already contains generated tests, so if you're making changes, see the [Removing all generated tests](#removing-all-generated-tests) section below, on how to remove them before you start generating tests which include your changes. +Note: When the repository already contains generated tests, [remove all generated tests](#removing-all-generated-tests) first. ```bash -# Chdir into the project directory. -cd ~/web-platform-tests/project-directory - # Generate the test files under gen/ (HTMLs and .headers files). -./generic/tools/generate.py +path/to/common/security-features/tools/generate.py --spec path/to/project-directory/ # Add all generated tests to the repo. -git add gen/ && git commit -m "Add generated tests" +git add path/to/project-directory/gen/ && git commit -m "Add generated tests" ``` +This will parse the spec JSON (`project-directory/spec.src.json`) and determine which tests to generate (or skip) while using templates. + During the generation, the spec is validated by ```common/security-features/tools/spec_validator.py```. This is specially important when you're making changes to `spec.src.json`. Make sure it's a valid JSON (no comments or trailing commas). The validator reports specific errors (missing keys etc.), if any. ### Removing all generated tests @@ -68,18 +65,14 @@ During the generation, the spec is validated by ```common/security-features/tool Simply remove all files under `project-directory/gen/`. ```bash -# Chdir into the project directory. -cd ~/web-platform-tests/project-directory - -# Remove all generated tests. -rm -r gen/ +rm -r path/to/project-directory/gen/ ``` ### Options for generating tests Note: this section is currently obsolete. Only the release template is working. -The generator script ```./generic/tools/generate.py``` has two targets: ```release``` and ```debug```. +The generator script has two targets: ```release``` and ```debug```. * Using **release** for the target will produce tests using a template for optimizing size and performance. The release template is intended for the official web-platform-tests and possibly other test suites. No sanity checking is done in release mode. Use this option whenever you're checking into web-platform-tests. diff --git a/tests/wpt/web-platform-tests/common/security-features/tools/generate.py b/tests/wpt/web-platform-tests/common/security-features/tools/generate.py index 6fac19827aa..3c298b5a3e2 100644..100755 --- a/tests/wpt/web-platform-tests/common/security-features/tools/generate.py +++ b/tests/wpt/web-platform-tests/common/security-features/tools/generate.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python + from __future__ import print_function import argparse @@ -64,7 +66,7 @@ def dump_test_parameters(selection): cls=util.CustomEncoder) -def get_test_filename(config, selection): +def get_test_filename(spec_directory, spec_json, selection): '''Returns the filname for the main test HTML file''' selection_for_filename = copy.deepcopy(selection) @@ -72,8 +74,9 @@ def get_test_filename(config, selection): if selection_for_filename['delivery_value'] is None: selection_for_filename['delivery_value'] = 'unset' - return os.path.join(config.spec_directory, - config.test_file_path_pattern % selection_for_filename) + return os.path.join( + spec_directory, + spec_json['test_file_path_pattern'] % selection_for_filename) def handle_deliveries(policy_deliveries): @@ -127,9 +130,9 @@ def handle_deliveries(policy_deliveries): return {"meta": meta, "headers": headers} -def generate_selection(spec_json, config, selection, spec, +def generate_selection(spec_directory, spec_json, selection, spec, test_html_template_basename): - test_filename = get_test_filename(config, selection) + test_filename = get_test_filename(spec_directory, spec_json, selection) target_policy_delivery = util.PolicyDelivery(selection['delivery_type'], selection['delivery_key'], @@ -175,17 +178,24 @@ def generate_selection(spec_json, config, selection, spec, "\n", indent) selection['spec_name'] = spec['name'] - selection[ - 'test_page_title'] = config.test_page_title_template % spec['title'] + selection['test_page_title'] = spec_json['test_page_title_template'] % spec selection['spec_description'] = spec['description'] selection['spec_specification_url'] = spec['specification_url'] - selection['helper_js'] = config.helper_js - selection['sanity_checker_js'] = config.sanity_checker_js - selection['spec_json_js'] = config.spec_json_js - test_headers_filename = test_filename + ".headers" test_directory = os.path.dirname(test_filename) + selection['helper_js'] = os.path.relpath( + os.path.join(spec_directory, 'generic', 'test-case.sub.js'), + test_directory) + selection['sanity_checker_js'] = os.path.relpath( + os.path.join(spec_directory, 'generic', 'sanity-checker.js'), + test_directory) + selection['spec_json_js'] = os.path.relpath( + os.path.join(spec_directory, 'generic', 'spec_json.js'), + test_directory) + + test_headers_filename = test_filename + ".headers" + test_html_template = util.get_template(test_html_template_basename) disclaimer_template = util.get_template('disclaimer.template') @@ -194,13 +204,13 @@ def generate_selection(spec_json, config, selection, spec, generated_disclaimer = disclaimer_template \ % {'generating_script_filename': os.path.relpath(sys.argv[0], util.test_root_directory), - 'html_template_filename': os.path.relpath(html_template_filename, - util.test_root_directory)} + 'spec_directory': os.path.relpath(spec_directory, + util.test_root_directory)} # Adjust the template for the test invoking JS. Indent it to look nice. selection['generated_disclaimer'] = generated_disclaimer.rstrip() - selection[ - 'test_description'] = config.test_description_template % selection + selection['test_description'] = spec_json[ + 'test_description_template'] % selection selection['test_description'] = \ selection['test_description'].rstrip().replace("\n", "\n" + " " * 33) @@ -227,12 +237,12 @@ def generate_selection(spec_json, config, selection, spec, util.write_file(test_filename, test_html_template % selection) -def generate_test_source_files(config, spec_json, target): +def generate_test_source_files(spec_directory, spec_json, target): test_expansion_schema = spec_json['test_expansion_schema'] specification = spec_json['specification'] spec_json_js_template = util.get_template('spec_json.js.template') - generated_spec_json_filename = os.path.join(config.spec_directory, + generated_spec_json_filename = os.path.join(spec_directory, "generic", "spec_json.js") util.write_file( generated_spec_json_filename, @@ -251,7 +261,8 @@ def generate_test_source_files(config, spec_json, target): expand_pattern(excluded_pattern, test_expansion_schema) for excluded_selection in permute_expansion(excluded_expansion, artifact_order): - excluded_selection_path = config.selection_pattern % excluded_selection + excluded_selection_path = spec_json[ + 'selection_pattern'] % excluded_selection exclusion_dict[excluded_selection_path] = True for spec in specification: @@ -264,7 +275,7 @@ def generate_test_source_files(config, spec_json, target): test_expansion_schema) for selection in permute_expansion(expansion, artifact_order): selection['delivery_key'] = spec_json['delivery_key'] - selection_path = config.selection_pattern % selection + selection_path = spec_json['selection_pattern'] % selection if not selection_path in exclusion_dict: if selection_path in output_dict: if expansion_pattern['expansion'] != 'override': @@ -280,13 +291,13 @@ def generate_test_source_files(config, spec_json, target): for selection_path in output_dict: selection = output_dict[selection_path] try: - generate_selection(spec_json, config, selection, spec, + generate_selection(spec_directory, spec_json, selection, spec, html_template) except util.ShouldSkip: continue -def main(config): +def main(): parser = argparse.ArgumentParser( description='Test suite generator utility') parser.add_argument( @@ -300,16 +311,19 @@ def main(config): '-s', '--spec', type=str, - default=None, + default=os.getcwd(), help='Specify a file used for describing and generating the tests') # TODO(kristijanburnik): Add option for the spec_json file. args = parser.parse_args() - if args.spec: - config.spec_directory = args.spec + spec_directory = os.path.abspath(args.spec) - spec_filename = os.path.join(config.spec_directory, "spec.src.json") + spec_filename = os.path.join(spec_directory, "spec.src.json") spec_json = util.load_spec_json(spec_filename) spec_validator.assert_valid_spec_json(spec_json) - generate_test_source_files(config, spec_json, args.target) + generate_test_source_files(spec_directory, spec_json, args.target) + + +if __name__ == '__main__': + main() diff --git a/tests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py b/tests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py index 06a5acce23a..d845b086a3e 100755 --- a/tests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py +++ b/tests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py @@ -87,6 +87,8 @@ def validate(spec_json, details): details['object'] = spec_json assert_contains_only_fields(spec_json, [ + "selection_pattern", "test_file_path_pattern", + "test_description_template", "test_page_title_template", "specification", "delivery_key", "subresource_schema", "source_context_schema", "source_context_list_schema", "test_expansion_schema", "excluded_tests" diff --git a/tests/wpt/web-platform-tests/common/security-features/tools/template/disclaimer.template b/tests/wpt/web-platform-tests/common/security-features/tools/template/disclaimer.template index 66c43ed6f21..ba9458cb312 100644 --- a/tests/wpt/web-platform-tests/common/security-features/tools/template/disclaimer.template +++ b/tests/wpt/web-platform-tests/common/security-features/tools/template/disclaimer.template @@ -1 +1 @@ -<!-- DO NOT EDIT! Generated by %(generating_script_filename)s using %(html_template_filename)s. --> +<!-- DO NOT EDIT! Generated by `%(generating_script_filename)s --spec %(spec_directory)s/` --> diff --git a/tests/wpt/web-platform-tests/cors/preflight-cache.htm b/tests/wpt/web-platform-tests/cors/preflight-cache.htm index 0b6138bdffa..b3de663ebc1 100644 --- a/tests/wpt/web-platform-tests/cors/preflight-cache.htm +++ b/tests/wpt/web-platform-tests/cors/preflight-cache.htm @@ -64,6 +64,15 @@ test(function() { var time = new Date().getTime() var client = new XMLHttpRequest() + var id = did_preflight(true, client, {extra:'max_age='}) + did_preflight(false, client, {extra:'max_age=', token: id}) +}, +'age = blank, should be cached') + +test(function() { + var time = new Date().getTime() + var client = new XMLHttpRequest() + var id = did_preflight(true, client, {extra:'max_age=0'}) did_preflight(true, client, {extra:'max_age=0', token: id}) }, diff --git a/tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003-ref.html b/tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003-ref.html new file mode 100644 index 00000000000..4cebcb90bba --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003-ref.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<style> +.container { + width: 300px; + background: pink; +} +div { + margin-bottom: 10px; + text-align: right; +} +.purple { + border: purple solid 5px; +} +.orange { + background: orange; +} +</style> +<body> + <div class="container"> + <div> + <span class="purple">inspect</span><span class="orange">pause</span> + </div> + <div> + <span class="purple">inspect</span> <span class="orange">pause</span> + </div + <div> + <span class="purple">inspect<span class="orange">pause</span></span> + </div> + </div> +</body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003.html b/tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003.html new file mode 100644 index 00000000000..92a90d529c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/text/bidi-span-003.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<title>CSS Test: Bidi reordering with inline boxes</title> +<link rel="match" href="bidi-span-003-ref.html"> +<link rel="help" href="https://drafts.csswg.org/css2/visuren.html#direction"> +<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org"> +<style> +.container { + width: 300px; + background: pink; +} +div { + margin-bottom: 10px; +} +.purple { + border: purple solid 5px; +} +.orange { + background: orange; +} +</style> +<body> + <div class="container"> + <div dir=rtl> + <span class="purple">inspect</span><span class="orange">pause</span> + </div> + <div dir=rtl> + <span class="purple">inspect</span> <span class="orange">pause</span> + </div> + <div dir=rtl> + <span class="purple">inspect<span class="orange">pause</span></span> + </div> + </div> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-fixed-min-width.html b/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-fixed-min-width.html new file mode 100644 index 00000000000..3a676babde0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-fixed-min-width.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<title>CSS Flexbox Test: Flex item as table, specified width and min-width less than minimum intrinsic width</title> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org"> +<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#layout-algorithm" title="9. Flex Layout Algorithm"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div style="display:flex; width:100px; background:red;"> + <div style="display:table; min-width: 5px; width: 10px; max-width:10px; height:100px; background:green;"> + <div style="width:100px; height:10px; background:green;"></div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-wide-content.html b/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-wide-content.html index 475adf548fd..45ad49ec2d6 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-wide-content.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-wide-content.html @@ -1,12 +1,24 @@ <!DOCTYPE html> <title>CSS Flexbox Test: Flex item as table with wide content</title> <link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> -<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#layout-algorithm" title="9. Flex Layout Algorithm"> -<meta name="assert" content="A flex item as a table uses the sizing algorithm of the flexbox"> -<link rel="match" href="../reference/ref-filled-green-100px-square-only.html"> -<p>Test passes if there is a filled green square.</p> -<div style="display:flex; width:100px;"> +<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox/#algo-main-item" title="Sentence beginning with 'The hypothetical main size is...'"> +<meta name="assert" content="A flex item respects the _used_ min size of an item, which tables define specially."> +<link rel="bookmark" href="https://github.com/w3c/csswg-drafts/issues/2442" /> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<style> +#reference-overlapped-red { + position: absolute; + background-color: red; + width: 100px; + height: 100px; + z-index: -1; +} +</style> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div id=reference-overlapped-red></div> +<div style="display:flex; width:50px;"> <div style="min-width:0; flex:1 1; display:table; background:green;"> - <div style="width:500px; height:100px;"></div> + <div style="width:100px; height:100px;"></div> </div> </div> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html index 8217f4dd2c3..cecab3e2136 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html @@ -6,6 +6,7 @@ <meta name="flags" content="ahem"> <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> <link rel="stylesheet" href="/css/support/grid.css"> +<link rel="stylesheet" href="/css/support/alignment.css"> <style> @@ -21,6 +22,11 @@ grid-auto-rows: auto; } +.width300height400 { + width: 300px; + height: 400px; +} + .thirdRowFirstColumn { background-color: green; grid-column: 1; @@ -145,13 +151,13 @@ <div style="position: relative"> <p>direction: LTR | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalLR" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="267" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="267" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> + <div class="grid stretchedGrid width300height400 alignContentStretch verticalLR" data-expected-width="300" data-expected-height="400"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> </div> </div> @@ -290,13 +296,13 @@ <div style="position: relative"> <p>direction: RTL | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalLR directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="267" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="267" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> + <div class="grid stretchedGrid width300height400 alignContentStretch verticalLR directionRTL" data-expected-width="300" data-expected-height="400"> + <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="380" data-expected-width="100" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="0" data-offset-y="360" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="380" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="360" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="200" data-offset-y="380" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="200" data-offset-y="360" data-expected-width="100" data-expected-height="20"></div> </div> </div> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html index 096e3fd6910..40ee22190b9 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html @@ -6,6 +6,7 @@ <meta name="flags" content="ahem"> <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> <link rel="stylesheet" href="/css/support/grid.css"> +<link rel="stylesheet" href="/css/support/alignment.css"> <style> @@ -21,6 +22,11 @@ grid-auto-rows: auto; } +.width300height400 { + width: 300px; + height: 400px; +} + .thirdRowFirstColumn { background-color: green; grid-column: 1; @@ -145,13 +151,13 @@ <div style="position: relative"> <p>direction: LTR | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalRL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="267" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="267" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="133" data-expected-height="20"></div> + <div class="grid stretchedGrid width300height400 alignContentStretch verticalRL" data-expected-width="300" data-expected-height="400"> + <div class="firstRowFirstColumn" data-offset-x="200" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="200" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="20" data-expected-width="100" data-expected-height="20"></div> </div> </div> @@ -290,13 +296,13 @@ <div style="position: relative"> <p>direction: RTL | align-content: 'stretch'</p> - <div class="grid stretchedGrid alignContentStretch verticalRL directionRTL" data-expected-width="400" data-expected-height="300"> - <div class="firstRowFirstColumn" data-offset-x="267" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> - <div class="firstRowSecondColumn" data-offset-x="267" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowFirstColumn" data-offset-x="133" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> - <div class="secondRowSecondColumn" data-offset-x="133" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="280" data-expected-width="133" data-expected-height="20"></div> - <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="260" data-expected-width="133" data-expected-height="20"></div> + <div class="grid stretchedGrid width300height400 alignContentStretch verticalRL directionRTL" data-expected-width="300" data-expected-height="400"> + <div class="firstRowFirstColumn" data-offset-x="200" data-offset-y="380" data-expected-width="100" data-expected-height="20"></div> + <div class="firstRowSecondColumn" data-offset-x="200" data-offset-y="360" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowFirstColumn" data-offset-x="100" data-offset-y="380" data-expected-width="100" data-expected-height="20"></div> + <div class="secondRowSecondColumn" data-offset-x="100" data-offset-y="360" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowFirstColumn" data-offset-x="0" data-offset-y="380" data-expected-width="100" data-expected-height="20"></div> + <div class="thirdRowSecondColumn" data-offset-x="0" data-offset-y="360" data-expected-width="100" data-expected-height="20"></div> </div> </div> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html index 7b66ddb9951..488fc05aad4 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-align-content-distribution.html @@ -6,6 +6,7 @@ <meta name="flags" content="ahem"> <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> <link rel="stylesheet" href="/css/support/grid.css"> +<link rel="stylesheet" href="/css/support/alignment.css"> <style> diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html b/tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html index 0debe91f924..7cdda674b47 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html +++ b/tests/wpt/web-platform-tests/css/css-grid/grid-layout-properties.html @@ -79,8 +79,8 @@ }({ 'grid-template-columns': { // named 'grid-definition-columns' in last draft - initial: '150px', - 'none': ['none', '150px'], + initial: 'none', + 'none': ['none', 'none'], '<line-names>': ['[a] auto [b] auto [c]', '[a] 150px [b] 100px [c]'], '<track-size>.auto': ['auto', '150px'], '<track-size>.<track-breadth>.<length>': ['100px', '100px'], @@ -89,20 +89,20 @@ '<track-size>.<track-breadth>.min-content': ['min-content', '100px'], '<track-size>.<track-breadth>.max-content': ['max-content', '150px'], '<track-size>.<track-breadth>.minmax()': ['minmax(100px, 200px)', '200px'], - 'reset': ['none', '150px'], + 'reset': ['none', 'none'], }, 'grid-template-rows': { // named 'grid-definition-rows' in last draft - initial: '50px 50px 50px', - 'none': ['none', '50px 50px 50px'], - '<line-names>': ['[a] auto [b] auto [c]', '[a] 50px [b] 50px [c] 50px'], - '<track-size>.auto': ['auto', '50px 50px 50px'], - '<track-size>.<track-breadth>.<length>': ['100px', '100px 50px 50px'], - '<track-size>.<track-breadth>.<percentage>': ['100%', '150px 50px 50px'], - '<track-size>.<track-breadth>.<flex>': ['1fr', '50px 50px 50px'], - '<track-size>.<track-breadth>.min-content': ['min-content', '50px 50px 50px'], - '<track-size>.<track-breadth>.max-content': ['max-content', '50px 50px 50px'], - '<track-size>.<track-breadth>.minmax()': ['minmax(100px, 200px)', '200px 50px 50px'], - 'reset': ['none', '50px 50px 50px'], + initial: 'none', + 'none': ['none', 'none'], + '<line-names>': ['[a] auto [b] auto [c]', '[a] 50px [b] 50px [c]'], + '<track-size>.auto': ['auto', '50px'], + '<track-size>.<track-breadth>.<length>': ['100px', '100px'], + '<track-size>.<track-breadth>.<percentage>': ['100%', '50px'], + '<track-size>.<track-breadth>.<flex>': ['1fr', '50px'], + '<track-size>.<track-breadth>.min-content': ['min-content', '50px'], + '<track-size>.<track-breadth>.max-content': ['max-content', '50px'], + '<track-size>.<track-breadth>.minmax()': ['minmax(100px, 200px)', '200px'], + 'reset': ['none', 'none'], }, 'grid-template-areas': { initial: 'none', diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html new file mode 100644 index 00000000000..a98e43777ee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1606485"> +<style> +* { + grid-template-rows: subgrid; + display: grid; + overflow: scroll; + contain: strict; +} +</style> +<script> +document.addEventListener('DOMContentLoaded', function() { + let e = document.createElement('s'); + document.documentElement.appendChild(e); + document.documentElement.getBoundingClientRect() // Update layout +}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-subgrid-crash.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-subgrid-crash.html new file mode 100644 index 00000000000..0d377175b7b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/contain-strict-subgrid-crash.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<head> +<title>contain: strict element with subgrid properties</title> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1606485"> +</head> +<style> + +#gridcontainer { + display: grid; + contain: strict; +} + +.item { + display: grid; + grid: subgrid [x] / subgrid [x]; +} +</style> +<div id="gridcontainer"> +<div class="item">Text1</div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html new file mode 100644 index 00000000000..3c27ed25bee --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-001-ref.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>CSS Text test reference</title> +<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com"> +<style> +pre { + font-size: 12px; + float: left; + border: 1px solid black; + margin: 12px; +} +</style> +<pre> +foo +bar +</pre> diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html new file mode 100644 index 00000000000..6d2134ac4da --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-zero-fontsize-002-ref.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>CSS Text test reference</title> +<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com"> +<style> +pre { + font-size: 12px; + float: left; + border: 1px solid black; + margin: 12px; + -moz-tab-size: 100px; + tab-size: 100px; +} +</style> +<pre> +<span>foo</span>	<span>bar</span> +</pre> diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-001.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-001.html new file mode 100644 index 00000000000..900e1143f2f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-001.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>CSS Text Test: preserved white space with zero font-size</title> +<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-property"> +<link rel="match" href="reference/white-space-zero-fontsize-001-ref.html"> +<meta name="assert" content="Forced line break in preserved white space is respected even when font-size is zero"> +<style> +pre { + font-size: 0; + float: left; + border: 1px solid black; + margin: 12px; +} +span { font-size: 12px; } +</style> +<pre> +<span>foo</span> +<span>bar</span> +</pre> diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-002.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-002.html new file mode 100644 index 00000000000..1b8d3b7eb60 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-zero-fontsize-002.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>CSS Text Test: preserved white space with zero font-size</title> +<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com"> +<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-property"> +<link rel="match" href="reference/white-space-zero-fontsize-002-ref.html"> +<meta name="assert" content="Tab in preserved white space is respected even when font-size is zero"> +<style> +pre { + font-size: 0; + float: left; + border: 1px solid black; + margin: 12px; + -moz-tab-size: 100px; + tab-size: 100px; +} +span { font-size: 12px; } +</style> +<pre> +<span>foo</span>	<span>bar</span> +</pre> diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/python-handlers/index.md b/tests/wpt/web-platform-tests/docs/writing-tests/python-handlers/index.md index f75703bb9ef..e3be1485bf0 100644 --- a/tests/wpt/web-platform-tests/docs/writing-tests/python-handlers/index.md +++ b/tests/wpt/web-platform-tests/docs/writing-tests/python-handlers/index.md @@ -43,6 +43,21 @@ The wptserver implements a number of Python APIs for controlling traffic. /tools/wptserve/docs/stash ``` +### Python3 compatibility + +Even though Python3 is not fully supported at this point, some work is being +done to add compatibility for it. This is why you can see in multiple places +the use of the `six` python module which is meant to provide a set of simple +utilities that work for both generation of python (see +[docs](https://six.readthedocs.io/)). The module is vendored in +tools/third_party/six/six.py. + +When an handler is added, it should be at least syntax-compatible with Python3. +You can check that by running: +``` +python3 -m py_compile <path/to/handler.py> +``` + ## Example: Dynamic HTTP headers The following code defines a Python handler that allows the requester to diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js index 5d629271b42..ffab4a34911 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/check-encryption-scheme.js @@ -38,4 +38,9 @@ function runTest(config, qualifier) promise_test( () => checkEncryptionScheme('cbcs'), testnamePrefix(qualifier, config.keysystem) + ' support for "cbcs" encryption scheme.'); + + promise_test( + () => checkEncryptionScheme('cbcs-1-9'), + testnamePrefix(qualifier, config.keysystem) + + ' support for "cbcs-1-9" encryption scheme.'); } diff --git a/tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py b/tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py index 7deaff498d7..c35824ff437 100644 --- a/tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py +++ b/tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py @@ -1,7 +1,8 @@ from datetime import datetime +from six import ensure_str def main(request, response): - last_event_id = request.headers.get("Last-Event-Id", "") + last_event_id = ensure_str(request.headers.get("Last-Event-Id", "")) ident = request.GET.first('ident', "test") cookie = "COOKIE" if ident in request.cookies else "NO_COOKIE" origin = request.GET.first('origin', request.headers["origin"]) diff --git a/tests/wpt/web-platform-tests/eventsource/resources/cors.py b/tests/wpt/web-platform-tests/eventsource/resources/cors.py index d01596c8366..42a0a0bb584 100644 --- a/tests/wpt/web-platform-tests/eventsource/resources/cors.py +++ b/tests/wpt/web-platform-tests/eventsource/resources/cors.py @@ -4,7 +4,7 @@ from wptserve import pipes def run_other(request, response, path): #This is a terrible hack environ = {"__file__": path} - execfile(path, environ, environ) + exec(compile(open(path, "r").read(), path, 'exec'), environ, environ) rv = environ["main"](request, response) return rv diff --git a/tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py b/tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py index 09e4f29731a..2b74bf66a28 100644 --- a/tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py +++ b/tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py @@ -1,7 +1,9 @@ +from six import ensure_str + def main(request, response): response.headers.set("Content-Type", "text/event-stream") - last_event_id = request.headers.get("Last-Event-ID", None) + last_event_id = ensure_str(request.headers.get("Last-Event-ID", "")) if last_event_id: return "data: " + last_event_id + "\n\n" else: diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location_reload_javascript_url.html b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location_reload_javascript_url.html new file mode 100644 index 00000000000..737cafbcd3e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/location_reload_javascript_url.html @@ -0,0 +1,60 @@ +<!DOCTYPE HTML> +<html> + <head> + <title>location_reload_javascript_url</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <div id="log"></div> + + <iframe></iframe> + + <script> + async_test(function(t) { + const URL = "/common/blank.html"; + const URL2 = "/common/blank.html#foo"; + const JS_URL_TEXT = "javascript generated page"; + const JS_URL = "javascript:'<html>" + JS_URL_TEXT + "</html>'"; + + var iframe = document.querySelector("iframe"); + var count = 0; + iframe.onload = t.step_func(function() { + // The URL should initially be "blank.html", and then "blank.html#foo"; + // The textContent of the iframe's document should initially be blank, + // then become js generated text, and then be blank again after reload. + switch (count) { + case 0: + assert_equals(iframe.contentWindow.document.URL, + location.href.replace(location.pathname, URL), + "iframe url (" + count + ")"); + assert_equals(iframe.contentDocument.body.textContent, "", + "text of blank page"); + iframe.contentWindow.location = JS_URL; + iframe.contentWindow.location = URL2; + break; + case 1: + assert_equals(iframe.contentWindow.document.URL, + location.href.replace(location.pathname, URL2), + "iframe url (" + count + ")"); + assert_equals(iframe.contentDocument.body.textContent, + JS_URL_TEXT, "text of js generated page"); + iframe.contentWindow.location.reload(); + break; + case 2: + assert_equals(iframe.contentWindow.document.URL, + location.href.replace(location.pathname, URL2), + "iframe url (" + count + ")"); + assert_equals(iframe.contentDocument.body.textContent, "", + "text of blank page"); + t.done(); + break; + } + count++; + }); + iframe.src = URL; + }); + </script> + + </body> +</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/generic/spec_json.js b/tests/wpt/web-platform-tests/mixed-content/generic/spec_json.js new file mode 100644 index 00000000000..2f5212e9ff7 --- /dev/null +++ b/tests/wpt/web-platform-tests/mixed-content/generic/spec_json.js @@ -0,0 +1 @@ +var SPEC_JSON = {"subresource_schema": {"supported_delivery_type": {"picture-tag": [], "worklet-layout": [], "worklet-paint": [], "img-tag": [], "a-tag": [], "worklet-layout-import-data": [], "worklet-audio-import-data": [], "worklet-animation": [], "websocket": [], "worklet-paint-import-data": [], "video-tag": [], "object-tag": [], "worklet-audio": [], "beacon": [], "worker-module": [], "worker-import-data": [], "script-tag": [], "worklet-animation-import-data": [], "link-css-tag": [], "xhr": [], "worker-classic": [], "link-prefetch-tag": [], "audio-tag": [], "fetch": []}}, "source_context_list_schema": {"worker-classic-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": []}]}, "top": {"subresourcePolicyDeliveries": [], "description": "Policy set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}]}, "worker-module-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-module-data", "policyDeliveries": []}]}}, "test_page_title_template": "Mixed-Content: %(title)s", "test_expansion_schema": {"delivery_value": [null, "opt-in"], "origin": ["same-https", "same-http", "cross-https", "cross-http", "same-wss", "same-ws", "cross-wss", "cross-ws"], "delivery_type": ["http-rp", "meta"], "subresource": {"blockable": ["script-tag", "link-css-tag", "xhr", "worker-classic", "worker-module", "worker-import-data", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data", "fetch", "a-tag", "object-tag", "picture-tag", "websocket", "link-prefetch-tag", "beacon"], "optionally-blockable": ["img-tag", "audio-tag", "video-tag"]}, "expectation": ["allowed", "blocked"], "expansion": ["default", "override"], "redirection": ["no-redirect", "keep-scheme", "swap-scheme"], "source_context_list": ["top", "worker-classic-data", "worker-module-data"], "source_scheme": ["http", "https"]}, "selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s", "specification": [{"test_expansion": [{"delivery_value": "opt-in", "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "opt-in-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}, {"delivery_value": null, "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "no-opt-in-allows", "expectation": "allowed", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}], "description": "Test behavior of optionally-blockable content", "specification_url": "http://www.w3.org/TR/mixed-content/#category-optionally-blockable", "name": "optionally-blockable", "title": "Optionally-blockable content"}, {"test_expansion": [{"delivery_value": "opt-in", "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "opt-in-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"delivery_value": null, "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "no-opt-in-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"delivery_value": "*", "origin": ["cross-ws", "same-ws"], "delivery_type": "*", "name": "ws-downgrade-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "websocket", "optionally-blockable": []}}], "description": "Test behavior of blockable content.", "specification_url": "http://www.w3.org/TR/mixed-content/#category-blockable", "name": "blockable", "title": "Blockable content"}, {"test_expansion": [{"delivery_value": "*", "origin": ["same-https"], "delivery_type": "*", "name": "allowed", "expectation": "allowed", "expansion": "default", "redirection": ["no-redirect", "keep-scheme"], "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"delivery_value": "*", "origin": ["same-wss"], "delivery_type": "*", "name": "websocket-allowed", "expectation": "allowed", "expansion": "default", "redirection": ["no-redirect", "keep-scheme"], "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "websocket", "optionally-blockable": []}}], "description": "Test behavior of allowed content.", "specification_url": "http://www.w3.org/TR/mixed-content/", "name": "allowed", "title": "Allowed content"}], "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html", "excluded_tests": [{"delivery_value": null, "origin": "*", "delivery_type": "http-rp", "name": "Skip-redundant-no-opt-in", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "Redundant-subresources", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": ["a-tag"], "optionally-blockable": []}}, {"delivery_value": "*", "origin": ["same-https", "same-http", "cross-https", "cross-http"], "delivery_type": "*", "name": "Skip-origins-not-applicable-to-websockets", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": ["websocket"], "optionally-blockable": []}}, {"delivery_value": "opt-in", "origin": "*", "delivery_type": "meta", "name": "Skip-redundant-for-opt-in-method", "expectation": "*", "expansion": "*", "redirection": ["keep-scheme", "swap-scheme"], "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}], "delivery_key": "mixedContent", "test_description_template": "Mixed-Content: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.", "source_context_schema": {"supported_delivery_type": {"iframe": ["http-rp", "meta"], "worker-module-data": [], "worker-classic-data": [], "top": ["http-rp", "meta"], "worker-classic": ["http-rp"], "iframe-blank": ["meta"], "worker-module": ["http-rp"], "srcdoc": ["meta"]}, "supported_subresource": {"iframe": "*", "worker-module-data": ["xhr", "fetch", "websocket"], "worker-classic-data": ["xhr", "fetch", "websocket"], "top": "*", "worker-classic": ["xhr", "fetch", "websocket"], "iframe-blank": "*", "worker-module": ["xhr", "fetch", "websocket"], "srcdoc": "*"}}}; diff --git a/tests/wpt/web-platform-tests/mixed-content/generic/tools/generate.py b/tests/wpt/web-platform-tests/mixed-content/generic/tools/generate.py deleted file mode 100755 index 060bdabf91c..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/generic/tools/generate.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python - -import os -import sys - -sys.path.insert( - 0, - os.path.join( - os.path.dirname(os.path.abspath(__file__)), '..', '..', '..', 'common', - 'security-features', 'tools')) -import generate - - -class MixedContentConfig(object): - def __init__(self): - self.selection_pattern = \ - '%(source_context_list)s.%(delivery_type)s/' + \ - '%(delivery_value)s/' + \ - '%(subresource)s/' + \ - '%(origin)s.%(redirection)s.%(source_scheme)s' - - self.test_file_path_pattern = 'gen/' + self.selection_pattern + '.html' - - self.test_description_template = 'Mixed-Content: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.' - - self.test_page_title_template = 'Mixed-Content: %s' - - self.helper_js = '/mixed-content/generic/test-case.sub.js' - - # For debug target only. - self.sanity_checker_js = '/mixed-content/generic/sanity-checker.js' - self.spec_json_js = '/mixed-content/spec_json.js' - - script_directory = os.path.dirname(os.path.abspath(__file__)) - self.spec_directory = os.path.abspath( - os.path.join(script_directory, '..', '..')) - - -if __name__ == '__main__': - generate.main(MixedContentConfig()) diff --git a/tests/wpt/web-platform-tests/mixed-content/spec.src.json b/tests/wpt/web-platform-tests/mixed-content/spec.src.json index c272bb3f642..8ece6de3ffd 100644 --- a/tests/wpt/web-platform-tests/mixed-content/spec.src.json +++ b/tests/wpt/web-platform-tests/mixed-content/spec.src.json @@ -1,4 +1,8 @@ { + "selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s", + "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html", + "test_description_template": "Mixed-Content: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.", + "test_page_title_template": "Mixed-Content: %(title)s", "specification": [ { "name": "optionally-blockable", diff --git a/tests/wpt/web-platform-tests/mixed-content/spec_json.js b/tests/wpt/web-platform-tests/mixed-content/spec_json.js deleted file mode 100644 index 00428b1fa5e..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/spec_json.js +++ /dev/null @@ -1 +0,0 @@ -var SPEC_JSON = {"subresource_schema": {"supported_delivery_type": {"picture-tag": [], "worklet-layout": [], "worklet-paint": [], "img-tag": [], "a-tag": [], "worklet-layout-import-data": [], "worklet-audio-import-data": [], "worklet-animation": [], "websocket": [], "worklet-paint-import-data": [], "video-tag": [], "object-tag": [], "worklet-audio": [], "beacon": [], "worker-module": [], "worker-import-data": [], "script-tag": [], "worklet-animation-import-data": [], "link-css-tag": [], "xhr": [], "worker-classic": [], "link-prefetch-tag": [], "audio-tag": [], "fetch": []}}, "excluded_tests": [{"delivery_value": null, "origin": "*", "delivery_type": "http-rp", "name": "Skip-redundant-no-opt-in", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "Redundant-subresources", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": ["a-tag"], "optionally-blockable": []}}, {"delivery_value": "*", "origin": ["same-https", "same-http", "cross-https", "cross-http"], "delivery_type": "*", "name": "Skip-origins-not-applicable-to-websockets", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": ["websocket"], "optionally-blockable": []}}, {"delivery_value": "opt-in", "origin": "*", "delivery_type": "meta", "name": "Skip-redundant-for-opt-in-method", "expectation": "*", "expansion": "*", "redirection": ["keep-scheme", "swap-scheme"], "source_context_list": "*", "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}], "specification": [{"test_expansion": [{"delivery_value": "opt-in", "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "opt-in-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}, {"delivery_value": null, "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "no-opt-in-allows", "expectation": "allowed", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}], "description": "Test behavior of optionally-blockable content", "specification_url": "http://www.w3.org/TR/mixed-content/#category-optionally-blockable", "name": "optionally-blockable", "title": "Optionally-blockable content"}, {"test_expansion": [{"delivery_value": "opt-in", "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "opt-in-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"delivery_value": null, "origin": ["cross-http", "same-http"], "delivery_type": "*", "name": "no-opt-in-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"delivery_value": "*", "origin": ["cross-ws", "same-ws"], "delivery_type": "*", "name": "ws-downgrade-blocks", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "websocket", "optionally-blockable": []}}], "description": "Test behavior of blockable content.", "specification_url": "http://www.w3.org/TR/mixed-content/#category-blockable", "name": "blockable", "title": "Blockable content"}, {"test_expansion": [{"delivery_value": "*", "origin": ["same-https"], "delivery_type": "*", "name": "allowed", "expectation": "allowed", "expansion": "default", "redirection": ["no-redirect", "keep-scheme"], "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"delivery_value": "*", "origin": ["same-wss"], "delivery_type": "*", "name": "websocket-allowed", "expectation": "allowed", "expansion": "default", "redirection": ["no-redirect", "keep-scheme"], "source_context_list": "*", "source_scheme": "https", "subresource": {"blockable": "websocket", "optionally-blockable": []}}], "description": "Test behavior of allowed content.", "specification_url": "http://www.w3.org/TR/mixed-content/", "name": "allowed", "title": "Allowed content"}], "test_expansion_schema": {"delivery_value": [null, "opt-in"], "origin": ["same-https", "same-http", "cross-https", "cross-http", "same-wss", "same-ws", "cross-wss", "cross-ws"], "delivery_type": ["http-rp", "meta"], "subresource": {"blockable": ["script-tag", "link-css-tag", "xhr", "worker-classic", "worker-module", "worker-import-data", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data", "fetch", "a-tag", "object-tag", "picture-tag", "websocket", "link-prefetch-tag", "beacon"], "optionally-blockable": ["img-tag", "audio-tag", "video-tag"]}, "expectation": ["allowed", "blocked"], "expansion": ["default", "override"], "redirection": ["no-redirect", "keep-scheme", "swap-scheme"], "source_context_list": ["top", "worker-classic-data", "worker-module-data"], "source_scheme": ["http", "https"]}, "source_context_list_schema": {"worker-classic-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": []}]}, "top": {"subresourcePolicyDeliveries": [], "description": "Policy set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}]}, "worker-module-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-module-data", "policyDeliveries": []}]}}, "delivery_key": "mixedContent", "source_context_schema": {"supported_delivery_type": {"iframe": ["http-rp", "meta"], "worker-module-data": [], "worker-classic-data": [], "top": ["http-rp", "meta"], "worker-classic": ["http-rp"], "iframe-blank": ["meta"], "worker-module": ["http-rp"], "srcdoc": ["meta"]}, "supported_subresource": {"iframe": "*", "worker-module-data": ["xhr", "fetch", "websocket"], "worker-classic-data": ["xhr", "fetch", "websocket"], "top": "*", "worker-classic": ["xhr", "fetch", "websocket"], "iframe-blank": "*", "worker-module": ["xhr", "fetch", "websocket"], "srcdoc": "*"}}}; diff --git a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html index b0e0cbacbf2..64baebb5024 100644 --- a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html +++ b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html @@ -27,6 +27,9 @@ async_test((t) => { }); window.onmessage = t.step_func((e) => { + // Ignore messages that are not part of the test. + if (e.source != iframe.contentWindow) return; + i++; if (i === 1) { // 5. This is the first message we receive, from the first load. diff --git a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html index 45661de7e0d..a741296d5da 100644 --- a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html +++ b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html @@ -22,11 +22,15 @@ async_test((t) => { iframe.contentWindow.postMessage('What is the result of new PaymentRequest(...)?', '*'); }); - window.onmessage = t.step_func_done((e) => { + window.onmessage = t.step_func((e) => { + // Ignore messages that are not part of the test. + if (e.source != iframe.contentWindow) return; + assert_equals(e.data.message, 'Exception'); assert_equals(4, e.data.details.length); // The last entry is the error stacktrace. Ignore it in comparison. assert_array_equals(e.data.details.slice(0, 3), [true /* ex instanceof DOMException */, DOMException.SECURITY_ERR, 'SecurityError']); + t.done(); }); document.body.appendChild(iframe); diff --git a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html index 06f0c8479da..c1d53a4bc26 100644 --- a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html +++ b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html @@ -20,6 +20,9 @@ async_test((t) => { }); window.onmessage = t.step_func((e) => { + // Ignore messages that are not part of the test. + if (e.source != iframe.contentWindow) return; + i++; if (i === 1) { assert_equals(e.data.message, 'Exception', 'before navigation'); diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/spec_json.js b/tests/wpt/web-platform-tests/referrer-policy/generic/spec_json.js new file mode 100644 index 00000000000..cad5e79f1f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/spec_json.js @@ -0,0 +1 @@ +var SPEC_JSON = {"subresource_schema": {"supported_delivery_type": {"img-tag": ["attr"], "sharedworker-classic": [], "xhr": [], "a-tag": ["attr", "rel-noref"], "area-tag": ["attr"], "iframe-tag": ["attr"], "worker-module": [], "script-tag": ["attr"], "fetch": [], "worker-classic": []}}, "source_context_list_schema": {"srcdoc-inherit": {"subresourcePolicyDeliveries": [], "description": "srcdoc iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "srcdoc"}]}, "worker-module": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-module", "policyDeliveries": ["policy"]}]}, "worker-module-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-module-data", "policyDeliveries": ["policy"]}]}, "worker-classic-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": ["policy"]}]}, "top": {"subresourcePolicyDeliveries": [], "description": "Policy set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}]}, "req": {"subresourcePolicyDeliveries": ["nonNullPolicy"], "description": "Subresource request's policy should override Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}]}, "worker-classic": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-classic", "policyDeliveries": ["policy"]}]}, "iframe": {"subresourcePolicyDeliveries": [], "description": "external iframe's policy should override parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "iframe", "policyDeliveries": ["policy"]}]}, "srcdoc": {"subresourcePolicyDeliveries": [], "description": "srcdoc iframe's policy should override parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "srcdoc", "policyDeliveries": ["nonNullPolicy"]}]}}, "test_page_title_template": "Referrer-Policy: %(title)s", "test_expansion_schema": {"delivery_value": [null, "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "origin-when-cross-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"], "origin": ["same-http", "same-https", "cross-http", "cross-https"], "delivery_type": ["attr", "rel-noref", "http-rp", "meta"], "subresource": ["iframe-tag", "img-tag", "script-tag", "a-tag", "area-tag", "xhr", "worker-classic", "worker-module", "sharedworker-classic", "fetch"], "expectation": ["omitted", "origin", "stripped-referrer"], "expansion": ["default", "override"], "redirection": ["no-redirect", "keep-origin", "swap-origin"], "source_context_list": ["top", "req", "srcdoc-inherit", "srcdoc", "iframe", "worker-classic", "worker-classic-data", "worker-module", "worker-module-data"], "source_scheme": ["http", "https"]}, "selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s", "specification": [{"test_expansion": [{"delivery_value": null, "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "insecure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": null, "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": null, "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": null, "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "secure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policies", "name": "unset-referrer-policy", "title": "Referrer Policy is not explicitly defined"}, {"test_expansion": [{"delivery_value": "no-referrer", "origin": "*", "delivery_type": "*", "name": "generic", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that sub-resource never gets the referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer", "name": "no-referrer", "title": "Referrer Policy is set to 'no-referrer'"}, {"test_expansion": [{"delivery_value": "no-referrer-when-downgrade", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "insecure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "no-referrer-when-downgrade", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "no-referrer-when-downgrade", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "no-referrer-when-downgrade", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "secure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade", "name": "no-referrer-when-downgrade", "title": "Referrer Policy is set to 'no-referrer-when-downgrade'"}, {"test_expansion": [{"delivery_value": "origin", "origin": "*", "delivery_type": "*", "name": "generic", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that all subresources in all casses get only the origin portion of the referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin", "name": "origin", "title": "Referrer Policy is set to 'origin'"}, {"test_expansion": [{"delivery_value": "same-origin", "origin": "same-http", "delivery_type": "*", "name": "same-origin-insecure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "same-origin", "origin": "same-https", "delivery_type": "*", "name": "same-origin-secure-default", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "same-origin", "origin": ["same-http", "same-https"], "delivery_type": "*", "name": "same-origin-insecure", "expectation": "omitted", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}, {"delivery_value": "same-origin", "origin": ["cross-http", "cross-https"], "delivery_type": "*", "name": "cross-origin", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin", "name": "same-origin", "title": "Referrer Policy is set to 'same-origin'"}, {"test_expansion": [{"delivery_value": "origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-origin-insecure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-origin-secure-default", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-origin-upgrade", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-origin-downgrade", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": ["same-http", "same-https"], "delivery_type": "*", "name": "same-origin-insecure", "expectation": "origin", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": ["cross-http", "cross-https"], "delivery_type": "*", "name": "cross-origin", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin", "name": "origin-when-cross-origin", "title": "Referrer Policy is set to 'origin-when-cross-origin'"}, {"test_expansion": [{"delivery_value": "strict-origin", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "insecure-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "secure-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that non a priori insecure subresource gets only the origin portion of the referrer URL. A priori insecure subresource gets no referrer information.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin", "name": "strict-origin", "title": "Referrer Policy is set to 'strict-origin'"}, {"test_expansion": [{"delivery_value": "strict-origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-insecure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-insecure", "expectation": "origin", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "cross-http", "delivery_type": "*", "name": "cross-insecure", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-secure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-secure", "expectation": "origin", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "cross-https", "delivery_type": "*", "name": "cross-secure", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin", "name": "strict-origin-when-cross-origin", "title": "Referrer Policy is set to 'strict-origin-when-cross-origin'"}, {"test_expansion": [{"delivery_value": "unsafe-url", "origin": "*", "delivery_type": "*", "name": "generic", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that all sub-resources get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url", "name": "unsafe-url", "title": "Referrer Policy is set to 'unsafe-url'"}], "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html", "excluded_tests": [{"delivery_value": "*", "origin": ["cross-http", "cross-https"], "delivery_type": "*", "name": "cross-origin-workers", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgraded-protocol-workers", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "mixed-content-insecure-subresources", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "area-tag", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "area-tag"}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "worker-requests-with-swap-origin-redirect", "expectation": "*", "expansion": "*", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "overhead-for-redirection", "expectation": "*", "expansion": "*", "redirection": ["keep-origin", "swap-origin"], "source_context_list": "*", "source_scheme": "*", "subresource": ["a-tag", "area-tag"]}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "source-https-unsupported-by-web-platform-tests-runners", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": [null, "no-referrer-when-downgrade", "same-origin", "origin", "origin-when-cross-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"], "origin": "*", "delivery_type": "rel-noref", "name": "<link rel=noreferrer>'s delivery_value should be no-referrer", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "delivery_key": "referrerPolicy", "test_description_template": "Referrer Policy: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.", "source_context_schema": {"supported_delivery_type": {"iframe": ["meta", "http-rp"], "worker-module-data": [], "worker-classic-data": [], "top": ["meta", "http-rp"], "worker-classic": ["http-rp"], "iframe-blank": ["meta"], "worker-module": ["http-rp"], "srcdoc": ["meta"]}, "supported_subresource": {"iframe": "*", "worker-module-data": ["xhr", "fetch"], "worker-classic-data": ["xhr", "fetch"], "top": "*", "worker-classic": ["xhr", "fetch", "worker-classic", "worker-module"], "iframe-blank": "*", "worker-module": ["xhr", "fetch", "worker-classic", "worker-module"], "srcdoc": "*"}}}; diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/tools/generate.py b/tests/wpt/web-platform-tests/referrer-policy/generic/tools/generate.py deleted file mode 100755 index 7cace61c0f0..00000000000 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/tools/generate.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python - -import os -import sys - -sys.path.insert( - 0, - os.path.join( - os.path.dirname(os.path.abspath(__file__)), '..', '..', '..', 'common', - 'security-features', 'tools')) -import generate - - -class ReferrerPolicyConfig(object): - def __init__(self): - self.selection_pattern = \ - '%(source_context_list)s.%(delivery_type)s/' + \ - '%(delivery_value)s/' + \ - '%(subresource)s/' + \ - '%(origin)s.%(redirection)s.%(source_scheme)s' - - self.test_file_path_pattern = 'gen/' + self.selection_pattern + '.html' - - self.test_description_template = 'Referrer Policy: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.' - - self.test_page_title_template = 'Referrer-Policy: %s' - - self.helper_js = '/referrer-policy/generic/test-case.sub.js' - - # For debug target only. - self.sanity_checker_js = '/referrer-policy/generic/sanity-checker.js' - self.spec_json_js = '/referrer-policy/spec_json.js' - - script_directory = os.path.dirname(os.path.abspath(__file__)) - self.spec_directory = os.path.abspath( - os.path.join(script_directory, '..', '..')) - - -if __name__ == '__main__': - generate.main(ReferrerPolicyConfig()) diff --git a/tests/wpt/web-platform-tests/referrer-policy/spec.src.json b/tests/wpt/web-platform-tests/referrer-policy/spec.src.json index 2674a45d6db..b0e07eb1328 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/spec.src.json +++ b/tests/wpt/web-platform-tests/referrer-policy/spec.src.json @@ -1,4 +1,8 @@ { + "selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s", + "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html", + "test_description_template": "Referrer Policy: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.", + "test_page_title_template": "Referrer-Policy: %(title)s", "specification": [ { "name": "unset-referrer-policy", diff --git a/tests/wpt/web-platform-tests/referrer-policy/spec_json.js b/tests/wpt/web-platform-tests/referrer-policy/spec_json.js deleted file mode 100644 index 8a15eaee1eb..00000000000 --- a/tests/wpt/web-platform-tests/referrer-policy/spec_json.js +++ /dev/null @@ -1 +0,0 @@ -var SPEC_JSON = {"subresource_schema": {"supported_delivery_type": {"img-tag": ["attr"], "sharedworker-classic": [], "xhr": [], "a-tag": ["attr", "rel-noref"], "area-tag": ["attr"], "iframe-tag": ["attr"], "worker-module": [], "script-tag": ["attr"], "fetch": [], "worker-classic": []}}, "excluded_tests": [{"delivery_value": "*", "origin": ["cross-http", "cross-https"], "delivery_type": "*", "name": "cross-origin-workers", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgraded-protocol-workers", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "mixed-content-insecure-subresources", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "area-tag", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "area-tag"}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "worker-requests-with-swap-origin-redirect", "expectation": "*", "expansion": "*", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "overhead-for-redirection", "expectation": "*", "expansion": "*", "redirection": ["keep-origin", "swap-origin"], "source_context_list": "*", "source_scheme": "*", "subresource": ["a-tag", "area-tag"]}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "source-https-unsupported-by-web-platform-tests-runners", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": [null, "no-referrer-when-downgrade", "same-origin", "origin", "origin-when-cross-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"], "origin": "*", "delivery_type": "rel-noref", "name": "<link rel=noreferrer>'s delivery_value should be no-referrer", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "specification": [{"test_expansion": [{"delivery_value": null, "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "insecure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": null, "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": null, "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": null, "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "secure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policies", "name": "unset-referrer-policy", "title": "Referrer Policy is not explicitly defined"}, {"test_expansion": [{"delivery_value": "no-referrer", "origin": "*", "delivery_type": "*", "name": "generic", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that sub-resource never gets the referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer", "name": "no-referrer", "title": "Referrer Policy is set to 'no-referrer'"}, {"test_expansion": [{"delivery_value": "no-referrer-when-downgrade", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "insecure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "no-referrer-when-downgrade", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "no-referrer-when-downgrade", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "no-referrer-when-downgrade", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "secure-protocol", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade", "name": "no-referrer-when-downgrade", "title": "Referrer Policy is set to 'no-referrer-when-downgrade'"}, {"test_expansion": [{"delivery_value": "origin", "origin": "*", "delivery_type": "*", "name": "generic", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that all subresources in all casses get only the origin portion of the referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin", "name": "origin", "title": "Referrer Policy is set to 'origin'"}, {"test_expansion": [{"delivery_value": "same-origin", "origin": "same-http", "delivery_type": "*", "name": "same-origin-insecure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "same-origin", "origin": "same-https", "delivery_type": "*", "name": "same-origin-secure-default", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "same-origin", "origin": ["same-http", "same-https"], "delivery_type": "*", "name": "same-origin-insecure", "expectation": "omitted", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}, {"delivery_value": "same-origin", "origin": ["cross-http", "cross-https"], "delivery_type": "*", "name": "cross-origin", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin", "name": "same-origin", "title": "Referrer Policy is set to 'same-origin'"}, {"test_expansion": [{"delivery_value": "origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-origin-insecure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-origin-secure-default", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-origin-upgrade", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-origin-downgrade", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": ["same-http", "same-https"], "delivery_type": "*", "name": "same-origin-insecure", "expectation": "origin", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}, {"delivery_value": "origin-when-cross-origin", "origin": ["cross-http", "cross-https"], "delivery_type": "*", "name": "cross-origin", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin", "name": "origin-when-cross-origin", "title": "Referrer Policy is set to 'origin-when-cross-origin'"}, {"test_expansion": [{"delivery_value": "strict-origin", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "insecure-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "secure-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that non a priori insecure subresource gets only the origin portion of the referrer URL. A priori insecure subresource gets no referrer information.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin", "name": "strict-origin", "title": "Referrer Policy is set to 'strict-origin'"}, {"test_expansion": [{"delivery_value": "strict-origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-insecure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "same-http", "delivery_type": "*", "name": "same-insecure", "expectation": "origin", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "cross-http", "delivery_type": "*", "name": "cross-insecure", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": ["same-https", "cross-https"], "delivery_type": "*", "name": "upgrade-protocol", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "http", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": ["same-http", "cross-http"], "delivery_type": "*", "name": "downgrade-protocol", "expectation": "omitted", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-secure", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "same-https", "delivery_type": "*", "name": "same-secure", "expectation": "origin", "expansion": "override", "redirection": "swap-origin", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": "strict-origin-when-cross-origin", "origin": "cross-https", "delivery_type": "*", "name": "cross-secure", "expectation": "origin", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin", "name": "strict-origin-when-cross-origin", "title": "Referrer Policy is set to 'strict-origin-when-cross-origin'"}, {"test_expansion": [{"delivery_value": "unsafe-url", "origin": "*", "delivery_type": "*", "name": "generic", "expectation": "stripped-referrer", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}], "description": "Check that all sub-resources get the stripped referrer URL.", "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url", "name": "unsafe-url", "title": "Referrer Policy is set to 'unsafe-url'"}], "test_expansion_schema": {"delivery_value": [null, "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "origin-when-cross-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"], "origin": ["same-http", "same-https", "cross-http", "cross-https"], "delivery_type": ["attr", "rel-noref", "http-rp", "meta"], "subresource": ["iframe-tag", "img-tag", "script-tag", "a-tag", "area-tag", "xhr", "worker-classic", "worker-module", "sharedworker-classic", "fetch"], "expectation": ["omitted", "origin", "stripped-referrer"], "expansion": ["default", "override"], "redirection": ["no-redirect", "keep-origin", "swap-origin"], "source_context_list": ["top", "req", "srcdoc-inherit", "srcdoc", "iframe", "worker-classic", "worker-classic-data", "worker-module", "worker-module-data"], "source_scheme": ["http", "https"]}, "source_context_list_schema": {"srcdoc-inherit": {"subresourcePolicyDeliveries": [], "description": "srcdoc iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "srcdoc"}]}, "worker-module": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-module", "policyDeliveries": ["policy"]}]}, "worker-module-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-module-data", "policyDeliveries": ["policy"]}]}, "worker-classic-data": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": ["policy"]}]}, "top": {"subresourcePolicyDeliveries": [], "description": "Policy set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}]}, "req": {"subresourcePolicyDeliveries": ["nonNullPolicy"], "description": "Subresource request's policy should override Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}]}, "worker-classic": {"subresourcePolicyDeliveries": [], "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "worker-classic", "policyDeliveries": ["policy"]}]}, "iframe": {"subresourcePolicyDeliveries": [], "description": "external iframe's policy should override parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "iframe", "policyDeliveries": ["policy"]}]}, "srcdoc": {"subresourcePolicyDeliveries": [], "description": "srcdoc iframe's policy should override parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["anotherPolicy"]}, {"sourceContextType": "srcdoc", "policyDeliveries": ["nonNullPolicy"]}]}}, "delivery_key": "referrerPolicy", "source_context_schema": {"supported_delivery_type": {"iframe": ["meta", "http-rp"], "worker-module-data": [], "worker-classic-data": [], "top": ["meta", "http-rp"], "worker-classic": ["http-rp"], "iframe-blank": ["meta"], "worker-module": ["http-rp"], "srcdoc": ["meta"]}, "supported_subresource": {"iframe": "*", "worker-module-data": ["xhr", "fetch"], "worker-classic-data": ["xhr", "fetch"], "top": "*", "worker-classic": ["xhr", "fetch", "worker-classic", "worker-module"], "iframe-blank": "*", "worker-module": ["xhr", "fetch", "worker-classic", "worker-module"], "srcdoc": "*"}}}; diff --git a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js index b45ff20dbc4..54788b4ca3d 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js +++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js @@ -891,6 +891,11 @@ class MockXRInputSource { case 'tracked-pointer': input_desc.targetRayMode = device.mojom.XRTargetRayMode.POINTING; break; + case 'screen': + input_desc.targetRayMode = device.mojom.XRTargetRayMode.TAPPING; + break; + default: + throw new Error('Unhandled target ray mode ' + this.target_ray_mode_); } switch (this.handedness_) { diff --git a/tests/wpt/web-platform-tests/resources/test/conftest.py b/tests/wpt/web-platform-tests/resources/test/conftest.py index 857f1b41bcb..a9f4203f279 100644 --- a/tests/wpt/web-platform-tests/resources/test/conftest.py +++ b/tests/wpt/web-platform-tests/resources/test/conftest.py @@ -2,11 +2,12 @@ import copy import json import os import ssl +import sys +import subprocess import html5lib import py import pytest -from selenium import webdriver from six import text_type from six.moves import urllib @@ -18,6 +19,9 @@ HARNESS = os.path.join(HERE, 'harness.html') TEST_TYPES = ('functional', 'unit') DEFAULT_VARIANTS = ["?default"] +sys.path.insert(0, os.path.normpath(os.path.join(WPT_ROOT, "tools", "webdriver"))) +import webdriver + def pytest_addoption(parser): parser.addoption("--binary", action="store", default=None, help="path to browser binary") @@ -38,8 +42,16 @@ def pytest_collect_file(path, parent): def pytest_configure(config): - config.driver = webdriver.Firefox(firefox_binary=config.getoption("--binary")) - config.add_cleanup(config.driver.quit) + config.proc = subprocess.Popen(["geckodriver"]) + config.add_cleanup(config.proc.kill) + + capabilities = {"alwaysMatch": {"acceptInsecureCerts": True}} + if config.getoption("--binary"): + capabilities["alwaysMatch"]["moz:firefoxOptions"] = {"binary": config.getoption("--binary")} + + config.driver = webdriver.Session("localhost", 4444, + capabilities=capabilities) + config.add_cleanup(config.driver.end) config.server = WPTServer(WPT_ROOT) config.server.start() @@ -149,7 +161,7 @@ class HTMLItem(pytest.Item, pytest.Collector): driver = self.session.config.driver server = self.session.config.server - driver.get(server.url(HARNESS)) + driver.url = server.url(HARNESS) actual = driver.execute_async_script( 'runTest("%s", "foo", arguments[0])' % self.url @@ -172,7 +184,7 @@ class HTMLItem(pytest.Item, pytest.Collector): driver = self.session.config.driver server = self.session.config.server - driver.get(server.url(HARNESS)) + driver.url = server.url(HARNESS) test_url = self.url + variant actual = driver.execute_async_script('runTest("%s", "foo", arguments[0])' % test_url) diff --git a/tests/wpt/web-platform-tests/resources/test/tox.ini b/tests/wpt/web-platform-tests/resources/test/tox.ini index d0c5186f156..a7a02e4b93b 100644 --- a/tests/wpt/web-platform-tests/resources/test/tox.ini +++ b/tests/wpt/web-platform-tests/resources/test/tox.ini @@ -10,7 +10,6 @@ deps = html5lib pytest>=2.9 pyvirtualdisplay - selenium six requests diff --git a/tests/wpt/web-platform-tests/tools/serve/serve.py b/tests/wpt/web-platform-tests/tools/serve/serve.py index 1868b1a36e5..f33846bc24c 100644 --- a/tests/wpt/web-platform-tests/tools/serve/serve.py +++ b/tests/wpt/web-platform-tests/tools/serve/serve.py @@ -351,7 +351,7 @@ class RoutesBuilder(object): if headers is None: headers = {} handler = handlers.StaticHandler(path, format_args, content_type, **headers) - self.add_handler(b"GET", str(route), handler) + self.add_handler("GET", str(route), handler) def add_mount_point(self, url_base, path): url_base = "/%s/" % url_base.strip("/") if url_base != "/" else "/" diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py index 3ee98d959ec..6dd2f5c4c90 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/browser.py +++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py @@ -6,14 +6,14 @@ import stat import errno import subprocess import tempfile -import urlparse from abc import ABCMeta, abstractmethod from datetime import datetime, timedelta from distutils.spawn import find_executable +from six.moves.urllib.parse import urlsplit import requests -from utils import call, get, untar, unzip +from .utils import call, get, untar, unzip uname = platform.uname() @@ -172,7 +172,7 @@ class Firefox(Browser): filename = filenames[0] if not filename: - filename = urlparse.urlsplit(resp.url).path.rsplit("/", 1)[1] + filename = urlsplit(resp.url).path.rsplit("/", 1)[1] if not filename: filename = "firefox.tar.bz2" diff --git a/tests/wpt/web-platform-tests/tools/wpt/install.py b/tests/wpt/web-platform-tests/tools/wpt/install.py index 24915f0c98d..3da697e5333 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/install.py +++ b/tests/wpt/web-platform-tests/tools/wpt/install.py @@ -1,6 +1,6 @@ import argparse -import browser import sys +from . import browser latest_channels = { diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt index 3cd01446e25..74a358ed10b 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt @@ -2,7 +2,8 @@ html5lib==1.0.1 mozinfo==1.1.0 mozlog==5.0 mozdebug==0.1.1 -pillow==6.2.1 +# Pillow 7 requires Python 3 +pillow==6.2.1 # pyup: <7.0 urllib3[secure]==1.25.7 requests==2.22.0 six==1.13.0 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py index 7dcea4aeafa..608b24dfd3a 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py @@ -192,7 +192,7 @@ class TestEnvironment(object): data += fp.read() with open(os.path.join(here, "testdriver-extra.js"), "rb") as fp: data += fp.read() - route_builder.add_handler(b"GET", b"/resources/testdriver.js", + route_builder.add_handler("GET", "/resources/testdriver.js", StringHandler(data, "text/javascript")) for url_base, paths in iteritems(self.test_paths): diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py index 01306397db7..837329fccb7 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py @@ -3,9 +3,10 @@ import os import threading import time import traceback -import urlparse import uuid +from six.moves.urllib.parse import urljoin + errors = None marionette = None pytestrunner = None @@ -132,8 +133,7 @@ class MarionetteTestharnessProtocolPart(TestharnessProtocolPart): # Check if we previously had a test window open, and if we did make sure it's closed if self.runner_handle: self._close_windows() - url = urlparse.urljoin(self.parent.executor.server_url(url_protocol), - "/testharness_runner.html") + url = urljoin(self.parent.executor.server_url(url_protocol), "/testharness_runner.html") self.logger.debug("Loading %s" % url) try: self.dismiss_alert(lambda: self.marionette.navigate(url)) @@ -893,7 +893,7 @@ class InternalRefTestImplementation(RefTestImplementation): def setup(self, screenshot="unexpected"): data = {"screenshot": screenshot} if self.executor.group_metadata is not None: - data["urlCount"] = {urlparse.urljoin(self.executor.server_url(key[0]), key[1]):value + data["urlCount"] = {urljoin(self.executor.server_url(key[0]), key[1]):value for key, value in self.executor.group_metadata.get("url_count", {}).iteritems() if value > 1} self.executor.protocol.marionette.set_context(self.executor.protocol.marionette.CONTEXT_CHROME) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py index 2b8e865fa9b..8f8e120e66d 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py @@ -7,7 +7,7 @@ import tempfile import threading import traceback import uuid -from six import iteritems +from six import ensure_str, iteritems from mozprocess import ProcessHandler @@ -260,10 +260,10 @@ class ServoRefTestExecutor(ProcessTestExecutor): if rv != 0 or not os.path.exists(output_path): return False, ("CRASH", None) - with open(output_path) as f: + with open(output_path, "rb") as f: # Might need to strip variable headers or something here data = f.read() - return True, base64.b64encode(data) + return True, ensure_str(base64.b64encode(data)) def do_test(self, test): result = self.implementation.run_test(test) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py index d650e98dfbf..bff61f3e776 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py @@ -93,7 +93,7 @@ class RunInfo(dict): self._update_mozinfo(metadata_root) self.update(mozinfo.info) - from update.tree import GitTree + from .update.tree import GitTree try: # GitTree.__init__ throws if we are not in a git tree. rev = GitTree(log_error=False).rev diff --git a/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-basic-manual.html b/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-basic-manual.html index 093951dfe49..c5a09f6cb4f 100644 --- a/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-basic-manual.html +++ b/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-basic-manual.html @@ -37,6 +37,7 @@ <script> var wheelbox = document.getElementById("wheelbox"); var scrollbox = document.getElementById("scrollbox"); + var test_wheel = async_test("wheel event test"); EventRecorder.configure({ mergeEventTypes: ['wheel'], @@ -55,18 +56,20 @@ e.stopPropagation(); this.className = "green"; endTest(); - done(); + test_wheel.done(); }); function endTest() { EventRecorder.stop(); var results = EventRecorder.getRecords(); - // Check results: - assert_equals(results.length, 2, "Two mousemove events"); - assert_equals(results[0].event.type, 'wheel', "First event is a wheel event"); - assert_equals(results[1].event.type, 'wheel', "Second event is a wheel event"); - assert_equals(results[0].event.target, 'div#wheelbox', "First event targetted wheelbox"); - assert_equals(results[1].event.target, 'div#scrollbox', "Second event targetted scrollbox"); + test_wheel.step(function () { + // Check results: + assert_equals(results.length, 2, "Two mousemove events"); + assert_equals(results[0].event.type, 'wheel', "First event is a wheel event"); + assert_equals(results[1].event.type, 'wheel', "Second event is a wheel event"); + assert_equals(results[0].event.target, 'div#wheelbox', "First event targetted wheelbox"); + assert_equals(results[1].event.target, 'div#scrollbox', "Second event targetted scrollbox"); + }); } EventRecorder.start(); diff --git a/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-scrolling-manual.html b/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-scrolling-manual.html index 5acae6d4777..cae4cf6523b 100644 --- a/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-scrolling-manual.html +++ b/tests/wpt/web-platform-tests/uievents/order-of-events/mouse-events/wheel-scrolling-manual.html @@ -34,6 +34,7 @@ <script> var wheelbox = document.getElementById("wheelbox"); + var test_wheel_scrolling = async_test("wheel scrolling test"); EventRecorder.configure({ mergeEventTypes: ['wheel'], @@ -46,16 +47,18 @@ e.stopPropagation(); this.className = "green"; endTest(); - done(); + test_wheel_scrolling.done(); }); function endTest() { EventRecorder.stop(); var results = EventRecorder.getRecords(); - // Check results: - assert_equals(results.length, 1, "One mousemove event"); - assert_equals(results[0].event.type, 'wheel', "First event is a wheel event"); - assert_equals(results[0].event.target, 'div#wheelbox', "First event targetted wheelbox"); + test_wheel_scrolling.step(function () { + // Check results: + assert_equals(results.length, 1, "One mousemove event"); + assert_equals(results[0].event.type, 'wheel', "First event is a wheel event"); + assert_equals(results[0].event.target, 'div#wheelbox', "First event targetted wheelbox"); + }); } EventRecorder.start(); diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/spec_json.js b/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/spec_json.js new file mode 100644 index 00000000000..89b17048e22 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/spec_json.js @@ -0,0 +1 @@ +var SPEC_JSON = {"subresource_schema": {"supported_delivery_type": {"worklet-layout": [], "worklet-paint": [], "worker-module": [], "sharedworker-classic": [], "worklet-paint-import-data": [], "worklet-animation-import-data": [], "fetch": [], "xhr": [], "worker-classic": [], "worklet-layout-import-data": [], "worklet-audio-import-data": [], "worklet-animation": [], "worker-import-data": [], "websocket": [], "worklet-audio": [], "iframe-tag": [], "img-tag": []}}, "source_context_list_schema": {"worker-classic-data": {"subresourcePolicyDeliveries": [], "description": "CSP set by the top-level Document is inherited to dedicated workers", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": []}]}, "top": {"subresourcePolicyDeliveries": [], "description": "CSP set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}]}, "srcdoc-inherit": {"subresourcePolicyDeliveries": [], "description": "srcdoc iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "srcdoc"}]}, "iframe-blank-inherit": {"subresourcePolicyDeliveries": [], "description": "blank iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "iframe-blank"}]}}, "test_page_title_template": "Upgrade-Insecure-Requests: %(title)s", "test_expansion_schema": {"delivery_value": [null, "upgrade"], "origin": ["same-https", "same-http-downgrade", "cross-https", "cross-http-downgrade", "same-wss", "same-ws-downgrade", "cross-wss", "cross-ws-downgrade"], "delivery_type": ["http-rp", "meta"], "subresource": ["iframe-tag", "img-tag", "xhr", "fetch", "websocket", "worker-classic", "worker-module", "worker-import-data", "sharedworker-classic", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data"], "expectation": ["allowed", "blocked"], "expansion": ["default", "override"], "redirection": ["no-redirect", "downgrade"], "source_context_list": ["top", "srcdoc-inherit", "iframe-blank-inherit", "worker-classic-data"], "source_scheme": ["https"]}, "selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s", "specification": [{"test_expansion": [{"delivery_value": null, "origin": "*", "delivery_type": "meta", "name": "Without upgrade-insecure-request, all requests are blocked ...", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": null, "origin": ["same-https", "cross-https", "same-wss", "cross-wss"], "delivery_type": "meta", "name": "... except for the secure requests listed here", "expectation": "allowed", "expansion": "override", "redirection": "no-redirect", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "No upgrade-insecure-request", "specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/", "name": "No upgrade-insecure-request", "title": "No upgrade-insecure-request"}, {"test_expansion": [{"delivery_value": "upgrade", "origin": "*", "delivery_type": "*", "name": "With upgrade-insecure-request, all insecure requests are upgraded and allowed.", "expectation": "allowed", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "With upgrade-insecure-request", "specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/", "name": "With upgrade-insecure-request", "title": "With upgrade-insecure-request"}], "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html", "excluded_tests": [{"delivery_value": "*", "origin": ["same-https", "cross-https", "same-wss", "cross-wss"], "delivery_type": "*", "name": "Omit secure requests", "expectation": "allowed", "expansion": "*", "redirection": "no-redirect", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}, {"delivery_value": "*", "origin": "*", "delivery_type": "http-rp", "name": "For inheriting tests skip http-rp because we already have <meta> tests", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": ["srcdoc-inherit", "iframe-blank-inherit", "worker-classic-data"], "source_scheme": "*", "subresource": "*"}, {"delivery_value": "*", "origin": ["cross-https", "cross-http-downgrade", "cross-wss", "cross-ws-downgrade"], "delivery_type": "*", "name": "Workers are same-origin only", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": ["same-https", "same-http-downgrade", "cross-https", "cross-http-downgrade"], "delivery_type": "*", "name": "Websockets are ws/wss-only", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "websocket"}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "Websockets is no-redirect only", "expectation": "*", "expansion": "*", "redirection": ["downgrade"], "source_context_list": "*", "source_scheme": "*", "subresource": "websocket"}, {"delivery_value": "*", "origin": ["same-wss", "same-ws-downgrade", "cross-wss", "cross-ws-downgrade"], "delivery_type": "*", "name": "ws/wss are websocket-only", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": ["iframe-tag", "img-tag", "xhr", "fetch", "worker-classic", "worker-module", "worker-import-data", "sharedworker-classic", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data"]}], "delivery_key": "upgradeInsecureRequests", "test_description_template": "Upgrade-Insecure-Requests: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.", "source_context_schema": {"supported_delivery_type": {"iframe": ["http-rp", "meta"], "worker-module-data": [], "worker-classic-data": [], "top": ["http-rp", "meta"], "worker-classic": ["http-rp"], "iframe-blank": ["meta"], "worker-module": ["http-rp"], "srcdoc": ["meta"]}, "supported_subresource": {"iframe": "*", "worker-module-data": ["xhr", "fetch", "websocket"], "worker-classic-data": ["xhr", "fetch", "websocket"], "top": "*", "worker-classic": ["xhr", "fetch", "websocket"], "iframe-blank": "*", "worker-module": ["xhr", "fetch", "websocket"], "srcdoc": "*"}}}; diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/tools/generate.py b/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/tools/generate.py deleted file mode 100755 index 4c19f4c34da..00000000000 --- a/tests/wpt/web-platform-tests/upgrade-insecure-requests/generic/tools/generate.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python - -import os -import sys - -sys.path.insert( - 0, - os.path.join( - os.path.dirname(os.path.abspath(__file__)), '..', '..', '..', 'common', - 'security-features', 'tools')) -import generate - - -class UpgradeInsecureRequestsConfig(object): - def __init__(self): - self.selection_pattern = \ - '%(source_context_list)s.%(delivery_type)s/' + \ - '%(delivery_value)s/' + \ - '%(subresource)s/' + \ - '%(origin)s.%(redirection)s.%(source_scheme)s' - - self.test_file_path_pattern = 'gen/' + self.selection_pattern + '.html' - - self.test_description_template = 'Upgrade-Insecure-Requests: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.' - - self.test_page_title_template = 'Upgrade-Insecure-Requests: %s' - - self.helper_js = '/upgrade-insecure-requests/generic/test-case.sub.js' - - # For debug target only. - self.sanity_checker_js = '/upgrade-insecure-requests/generic/sanity-checker.js' - self.spec_json_js = '/upgrade-insecure-requests/spec_json.js' - - script_directory = os.path.dirname(os.path.abspath(__file__)) - self.spec_directory = os.path.abspath( - os.path.join(script_directory, '..', '..')) - - -if __name__ == '__main__': - generate.main(UpgradeInsecureRequestsConfig()) diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json b/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json index 6aee9a280b0..dcf63008f63 100644 --- a/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec.src.json @@ -1,4 +1,8 @@ { + "selection_pattern": "%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s", + "test_file_path_pattern": "gen/%(source_context_list)s.%(delivery_type)s/%(delivery_value)s/%(subresource)s/%(origin)s.%(redirection)s.%(source_scheme)s.html", + "test_description_template": "Upgrade-Insecure-Requests: Expects %(expectation)s for %(subresource)s to %(origin)s origin and %(redirection)s redirection from %(source_scheme)s context.", + "test_page_title_template": "Upgrade-Insecure-Requests: %(title)s", "specification": [ { "name": "No upgrade-insecure-request", diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec_json.js b/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec_json.js deleted file mode 100644 index 9122ce38e31..00000000000 --- a/tests/wpt/web-platform-tests/upgrade-insecure-requests/spec_json.js +++ /dev/null @@ -1 +0,0 @@ -var SPEC_JSON = {"subresource_schema": {"supported_delivery_type": {"worklet-layout": [], "worklet-paint": [], "worker-module": [], "sharedworker-classic": [], "worklet-paint-import-data": [], "worklet-animation-import-data": [], "fetch": [], "xhr": [], "worker-classic": [], "worklet-layout-import-data": [], "worklet-audio-import-data": [], "worklet-animation": [], "worker-import-data": [], "websocket": [], "worklet-audio": [], "iframe-tag": [], "img-tag": []}}, "excluded_tests": [{"delivery_value": "*", "origin": ["same-https", "cross-https", "same-wss", "cross-wss"], "delivery_type": "*", "name": "Omit secure requests", "expectation": "allowed", "expansion": "*", "redirection": "no-redirect", "source_context_list": "*", "source_scheme": "*", "subresource": "*"}, {"delivery_value": "*", "origin": "*", "delivery_type": "http-rp", "name": "For inheriting tests skip http-rp because we already have <meta> tests", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": ["srcdoc-inherit", "iframe-blank-inherit", "worker-classic-data"], "source_scheme": "*", "subresource": "*"}, {"delivery_value": "*", "origin": ["cross-https", "cross-http-downgrade", "cross-wss", "cross-ws-downgrade"], "delivery_type": "*", "name": "Workers are same-origin only", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": ["worker-classic", "worker-module", "sharedworker-classic"]}, {"delivery_value": "*", "origin": ["same-https", "same-http-downgrade", "cross-https", "cross-http-downgrade"], "delivery_type": "*", "name": "Websockets are ws/wss-only", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": "websocket"}, {"delivery_value": "*", "origin": "*", "delivery_type": "*", "name": "Websockets is no-redirect only", "expectation": "*", "expansion": "*", "redirection": ["downgrade"], "source_context_list": "*", "source_scheme": "*", "subresource": "websocket"}, {"delivery_value": "*", "origin": ["same-wss", "same-ws-downgrade", "cross-wss", "cross-ws-downgrade"], "delivery_type": "*", "name": "ws/wss are websocket-only", "expectation": "*", "expansion": "*", "redirection": "*", "source_context_list": "*", "source_scheme": "*", "subresource": ["iframe-tag", "img-tag", "xhr", "fetch", "worker-classic", "worker-module", "worker-import-data", "sharedworker-classic", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data"]}], "specification": [{"test_expansion": [{"delivery_value": null, "origin": "*", "delivery_type": "meta", "name": "Without upgrade-insecure-request, all requests are blocked ...", "expectation": "blocked", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}, {"delivery_value": null, "origin": ["same-https", "cross-https", "same-wss", "cross-wss"], "delivery_type": "meta", "name": "... except for the secure requests listed here", "expectation": "allowed", "expansion": "override", "redirection": "no-redirect", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "No upgrade-insecure-request", "specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/", "name": "No upgrade-insecure-request", "title": "No upgrade-insecure-request"}, {"test_expansion": [{"delivery_value": "upgrade", "origin": "*", "delivery_type": "*", "name": "With upgrade-insecure-request, all insecure requests are upgraded and allowed.", "expectation": "allowed", "expansion": "default", "redirection": "*", "source_context_list": "*", "source_scheme": "https", "subresource": "*"}], "description": "With upgrade-insecure-request", "specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/", "name": "With upgrade-insecure-request", "title": "With upgrade-insecure-request"}], "test_expansion_schema": {"delivery_value": [null, "upgrade"], "origin": ["same-https", "same-http-downgrade", "cross-https", "cross-http-downgrade", "same-wss", "same-ws-downgrade", "cross-wss", "cross-ws-downgrade"], "delivery_type": ["http-rp", "meta"], "subresource": ["iframe-tag", "img-tag", "xhr", "fetch", "websocket", "worker-classic", "worker-module", "worker-import-data", "sharedworker-classic", "worklet-animation", "worklet-audio", "worklet-layout", "worklet-paint", "worklet-animation-import-data", "worklet-audio-import-data", "worklet-layout-import-data", "worklet-paint-import-data"], "expectation": ["allowed", "blocked"], "expansion": ["default", "override"], "redirection": ["no-redirect", "downgrade"], "source_context_list": ["top", "srcdoc-inherit", "iframe-blank-inherit", "worker-classic-data"], "source_scheme": ["https"]}, "source_context_list_schema": {"worker-classic-data": {"subresourcePolicyDeliveries": [], "description": "CSP set by the top-level Document is inherited to dedicated workers", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "worker-classic-data", "policyDeliveries": []}]}, "top": {"subresourcePolicyDeliveries": [], "description": "CSP set by the top-level Document", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}]}, "srcdoc-inherit": {"subresourcePolicyDeliveries": [], "description": "srcdoc iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "srcdoc"}]}, "iframe-blank-inherit": {"subresourcePolicyDeliveries": [], "description": "blank iframe should inherit parent Document's policy", "sourceContextList": [{"sourceContextType": "top", "policyDeliveries": ["policy"]}, {"sourceContextType": "iframe-blank"}]}}, "delivery_key": "upgradeInsecureRequests", "source_context_schema": {"supported_delivery_type": {"iframe": ["http-rp", "meta"], "worker-module-data": [], "worker-classic-data": [], "top": ["http-rp", "meta"], "worker-classic": ["http-rp"], "iframe-blank": ["meta"], "worker-module": ["http-rp"], "srcdoc": ["meta"]}, "supported_subresource": {"iframe": "*", "worker-module-data": ["xhr", "fetch", "websocket"], "worker-classic-data": ["xhr", "fetch", "websocket"], "top": "*", "worker-classic": ["xhr", "fetch", "websocket"], "iframe-blank": "*", "worker-module": ["xhr", "fetch", "websocket"], "srcdoc": "*"}}}; diff --git a/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-insertDTMF.https.html b/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-insertDTMF.https.html index 8ac144bab92..62a5f0472c1 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-insertDTMF.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-insertDTMF.https.html @@ -119,7 +119,7 @@ const offer = await caller.createOffer(); await caller.setLocalDescription(offer); await callee.setRemoteDescription(offer); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); callee.addTrack(track, stream); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCIceConnectionState-candidate-pair.https.html b/tests/wpt/web-platform-tests/webrtc/RTCIceConnectionState-candidate-pair.https.html index 6c93aec9260..0752c9aaee6 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCIceConnectionState-candidate-pair.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCIceConnectionState-candidate-pair.https.html @@ -14,7 +14,7 @@ promise_test(async t => { const callee = new RTCPeerConnection(); t.add_cleanup(() => callee.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio:true}); + const stream = await getNoiseStream({audio:true}); const [track] = stream.getTracks(); caller.addTrack(track, stream); exchangeIceCandidates(caller, callee); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTrack.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTrack.https.html index 1550fc4f794..3f4f927883d 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTrack.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTrack.https.html @@ -190,7 +190,7 @@ assert_equals(transceiver.sender.track, null); assert_equals(transceiver.direction, 'sendrecv'); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const sender = pc.addTrack(track); @@ -205,7 +205,7 @@ const callee = new RTCPeerConnection(); t.add_cleanup(() => callee.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const transceiver = caller.addTransceiver(track); @@ -246,7 +246,7 @@ assert_equals(transceiver.sender.track, null); assert_equals(transceiver.direction, 'recvonly'); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const sender = pc.addTrack(track); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html index 6df056117d0..3640bfb31cd 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addTransceiver.https.html @@ -3,6 +3,7 @@ <title>RTCPeerConnection.prototype.addTransceiver</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="RTCPeerConnection-helper.js"></script> <script> 'use strict'; @@ -244,7 +245,7 @@ const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const transceiver = pc.addTransceiver(track); @@ -284,7 +285,7 @@ const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const transceiver1 = pc.addTransceiver(track); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-connectionState.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-connectionState.https.html index a054a1e8ccc..9e2f3649aec 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-connectionState.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-connectionState.https.html @@ -239,7 +239,7 @@ t.add_cleanup(() => caller.close()); const callee = new RTCPeerConnection(); t.add_cleanup(() => callee.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); caller.addTrack(track, stream); @@ -256,7 +256,7 @@ t.add_cleanup(() => caller.close()); const callee = new RTCPeerConnection(); t.add_cleanup(() => callee.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); caller.addTrack(track, stream); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html index dbfc41e0c37..ff405f32851 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html @@ -13,7 +13,7 @@ const callee = new RTCPeerConnection(); t.add_cleanup(() => callee.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio:true}); + const stream = await getNoiseStream({audio:true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); caller.addTrack(track, stream); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html index a2b2827b849..a5bf7536ff5 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html @@ -223,7 +223,7 @@ async_test(t => { t.add_cleanup(() => callee.close()); caller.addTransceiver('audio', {direction:'recvonly'}); - const stream = await navigator.mediaDevices.getUserMedia({audio:true}); + const stream = await getNoiseStream({audio:true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); callee.addTrack(track, stream); @@ -285,7 +285,7 @@ for (let bundle_policy of ['balanced', 'max-bundle', 'max-compat']) { promise_test(async t => { const caller = new RTCPeerConnection({bundlePolicy: bundle_policy}); t.add_cleanup(() => caller.close()); - const stream = await navigator.mediaDevices.getUserMedia( + const stream = await getNoiseStream( {audio: true, video:true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track1, track2] = stream.getTracks(); @@ -341,9 +341,9 @@ promise_test(async t => { pc2.iceStates.push(pc2.iceConnectionState); }; - const localStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - const localStream2 = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - const remoteStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); + const localStream = await getNoiseStream({audio: true, video: true}); + const localStream2 = await getNoiseStream({audio: true, video: true}); + const remoteStream = await getNoiseStream({audio: true, video: true}); for (const stream of [localStream, localStream2, remoteStream]) { t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); } diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html index fc3182d3d59..c09285956df 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html @@ -7,7 +7,7 @@ <script> promise_test(async t => { - const [track] = (await navigator.mediaDevices.getUserMedia({video: true})).getTracks(); + const [track] = (await getNoiseStream({video: true})).getTracks(); t.add_cleanup(() => track.stop()); const pc1 = new RTCPeerConnection(); t.add_cleanup(() => pc1.close()); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html index f2add7f0d34..10b4cfb3a61 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-removeTrack.https.html @@ -36,7 +36,7 @@ */ promise_test(async t => { const pc = new RTCPeerConnection(); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const transceiver = pc.addTransceiver(track); @@ -62,7 +62,7 @@ promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const transceiver = pc.addTransceiver(track); @@ -94,7 +94,7 @@ promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const transceiver = pc.addTransceiver(track); @@ -126,7 +126,7 @@ promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const transceiver = pc.addTransceiver(track); @@ -167,7 +167,7 @@ t.add_cleanup(() => caller.close()); const callee = new RTCPeerConnection(); t.add_cleanup(() => callee.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const transceiver = caller.addTransceiver(track); @@ -202,7 +202,7 @@ promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const transceiver = pc.addTransceiver(track, { direction: 'sendonly' }); @@ -236,7 +236,7 @@ t.add_cleanup(() => caller.close()); const callee = new RTCPeerConnection(); t.add_cleanup(() => callee.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const transceiver = caller.addTransceiver(track, { direction: 'recvonly' }); @@ -270,7 +270,7 @@ promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const transceiver = pc.addTransceiver(track, { direction: 'inactive' }); @@ -295,7 +295,7 @@ promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const sender = pc.addTrack(track, stream); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getContributingSources.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getContributingSources.https.html index aa59f1b910a..7245d477cc8 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getContributingSources.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getContributingSources.https.html @@ -13,7 +13,7 @@ async function connectAndExpectNoCsrcs(t, kind) { const pc2 = new RTCPeerConnection(); t.add_cleanup(() => pc2.close()); - const stream = await navigator.mediaDevices.getUserMedia({[kind]:true}); + const stream = await getNoiseStream({[kind]:true}); const [track] = stream.getTracks(); t.add_cleanup(() => track.stop()); pc1.addTrack(track, stream); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html index a78ede0d908..8436a44ebcd 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html @@ -15,7 +15,7 @@ async function initiateSingleTrackCallAndReturnReceiver(t, kind) { const pc2 = new RTCPeerConnection(); t.add_cleanup(() => pc2.close()); - const stream = await navigator.mediaDevices.getUserMedia({[kind]:true}); + const stream = await getNoiseStream({[kind]:true}); const [track] = stream.getTracks(); t.add_cleanup(() => track.stop()); pc1.addTrack(track, stream); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-transport.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-transport.https.html index 8c0552dd68a..cd419ebc186 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-transport.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-transport.https.html @@ -13,7 +13,7 @@ promise_test(async t => { const caller = new RTCPeerConnection(); t.add_cleanup(() => caller.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const sender = caller.addTrack(track); @@ -24,7 +24,7 @@ promise_test(async t => { const caller = new RTCPeerConnection(); t.add_cleanup(() => caller.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track] = stream.getTracks(); const sender = caller.addTrack(track); @@ -45,7 +45,7 @@ promise_test(async t => { const caller = new RTCPeerConnection({bundlePolicy: bundle_policy}); t.add_cleanup(() => caller.close()); - const stream = await navigator.mediaDevices.getUserMedia( + const stream = await getNoiseStream( {audio: true, video:true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track1, track2] = stream.getTracks(); @@ -91,7 +91,7 @@ promise_test(async t => { const caller = new RTCPeerConnection({bundlePolicy: bundle_policy}); t.add_cleanup(() => caller.close()); - const stream = await navigator.mediaDevices.getUserMedia( + const stream = await getNoiseStream( {audio: true, video:true}); t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); const [track1, track2] = stream.getTracks(); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html index 67571895175..36708d11ec8 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html @@ -448,7 +448,7 @@ t.add_cleanup(() => pc1.close()); t.add_cleanup(() => pc2.close()); - const stream = await navigator.mediaDevices.getUserMedia({audio: true}); + const stream = await getNoiseStream({audio: true}); t.add_cleanup(() => stopTracks(stream)); const track = stream.getAudioTracks()[0]; pc1.addTrack(track, stream); diff --git a/tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html b/tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html new file mode 100644 index 00000000000..2cd36a17f62 --- /dev/null +++ b/tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<body> + <script src=/resources/testharness.js></script> + <script src=/resources/testharnessreport.js></script> + <script src="../resources/webxr_util.js"></script> + <script src="../resources/webxr_test_constants.js"></script> + <script> + xr_promise_test( + "isSessionSupported resolves to true for immersive-ar on a supported device", + (t) => { + return navigator.xr.test.simulateDeviceConnection(IMMERSIVE_AR_DEVICE) + .then( (controller) => { + return navigator.xr.isSessionSupported('immersive-ar').then((supported) => { + t.step(() => { + assert_true(supported); + }); + }); + }); + }); + + xr_promise_test( + "isSessionSupported resolves to false for immersive-ar on an unsupported device", + (t) => { + return navigator.xr.test.simulateDeviceConnection(TRACKED_IMMERSIVE_DEVICE) + .then( (controller) => { + return navigator.xr.isSessionSupported('immersive-ar').then((supported) => { + t.step(() => { + assert_false(supported); + }); + }); + }); + }); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html b/tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html new file mode 100644 index 00000000000..c3fdeb34db0 --- /dev/null +++ b/tests/wpt/web-platform-tests/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<body> + <script src=/resources/testharness.js></script> + <script src=/resources/testharnessreport.js></script> + <script src="../resources/webxr_util.js"></script> + <script src="../resources/webxr_test_constants.js"></script> + <canvas></canvas> + <script> + xr_session_promise_test( + "Tests requestSession accepts immersive-ar mode", + (session) => { + assert_not_equals(session, null); + }, IMMERSIVE_AR_DEVICE, 'immersive-ar', {}); + + xr_promise_test( + "Tests requestSession rejects immersive-ar mode when unsupported", + (t) => { + return navigator.xr.test.simulateDeviceConnection(TRACKED_IMMERSIVE_DEVICE) + .then((controller) => new Promise((resolve) => { + navigator.xr.test.simulateUserActivation(() => { + resolve(promise_rejects( + t, "NotSupportedError", + navigator.xr.requestSession('immersive-ar', {}))); + }); + })); + }); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/webxr/ar-module/xrSession_environmentBlendMode.https.html b/tests/wpt/web-platform-tests/webxr/ar-module/xrSession_environmentBlendMode.https.html new file mode 100644 index 00000000000..da2ddc28d8d --- /dev/null +++ b/tests/wpt/web-platform-tests/webxr/ar-module/xrSession_environmentBlendMode.https.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<body> + <script src=/resources/testharness.js></script> + <script src=/resources/testharnessreport.js></script> + <script src="../resources/webxr_util.js"></script> + <script src="../resources/webxr_test_constants.js"></script> + <canvas></canvas> + <script> + xr_session_promise_test( + "Tests environmentBlendMode for an AR device", + (session) => { + assert_not_equals(session.environmentBlendMode, "opaque"); + assert_in_array(session.environmentBlendMode, ["alpha-blend", "additive"]); + }, IMMERSIVE_AR_DEVICE, 'immersive-ar', {}); + + + xr_session_promise_test( + "Tests environmentBlendMode for a VR device", + (session) => { + assert_not_equals(session.environmentBlendMode, "alpha-blend"); + assert_in_array(session.environmentBlendMode, ["opaque", "additive"]); + }, TRACKED_IMMERSIVE_DEVICE, 'immersive-vr', {}); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js index 3d9bfa2082b..553a8127fcf 100644 --- a/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js +++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js @@ -136,6 +136,14 @@ const TRACKED_IMMERSIVE_DEVICE = { supportedFeatures: ALL_FEATURES }; +const IMMERSIVE_AR_DEVICE = { + supportsImmersive: true, + supportedModes: [ "inline", "immersive-ar"], + views: VALID_VIEWS, + viewerOrigin: IDENTITY_TRANSFORM, + supportedFeatures: ALL_FEATURES +}; + const VALID_NON_IMMERSIVE_DEVICE = { supportsImmersive: false, supportedModes: ["inline"], @@ -157,3 +165,10 @@ const RIGHT_CONTROLLER = { pointerOrigin: VALID_POINTER_TRANSFORM, profiles: [] }; + +const SCREEN_CONTROLLER = { + handedness: "none", + targetRayMode: "screen", + pointerOrigin: VALID_POINTER_TRANSFORM, + profiles: [] +}; diff --git a/tests/wpt/web-platform-tests/wpt.py b/tests/wpt/web-platform-tests/wpt.py index c65e1ed2c6c..affba7343ea 100644 --- a/tests/wpt/web-platform-tests/wpt.py +++ b/tests/wpt/web-platform-tests/wpt.py @@ -1,3 +1,3 @@ # This file exists to allow `python wpt <command>` to work on Windows: # https://github.com/web-platform-tests/wpt/pull/6907 -execfile("wpt") +exec(compile(open("wpt", "r").read(), "wpt", 'exec')) |