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:
bors-servo 2020-03-16 09:43:08 -04:00 committed by GitHub
commit d857bec944
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
49 changed files with 835 additions and 185 deletions

View file

@ -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",
[

View file

@ -0,0 +1,4 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -1,4 +0,0 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -1,4 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -21,3 +21,6 @@
[test the top of layer]
expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -2,6 +2,3 @@
[elementsFromPoint on the root document for points in iframe elements]
expected: FAIL
[elementsFromPoint on inner documents]
expected: FAIL

View file

@ -0,0 +1,7 @@
[offsetTopLeft-border-box.html]
[container: 1]
expected: FAIL
[container: 0]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,4 +0,0 @@
[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,4 +1,4 @@
[traverse_the_history_3.html]
[traverse_the_history_5.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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": "*",

View file

@ -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:

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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": [

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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

View file

@ -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": "*",