mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Auto merge of #24321 - servo-wpt-sync:wpt_update_30-09-2019, r=jdm
Sync WPT with upstream (30-09-2019) Automated downstream sync of changes from upstream as of 30-09-2019. [no-wpt-sync] <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/24321) <!-- Reviewable:end -->
This commit is contained in:
commit
a6caccfdd6
69 changed files with 1112 additions and 416 deletions
|
@ -14,6 +14,9 @@
|
|||
[Revoke blob URL after creating Request, will fetch]
|
||||
expected: FAIL
|
||||
|
||||
[Revoke blob URL after calling fetch, fetch should succeed]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[url-with-fetch.any.html]
|
||||
[Untitled]
|
||||
|
|
|
@ -286065,6 +286065,12 @@
|
|||
"upgrade-insecure-requests/META.yml": [
|
||||
[]
|
||||
],
|
||||
"upgrade-insecure-requests/generic/test-case.sub.js": [
|
||||
[]
|
||||
],
|
||||
"upgrade-insecure-requests/generic/tools/generate.py": [
|
||||
[]
|
||||
],
|
||||
"upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html": [
|
||||
[]
|
||||
],
|
||||
|
@ -286125,7 +286131,10 @@
|
|||
"upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html": [
|
||||
[]
|
||||
],
|
||||
"upgrade-insecure-requests/support/generate.py": [
|
||||
"upgrade-insecure-requests/spec.src.json": [
|
||||
[]
|
||||
],
|
||||
"upgrade-insecure-requests/spec_json.js": [
|
||||
[]
|
||||
],
|
||||
"upgrade-insecure-requests/support/redirect-cors.py": [
|
||||
|
@ -308327,6 +308336,144 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"compression/decompression-bad-chunks.any.js": [
|
||||
[
|
||||
"compression/decompression-bad-chunks.any.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"compression/decompression-bad-chunks.any.serviceworker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"compression/decompression-bad-chunks.any.sharedworker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"compression/decompression-bad-chunks.any.worker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"compression/decompression-constructor-error.any.js": [
|
||||
[
|
||||
"compression/decompression-constructor-error.any.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"compression/decompression-constructor-error.any.serviceworker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"compression/decompression-constructor-error.any.sharedworker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"compression/decompression-constructor-error.any.worker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"compression/decompression-correct-input.any.js": [
|
||||
[
|
||||
"compression/decompression-correct-input.any.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"compression/decompression-correct-input.any.serviceworker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"compression/decompression-correct-input.any.sharedworker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"compression/decompression-correct-input.any.worker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"worker"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"console/console-is-a-namespace.any.js": [
|
||||
[
|
||||
"console/console-is-a-namespace.any.html",
|
||||
|
@ -395194,6 +395341,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/resource_hash.htm": [
|
||||
[
|
||||
"resource-timing/resource_hash.htm",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"resource-timing/resource_ignore_data_url.html": [
|
||||
[
|
||||
"resource-timing/resource_ignore_data_url.html",
|
||||
|
@ -457856,11 +458009,11 @@
|
|||
"support"
|
||||
],
|
||||
"common/security-features/tools/format_spec_src_json.py": [
|
||||
"1276c78f9fb71f98971476000c082ab3511787e6",
|
||||
"b4549bb710cd119e87ca4a41d65d7980b6b40406",
|
||||
"support"
|
||||
],
|
||||
"common/security-features/tools/generate.py": [
|
||||
"0cf7fab42ec199b5f93926a5133ff149bff93c8c",
|
||||
"fa36d8c63d6d84a1c5eafd3160b879f7f3c94310",
|
||||
"support"
|
||||
],
|
||||
"common/security-features/tools/spec_validator.py": [
|
||||
|
@ -458047,6 +458200,18 @@
|
|||
"1d3965fca6769c70bc02308a4c70b4e58c8990e5",
|
||||
"reftest"
|
||||
],
|
||||
"compression/decompression-bad-chunks.any.js": [
|
||||
"8f44ffd902f0838cecf72be50245ab4c683fc09c",
|
||||
"testharness"
|
||||
],
|
||||
"compression/decompression-constructor-error.any.js": [
|
||||
"9ffdb08ce2ff365f70af8121f82e5856c6de9533",
|
||||
"testharness"
|
||||
],
|
||||
"compression/decompression-correct-input.any.js": [
|
||||
"11d8736cb225d6ce575677dcdb70b0a19dd4f65f",
|
||||
"testharness"
|
||||
],
|
||||
"conformance-checkers/META.yml": [
|
||||
"978b5c85721c28f267ec21ceb620017514441385",
|
||||
"support"
|
||||
|
@ -586720,11 +586885,11 @@
|
|||
"testharness"
|
||||
],
|
||||
"css/css-transforms/animation/rotate-interpolation.html": [
|
||||
"911d8e38bd0bb6c3d5652d6824c64c58bd2233cf",
|
||||
"dbf66a734f443eb608d92980ec38304cc7283530",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/animation/scale-interpolation.html": [
|
||||
"c6fec26461155ec15d9eb0ab469205c4868db161",
|
||||
"e71b134ce5f94143127ba830e99d37c20a433313",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/animation/transform-interpolation-001.html": [
|
||||
|
@ -586756,7 +586921,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"css/css-transforms/animation/translate-interpolation.html": [
|
||||
"c73f68a130e86b39b4832111bbfb05c633e09429",
|
||||
"3d40863b3b4332799443433f1a470de0100956ce",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/backface-visibility-hidden-001.html": [
|
||||
|
@ -587676,27 +587841,27 @@
|
|||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/perspective-origin-invalid.html": [
|
||||
"2ed6721e091702a436217086eebd81172f359339",
|
||||
"f4f01a339957df866b8bfad4cea3de1bf26c7915",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/perspective-origin-valid.html": [
|
||||
"79f4e0df12e84e880e8c501856a977e1a2c468b8",
|
||||
"7653d7eceb8d1d0b0ae7adb5c6fb542d5f42adda",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/rotate-parsing-invalid.html": [
|
||||
"9eef999716da1025b1c8595f60e52ff2cdb7715e",
|
||||
"4b6d7cf2ad5f21091e3bd8d47388d28ae964d73a",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/rotate-parsing-valid.html": [
|
||||
"ae9732282b7de4555551037b54dadea7ca9b0bc4",
|
||||
"af0226c96765551a5f7468fcfd1742091f119212",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/scale-parsing-invalid.html": [
|
||||
"1072d1d6b1ecc46142ffbdd2ad62b87079651672",
|
||||
"968e0dc17b1c6bad9f680d4ebfdd80df4f57afe0",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/scale-parsing-valid.html": [
|
||||
"2ae12222f1361b6b0016ce235fad92d03b3bff45",
|
||||
"ac23a17b0133c271cb88d9579ebf33b93f4f502d",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/transform-box-computed.html": [
|
||||
|
@ -587704,39 +587869,39 @@
|
|||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/transform-box-invalid.html": [
|
||||
"781601cd26aa43430272011d67447a9079015659",
|
||||
"af07a7e406ca640c8135802f2f0a8742b7b0e747",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/transform-box-valid.html": [
|
||||
"0754a5c9aeea70b07c9bb7bc1b2d20494f07a060",
|
||||
"df53d327acf72fef155288094df41b4254e2d1b7",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/transform-invalid.html": [
|
||||
"7fb8367ecb2f6e2f151a1ee6afaab9896f07f8c8",
|
||||
"25aeeae4e5df99febd541a61a5f0b0f9a8ff2471",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/transform-origin-computed.html": [
|
||||
"696d89db67fc9dd611fa0c09fccbe0408134e744",
|
||||
"b8648b8a11a707ec06faa0fae7fd4879c0879631",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/transform-origin-invalid.html": [
|
||||
"0dd1eeaf592b94fe65d0ccfb731c826b5dfcb3dc",
|
||||
"5533be4e22e1b67599f0a064ef9d7580736c7b76",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/transform-origin-valid.html": [
|
||||
"f76a0b407e16e3b98c7bac0c4149725deb02ea98",
|
||||
"d5c952ed0f78f93d1e5fa40c571c3ee1b3d8f958",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/transform-valid.html": [
|
||||
"18de33f8a7a21be5b337cc02288471d7ba99f9ae",
|
||||
"7879bd686a6f32b76947c1ffee6f8aff4c2c4db2",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/translate-parsing-invalid.html": [
|
||||
"9064586bdaab692334594a1cc17f24d639aab93c",
|
||||
"2b7ff750c7cd004e3aaa64cb9ae84dd75bb05c69",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/parsing/translate-parsing-valid.html": [
|
||||
"c59ac9fa958175948f36bcab5044911f4b9215ba",
|
||||
"17699ccc1c2d6570a0f20c3c9442cfaf681369d2",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/patternTransform/reference/svg-patternTransform-combination-ref.html": [
|
||||
|
@ -590616,11 +590781,11 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-transforms/transforms-support-calc.html": [
|
||||
"1ad1bcc4b68c5419e2fa0651dad1a3386223e36b",
|
||||
"a952d21b6646c862777b13c8d7a670ad4ae6eb72",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/translate-getComputedStyle.html": [
|
||||
"46a2c309020b5c66daba37f4d39879998b750214",
|
||||
"2a4cdc6d6c622d2d131fdc0dfce95db28af4f831",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-transforms/translate-optional-second-001.html": [
|
||||
|
@ -626072,7 +626237,7 @@
|
|||
"support"
|
||||
],
|
||||
"fetch/api/resources/preflight.py": [
|
||||
"d2249606db624892dab96fc9484a9e274947b859",
|
||||
"a2552c2565ad9be6d17dea1cb6a90ff9eb211190",
|
||||
"support"
|
||||
],
|
||||
"fetch/api/resources/redirect-empty-location.py": [
|
||||
|
@ -649628,7 +649793,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/gyroscope.idl": [
|
||||
"24cd82c643159d680004937d12a17a38c06ece1b",
|
||||
"3754fd81e6bf605a308794e5b759ecd8784a6a15",
|
||||
"support"
|
||||
],
|
||||
"interfaces/hr-time.idl": [
|
||||
|
@ -675775,6 +675940,10 @@
|
|||
"de3c3d015d1db068868b54b924a358018fb49e84",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/resource_hash.htm": [
|
||||
"a44c1c9065967682261346051f5e4391d81f1667",
|
||||
"testharness"
|
||||
],
|
||||
"resource-timing/resource_ignore_data_url.html": [
|
||||
"f8ca2f1187e934fc9b07b5dbc31769f887528b51",
|
||||
"testharness"
|
||||
|
@ -693515,6 +693684,14 @@
|
|||
"704bba994088a6e2197142a7ddbd71bc89eea7d8",
|
||||
"testharness"
|
||||
],
|
||||
"upgrade-insecure-requests/generic/test-case.sub.js": [
|
||||
"cde228dbad89f7b707a6332dc8ed3b41e0474555",
|
||||
"support"
|
||||
],
|
||||
"upgrade-insecure-requests/generic/tools/generate.py": [
|
||||
"cde29893f5fbd35ff0ccf00f7ee323fbb3194c8b",
|
||||
"support"
|
||||
],
|
||||
"upgrade-insecure-requests/iframe-redirect-upgrade.https.html": [
|
||||
"7d0a310cf43e6144d3fc2d13f81d3f8912569e3f",
|
||||
"testharness"
|
||||
|
@ -693659,8 +693836,12 @@
|
|||
"cf1d3c382e4b139db42e807ab1db166cb0d4fbbb",
|
||||
"testharness"
|
||||
],
|
||||
"upgrade-insecure-requests/support/generate.py": [
|
||||
"e3f5aaf3ddf858989f83bcba1743ef73978162e1",
|
||||
"upgrade-insecure-requests/spec.src.json": [
|
||||
"6aee9a280b0ff5001c77e2d8a688618c049dc226",
|
||||
"support"
|
||||
],
|
||||
"upgrade-insecure-requests/spec_json.js": [
|
||||
"9122ce38e31e1a2c2c2c3f4caa291ae24e91a8cb",
|
||||
"support"
|
||||
],
|
||||
"upgrade-insecure-requests/support/redirect-cors.py": [
|
||||
|
@ -698232,7 +698413,7 @@
|
|||
"wdspec"
|
||||
],
|
||||
"webdriver/tests/take_element_screenshot/user_prompts.py": [
|
||||
"221eaa9363528d3fa102f9506d81bca89546e9f5",
|
||||
"5d1b497ff2c4dcda6b1d5d14d9fd99c4c282809c",
|
||||
"wdspec"
|
||||
],
|
||||
"webdriver/tests/take_screenshot/__init__.py": [
|
||||
|
@ -698248,7 +698429,7 @@
|
|||
"wdspec"
|
||||
],
|
||||
"webdriver/tests/take_screenshot/user_prompts.py": [
|
||||
"902463f22c8165628ce5fccffafdc70481300f20",
|
||||
"ad9e3695148d63153db8aacbe3b8444a814d5ba3",
|
||||
"wdspec"
|
||||
],
|
||||
"webgl/META.yml": [
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[mix-blend-mode-animation.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[contenttype_txt.html]
|
||||
expected: CRASH
|
|
@ -312,15 +312,18 @@
|
|||
[<iframe>: separate response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -53,3 +53,9 @@
|
|||
[combined text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[navigation-unload-same-origin-fragment.html]
|
||||
[Tests that a fragment navigation in the unload handler will not block the initial navigation]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_4.html]
|
||||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[creating_browsing_context_test_01.html]
|
||||
[first argument: absolute url]
|
||||
expected: FAIL
|
||||
|
|
@ -1,24 +1,5 @@
|
|||
[open-features-negative-innerwidth-innerheight.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=-404.5" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=-404.5" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=-404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=-404e1" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=-404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=-404e1" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,24 +1,5 @@
|
|||
[open-features-negative-top-left.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: negative values for `top`, `left`]
|
||||
expected: FAIL
|
||||
|
||||
[features "top=-204" should NOT set "top=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "top=-204.5" should NOT set "top=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=-204" should NOT set "left=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "top=-0" should NOT set "top=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=-204.5" should NOT set "left=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=-0" should NOT set "left=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,24 +1,5 @@
|
|||
[open-features-negative-width-height.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: negative values for `width`, `height`]
|
||||
expected: FAIL
|
||||
|
||||
[features "height=-404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=-404e1" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=-404.5" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=-404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=-404e1" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=-404.5" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,48 +1,32 @@
|
|||
[open-features-non-integer-height.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `height`]
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405*3" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405.32" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405e1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405/5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405^4" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405.5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405e-1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405 " should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405LLl" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=/404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[top=0,left=0: absence of feature "height" should be treated same as "height=0"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=_404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=L404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-innerheight.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405e-1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405LLl" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405^4" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405e1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405 " should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405/5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405.32" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405.5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405*3" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=_404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=L404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=/404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-innerwidth.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405e-1" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405*3" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405.5" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405e1" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405.32" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405 " should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405LLl" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405/5" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405^4" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=/404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=_404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=L404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-left.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `left`]
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105e1" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105 " should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105/5" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105e-1" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105^4" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105LLl" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105.32" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105*3" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105.5" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=L104" should NOT set "left=104"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=/104" should NOT set "left=104"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=_104" should NOT set "left=104"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-screenx.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105.5" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105e1" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105 " should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105*3" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105e-1" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105^4" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105LLl" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105/5" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105.32" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=_104" should NOT set "left=104"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=L104" should NOT set "left=104"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=/104" should NOT set "left=104"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-screeny.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405^4" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405e-1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405LLl" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405e1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405 " should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405/5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405*3" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405.32" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405.5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=_404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=L404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=/404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-top.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `top`]
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105/5" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105*3" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105LLl" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105e-1" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105.32" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105e1" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105 " should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105^4" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105.5" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "top=/104" should NOT set "top=104"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "top=_104" should NOT set "top=104"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "top=L104" should NOT set "top=104"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,48 +1,32 @@
|
|||
[open-features-non-integer-width.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `width`]
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405^4" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405.5" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405e1" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405 " should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405.32" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405LLl" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405*3" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405e-1" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405/5" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[top=0,left=0: absence of feature "width" should be treated same as "width=0"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=_404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=/404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=L404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[opener-setter.html]
|
||||
expected: TIMEOUT
|
||||
[Auxiliary browsing context created via `window.open` and setting `window.opener` to `null` should report `window.opener` `null`]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[embedded-opener-remove-frame.html]
|
||||
expected: CRASH
|
||||
[opener and "removed" embedded documents]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[media_fragment_seek.html]
|
||||
[Video should seek to time specified in media fragment syntax]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
[non-active-document.html]
|
||||
[DOMParser]
|
||||
expected: FAIL
|
||||
|
||||
[createHTMLDocument]
|
||||
expected: FAIL
|
||||
|
||||
[<template>]
|
||||
expected: FAIL
|
||||
|
|
@ -1,7 +1,11 @@
|
|||
[form-submission-algorithm.html]
|
||||
expected: TIMEOUT
|
||||
[If form's firing submission events is true, then return; 'submit' event]
|
||||
expected: FAIL
|
||||
|
||||
[If form's firing submission events is true, then return; 'invalid' event]
|
||||
expected: FAIL
|
||||
|
||||
[Cannot navigate (after constructing the entry list)]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
[toggleEvent.html]
|
||||
[Calling open twice on 'details' fires only one toggle event]
|
||||
expected: FAIL
|
||||
|
||||
[Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -0,0 +1,2 @@
|
|||
[transition_calc_implicit.html]
|
||||
expected: TIMEOUT
|
|
@ -6,7 +6,9 @@ import os
|
|||
def main():
|
||||
'''Formats spec.src.json.'''
|
||||
script_directory = os.path.dirname(os.path.abspath(__file__))
|
||||
for dir in ['mixed-content', 'referrer-policy']:
|
||||
for dir in [
|
||||
'mixed-content', 'referrer-policy', 'upgrade-insecure-requests'
|
||||
]:
|
||||
filename = os.path.join(script_directory, '..', '..', '..', dir,
|
||||
'spec.src.json')
|
||||
spec = json.load(
|
||||
|
|
|
@ -110,6 +110,18 @@ def handle_deliveries(policy_deliveries):
|
|||
else:
|
||||
raise Exception(
|
||||
'Invalid delivery_type: %s' % delivery.delivery_type)
|
||||
elif delivery.key == 'upgradeInsecureRequests':
|
||||
# https://w3c.github.io/webappsec-upgrade-insecure-requests/#delivery
|
||||
assert (delivery.value == 'upgrade')
|
||||
if delivery.delivery_type == 'meta':
|
||||
meta += '<meta http-equiv="Content-Security-Policy" ' + \
|
||||
'content="upgrade-insecure-requests">'
|
||||
elif delivery.delivery_type == 'http-rp':
|
||||
headers[
|
||||
'Content-Security-Policy'] = 'upgrade-insecure-requests'
|
||||
else:
|
||||
raise Exception(
|
||||
'Invalid delivery_type: %s' % delivery.delivery_type)
|
||||
else:
|
||||
raise Exception('Invalid delivery_key: %s' % delivery.key)
|
||||
return {"meta": meta, "headers": headers}
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
// META: global=worker
|
||||
|
||||
'use strict';
|
||||
|
||||
const badChunks = [
|
||||
{
|
||||
name: 'undefined',
|
||||
value: undefined
|
||||
},
|
||||
{
|
||||
name: 'null',
|
||||
value: null
|
||||
},
|
||||
{
|
||||
name: 'numeric',
|
||||
value: 3.14
|
||||
},
|
||||
{
|
||||
name: 'object, not BufferSource',
|
||||
value: {}
|
||||
},
|
||||
{
|
||||
name: 'array',
|
||||
value: [65]
|
||||
},
|
||||
{
|
||||
name: 'SharedArrayBuffer',
|
||||
// Use a getter to postpone construction so that all tests don't fail where
|
||||
// SharedArrayBuffer is not yet implemented.
|
||||
get value() {
|
||||
return new SharedArrayBuffer();
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'shared Uint8Array',
|
||||
get value() {
|
||||
new Uint8Array(new SharedArrayBuffer())
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'invalid deflate bytes',
|
||||
get value() {
|
||||
new Uint8Array([0, 156, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 48, 173, 6, 36])
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'invalid gzip bytes',
|
||||
get value() {
|
||||
new Uint8Array([0, 139, 8, 0, 0, 0, 0, 0, 0, 3, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 176, 1, 57, 179, 15, 0, 0, 0])
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
for (const chunk of badChunks) {
|
||||
promise_test(async t => {
|
||||
const ds = new DecompressionStream('gzip');
|
||||
const reader = ds.readable.getReader();
|
||||
const writer = ds.writable.getWriter();
|
||||
const writePromise = writer.write(chunk.value);
|
||||
const readPromise = reader.read();
|
||||
await promise_rejects(t, new TypeError(), writePromise, 'write should reject');
|
||||
await promise_rejects(t, new TypeError(), readPromise, 'read should reject');
|
||||
}, `chunk of type ${chunk.name} should error the stream for gzip`);
|
||||
|
||||
promise_test(async t => {
|
||||
const ds = new DecompressionStream('deflate');
|
||||
const reader = ds.readable.getReader();
|
||||
const writer = ds.writable.getWriter();
|
||||
const writePromise = writer.write(chunk.value);
|
||||
const readPromise = reader.read();
|
||||
await promise_rejects(t, new TypeError(), writePromise, 'write should reject');
|
||||
await promise_rejects(t, new TypeError(), readPromise, 'read should reject');
|
||||
}, `chunk of type ${chunk.name} should error the stream for deflate`);
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
// META: global=worker
|
||||
|
||||
'use strict';
|
||||
|
||||
test(t => {
|
||||
assert_throws(new TypeError(), () => new DecompressionStream('a'), 'constructor should throw');
|
||||
}, '"a" should cause the constructor to throw');
|
||||
|
||||
test(t => {
|
||||
assert_throws(new TypeError(), () => new DecompressionStream(), 'constructor should throw');
|
||||
}, 'no input should cause the constructor to throw');
|
||||
|
||||
test(t => {
|
||||
assert_throws(new Error(), () => new DecompressionStream({ toString() { throw Error(); } }), 'constructor should throw');
|
||||
}, 'non-string input should cause the constructor to throw');
|
|
@ -0,0 +1,26 @@
|
|||
// META: global=worker
|
||||
|
||||
'use strict';
|
||||
|
||||
const deflateChunkValue = new Uint8Array([120, 156, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 48, 173, 6, 36]);
|
||||
const gzipChunkValue = new Uint8Array([31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 75, 173, 40, 72, 77, 46, 73, 77, 81, 200, 47, 45, 41, 40, 45, 1, 0, 176, 1, 57, 179, 15, 0, 0, 0]);
|
||||
const trueChunkValue = new TextEncoder().encode('expected output');
|
||||
|
||||
promise_test(async t => {
|
||||
const ds = new DecompressionStream('deflate');
|
||||
const reader = ds.readable.getReader();
|
||||
const writer = ds.writable.getWriter();
|
||||
const writePromise = writer.write(deflateChunkValue);
|
||||
const { done, value } = await reader.read();
|
||||
assert_array_equals(Array.from(value), trueChunkValue, "value should match");
|
||||
}, 'decompressing deflated input should work');
|
||||
|
||||
|
||||
promise_test(async t => {
|
||||
const ds = new DecompressionStream('gzip');
|
||||
const reader = ds.readable.getReader();
|
||||
const writer = ds.writable.getWriter();
|
||||
const writePromise = writer.write(gzipChunkValue);
|
||||
const { done, value } = await reader.read();
|
||||
assert_array_equals(Array.from(value), trueChunkValue, "value should match");
|
||||
}, 'decompressing gzip input should work');
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>rotate interpolation</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-rotate">
|
||||
<meta name="assert" content="rotate supports animation.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>scale interpolation</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-scale">
|
||||
<meta name="assert" content="scale supports animation.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>translate interpolation</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-translate">
|
||||
<meta name="assert" content="translate supports <length> and <percentage> animation.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: parsing perspective-origin with invalid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#perspective-origin-property">
|
||||
<meta name="assert" content="perspective-origin supports only the '<position>' grammar.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: parsing perspective-origin with valid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#perspective-origin-property">
|
||||
<meta name="assert" content="perspective-origin supports the full '<position>' grammar.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: parsing rotate with invalid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-rotate">
|
||||
<meta name="assert" content="rotate supports only the grammar 'none | <number>{3}? <angle>'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: parsing rotate with valid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-rotate">
|
||||
<meta name="assert" content="rotate supports the full grammar 'none | <number>{3}? <angle>'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: parsing scale with invalid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-scale">
|
||||
<meta name="assert" content="scale supports only the grammar 'none | <number>{1,3}'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: parsing scale with valid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-scale">
|
||||
<meta name="assert" content="scale supports the full grammar 'none | <number>{1,3}'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 1: parsing transform-box with invalid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-box-property">
|
||||
<meta name="assert" content="transform-box supports only the grammar 'content-box | border-box | fill-box | stroke-box | view-box'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 1: parsing transform-box with valid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-box-property">
|
||||
<meta name="assert" content="transform-box supports the full grammar 'content-box | border-box | fill-box | stroke-box | view-box'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: parsing transform with invalid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#transform-property">
|
||||
<meta name="assert" content="transform supports only the grammar 'none | <transform-list>'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: getComputedStyle().transformOrigin</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#transform-origin-property">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-origin-property">
|
||||
<meta name="assert" content="transform-origin computed value is two or three absolute lengths">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 1: parsing transform-origin with invalid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-origin-property">
|
||||
<meta name="assert" content="transform-origin supports only the grammar from spec.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 1: parsing transform-origin with valid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-origin-property">
|
||||
<meta name="assert" content="transform-origin supports the full grammar from spec.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: parsing transform with valid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#transform-property">
|
||||
<meta name="assert" content="transform supports the full grammar 'none | <transform-list>'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: parsing translate with invalid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-translate">
|
||||
<meta name="assert" content="translate supports only the grammar 'none | <length-percentage> [ <length-percentage> <length>? ]?'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: parsing translate with valid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-translate">
|
||||
<meta name="assert" content="translate supports the full grammar 'none | <length-percentage> [ <length-percentage> <length>? ]?'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: calc values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-values-3/#calc-notation">
|
||||
<meta name="assert" content="calc values are supported in css-transforms properties.">
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Transform Module Level 2: translate getComputedStyle</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-translate">
|
||||
<meta name="assert" content="translate computed style does not resolve percentages.">
|
||||
<style type="text/css">
|
||||
|
|
|
@ -26,7 +26,6 @@ def main(request, response):
|
|||
response.set_error(400, "No Access-Control-Request-Method header")
|
||||
return "ERROR: No access-control-request-method in preflight!"
|
||||
|
||||
# https://github.com/whatwg/fetch/issues/922
|
||||
if request.headers.get("Accept", "") != "*/*":
|
||||
response.set_error(400, "Request does not have 'Accept: */*' header")
|
||||
return "ERROR: Invalid access in preflight!"
|
||||
|
|
|
@ -3,8 +3,9 @@
|
|||
// (https://github.com/tidoust/reffy-reports)
|
||||
// Source: Gyroscope (https://w3c.github.io/gyroscope/)
|
||||
|
||||
[Constructor(optional GyroscopeSensorOptions sensorOptions), SecureContext, Exposed=Window]
|
||||
[SecureContext, Exposed=Window]
|
||||
interface Gyroscope : Sensor {
|
||||
constructor(optional GyroscopeSensorOptions sensorOptions = {});
|
||||
readonly attribute double? x;
|
||||
readonly attribute double? y;
|
||||
readonly attribute double? z;
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Resource Timing: image with a hash</title>
|
||||
<link rel="help" href="http://www.w3.org/TR/resource-timing/#dom-performanceresourcetiming-initiatortype"/>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/webperftestharness.js"></script>
|
||||
<script src="resources/webperftestharnessextension.js"></script>
|
||||
<script>
|
||||
setup({explicit_done: true});
|
||||
|
||||
// explicitly test the namespace before we start testing
|
||||
test_namespace("getEntriesByType");
|
||||
|
||||
function onload_test() {
|
||||
if (window.performance.getEntriesByType === undefined) {
|
||||
done();
|
||||
return;
|
||||
}
|
||||
|
||||
const url = "resources/fake_responses.py?tag=" + Math.random() + '#hash=1';
|
||||
const image = new Image();
|
||||
image.onload = image.onerror = () => {
|
||||
const entries = window.performance.getEntriesByType('resource').filter(r => r.initiatorType === 'img');
|
||||
test_equals(entries.length, 1, "There should be one entry");
|
||||
if (entries.length === 1) {
|
||||
test_true(entries[0].name.indexOf('#hash=1') > -1, "There should be a hash in the resource name");
|
||||
}
|
||||
done();
|
||||
|
||||
}
|
||||
image.src = url;
|
||||
}
|
||||
window.onload = onload_test;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Description</h1>
|
||||
<p>This test validates that a hash in an image URL is preserved in resource timing API results.</p>
|
||||
<div id="log"></div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,37 @@
|
|||
// TODO(hiroshige): Document the type of `scenario`.
|
||||
function TestCase(scenario, description) {
|
||||
const urls = getRequestURLs(scenario.subresource,
|
||||
scenario.origin,
|
||||
scenario.redirection);
|
||||
const checkResult = _ => {
|
||||
// Send request to check if the key has been torn down.
|
||||
return xhrRequest(urls.assertUrl)
|
||||
.then(assertResult => {
|
||||
// Now check if the value has been torn down. If it's still there,
|
||||
// we have blocked the request to mixed-content.
|
||||
assert_equals(assertResult.status, scenario.expectation,
|
||||
"The resource request should be '" + scenario.expectation + "'.");
|
||||
});
|
||||
};
|
||||
|
||||
function runTest() {
|
||||
/** @type {Subresource} */
|
||||
const subresource = {
|
||||
subresourceType: scenario.subresource,
|
||||
url: urls.testUrl,
|
||||
policyDeliveries: scenario.subresource_policy_deliveries,
|
||||
};
|
||||
|
||||
promise_test(() => {
|
||||
return xhrRequest(urls.announceUrl)
|
||||
// Send out the real resource request.
|
||||
// This should tear down the key if it's not blocked.
|
||||
.then(_ => invokeRequest(subresource, scenario.source_context_list))
|
||||
// We check the key state, regardless of whether the main request
|
||||
// succeeded or failed.
|
||||
.then(checkResult, checkResult);
|
||||
}, description);
|
||||
} // runTest
|
||||
|
||||
return {start: runTest};
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
#!/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'
|
||||
|
||||
self.test_case_name = 'TestCase'
|
||||
|
||||
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())
|
|
@ -0,0 +1,376 @@
|
|||
{
|
||||
"specification": [
|
||||
{
|
||||
"name": "No upgrade-insecure-request",
|
||||
"title": "No upgrade-insecure-request",
|
||||
"description": "No upgrade-insecure-request",
|
||||
"specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "Without upgrade-insecure-request, all requests are blocked ...",
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
"delivery_type": "meta",
|
||||
"delivery_value": null,
|
||||
"redirection": "*",
|
||||
"subresource": "*",
|
||||
"origin": "*",
|
||||
"expectation": "blocked"
|
||||
},
|
||||
{
|
||||
"name": "... except for the secure requests listed here",
|
||||
"expansion": "override",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
"delivery_type": "meta",
|
||||
"delivery_value": null,
|
||||
"redirection": "no-redirect",
|
||||
"subresource": "*",
|
||||
"origin": [
|
||||
"same-https",
|
||||
"cross-https",
|
||||
"same-wss",
|
||||
"cross-wss"
|
||||
],
|
||||
"expectation": "allowed"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "With upgrade-insecure-request",
|
||||
"title": "With upgrade-insecure-request",
|
||||
"description": "With upgrade-insecure-request",
|
||||
"specification_url": "https://w3c.github.io/webappsec-upgrade-insecure-requests/",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "With upgrade-insecure-request, all insecure requests are upgraded and allowed.",
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
"delivery_type": "*",
|
||||
"delivery_value": "upgrade",
|
||||
"redirection": "*",
|
||||
"subresource": "*",
|
||||
"origin": "*",
|
||||
"expectation": "allowed"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"delivery_key": "upgradeInsecureRequests",
|
||||
"excluded_tests": [
|
||||
{
|
||||
"name": "Omit secure requests",
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
"delivery_type": "*",
|
||||
"delivery_value": "*",
|
||||
"redirection": "no-redirect",
|
||||
"subresource": "*",
|
||||
"origin": [
|
||||
"same-https",
|
||||
"cross-https",
|
||||
"same-wss",
|
||||
"cross-wss"
|
||||
],
|
||||
"expectation": "allowed"
|
||||
},
|
||||
{
|
||||
"name": "For inheriting tests skip http-rp because we already have <meta> tests",
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": [
|
||||
"srcdoc-inherit",
|
||||
"iframe-blank-inherit",
|
||||
"worker-classic-data"
|
||||
],
|
||||
"delivery_type": "http-rp",
|
||||
"delivery_value": "*",
|
||||
"redirection": "*",
|
||||
"subresource": "*",
|
||||
"origin": "*",
|
||||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "Workers are same-origin only",
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
"delivery_type": "*",
|
||||
"delivery_value": "*",
|
||||
"redirection": "*",
|
||||
"subresource": [
|
||||
"worker-classic",
|
||||
"worker-module",
|
||||
"sharedworker-classic"
|
||||
],
|
||||
"origin": [
|
||||
"cross-https",
|
||||
"cross-http-downgrade",
|
||||
"cross-wss",
|
||||
"cross-ws-downgrade"
|
||||
],
|
||||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "Websockets are ws/wss-only",
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
"delivery_type": "*",
|
||||
"delivery_value": "*",
|
||||
"redirection": "*",
|
||||
"subresource": "websocket",
|
||||
"origin": [
|
||||
"same-https",
|
||||
"same-http-downgrade",
|
||||
"cross-https",
|
||||
"cross-http-downgrade"
|
||||
],
|
||||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "Websockets is no-redirect only",
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
"delivery_type": "*",
|
||||
"delivery_value": "*",
|
||||
"redirection": [
|
||||
"downgrade"
|
||||
],
|
||||
"subresource": "websocket",
|
||||
"origin": "*",
|
||||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "ws/wss are websocket-only",
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
"delivery_type": "*",
|
||||
"delivery_value": "*",
|
||||
"redirection": "*",
|
||||
"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"
|
||||
],
|
||||
"origin": [
|
||||
"same-wss",
|
||||
"same-ws-downgrade",
|
||||
"cross-wss",
|
||||
"cross-ws-downgrade"
|
||||
],
|
||||
"expectation": "*"
|
||||
}
|
||||
],
|
||||
"source_context_schema": {
|
||||
"supported_delivery_type": {
|
||||
"top": [
|
||||
"http-rp",
|
||||
"meta"
|
||||
],
|
||||
"iframe": [
|
||||
"http-rp",
|
||||
"meta"
|
||||
],
|
||||
"iframe-blank": [
|
||||
"meta"
|
||||
],
|
||||
"srcdoc": [
|
||||
"meta"
|
||||
],
|
||||
"worker-classic": [
|
||||
"http-rp"
|
||||
],
|
||||
"worker-module": [
|
||||
"http-rp"
|
||||
],
|
||||
"worker-classic-data": [],
|
||||
"worker-module-data": []
|
||||
},
|
||||
"supported_subresource": {
|
||||
"top": "*",
|
||||
"iframe": "*",
|
||||
"iframe-blank": "*",
|
||||
"srcdoc": "*",
|
||||
"worker-classic": [
|
||||
"xhr",
|
||||
"fetch",
|
||||
"websocket"
|
||||
],
|
||||
"worker-module": [
|
||||
"xhr",
|
||||
"fetch",
|
||||
"websocket"
|
||||
],
|
||||
"worker-classic-data": [
|
||||
"xhr",
|
||||
"fetch",
|
||||
"websocket"
|
||||
],
|
||||
"worker-module-data": [
|
||||
"xhr",
|
||||
"fetch",
|
||||
"websocket"
|
||||
]
|
||||
}
|
||||
},
|
||||
"subresource_schema": {
|
||||
"supported_delivery_type": {
|
||||
"xhr": [],
|
||||
"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": [],
|
||||
"fetch": [],
|
||||
"websocket": [],
|
||||
"img-tag": [],
|
||||
"iframe-tag": []
|
||||
}
|
||||
},
|
||||
"source_context_list_schema": {
|
||||
"top": {
|
||||
"description": "CSP set by the top-level Document",
|
||||
"sourceContextList": [
|
||||
{
|
||||
"sourceContextType": "top",
|
||||
"policyDeliveries": [
|
||||
"policy"
|
||||
]
|
||||
}
|
||||
],
|
||||
"subresourcePolicyDeliveries": []
|
||||
},
|
||||
"srcdoc-inherit": {
|
||||
"description": "srcdoc iframe should inherit parent Document's policy",
|
||||
"sourceContextList": [
|
||||
{
|
||||
"sourceContextType": "top",
|
||||
"policyDeliveries": [
|
||||
"policy"
|
||||
]
|
||||
},
|
||||
{
|
||||
"sourceContextType": "srcdoc"
|
||||
}
|
||||
],
|
||||
"subresourcePolicyDeliveries": []
|
||||
},
|
||||
"iframe-blank-inherit": {
|
||||
"description": "blank iframe should inherit parent Document's policy",
|
||||
"sourceContextList": [
|
||||
{
|
||||
"sourceContextType": "top",
|
||||
"policyDeliveries": [
|
||||
"policy"
|
||||
]
|
||||
},
|
||||
{
|
||||
"sourceContextType": "iframe-blank"
|
||||
}
|
||||
],
|
||||
"subresourcePolicyDeliveries": []
|
||||
},
|
||||
"worker-classic-data": {
|
||||
"description": "CSP set by the top-level Document is inherited to dedicated workers",
|
||||
"sourceContextList": [
|
||||
{
|
||||
"sourceContextType": "top",
|
||||
"policyDeliveries": [
|
||||
"policy"
|
||||
]
|
||||
},
|
||||
{
|
||||
"sourceContextType": "worker-classic-data",
|
||||
"policyDeliveries": []
|
||||
}
|
||||
],
|
||||
"subresourcePolicyDeliveries": []
|
||||
}
|
||||
},
|
||||
"test_expansion_schema": {
|
||||
"expansion": [
|
||||
"default",
|
||||
"override"
|
||||
],
|
||||
"source_scheme": [
|
||||
"https"
|
||||
],
|
||||
"delivery_type": [
|
||||
"http-rp",
|
||||
"meta"
|
||||
],
|
||||
"delivery_value": [
|
||||
null,
|
||||
"upgrade"
|
||||
],
|
||||
"source_context_list": [
|
||||
"top",
|
||||
"srcdoc-inherit",
|
||||
"iframe-blank-inherit",
|
||||
"worker-classic-data"
|
||||
],
|
||||
"redirection": [
|
||||
"no-redirect",
|
||||
"downgrade"
|
||||
],
|
||||
"origin": [
|
||||
"same-https",
|
||||
"same-http-downgrade",
|
||||
"cross-https",
|
||||
"cross-http-downgrade",
|
||||
"same-wss",
|
||||
"same-ws-downgrade",
|
||||
"cross-wss",
|
||||
"cross-ws-downgrade"
|
||||
],
|
||||
"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"
|
||||
]
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -1,64 +0,0 @@
|
|||
# Usage: execute
|
||||
# $ python support/generate.py
|
||||
# at wpt/upgrade-insecure-requests/.
|
||||
#
|
||||
# Note: Some tests (link-upgrade.sub.https.html and
|
||||
# websocket-upgrade.https.html) are not covered by this generator script.
|
||||
|
||||
template = '''<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<!-- Generated by wpt/upgrade-insecure-requests/support/generate.py -->%(additionalMeta)s
|
||||
<title>Upgrade Insecure Requests: %(name)s.</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="./support/testharness-helper.sub.js"></script>
|
||||
<script src="/common/security-features/resources/common.sub.js"></script>
|
||||
|
||||
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const tests = %(generatorName)s(ResourceType.%(resourceType)s, %(sameOriginOnly)s);
|
||||
tests.forEach(test => testMap['%(name)s'](test));
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
'''
|
||||
|
||||
def getLong(file):
|
||||
testsThatNeedMoreTime = [ "worker-subresource-fetch-redirect-upgrade.https.html" ]
|
||||
if any(file in item for item in testsThatNeedMoreTime ):
|
||||
return '\n<meta name="timeout" content="long">'
|
||||
return ""
|
||||
|
||||
# resourceType is |ResourceType| in testharness-helper.sub.js.
|
||||
for name, resourceType in [
|
||||
('image', 'IMAGE'), ('iframe', 'FRAME'),
|
||||
('animation-worklet', 'WORKLET'), ('audio-worklet', 'WORKLET'),
|
||||
('layout-worklet', 'WORKLET'), ('paint-worklet', 'WORKLET'),
|
||||
('worker', 'WORKER'),
|
||||
('module-worker', 'WORKER'),
|
||||
('worker-subresource-xhr', 'FETCH'),
|
||||
('worker-subresource-fetch', 'FETCH'),
|
||||
('shared-worker', 'SHARED_WORKER')]:
|
||||
# TODO(https://crbug.com/989399): Add tests for subresource requests on shared
|
||||
# workers, and main/subresource requests on service workers.
|
||||
|
||||
sameOriginOnly = 'false'
|
||||
if resourceType == 'WORKER' or resourceType == 'SHARED_WORKER':
|
||||
sameOriginOnly = 'true'
|
||||
|
||||
types = [('', 'generateTests'), ('-redirect', 'generateRedirectTests')]
|
||||
if name == 'module-worker' or resourceType == 'WORKLET':
|
||||
types.append(('-import', 'generateModuleImportTests'))
|
||||
|
||||
for typeName, generatorName in types:
|
||||
filename = '%s%s-upgrade.https.html' % (name, typeName)
|
||||
with open(filename, 'w') as html_file:
|
||||
html_file.write(template % {
|
||||
'name': name,
|
||||
'additionalMeta': getLong(filename),
|
||||
'resourceType': resourceType,
|
||||
'generatorName': generatorName,
|
||||
'sameOriginOnly': sameOriginOnly})
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import pytest
|
||||
|
||||
from tests.support.asserts import assert_png, assert_success
|
||||
from tests.support.asserts import assert_dialog_handled, assert_error, assert_png, assert_success
|
||||
from tests.support.inline import inline
|
||||
|
||||
|
||||
|
@ -17,8 +17,8 @@ def take_element_screenshot(session, element_id):
|
|||
|
||||
|
||||
@pytest.fixture
|
||||
def check_user_prompt_not_closed_without_exception(session, create_dialog):
|
||||
def check_user_prompt_not_closed_without_exception(dialog_type):
|
||||
def check_user_prompt_closed_without_exception(session, create_dialog):
|
||||
def check_user_prompt_closed_without_exception(dialog_type, retval):
|
||||
session.url = inline("<input/>")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
|
@ -27,44 +27,96 @@ def check_user_prompt_not_closed_without_exception(session, create_dialog):
|
|||
response = take_element_screenshot(session, element.id)
|
||||
value = assert_success(response)
|
||||
|
||||
assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval)
|
||||
|
||||
assert_png(value)
|
||||
|
||||
return check_user_prompt_closed_without_exception
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def check_user_prompt_closed_with_exception(session, create_dialog):
|
||||
def check_user_prompt_closed_with_exception(dialog_type, retval):
|
||||
session.url = inline("<input/>")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
create_dialog(dialog_type, text=dialog_type)
|
||||
|
||||
response = take_element_screenshot(session, element.id)
|
||||
assert_error(response, "unexpected alert open")
|
||||
|
||||
assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval)
|
||||
|
||||
return check_user_prompt_closed_with_exception
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def check_user_prompt_not_closed_but_exception(session, create_dialog):
|
||||
def check_user_prompt_not_closed_but_exception(dialog_type):
|
||||
session.url = inline("<input/>")
|
||||
element = session.find.css("input", all=False)
|
||||
|
||||
create_dialog(dialog_type, text=dialog_type)
|
||||
|
||||
response = take_element_screenshot(session, element.id)
|
||||
assert_error(response, "unexpected alert open")
|
||||
|
||||
assert session.alert.text == dialog_type
|
||||
session.alert.dismiss()
|
||||
|
||||
return check_user_prompt_not_closed_without_exception
|
||||
return check_user_prompt_not_closed_but_exception
|
||||
|
||||
|
||||
@pytest.mark.capabilities({"unhandledPromptBehavior": "accept"})
|
||||
@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"])
|
||||
def test_accept(check_user_prompt_not_closed_without_exception, dialog_type):
|
||||
check_user_prompt_not_closed_without_exception(dialog_type)
|
||||
@pytest.mark.parametrize("dialog_type, retval", [
|
||||
("alert", None),
|
||||
("confirm", True),
|
||||
("prompt", ""),
|
||||
])
|
||||
def test_accept(check_user_prompt_closed_without_exception, dialog_type, retval):
|
||||
check_user_prompt_closed_without_exception(dialog_type, retval)
|
||||
|
||||
|
||||
@pytest.mark.capabilities({"unhandledPromptBehavior": "accept and notify"})
|
||||
@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"])
|
||||
def test_accept_and_notify(check_user_prompt_not_closed_without_exception, dialog_type):
|
||||
check_user_prompt_not_closed_without_exception(dialog_type)
|
||||
@pytest.mark.parametrize("dialog_type, retval", [
|
||||
("alert", None),
|
||||
("confirm", True),
|
||||
("prompt", ""),
|
||||
])
|
||||
def test_accept_and_notify(check_user_prompt_closed_with_exception, dialog_type, retval):
|
||||
check_user_prompt_closed_with_exception(dialog_type, retval)
|
||||
|
||||
|
||||
@pytest.mark.capabilities({"unhandledPromptBehavior": "dismiss"})
|
||||
@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"])
|
||||
def test_dismiss(check_user_prompt_not_closed_without_exception, dialog_type):
|
||||
check_user_prompt_not_closed_without_exception(dialog_type)
|
||||
@pytest.mark.parametrize("dialog_type, retval", [
|
||||
("alert", None),
|
||||
("confirm", False),
|
||||
("prompt", None),
|
||||
])
|
||||
def test_dismiss(check_user_prompt_closed_without_exception, dialog_type, retval):
|
||||
check_user_prompt_closed_without_exception(dialog_type, retval)
|
||||
|
||||
|
||||
@pytest.mark.capabilities({"unhandledPromptBehavior": "dismiss and notify"})
|
||||
@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"])
|
||||
def test_dismiss_and_notify(check_user_prompt_not_closed_without_exception, dialog_type):
|
||||
check_user_prompt_not_closed_without_exception(dialog_type)
|
||||
@pytest.mark.parametrize("dialog_type, retval", [
|
||||
("alert", None),
|
||||
("confirm", False),
|
||||
("prompt", None),
|
||||
])
|
||||
def test_dismiss_and_notify(check_user_prompt_closed_with_exception, dialog_type, retval):
|
||||
check_user_prompt_closed_with_exception(dialog_type, retval)
|
||||
|
||||
|
||||
@pytest.mark.capabilities({"unhandledPromptBehavior": "ignore"})
|
||||
@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"])
|
||||
def test_ignore(check_user_prompt_not_closed_without_exception, dialog_type):
|
||||
check_user_prompt_not_closed_without_exception(dialog_type)
|
||||
def test_ignore(check_user_prompt_not_closed_but_exception, dialog_type):
|
||||
check_user_prompt_not_closed_but_exception(dialog_type)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"])
|
||||
def test_default(check_user_prompt_not_closed_without_exception, dialog_type):
|
||||
check_user_prompt_not_closed_without_exception(dialog_type)
|
||||
@pytest.mark.parametrize("dialog_type, retval", [
|
||||
("alert", None),
|
||||
("confirm", False),
|
||||
("prompt", None),
|
||||
])
|
||||
def test_default(check_user_prompt_closed_with_exception, dialog_type, retval):
|
||||
check_user_prompt_closed_with_exception(dialog_type, retval)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import pytest
|
||||
|
||||
from tests.support.asserts import assert_png, assert_success
|
||||
from tests.support.asserts import assert_dialog_handled, assert_error, assert_png, assert_success
|
||||
from tests.support.inline import inline
|
||||
|
||||
|
||||
|
@ -12,8 +12,8 @@ def take_screenshot(session):
|
|||
|
||||
|
||||
@pytest.fixture
|
||||
def check_user_prompt_not_closed_without_exception(session, create_dialog):
|
||||
def check_user_prompt_not_closed_without_exception(dialog_type):
|
||||
def check_user_prompt_closed_without_exception(session, create_dialog):
|
||||
def check_user_prompt_closed_without_exception(dialog_type, retval):
|
||||
session.url = inline("<input/>")
|
||||
|
||||
create_dialog(dialog_type, text=dialog_type)
|
||||
|
@ -21,44 +21,94 @@ def check_user_prompt_not_closed_without_exception(session, create_dialog):
|
|||
response = take_screenshot(session)
|
||||
value = assert_success(response)
|
||||
|
||||
assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval)
|
||||
|
||||
assert_png(value)
|
||||
|
||||
return check_user_prompt_closed_without_exception
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def check_user_prompt_closed_with_exception(session, create_dialog):
|
||||
def check_user_prompt_closed_with_exception(dialog_type, retval):
|
||||
session.url = inline("<input/>")
|
||||
|
||||
create_dialog(dialog_type, text=dialog_type)
|
||||
|
||||
response = take_screenshot(session)
|
||||
assert_error(response, "unexpected alert open")
|
||||
|
||||
assert_dialog_handled(session, expected_text=dialog_type, expected_retval=retval)
|
||||
|
||||
return check_user_prompt_closed_with_exception
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def check_user_prompt_not_closed_but_exception(session, create_dialog):
|
||||
def check_user_prompt_not_closed_but_exception(dialog_type):
|
||||
session.url = inline("<input/>")
|
||||
|
||||
create_dialog(dialog_type, text=dialog_type)
|
||||
|
||||
response = take_screenshot(session)
|
||||
assert_error(response, "unexpected alert open")
|
||||
|
||||
assert session.alert.text == dialog_type
|
||||
session.alert.dismiss()
|
||||
|
||||
return check_user_prompt_not_closed_without_exception
|
||||
return check_user_prompt_not_closed_but_exception
|
||||
|
||||
|
||||
@pytest.mark.capabilities({"unhandledPromptBehavior": "accept"})
|
||||
@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"])
|
||||
def test_accept(check_user_prompt_not_closed_without_exception, dialog_type):
|
||||
check_user_prompt_not_closed_without_exception(dialog_type)
|
||||
@pytest.mark.parametrize("dialog_type, retval", [
|
||||
("alert", None),
|
||||
("confirm", True),
|
||||
("prompt", ""),
|
||||
])
|
||||
def test_accept(check_user_prompt_closed_without_exception, dialog_type, retval):
|
||||
check_user_prompt_closed_without_exception(dialog_type, retval)
|
||||
|
||||
|
||||
@pytest.mark.capabilities({"unhandledPromptBehavior": "accept and notify"})
|
||||
@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"])
|
||||
def test_accept_and_notify(check_user_prompt_not_closed_without_exception, dialog_type):
|
||||
check_user_prompt_not_closed_without_exception(dialog_type)
|
||||
@pytest.mark.parametrize("dialog_type, retval", [
|
||||
("alert", None),
|
||||
("confirm", True),
|
||||
("prompt", ""),
|
||||
])
|
||||
def test_accept_and_notify(check_user_prompt_closed_with_exception, dialog_type, retval):
|
||||
check_user_prompt_closed_with_exception(dialog_type, retval)
|
||||
|
||||
|
||||
@pytest.mark.capabilities({"unhandledPromptBehavior": "dismiss"})
|
||||
@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"])
|
||||
def test_dismiss(check_user_prompt_not_closed_without_exception, dialog_type):
|
||||
check_user_prompt_not_closed_without_exception(dialog_type)
|
||||
@pytest.mark.parametrize("dialog_type, retval", [
|
||||
("alert", None),
|
||||
("confirm", False),
|
||||
("prompt", None),
|
||||
])
|
||||
def test_dismiss(check_user_prompt_closed_without_exception, dialog_type, retval):
|
||||
check_user_prompt_closed_without_exception(dialog_type, retval)
|
||||
|
||||
|
||||
@pytest.mark.capabilities({"unhandledPromptBehavior": "dismiss and notify"})
|
||||
@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"])
|
||||
def test_dismiss_and_notify(check_user_prompt_not_closed_without_exception, dialog_type):
|
||||
check_user_prompt_not_closed_without_exception(dialog_type)
|
||||
@pytest.mark.parametrize("dialog_type, retval", [
|
||||
("alert", None),
|
||||
("confirm", False),
|
||||
("prompt", None),
|
||||
])
|
||||
def test_dismiss_and_notify(check_user_prompt_closed_with_exception, dialog_type, retval):
|
||||
check_user_prompt_closed_with_exception(dialog_type, retval)
|
||||
|
||||
|
||||
@pytest.mark.capabilities({"unhandledPromptBehavior": "ignore"})
|
||||
@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"])
|
||||
def test_ignore(check_user_prompt_not_closed_without_exception, dialog_type):
|
||||
check_user_prompt_not_closed_without_exception(dialog_type)
|
||||
def test_ignore(check_user_prompt_not_closed_but_exception, dialog_type):
|
||||
check_user_prompt_not_closed_but_exception(dialog_type)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"])
|
||||
def test_default(check_user_prompt_not_closed_without_exception, dialog_type):
|
||||
check_user_prompt_not_closed_without_exception(dialog_type)
|
||||
@pytest.mark.parametrize("dialog_type, retval", [
|
||||
("alert", None),
|
||||
("confirm", False),
|
||||
("prompt", None),
|
||||
])
|
||||
def test_default(check_user_prompt_closed_with_exception, dialog_type, retval):
|
||||
check_user_prompt_closed_with_exception(dialog_type, retval)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[canvas-resizing-with-pbo-bound.html]
|
||||
expected: TIMEOUT
|
||||
[WebGL test #0: Unable to fetch WebGL rendering context for Canvas]
|
||||
expected: FAIL
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue