mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Auto merge of #25968 - servo-wpt-sync:wpt_update_16-03-2020, r=servo-wpt-sync
Sync WPT with upstream (16-03-2020) Automated downstream sync of changes from upstream as of 16-03-2020. [no-wpt-sync] r? @servo-wpt-sync
This commit is contained in:
commit
d857bec944
49 changed files with 835 additions and 185 deletions
|
@ -230578,6 +230578,86 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
"scroll-animations": {
|
||||
"animation-with-display-none.html": [
|
||||
"310cb5fc8b0ca7c0ab042a1aecf664528dc3b5eb",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/scroll-animations/animation-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"animation-with-overflow-hidden.html": [
|
||||
"118f682cbdc4792063e87e3fb1516d930aa2fc84",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/scroll-animations/animation-with-overflow-hidden-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"animation-with-root-scroller.html": [
|
||||
"6748e22115aad0e3f96340edf2261fa08203bda6",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/scroll-animations/animation-with-root-scroller-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"animation-with-transform.html": [
|
||||
"b6ee964d2df57aca893bb8a1e15f5463393bfba6",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/scroll-animations/animation-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"two-animations-attach-to-same-scroll-timeline-cancel-one.html": [
|
||||
"1519e51c67717ae0e7995bc9586e60a5b3a5f126",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/scroll-animations/animation-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"two-animations-attach-to-same-scroll-timeline.html": [
|
||||
"4b491a21a685d56109118394c7f0544f84103cb8",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/scroll-animations/animation-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"service-workers": {
|
||||
"service-worker": {
|
||||
"svg-target-reftest.https.html": [
|
||||
|
@ -240732,15 +240812,15 @@
|
|||
[]
|
||||
],
|
||||
"generate.py": [
|
||||
"057c4d81ef1e110be161360ea3f1ea092702d21d",
|
||||
"ad2913cff8c2f847c3ce20a4fcb43d8429cd688a",
|
||||
[]
|
||||
],
|
||||
"spec.src.json": [
|
||||
"0b5d6b7f7a7f8fb06dc512c6459d6b275a7e4aa1",
|
||||
"527d4fb057f7cd68fa8e16a61c09883b04b9c4b9",
|
||||
[]
|
||||
],
|
||||
"spec_validator.py": [
|
||||
"d1e93c9c4b67042389bc093a5272fc1d50df1353",
|
||||
"15f0e1e73272b2ed8f7ba0a27707c550fd625a0e",
|
||||
[]
|
||||
],
|
||||
"template": {
|
||||
|
@ -328812,17 +328892,13 @@
|
|||
"55a103adf0f29c615d40bc47943be1aec25c8f1e",
|
||||
[]
|
||||
],
|
||||
"spec_json.js": [
|
||||
"79bd6664b4e10e2018158a3f40f302988d47978c",
|
||||
[]
|
||||
],
|
||||
"test-case.sub.js": [
|
||||
"661cff12d00e1d7cc1f8e9b2ca2f4ff2b65f4e06",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"spec.src.json": [
|
||||
"5d92d77b218dd4477aab4a32c9fd0ad670c6aa85",
|
||||
"c3aa5eb0fdaca7f45fdad1247aa8957a22b6e544",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -331091,17 +331167,13 @@
|
|||
}
|
||||
},
|
||||
"generic": {
|
||||
"spec_json.js": [
|
||||
"39cd997338e4c9e235d30097d970daeff5f1f19b",
|
||||
[]
|
||||
],
|
||||
"test-case.sub.js": [
|
||||
"912c06e10e7f0917c2cf83bb28f2a0975e103c7c",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"spec.src.json": [
|
||||
"5dc2085c62fa48787d4c16da422e3551eb844630",
|
||||
"8dd6526eae0da60c5318ad9ce3df132bbe0e21dd",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -331975,17 +332047,13 @@
|
|||
}
|
||||
},
|
||||
"generic": {
|
||||
"spec_json.js": [
|
||||
"39cd997338e4c9e235d30097d970daeff5f1f19b",
|
||||
[]
|
||||
],
|
||||
"test-case.sub.js": [
|
||||
"b602d65f4141da242b1a9c47b2544cb3e9abc39c",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"spec.src.json": [
|
||||
"5dc2085c62fa48787d4c16da422e3551eb844630",
|
||||
"8dd6526eae0da60c5318ad9ce3df132bbe0e21dd",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -332859,17 +332927,13 @@
|
|||
}
|
||||
},
|
||||
"generic": {
|
||||
"spec_json.js": [
|
||||
"39cd997338e4c9e235d30097d970daeff5f1f19b",
|
||||
[]
|
||||
],
|
||||
"test-case.sub.js": [
|
||||
"5b6aa4216b74a04a193ce7ece447b890d2ec6469",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"spec.src.json": [
|
||||
"5dc2085c62fa48787d4c16da422e3551eb844630",
|
||||
"8dd6526eae0da60c5318ad9ce3df132bbe0e21dd",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -337802,17 +337866,13 @@
|
|||
"e296ce93b965b788ea79f2f2b6cff45d5dce55f0",
|
||||
[]
|
||||
],
|
||||
"spec_json.js": [
|
||||
"fbe59a2cc9cc5fec5ddd8a0d35354cca787dd515",
|
||||
[]
|
||||
],
|
||||
"test-case.sub.js": [
|
||||
"a8292e57e1fe32efbed35a184fd7461198643dd1",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"spec.src.json": [
|
||||
"47055ab7c1c448c25aef6046570ee4be1e13386f",
|
||||
"1d6ed7cca6269b4179f1538a072c9c655ad4e4c5",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -338845,6 +338905,18 @@
|
|||
"c53f1f432fe1ec2887e30af396a1f1574b76b95d",
|
||||
[]
|
||||
],
|
||||
"animation-ref.html": [
|
||||
"91587153215d4dd9ea952631464f6c4acd3d7208",
|
||||
[]
|
||||
],
|
||||
"animation-with-overflow-hidden-ref.html": [
|
||||
"c045f1a1c9520312db6fd68afd7f6201ce574fbb",
|
||||
[]
|
||||
],
|
||||
"animation-with-root-scroller-ref.html": [
|
||||
"92ec0f931a62d7435021a425b2ce915b7f0e4905",
|
||||
[]
|
||||
],
|
||||
"resources": {
|
||||
"scrolltimeline-utils.js": [
|
||||
"b0e5ead25c6ecd72bb0afcba572af46b819152aa",
|
||||
|
@ -350108,10 +350180,6 @@
|
|||
}
|
||||
},
|
||||
"generic": {
|
||||
"spec_json.js": [
|
||||
"fa9ace46dcbdab0256e41a98b98a86eebf11d0c9",
|
||||
[]
|
||||
],
|
||||
"test-case.sub.js": [
|
||||
"cde228dbad89f7b707a6332dc8ed3b41e0474555",
|
||||
[]
|
||||
|
@ -350202,7 +350270,7 @@
|
|||
}
|
||||
},
|
||||
"spec.src.json": [
|
||||
"f5198c3189727f77ff4a07a6fd9f32c740f095ae",
|
||||
"139b5c451f7438cea55b1f47fb8102626970f91f",
|
||||
[]
|
||||
],
|
||||
"support": {
|
||||
|
@ -439958,14 +440026,14 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"image-loading-lazy-in-cross-origin-ifame-001.sub.html": [
|
||||
"image-loading-lazy-in-cross-origin-iframe-001.sub.html": [
|
||||
"a4627cb8c25dc3f57581dcaea14b2ea4cfccea40",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"image-loading-lazy-in-cross-origin-ifame-002.sub.html": [
|
||||
"image-loading-lazy-in-cross-origin-iframe-002.sub.html": [
|
||||
"1d3d3bc46a6dd931295156bbfdcdf6cf26010e35",
|
||||
[
|
||||
null,
|
||||
|
@ -440496,6 +440564,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"input-number-validity-dynamic-value-no-change.html": [
|
||||
"2100fb7fb618336e77a5478f51b960a7725d02c4",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"inputwillvalidate.html": [
|
||||
"909fd889bbb0b41d218cc2d8e8c9ad4cbf102189",
|
||||
[
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -21,3 +21,6 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,6 +2,3 @@
|
|||
[elementsFromPoint on the root document for points in iframe elements]
|
||||
expected: FAIL
|
||||
|
||||
[elementsFromPoint on inner documents]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
[offsetTopLeft-border-box.html]
|
||||
[container: 1]
|
||||
expected: FAIL
|
||||
|
||||
[container: 0]
|
||||
expected: FAIL
|
||||
|
|
@ -321,9 +321,12 @@
|
|||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain ]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,6 +56,6 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,3 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_4.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_3.html]
|
||||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: NOTRUN
|
||||
|
@ -13,5 +13,8 @@
|
|||
expected: NOTRUN
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: TIMEOUT
|
||||
expected: NOTRUN
|
||||
|
||||
[Non-HTMLElement should not support autofocus]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[image-loading-lazy-in-cross-origin-ifame-001.sub.html]
|
||||
[image-loading-lazy-in-cross-origin-iframe-001.sub.html]
|
||||
[An image with loading='lazy' in cross origin iframe loads when it gets\n visible by scrolling the iframe's scroll port]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[image-loading-lazy-in-cross-origin-ifame-002.sub.html]
|
||||
[image-loading-lazy-in-cross-origin-iframe-002.sub.html]
|
||||
[An image with loading='lazy' in cross origin iframe loads when it gets\n visible by scrolling the parent scroll container of the iframe]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[input-number-validity-dynamic-value-no-change.html]
|
||||
[number input number validation is updated correctly after value attribute change which doesn't change input value]
|
||||
expected: FAIL
|
||||
|
|
@ -62,3 +62,6 @@
|
|||
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 42289 more errors.\n\tMax AbsError of 1.9985451102256775e+0 at index of 18588.\n\t[18588\]\t-9.9997943639755249e-1\t9.9856567382812500e-1\t1.9985451102256775e+0\t2.0014157932787811e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
|
||||
expected: FAIL
|
||||
|
||||
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44050 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 37130.\n\t[37130\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -224,3 +224,6 @@
|
|||
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t1.0348265472000000e+10\t5.6332010030746460e-1\t1.0348265471436680e+10\t1.8370133545365261e+10\t9.0957000000000003e-5\n\t[31081\]\t4.5596850730665223e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 1.0348265471436680e+10 at index of 31080.\n\tMax RelError of 1.8370133545365261e+10 at index of 31080.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t-4.6403300714282137e-34\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5750993561740953e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -54,11 +54,7 @@ def permute_expansion(expansion,
|
|||
|
||||
|
||||
# Dumps the test config `selection` into a serialized JSON string.
|
||||
# We omit `name` parameter because it is not used by tests.
|
||||
def dump_test_parameters(selection):
|
||||
selection = dict(selection)
|
||||
del selection['name']
|
||||
|
||||
return json.dumps(
|
||||
selection,
|
||||
indent=2,
|
||||
|
@ -178,7 +174,6 @@ def generate_selection(spec_directory, test_helper_filenames, spec_json,
|
|||
selection['scenario'] = dump_test_parameters(selection).replace(
|
||||
"\n", indent)
|
||||
|
||||
selection['spec_name'] = spec['name']
|
||||
selection['test_page_title'] = spec_json['test_page_title_template'] % spec
|
||||
selection['spec_description'] = spec['description']
|
||||
selection['spec_specification_url'] = spec['specification_url']
|
||||
|
@ -256,7 +251,7 @@ def generate_test_source_files(spec_directory, test_helper_filenames,
|
|||
# Choose a debug/release template depending on the target.
|
||||
html_template = "test.%s.html.template" % target
|
||||
|
||||
artifact_order = test_expansion_schema.keys() + ['name']
|
||||
artifact_order = test_expansion_schema.keys()
|
||||
artifact_order.remove('expansion')
|
||||
|
||||
# Create list of excluded tests.
|
||||
|
@ -282,10 +277,11 @@ def generate_test_source_files(spec_directory, test_helper_filenames,
|
|||
selection_path = spec_json['selection_pattern'] % selection
|
||||
if selection_path in output_dict:
|
||||
if expansion_pattern['expansion'] != 'override':
|
||||
print(
|
||||
"Error: %s's expansion is default but overrides %s"
|
||||
% (selection['name'],
|
||||
output_dict[selection_path]['name']))
|
||||
print("Error: expansion is default in:")
|
||||
print(dump_test_parameters(selection))
|
||||
print("but overrides:")
|
||||
print(dump_test_parameters(
|
||||
output_dict[selection_path]))
|
||||
sys.exit(1)
|
||||
output_dict[selection_path] = copy.deepcopy(selection)
|
||||
|
||||
|
@ -361,7 +357,8 @@ def main():
|
|||
return
|
||||
|
||||
# Load the default spec JSON file, ...
|
||||
default_spec_filename = os.path.join(util.script_directory, 'spec.src.json')
|
||||
default_spec_filename = os.path.join(util.script_directory,
|
||||
'spec.src.json')
|
||||
spec_json = collections.OrderedDict()
|
||||
if os.path.exists(default_spec_filename):
|
||||
spec_json = util.load_spec_json(default_spec_filename)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"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": [
|
||||
{
|
||||
"name": "Workers are same-origin only",
|
||||
// Workers are same-origin only
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -27,7 +27,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "Workers are same-origin only (redirects)",
|
||||
// Workers are same-origin only (redirects)
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -47,7 +47,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "Websockets are ws/wss-only",
|
||||
// Websockets are ws/wss-only
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -68,7 +68,7 @@
|
|||
{
|
||||
// Redirects are intentionally forbidden in browsers:
|
||||
// https://fetch.spec.whatwg.org/#concept-websocket-establish
|
||||
"name": "Websockets are no-redirect only",
|
||||
// Websockets are no-redirect only
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -86,7 +86,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "ws/wss are websocket-only",
|
||||
// ws/wss are websocket-only
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
|
|
@ -101,7 +101,7 @@ def validate(spec_json, details):
|
|||
test_expansion_schema = spec_json['test_expansion_schema']
|
||||
excluded_tests = spec_json['excluded_tests']
|
||||
|
||||
valid_test_expansion_fields = ['name'] + test_expansion_schema.keys()
|
||||
valid_test_expansion_fields = test_expansion_schema.keys()
|
||||
|
||||
# Should be consistent with `sourceContextMap` in
|
||||
# `/common/security-features/resources/common.sub.js`.
|
||||
|
@ -136,24 +136,15 @@ def validate(spec_json, details):
|
|||
|
||||
# Validate required fields for a single spec.
|
||||
assert_contains_only_fields(spec, [
|
||||
'name', 'title', 'description', 'specification_url',
|
||||
'test_expansion'
|
||||
'title', 'description', 'specification_url', 'test_expansion'
|
||||
])
|
||||
assert_non_empty_string(spec, 'name')
|
||||
assert_non_empty_string(spec, 'title')
|
||||
assert_non_empty_string(spec, 'description')
|
||||
assert_non_empty_string(spec, 'specification_url')
|
||||
assert_non_empty_list(spec, 'test_expansion')
|
||||
|
||||
# Validate spec's test expansion.
|
||||
used_spec_names = {}
|
||||
|
||||
for spec_exp in spec['test_expansion']:
|
||||
details['object'] = spec_exp
|
||||
assert_non_empty_string(spec_exp, 'name')
|
||||
# The name is unique in same expansion group.
|
||||
assert_value_unique_in((spec_exp['expansion'], spec_exp['name']),
|
||||
used_spec_names)
|
||||
assert_contains_only_fields(spec_exp, valid_test_expansion_fields)
|
||||
|
||||
for artifact in test_expansion_schema:
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>Number input step dynamic value attribute change</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1621273">
|
||||
<input type="number" value="9999" step="1">
|
||||
<script>
|
||||
test(function() {
|
||||
let input = document.querySelector("input");
|
||||
input.value = "113.90";
|
||||
assert_true(input.matches(":invalid"), "Input should be invalid because step base is @value");
|
||||
assert_false(input.validity.valid, "Input should be invalid because step base is @value");
|
||||
input.setAttribute("value", "113.90");
|
||||
assert_true(input.matches(":valid"), "Input should be valid because step base is @value");
|
||||
assert_true(input.validity.valid, "Input should be valid because step base is @value");
|
||||
}, "number input number validation is updated correctly after value attribute change which doesn't change input value");
|
||||
</script>
|
File diff suppressed because one or more lines are too long
|
@ -3,13 +3,13 @@
|
|||
"test_page_title_template": "Mixed-Content: %(title)s",
|
||||
"specification": [
|
||||
{
|
||||
"name": "optionally-blockable",
|
||||
// optionally-blockable
|
||||
"title": "Optionally-blockable content",
|
||||
"description": "Test behavior of optionally-blockable content",
|
||||
"specification_url": "http://www.w3.org/TR/mixed-content/#category-optionally-blockable",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "opt-in-blocks",
|
||||
// opt-in-blocks
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -28,7 +28,7 @@
|
|||
"expectation": "blocked"
|
||||
},
|
||||
{
|
||||
"name": "opt-in-blocks-redirects",
|
||||
// opt-in-blocks-redirects
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -47,7 +47,7 @@
|
|||
"expectation": "blocked"
|
||||
},
|
||||
{
|
||||
"name": "no-opt-in-allows",
|
||||
// no-opt-in-allows
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -68,13 +68,13 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "blockable",
|
||||
// blockable
|
||||
"title": "Blockable content",
|
||||
"description": "Test behavior of blockable content.",
|
||||
"specification_url": "http://www.w3.org/TR/mixed-content/#category-blockable",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "opt-in-blocks",
|
||||
// opt-in-blocks
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -114,7 +114,7 @@
|
|||
"expectation": "blocked"
|
||||
},
|
||||
{
|
||||
"name": "opt-in-blocks-redirects",
|
||||
// opt-in-blocks-redirects
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -154,7 +154,7 @@
|
|||
"expectation": "blocked"
|
||||
},
|
||||
{
|
||||
"name": "no-opt-in-blocks",
|
||||
// no-opt-in-blocks
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -194,7 +194,7 @@
|
|||
"expectation": "blocked"
|
||||
},
|
||||
{
|
||||
"name": "ws-downgrade-blocks",
|
||||
// ws-downgrade-blocks
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -211,13 +211,13 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "allowed",
|
||||
// allowed
|
||||
"title": "Allowed content",
|
||||
"description": "Test behavior of allowed content.",
|
||||
"specification_url": "http://www.w3.org/TR/mixed-content/",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "allowed",
|
||||
// allowed
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -234,7 +234,7 @@
|
|||
"expectation": "allowed"
|
||||
},
|
||||
{
|
||||
"name": "websocket-allowed",
|
||||
// websocket-allowed
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -256,7 +256,7 @@
|
|||
"delivery_key": "mixedContent",
|
||||
"excluded_tests": [
|
||||
{
|
||||
"name": "Skip-redundant-no-opt-in",
|
||||
// Skip-redundant-no-opt-in
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -268,7 +268,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "Skip-redundant-for-opt-in-method",
|
||||
// Skip-redundant-for-opt-in-method
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -283,7 +283,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "source_context_list values not yet tested",
|
||||
// source_context_list values not yet tested
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": [
|
||||
|
@ -301,7 +301,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "source_context_list values not for CSP tests",
|
||||
// source_context_list values not for CSP tests
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": [
|
||||
|
@ -316,7 +316,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "subresource values not yet tested",
|
||||
// subresource values not yet tested
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -332,7 +332,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "redirections that mixed-content tests don't care",
|
||||
// redirections that mixed-content tests don't care
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"excluded_tests": [
|
||||
{
|
||||
"name": "expectation=stripped-referrer only",
|
||||
// expectation=stripped-referrer only
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -16,7 +16,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "Only on the top context",
|
||||
// Only on the top context
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": [
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"excluded_tests": [
|
||||
{
|
||||
"name": "expectation=stripped-referrer only",
|
||||
// expectation=stripped-referrer only
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -16,7 +16,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "Only on the top context",
|
||||
// Only on the top context
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": [
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"excluded_tests": [
|
||||
{
|
||||
"name": "expectation=stripped-referrer only",
|
||||
// expectation=stripped-referrer only
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -16,7 +16,7 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "Only on the top context",
|
||||
// Only on the top context
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": [
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -3,13 +3,13 @@
|
|||
"test_page_title_template": "Referrer-Policy: %(title)s",
|
||||
"specification": [
|
||||
{
|
||||
"name": "unset-referrer-policy",
|
||||
// unset-referrer-policy
|
||||
"title": "Referrer Policy is not explicitly defined",
|
||||
"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",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "insecure-protocol",
|
||||
// insecure-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -24,7 +24,7 @@
|
|||
"expectation": "stripped-referrer"
|
||||
},
|
||||
{
|
||||
"name": "upgrade-protocol",
|
||||
// upgrade-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -39,7 +39,7 @@
|
|||
"expectation": "stripped-referrer"
|
||||
},
|
||||
{
|
||||
"name": "downgrade-protocol",
|
||||
// downgrade-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -54,7 +54,7 @@
|
|||
"expectation": "omitted"
|
||||
},
|
||||
{
|
||||
"name": "secure-protocol",
|
||||
// secure-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -71,13 +71,13 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "no-referrer",
|
||||
// no-referrer
|
||||
"title": "Referrer Policy is set to 'no-referrer'",
|
||||
"description": "Check that sub-resource never gets the referrer URL.",
|
||||
"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "generic",
|
||||
// generic
|
||||
"expansion": "default",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -91,13 +91,13 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "no-referrer-when-downgrade",
|
||||
// no-referrer-when-downgrade
|
||||
"title": "Referrer Policy is set to 'no-referrer-when-downgrade'",
|
||||
"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",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "insecure-protocol",
|
||||
// insecure-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -112,7 +112,7 @@
|
|||
"expectation": "stripped-referrer"
|
||||
},
|
||||
{
|
||||
"name": "upgrade-protocol",
|
||||
// upgrade-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -127,7 +127,7 @@
|
|||
"expectation": "stripped-referrer"
|
||||
},
|
||||
{
|
||||
"name": "downgrade-protocol",
|
||||
// downgrade-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -142,7 +142,7 @@
|
|||
"expectation": "omitted"
|
||||
},
|
||||
{
|
||||
"name": "secure-protocol",
|
||||
// secure-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -159,13 +159,13 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "origin",
|
||||
// origin
|
||||
"title": "Referrer Policy is set to 'origin'",
|
||||
"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",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "generic",
|
||||
// generic
|
||||
"expansion": "default",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -179,13 +179,13 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "same-origin",
|
||||
// same-origin
|
||||
"title": "Referrer Policy is set to 'same-origin'",
|
||||
"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",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "same-origin-insecure",
|
||||
// same-origin-insecure
|
||||
"expansion": "default",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -197,7 +197,7 @@
|
|||
"expectation": "stripped-referrer"
|
||||
},
|
||||
{
|
||||
"name": "same-origin-secure-default",
|
||||
// same-origin-secure-default
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -209,7 +209,7 @@
|
|||
"expectation": "stripped-referrer"
|
||||
},
|
||||
{
|
||||
"name": "same-origin-insecure",
|
||||
// same-origin-insecure
|
||||
"expansion": "override",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -224,7 +224,7 @@
|
|||
"expectation": "omitted"
|
||||
},
|
||||
{
|
||||
"name": "cross-origin",
|
||||
// cross-origin
|
||||
"expansion": "default",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -241,13 +241,13 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "origin-when-cross-origin",
|
||||
// origin-when-cross-origin
|
||||
"title": "Referrer Policy is set to 'origin-when-cross-origin'",
|
||||
"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",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "same-origin-insecure",
|
||||
// same-origin-insecure
|
||||
"expansion": "default",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -259,7 +259,7 @@
|
|||
"expectation": "stripped-referrer"
|
||||
},
|
||||
{
|
||||
"name": "same-origin-secure-default",
|
||||
// same-origin-secure-default
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -271,7 +271,7 @@
|
|||
"expectation": "stripped-referrer"
|
||||
},
|
||||
{
|
||||
"name": "same-origin-upgrade",
|
||||
// same-origin-upgrade
|
||||
"expansion": "default",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -283,7 +283,7 @@
|
|||
"expectation": "origin"
|
||||
},
|
||||
{
|
||||
"name": "same-origin-downgrade",
|
||||
// same-origin-downgrade
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -295,7 +295,7 @@
|
|||
"expectation": "origin"
|
||||
},
|
||||
{
|
||||
"name": "same-origin-insecure",
|
||||
// same-origin-insecure
|
||||
"expansion": "override",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -310,7 +310,7 @@
|
|||
"expectation": "origin"
|
||||
},
|
||||
{
|
||||
"name": "cross-origin",
|
||||
// cross-origin
|
||||
"expansion": "default",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -327,13 +327,13 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "strict-origin",
|
||||
// strict-origin
|
||||
"title": "Referrer Policy is set to 'strict-origin'",
|
||||
"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",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "insecure-protocol",
|
||||
// insecure-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -348,7 +348,7 @@
|
|||
"expectation": "origin"
|
||||
},
|
||||
{
|
||||
"name": "upgrade-protocol",
|
||||
// upgrade-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -363,7 +363,7 @@
|
|||
"expectation": "origin"
|
||||
},
|
||||
{
|
||||
"name": "downgrade-protocol",
|
||||
// downgrade-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -378,7 +378,7 @@
|
|||
"expectation": "omitted"
|
||||
},
|
||||
{
|
||||
"name": "secure-protocol",
|
||||
// secure-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -395,13 +395,13 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "strict-origin-when-cross-origin",
|
||||
// strict-origin-when-cross-origin
|
||||
"title": "Referrer Policy is set to 'strict-origin-when-cross-origin'",
|
||||
"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",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "same-insecure",
|
||||
// same-insecure
|
||||
"expansion": "default",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -413,7 +413,7 @@
|
|||
"expectation": "stripped-referrer"
|
||||
},
|
||||
{
|
||||
"name": "same-insecure",
|
||||
// same-insecure
|
||||
"expansion": "override",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -425,7 +425,7 @@
|
|||
"expectation": "origin"
|
||||
},
|
||||
{
|
||||
"name": "cross-insecure",
|
||||
// cross-insecure
|
||||
"expansion": "default",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -437,7 +437,7 @@
|
|||
"expectation": "origin"
|
||||
},
|
||||
{
|
||||
"name": "upgrade-protocol",
|
||||
// upgrade-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -452,7 +452,7 @@
|
|||
"expectation": "origin"
|
||||
},
|
||||
{
|
||||
"name": "downgrade-protocol",
|
||||
// downgrade-protocol
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -467,7 +467,7 @@
|
|||
"expectation": "omitted"
|
||||
},
|
||||
{
|
||||
"name": "same-secure",
|
||||
// same-secure
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -479,7 +479,7 @@
|
|||
"expectation": "stripped-referrer"
|
||||
},
|
||||
{
|
||||
"name": "same-secure",
|
||||
// same-secure
|
||||
"expansion": "override",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -491,7 +491,7 @@
|
|||
"expectation": "origin"
|
||||
},
|
||||
{
|
||||
"name": "cross-secure",
|
||||
// cross-secure
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -505,13 +505,13 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "unsafe-url",
|
||||
// unsafe-url
|
||||
"title": "Referrer Policy is set to 'unsafe-url'",
|
||||
"description": "Check that all sub-resources get the stripped referrer URL.",
|
||||
"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url",
|
||||
"test_expansion": [
|
||||
{
|
||||
"name": "generic",
|
||||
// generic
|
||||
"expansion": "default",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -528,7 +528,7 @@
|
|||
"delivery_key": "referrerPolicy",
|
||||
"excluded_tests": [
|
||||
{
|
||||
"name": "upgraded-protocol-workers",
|
||||
// upgraded-protocol-workers
|
||||
"expansion": "*",
|
||||
"source_scheme": "http",
|
||||
"source_context_list": "*",
|
||||
|
@ -548,7 +548,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "mixed-content-insecure-subresources",
|
||||
// mixed-content-insecure-subresources
|
||||
"expansion": "*",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -569,7 +569,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "overhead-for-redirection",
|
||||
// overhead-for-redirection
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -587,7 +587,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "source-https-unsupported-by-web-platform-tests-runners",
|
||||
// source-https-unsupported-by-web-platform-tests-runners
|
||||
"expansion": "*",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -599,7 +599,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "<link rel=noreferrer>'s delivery_value should be no-referrer",
|
||||
// <link rel=noreferrer>'s delivery_value should be no-referrer
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -620,7 +620,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "redirections that referrer-policy tests don't care",
|
||||
// redirections that referrer-policy tests don't care
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -636,7 +636,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "origins that referrer-policy tests don't care",
|
||||
// origins that referrer-policy tests don't care
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -653,7 +653,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "subresource values not yet tested",
|
||||
// subresource values not yet tested
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -685,7 +685,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "source_context_list values not yet tested",
|
||||
// source_context_list values not yet tested
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": [
|
||||
|
@ -705,7 +705,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "source_context_list values not for referrer-policy tests",
|
||||
// source_context_list values not for referrer-policy tests
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": [
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Reference for Web Animation with scroll timeline tests</title>
|
||||
<style>
|
||||
#box {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: green;
|
||||
transform: translate(0, 100px);
|
||||
opacity: 0.5;
|
||||
will-change: transform; /* force compositing */
|
||||
}
|
||||
|
||||
#covered {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
#scroller {
|
||||
overflow: auto;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
will-change: transform; /* force compositing */
|
||||
}
|
||||
|
||||
#contents {
|
||||
height: 1000px;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="box"></div>
|
||||
<div id="covered"></div>
|
||||
<div id="scroller">
|
||||
<div id="contents"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
// Move the scroller to halfway.
|
||||
const scroller = document.getElementById("scroller");
|
||||
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
|
||||
scroller.scrollTop = 0.5 * maxScroll;
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,74 @@
|
|||
<html class="reftest-wait">
|
||||
<title>Scroll timeline with Web Animation and transition from display:none to display:block</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/scroll-animations/">
|
||||
<meta name="assert" content="Scroll timeline should properly handle going from display:none to display:block">
|
||||
<link rel="match" href="animation-ref.html">
|
||||
|
||||
<script src="/web-animations/testcommon.js"></script>
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
|
||||
<style>
|
||||
#box {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
#covered {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
#scroller {
|
||||
overflow: auto;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
will-change: transform; /* force compositing */
|
||||
}
|
||||
|
||||
.removed {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#contents {
|
||||
height: 1000px;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="box"></div>
|
||||
<div id="covered"></div>
|
||||
<div id="scroller">
|
||||
<div id="contents"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const box = document.getElementById('box');
|
||||
const effect = new KeyframeEffect(box,
|
||||
[
|
||||
{ transform: 'translateY(0)', opacity: 1 },
|
||||
{ transform: 'translateY(200px)', opacity: 0 }
|
||||
], {
|
||||
duration: 1000,
|
||||
}
|
||||
);
|
||||
|
||||
const scroller = document.getElementById('scroller');
|
||||
scroller.classList.add('removed');
|
||||
const timeline = new ScrollTimeline({ scrollSource: scroller, timeRange: 1000, orientation: 'block' });
|
||||
const animation = new Animation(effect, timeline);
|
||||
animation.play();
|
||||
|
||||
waitForAnimationFrames(2).then(_ => {
|
||||
scroller.classList.remove('removed');
|
||||
animation.ready.then(() => {
|
||||
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
|
||||
scroller.scrollTop = 0.5 * maxScroll;
|
||||
|
||||
waitForAnimationFrames(2).then(_ => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,45 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Scroll timeline with Web Animation using a scroller with overflow hidden</title>
|
||||
<style>
|
||||
#box {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: green;
|
||||
transform: translate(0, 100px);
|
||||
opacity: 0.5;
|
||||
will-change: transform; /* force compositing */
|
||||
}
|
||||
|
||||
#covered {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
#scroller {
|
||||
overflow: hidden;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
will-change: transform; /* force compositing */
|
||||
}
|
||||
|
||||
#contents {
|
||||
height: 1000px;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="box"></div>
|
||||
<div id="covered"></div>
|
||||
<div id="scroller">
|
||||
<div id="contents"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
// Move the scroller to halfway.
|
||||
const scroller = document.getElementById("scroller");
|
||||
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
|
||||
scroller.scrollTop = 0.5 * maxScroll;
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,65 @@
|
|||
<html class="reftest-wait">
|
||||
<title>Scroll timeline with Web Animation using a scroller with overflow hidden</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/scroll-animations/">
|
||||
<meta name="assert" content="Web animation correctly updates values when using a overflow: hidden on the scroller being used as the source for the ScrollTimeline">
|
||||
<link rel="match" href="animation-with-overflow-hidden-ref.html">
|
||||
|
||||
<script src="/web-animations/testcommon.js"></script>
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
|
||||
<style>
|
||||
#box {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
#covered {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
#scroller {
|
||||
overflow: hidden;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
#contents {
|
||||
height: 1000px;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="box"></div>
|
||||
<div id="covered"></div>
|
||||
<div id="scroller">
|
||||
<div id="contents"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const box = document.getElementById('box');
|
||||
const effect = new KeyframeEffect(box,
|
||||
[
|
||||
{transform: 'translateY(0)', opacity: 1},
|
||||
{transform: 'translateY(200px)', opacity: 0}
|
||||
], {
|
||||
duration: 1000,
|
||||
}
|
||||
);
|
||||
|
||||
const scroller = document.getElementById('scroller');
|
||||
const timeline = new ScrollTimeline({ scrollSource: scroller, timeRange: 1000, orientation: 'block' });
|
||||
const animation = new Animation(effect, timeline);
|
||||
animation.play();
|
||||
|
||||
animation.ready.then(() => {
|
||||
// Move the scroller to the halfway point.
|
||||
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
|
||||
scroller.scrollTop = 0.5 * maxScroll;
|
||||
waitForAnimationFrames(2).then(_ => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Reference for Scroll timeline with Web Animation using the root scroller</title>
|
||||
<style>
|
||||
html {
|
||||
min-height: 100%;
|
||||
min-width: 100%;
|
||||
padding-bottom: 100px;
|
||||
padding-right: 100px;
|
||||
}
|
||||
|
||||
#box {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: green;
|
||||
transform: translate(0, 100px);
|
||||
opacity: 0.5;
|
||||
will-change: transform; /* force compositing */
|
||||
}
|
||||
|
||||
#covered {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: red;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="box"></div>
|
||||
<div id="covered"></div>
|
||||
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
// Move the scroller to halfway.
|
||||
const scroller = document.scrollingElement;
|
||||
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
|
||||
scroller.scrollTop = 0.5 * maxScroll;
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,59 @@
|
|||
<html class="reftest-wait">
|
||||
<title>Scroll timeline with Web Animation using the root scroller</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/scroll-animations/">
|
||||
<meta name="assert" content="Web animation correctly updates values when using the root scroller as the source for the ScrollTimeline">
|
||||
<link rel="match" href="animation-with-root-scroller-ref.html">
|
||||
|
||||
<script src="/web-animations/testcommon.js"></script>
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
|
||||
<style>
|
||||
html {
|
||||
min-height: 100%;
|
||||
min-width: 100%;
|
||||
padding-bottom: 100px;
|
||||
padding-right: 100px;
|
||||
}
|
||||
|
||||
#box {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
#covered {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: red;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="box"></div>
|
||||
<div id="covered"></div>
|
||||
|
||||
<script>
|
||||
const box = document.getElementById('box');
|
||||
const effect = new KeyframeEffect(box,
|
||||
[
|
||||
{transform: 'translateY(0)', opacity: 1},
|
||||
{transform: 'translateY(200px)', opacity: 0}
|
||||
], {
|
||||
duration: 1000,
|
||||
}
|
||||
);
|
||||
|
||||
const scroller = document.scrollingElement;
|
||||
const timeline = new ScrollTimeline({ scrollSource: scroller, timeRange: 1000, orientation: 'block' });
|
||||
const animation = new Animation(effect, timeline);
|
||||
animation.play();
|
||||
|
||||
animation.ready.then(() => {
|
||||
// Move the scroller to the halfway point.
|
||||
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
|
||||
scroller.scrollTop = 0.5 * maxScroll;
|
||||
|
||||
waitForAnimationFrames(2).then(_ => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,67 @@
|
|||
<html class="reftest-wait">
|
||||
<title>Basic use of scroll timeline with Web Animation</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/scroll-animations/">
|
||||
<meta name="assert" content="Should be able to use the scroll timeline to drive the animation timing">
|
||||
<link rel="match" href="animation-ref.html">
|
||||
|
||||
<script src="/web-animations/testcommon.js"></script>
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
|
||||
<style>
|
||||
#box {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
#covered {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
#scroller {
|
||||
overflow: auto;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
will-change: transform; /* force compositing */
|
||||
}
|
||||
|
||||
#contents {
|
||||
height: 1000px;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="box"></div>
|
||||
<div id="covered"></div>
|
||||
<div id="scroller">
|
||||
<div id="contents"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const box = document.getElementById('box');
|
||||
const effect = new KeyframeEffect(box,
|
||||
[
|
||||
{ transform: 'translateY(0)', opacity: 1},
|
||||
{ transform: 'translateY(200px)', opacity: 0}
|
||||
], {
|
||||
duration: 1000,
|
||||
}
|
||||
);
|
||||
|
||||
const scroller = document.getElementById('scroller');
|
||||
const timeline = new ScrollTimeline({ scrollSource: scroller, timeRange: 1000, orientation: 'block' });
|
||||
const animation = new Animation(effect, timeline);
|
||||
animation.play();
|
||||
|
||||
animation.ready.then(() => {
|
||||
// Move the scroller to the halfway point.
|
||||
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
|
||||
scroller.scrollTop = 0.5 * maxScroll;
|
||||
|
||||
waitForAnimationFrames(2).then(_ => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,83 @@
|
|||
<html class="reftest-wait">
|
||||
<title>Scroll timeline shared by two animation, one gets cancelled</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/scroll-animations/">
|
||||
<meta name="assert" content="Cancelling animations should not affect other
|
||||
animation that is attached to the same timeline.">
|
||||
<link rel="match" href="animation-ref.html">
|
||||
|
||||
<script src="/web-animations/testcommon.js"></script>
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
|
||||
<style>
|
||||
#box {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
#covered {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
#scroller {
|
||||
overflow: auto;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
will-change: transform; /* force compositing */
|
||||
}
|
||||
|
||||
#contents {
|
||||
height: 1000px;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="box"></div>
|
||||
<div id="covered"></div>
|
||||
<div id="scroller">
|
||||
<div id="contents"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const box = document.getElementById('box');
|
||||
const effect = new KeyframeEffect(box,
|
||||
[
|
||||
{ transform: 'translateY(0)', opacity: 1},
|
||||
{ transform: 'translateY(200px)', opacity: 0}
|
||||
], {
|
||||
duration: 1000,
|
||||
}
|
||||
);
|
||||
const temporary_effect = new KeyframeEffect(box,
|
||||
[
|
||||
{ transform: 'translateX(0)'},
|
||||
{ transform: 'translateX(200px)'}
|
||||
], {
|
||||
duration: 1000,
|
||||
}
|
||||
);
|
||||
|
||||
const scroller = document.getElementById('scroller');
|
||||
const timeline = new ScrollTimeline({ scrollSource: scroller, timeRange: 1000, orientation: 'block' });
|
||||
const animation = new Animation(effect, timeline);
|
||||
const temporary_animation = new Animation(temporary_effect, timeline);
|
||||
animation.play();
|
||||
temporary_animation.play();
|
||||
|
||||
Promise.all([animation.ready, temporary_animation.ready]).then(() => {
|
||||
temporary_animation.cancel();
|
||||
temporary_animation.ready.then(() => {
|
||||
waitForAnimationFrames(2).then(_ => {
|
||||
// Move the scroller to the halfway point.
|
||||
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
|
||||
scroller.scrollTop = 0.5 * maxScroll;
|
||||
|
||||
waitForAnimationFrames(2).then(_ => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,78 @@
|
|||
<html class="reftest-wait">
|
||||
<title>Scroll timeline shared by two animation</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/scroll-animations/">
|
||||
<meta name="assert" content="Should be able to use the same scroll timeline to
|
||||
drive two animations">
|
||||
<link rel="match" href="animation-ref.html">
|
||||
|
||||
<script src="/web-animations/testcommon.js"></script>
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
|
||||
<style>
|
||||
#box {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
#covered {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
#scroller {
|
||||
overflow: auto;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
will-change: transform; /* force compositing */
|
||||
}
|
||||
|
||||
#contents {
|
||||
height: 1000px;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="box"></div>
|
||||
<div id="covered"></div>
|
||||
<div id="scroller">
|
||||
<div id="contents"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const box = document.getElementById('box');
|
||||
const transform_effect = new KeyframeEffect(box,
|
||||
[
|
||||
{ transform: 'translateY(0)'},
|
||||
{ transform: 'translateY(200px)'}
|
||||
], {
|
||||
duration: 1000,
|
||||
}
|
||||
);
|
||||
const opacity_effect = new KeyframeEffect(box,
|
||||
[
|
||||
{ opacity: 1},
|
||||
{ opacity: 0}
|
||||
], {
|
||||
duration: 1000,
|
||||
}
|
||||
);
|
||||
|
||||
const scroller = document.getElementById('scroller');
|
||||
const timeline = new ScrollTimeline({ scrollSource: scroller, timeRange: 1000, orientation: 'block' });
|
||||
const transform_animation = new Animation(transform_effect, timeline);
|
||||
transform_animation.play();
|
||||
const opacity_animation = new Animation(opacity_effect, timeline);
|
||||
opacity_animation.play();
|
||||
|
||||
Promise.all([transform_animation.ready, opacity_animation.ready]).then(() => {
|
||||
// Move the scroller to the halfway point.
|
||||
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
|
||||
scroller.scrollTop = 0.5 * maxScroll;
|
||||
|
||||
waitForAnimationFrames(2).then(_ => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
</script>
|
File diff suppressed because one or more lines are too long
|
@ -3,13 +3,13 @@
|
|||
"test_page_title_template": "Upgrade-Insecure-Requests: %(title)s",
|
||||
"specification": [
|
||||
{
|
||||
"name": "No upgrade-insecure-request",
|
||||
// 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 ...",
|
||||
// Without upgrade-insecure-request, all requests are blocked ...
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -21,7 +21,7 @@
|
|||
"expectation": "blocked"
|
||||
},
|
||||
{
|
||||
"name": "... except for the secure requests listed here",
|
||||
// ... except for the secure requests listed here
|
||||
"expansion": "override",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -40,13 +40,13 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "With upgrade-insecure-request",
|
||||
// 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.",
|
||||
// With upgrade-insecure-request, all insecure requests are upgraded and allowed.
|
||||
"expansion": "default",
|
||||
"source_scheme": "https",
|
||||
"source_context_list": "*",
|
||||
|
@ -63,7 +63,7 @@
|
|||
"delivery_key": "upgradeInsecureRequests",
|
||||
"excluded_tests": [
|
||||
{
|
||||
"name": "Omit secure requests",
|
||||
// Omit secure requests
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -80,7 +80,7 @@
|
|||
"expectation": "allowed"
|
||||
},
|
||||
{
|
||||
"name": "For inheriting tests skip http-rp because we already have <meta> tests",
|
||||
// For inheriting tests skip http-rp because we already have <meta> tests
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": [
|
||||
|
@ -96,7 +96,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "source_context_list values not yet tested",
|
||||
// source_context_list values not yet tested
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": [
|
||||
|
@ -115,7 +115,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "source_context_list values not for CSP tests",
|
||||
// source_context_list values not for CSP tests
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": [
|
||||
|
@ -130,7 +130,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "subresource values not yet tested",
|
||||
// subresource values not yet tested
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -153,7 +153,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "origins that upgrade-insecure-requests tests don't care",
|
||||
// origins that upgrade-insecure-requests tests don't care
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
@ -170,7 +170,7 @@
|
|||
"expectation": "*"
|
||||
},
|
||||
{
|
||||
"name": "redirections that upgrade-insecure-requests tests don't care",
|
||||
// redirections that upgrade-insecure-requests tests don't care
|
||||
"expansion": "*",
|
||||
"source_scheme": "*",
|
||||
"source_context_list": "*",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue