mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Update web-platform-tests to revision b'7b6f075f0ec3c52d92c61fb9f35ce0ec927b17b2' (#34525)
Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
This commit is contained in:
parent
2fbe16876c
commit
b3977e7f6c
146 changed files with 4116 additions and 587 deletions
|
@ -1,6 +0,0 @@
|
|||
[clear-computed.html]
|
||||
[Property clear value 'inline-start']
|
||||
expected: FAIL
|
||||
|
||||
[Property clear value 'inline-end']
|
||||
expected: FAIL
|
|
@ -1,6 +0,0 @@
|
|||
[float-computed.html]
|
||||
[Property float value 'inline-start']
|
||||
expected: FAIL
|
||||
|
||||
[Property float value 'inline-end']
|
||||
expected: FAIL
|
|
@ -19,3 +19,6 @@
|
|||
|
||||
[@font-face matching for quoted and unquoted fangsong]
|
||||
expected: FAIL
|
||||
|
||||
[@font-face matching for quoted and unquoted serif]
|
||||
expected: FAIL
|
||||
|
|
|
@ -361,3 +361,63 @@
|
|||
|
||||
[e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(auto-fit, 3px); grid-template-areas: "one two" "three four" should set grid-template-rows]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: none; should set grid]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: none; should set grid-template]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: none; should set grid-template-areas]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: none; should set grid-template-columns]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: none; should set grid-template-rows]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: auto / auto; should set grid]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: auto / auto; should set grid-template]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: auto / auto; should set grid-template-areas]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: auto / auto; should set grid-template-columns]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: auto / auto; should set grid-template-rows]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: [header-top\] "a a a" [header-bottom\] [main-top\] "b b b" 1fr [main-bottom\] / auto 1fr auto should set grid]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: [header-top\] "a a a" [header-bottom\] [main-top\] "b b b" 1fr [main-bottom\] / auto 1fr auto should set grid-template]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: [header-top\] "a a a" [header-bottom\] [main-top\] "b b b" 1fr [main-bottom\] / auto 1fr auto should set grid-template-areas]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: [header-top\] "a a a" [header-bottom\] [main-top\] "b b b" 1fr [main-bottom\] / auto 1fr auto should set grid-template-columns]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: [header-top\] "a a a" [header-bottom\] [main-top\] "b b b" 1fr [main-bottom\] / auto 1fr auto should set grid-template-rows]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: [header-top\] "a a a" [header-bottom\] [main-top\] "b b b" 1fr [main-bottom\] "c c c" "d d d" / auto should set grid]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: [header-top\] "a a a" [header-bottom\] [main-top\] "b b b" 1fr [main-bottom\] "c c c" "d d d" / auto should set grid-template]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: [header-top\] "a a a" [header-bottom\] [main-top\] "b b b" 1fr [main-bottom\] "c c c" "d d d" / auto should set grid-template-areas]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: [header-top\] "a a a" [header-bottom\] [main-top\] "b b b" 1fr [main-bottom\] "c c c" "d d d" / auto should set grid-template-columns]
|
||||
expected: FAIL
|
||||
|
||||
[e.style.cssText = grid-template: [header-top\] "a a a" [header-bottom\] [main-top\] "b b b" 1fr [main-bottom\] "c c c" "d d d" / auto should set grid-template-rows]
|
||||
expected: FAIL
|
||||
|
|
|
@ -13,3 +13,6 @@
|
|||
|
||||
[grid-template: 10px 20px 30px / 40px 50px 60px 70px and "grid-template-areas: "a . b ." "c d . e" "f g h .";" should be valid.]
|
||||
expected: FAIL
|
||||
|
||||
[grid-template: none / none and "grid-template-areas: "a" "b" "c" "d" "e";" should be valid.]
|
||||
expected: FAIL
|
||||
|
|
|
@ -70,3 +70,15 @@
|
|||
|
||||
[e.style['grid-template'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] / [\] auto 1fr [\] auto [\]" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['grid-template'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] \\"c c c\\" / [\] auto 1fr [\] auto [\]" should set grid-template-areas]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['grid-template'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] \\"c c c\\" / [\] auto 1fr [\] auto [\]" should set grid-template-columns]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['grid-template'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] \\"c c c\\" / [\] auto 1fr [\] auto [\]" should set grid-template-rows]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['grid-template'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] \\"c c c\\" / [\] auto 1fr [\] auto [\]" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
[logical-values-float-clear.html]
|
||||
[Test that 'clear: inline-start' is supported.]
|
||||
expected: FAIL
|
||||
|
||||
[Test that 'clear: inline-end' is supported.]
|
||||
expected: FAIL
|
||||
|
||||
[Test that 'float: inline-start' is supported.]
|
||||
expected: FAIL
|
||||
|
||||
[Test that 'float: inline-end' is supported.]
|
||||
expected: FAIL
|
|
@ -1,36 +1,2 @@
|
|||
[the-check-pseudo-element.tentative.html]
|
||||
["::check" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["*::check" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["foo.bar[baz\]::check" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::check::marker" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::slotted(*)::check" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::part(foo)::check" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["*::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["foo.bar[baz\]::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::checkmark::marker" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::slotted(*)::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::part(foo)::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,33 +1,2 @@
|
|||
[the-select-arrow-pseudo-element.tentative.html]
|
||||
["::select-arrow" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["*::select-arrow" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["foo.bar[baz\]::select-arrow" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::select-arrow::marker" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::slotted(*)::select-arrow" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::part(foo)::select-arrow" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["*::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["foo.bar[baz\]::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::slotted(*)::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::part(foo)::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
[vh_not_refreshing_on_chrome.html]
|
||||
bug: https://github.com/servo/servo/issues/8984
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[MediaQueryList-addListener-removeListener.html]
|
||||
[listeners are called when <iframe> is resized]
|
||||
expected: FAIL
|
||||
|
||||
[listeners are called correct number of times]
|
||||
expected: FAIL
|
||||
|
|
|
@ -824,9 +824,6 @@
|
|||
[AbortSignal interface: calling any(sequence<AbortSignal>) on new AbortController().signal with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[ShadowRoot interface: attribute clonable]
|
||||
expected: FAIL
|
||||
|
||||
[Document interface: operation prepend((Node or TrustedScript or DOMString)...)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[request-init-001.sub.html]
|
||||
type: testharness
|
||||
[Check referrerPolicy init value of and associated getter]
|
||||
expected: FAIL
|
||||
|
|
@ -28,3 +28,6 @@
|
|||
|
||||
[sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-dest - Not sent to non-trustworthy same-site destination]
|
||||
expected: FAIL
|
||||
|
|
|
@ -61,3 +61,6 @@
|
|||
|
||||
[sec-fetch-site - source[srcset\] - Same-Site -> Cross-Site, no attributes]
|
||||
expected: FAIL
|
||||
|
||||
[sec-fetch-mode - img[src\] - attributes: crossorigin=anonymous]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,9 +1,3 @@
|
|||
[iframe-src-aboutblank-navigate-immediately.html]
|
||||
[Navigating to a different document with window.open]
|
||||
expected: FAIL
|
||||
|
||||
[Navigating to a different document with link click]
|
||||
expected: FAIL
|
||||
|
||||
[Navigating to a different document with location.href]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[navigation-unload-cross-origin.sub.window.html]
|
||||
[Cross-origin navigation started from unload handler must be ignored]
|
||||
expected: FAIL
|
|
@ -1,5 +1,5 @@
|
|||
[createImageBitmap-transfer.html]
|
||||
expected: ERROR
|
||||
expected: TIMEOUT
|
||||
[Transfer ImageBitmap created from a vector HTMLImageElement]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[iframe-loading-lazy-nav-link-click.html]
|
||||
[Navigating iframe loading='lazy' before it is loaded: link click]
|
||||
expected: FAIL
|
|
@ -1,4 +1,3 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -11,3 +11,6 @@
|
|||
|
||||
[Check that rel=noopener with target=_parent does a normal load]
|
||||
expected: FAIL
|
||||
|
||||
[Check that rel=noopener with target=_self does a normal load]
|
||||
expected: FAIL
|
||||
|
|
3
tests/wpt/meta-legacy-layout/html/syntax/parsing/DOMContentLoaded-defer.html.ini
vendored
Normal file
3
tests/wpt/meta-legacy-layout/html/syntax/parsing/DOMContentLoaded-defer.html.ini
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[DOMContentLoaded-defer.html]
|
||||
[The end: DOMContentLoaded and defer scripts]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[module-static-import-delayed.html]
|
||||
[document.write in an imported module]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[child-document-raf-order.html]
|
||||
[Ordering of steps in "Update the Rendering" - child document requestAnimationFrame order]
|
||||
expected: FAIL
|
|
@ -1,11 +1,5 @@
|
|||
[nested-context-navigations-iframe.html]
|
||||
expected: TIMEOUT
|
||||
[Test that iframe navigations are not observable by the parent, even after history navigations by the parent]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Test that crossorigin iframe navigations are not observable by the parent, even after history navigations by the parent]
|
||||
expected: NOTRUN
|
||||
|
||||
[Test that cross-site iframe navigations are not observable by the parent, even after history navigations by the parent]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
1098
tests/wpt/meta/MANIFEST.json
vendored
1098
tests/wpt/meta/MANIFEST.json
vendored
File diff suppressed because it is too large
Load diff
2
tests/wpt/meta/css/css-conditional/container-queries/container-for-cue.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-conditional/container-queries/container-for-cue.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[container-for-cue.html]
|
||||
expected: FAIL
|
6
tests/wpt/meta/css/css-grid/parsing/grid-template-shorthand-composition.html.ini
vendored
Normal file
6
tests/wpt/meta/css/css-grid/parsing/grid-template-shorthand-composition.html.ini
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
[grid-template-shorthand-composition.html]
|
||||
[grid-template-rows: auto, grid-template-columns: auto, and "grid-template-areas: "a a a" "b b b";" should be valid.]
|
||||
expected: FAIL
|
||||
|
||||
[grid-template-rows: min-content, grid-template-columns: min-content, and "grid-template-areas: "a a a" "b b b" "c c c" "d d d";" should be valid.]
|
||||
expected: FAIL
|
12
tests/wpt/meta/css/css-overflow/scrollable-overflow-padding-inline.html.ini
vendored
Normal file
12
tests/wpt/meta/css/css-overflow/scrollable-overflow-padding-inline.html.ini
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
[scrollable-overflow-padding-inline.html]
|
||||
[.scroller 1]
|
||||
expected: FAIL
|
||||
|
||||
[.scroller 2]
|
||||
expected: FAIL
|
||||
|
||||
[.scroller 4]
|
||||
expected: FAIL
|
||||
|
||||
[.scroller 6]
|
||||
expected: FAIL
|
|
@ -1,36 +0,0 @@
|
|||
[the-check-pseudo-element.tentative.html]
|
||||
["::check" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["*::check" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["foo.bar[baz\]::check" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::check::marker" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::slotted(*)::check" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::part(foo)::check" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["*::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["foo.bar[baz\]::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::checkmark::marker" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::slotted(*)::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::part(foo)::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
15
tests/wpt/meta/css/css-pseudo/parsing/the-checkmark-pseudo-element.tentative.html.ini
vendored
Normal file
15
tests/wpt/meta/css/css-pseudo/parsing/the-checkmark-pseudo-element.tentative.html.ini
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
[the-checkmark-pseudo-element.tentative.html]
|
||||
["::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["*::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["foo.bar[baz\]::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::slotted(*)::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::part(foo)::checkmark" should be a valid selector]
|
||||
expected: FAIL
|
15
tests/wpt/meta/css/css-pseudo/parsing/the-picker-icon-pseudo-element.tentative.html.ini
vendored
Normal file
15
tests/wpt/meta/css/css-pseudo/parsing/the-picker-icon-pseudo-element.tentative.html.ini
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
[the-picker-icon-pseudo-element.tentative.html]
|
||||
["::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["*::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["foo.bar[baz\]::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::slotted(*)::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::part(foo)::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
|
@ -1,33 +0,0 @@
|
|||
[the-select-arrow-pseudo-element.tentative.html]
|
||||
["::select-arrow" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["*::select-arrow" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["foo.bar[baz\]::select-arrow" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::select-arrow::marker" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::slotted(*)::select-arrow" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::part(foo)::select-arrow" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["*::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["foo.bar[baz\]::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::slotted(*)::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
||||
|
||||
["::part(foo)::picker-icon" should be a valid selector]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-transitions/allow-discrete-auto-inset.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-transitions/allow-discrete-auto-inset.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[allow-discrete-auto-inset.html]
|
||||
expected: TIMEOUT
|
|
@ -1,3 +1,22 @@
|
|||
[MediaQueryList-addListener-removeListener.html]
|
||||
expected: TIMEOUT
|
||||
[listeners are called when <iframe> is resized]
|
||||
expected: FAIL
|
||||
|
||||
[listeners are called correct number of times]
|
||||
expected: TIMEOUT
|
||||
|
||||
[listeners are called in order they were added]
|
||||
expected: NOTRUN
|
||||
|
||||
[listener that was added twice is called only once]
|
||||
expected: NOTRUN
|
||||
|
||||
[listeners are called in order their MQLs were created]
|
||||
expected: NOTRUN
|
||||
|
||||
[removing listener from one MQL doesn't remove it from all MQLs]
|
||||
expected: NOTRUN
|
||||
|
||||
[MediaQueryList::removeListener removes added listener]
|
||||
expected: NOTRUN
|
||||
|
|
6
tests/wpt/meta/css/cssom/getComputedStyle-pseudo-checkmark.html.ini
vendored
Normal file
6
tests/wpt/meta/css/cssom/getComputedStyle-pseudo-checkmark.html.ini
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
[getComputedStyle-pseudo-checkmark.html]
|
||||
[Resolution of width is correct when pseudo-element argument is ignored (due to single-colon)]
|
||||
expected: FAIL
|
||||
|
||||
[Resolution of width is correct for pseudo-element (due to double-colon)]
|
||||
expected: FAIL
|
9
tests/wpt/meta/css/cssom/getComputedStyle-pseudo-picker-icon.html.ini
vendored
Normal file
9
tests/wpt/meta/css/cssom/getComputedStyle-pseudo-picker-icon.html.ini
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
[getComputedStyle-pseudo-picker-icon.html]
|
||||
[Resolution of width is correct when pseudo-element argument is ignored (due to no colon)]
|
||||
expected: FAIL
|
||||
|
||||
[Resolution of width is correct when pseudo-element argument is ignored (due to single-colon)]
|
||||
expected: FAIL
|
||||
|
||||
[Resolution of width is correct for pseudo-element (due to double-colon)]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[navigation-unload-same-origin.window.html]
|
||||
[Same-origin navigation started from unload handler must be ignored]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.text.measure.actualBoundingBox.whitespace.html]
|
||||
[Testing actualBoundingBox with leading/trailing whitespace]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.text.measure.actualBoundingBox.whitespace.html]
|
||||
[Testing actualBoundingBox with leading/trailing whitespace]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[2d.text.measure.actualBoundingBox.whitespace.worker.html]
|
||||
[Testing actualBoundingBox with leading/trailing whitespace]
|
||||
expected: FAIL
|
|
@ -22,3 +22,6 @@
|
|||
|
||||
[Leading/trailing space removal at display:inline-grid boundary ("<div>123<span style='display:inline-grid'> abc </span>def")]
|
||||
expected: FAIL
|
||||
|
||||
[::first-line styles applied ("<div class='first-line-uppercase'>abc")]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
[non-active-document.html]
|
||||
[DOMParser]
|
||||
expected: FAIL
|
||||
|
||||
[createHTMLDocument]
|
||||
expected: FAIL
|
||||
|
||||
[<template>]
|
||||
expected: FAIL
|
|
@ -1,4 +0,0 @@
|
|||
[reparent-form-during-planned-navigation-task.html]
|
||||
expected: TIMEOUT
|
||||
[reparent-form-during-planned-navigation-task]
|
||||
expected: TIMEOUT
|
3
tests/wpt/meta/html/webappapis/update-rendering/child-document-raf-order.html.ini
vendored
Normal file
3
tests/wpt/meta/html/webappapis/update-rendering/child-document-raf-order.html.ini
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[child-document-raf-order.html]
|
||||
[Ordering of steps in "Update the Rendering" - child document requestAnimationFrame order]
|
||||
expected: FAIL
|
|
@ -23,3 +23,6 @@
|
|||
|
||||
[Test that cross-site iframe refreshes are not observable by the parent]
|
||||
expected: NOTRUN
|
||||
|
||||
[Test that iframe navigations are not observable by the parent, even after history navigations by the parent]
|
||||
expected: TIMEOUT
|
||||
|
|
10
tests/wpt/meta/subresource-integrity/signatures/tentative/script.window.js.ini
vendored
Normal file
10
tests/wpt/meta/subresource-integrity/signatures/tentative/script.window.js.ini
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
[script.window.html]
|
||||
expected: ERROR
|
||||
[No signature, valid integrity check: loads.]
|
||||
expected: FAIL
|
||||
|
||||
[Valid signature, mismatched integrity check: blocked.]
|
||||
expected: FAIL
|
||||
|
||||
[Valid signatures, integrity check matches neither: blocked.]
|
||||
expected: FAIL
|
8
tests/wpt/meta/wasm/jsapi/memory/to-fixed-length-buffer-shared.any.js.ini
vendored
Normal file
8
tests/wpt/meta/wasm/jsapi/memory/to-fixed-length-buffer-shared.any.js.ini
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
[to-fixed-length-buffer-shared.any.html]
|
||||
[toFixedLengthBuffer caching behavior]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[to-fixed-length-buffer-shared.any.worker.html]
|
||||
[toFixedLengthBuffer caching behavior]
|
||||
expected: FAIL
|
14
tests/wpt/meta/wasm/jsapi/memory/to-fixed-length-buffer.any.js.ini
vendored
Normal file
14
tests/wpt/meta/wasm/jsapi/memory/to-fixed-length-buffer.any.js.ini
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
[to-fixed-length-buffer.any.worker.html]
|
||||
[API surface]
|
||||
expected: FAIL
|
||||
|
||||
[toFixedLengthBuffer caching behavior]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[to-fixed-length-buffer.any.html]
|
||||
[API surface]
|
||||
expected: FAIL
|
||||
|
||||
[toFixedLengthBuffer caching behavior]
|
||||
expected: FAIL
|
20
tests/wpt/meta/wasm/jsapi/memory/to-resizable-buffer-shared.any.js.ini
vendored
Normal file
20
tests/wpt/meta/wasm/jsapi/memory/to-resizable-buffer-shared.any.js.ini
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
[to-resizable-buffer-shared.any.worker.html]
|
||||
[toResizableBuffer caching behavior]
|
||||
expected: FAIL
|
||||
|
||||
[toResizableBuffer max size]
|
||||
expected: FAIL
|
||||
|
||||
[Resizing a Memory's resizable buffer]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[to-resizable-buffer-shared.any.html]
|
||||
[toResizableBuffer caching behavior]
|
||||
expected: FAIL
|
||||
|
||||
[toResizableBuffer max size]
|
||||
expected: FAIL
|
||||
|
||||
[Resizing a Memory's resizable buffer]
|
||||
expected: FAIL
|
32
tests/wpt/meta/wasm/jsapi/memory/to-resizable-buffer.any.js.ini
vendored
Normal file
32
tests/wpt/meta/wasm/jsapi/memory/to-resizable-buffer.any.js.ini
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
[to-resizable-buffer.any.worker.html]
|
||||
[API surface]
|
||||
expected: FAIL
|
||||
|
||||
[toResizableBuffer caching behavior]
|
||||
expected: FAIL
|
||||
|
||||
[toResizableBuffer max size]
|
||||
expected: FAIL
|
||||
|
||||
[Resizing a Memory's resizable buffer]
|
||||
expected: FAIL
|
||||
|
||||
[Resizable buffers from Memory cannot be detached by JS]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[to-resizable-buffer.any.html]
|
||||
[API surface]
|
||||
expected: FAIL
|
||||
|
||||
[toResizableBuffer caching behavior]
|
||||
expected: FAIL
|
||||
|
||||
[toResizableBuffer max size]
|
||||
expected: FAIL
|
||||
|
||||
[Resizing a Memory's resizable buffer]
|
||||
expected: FAIL
|
||||
|
||||
[Resizable buffers from Memory cannot be detached by JS]
|
||||
expected: FAIL
|
|
@ -0,0 +1,4 @@
|
|||
[localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.html]
|
||||
expected: TIMEOUT
|
||||
[StorageKey: test 3P about:blank window opened from a 3P iframe]
|
||||
expected: TIMEOUT
|
|
@ -1,2 +0,0 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -1,4 +1,5 @@
|
|||
// META: title=translator.create without options do not crash
|
||||
// META: global=window,worker
|
||||
// META: timeout=long
|
||||
//
|
||||
// Setting `timeout=long` as this test may require downloading the translation
|
|
@ -1,4 +1,5 @@
|
|||
// META: title=Translate from English to Japanese
|
||||
// META: global=window,worker
|
||||
// META: timeout=long
|
||||
//
|
||||
// Setting `timeout=long` as this test may require downloading the translation
|
|
@ -1,4 +1,5 @@
|
|||
// META: title=Translate from English to Japanese
|
||||
// META: global=window,worker
|
||||
// META: timeout=long
|
||||
//
|
||||
// Setting `timeout=long` as this test may require downloading the translation
|
|
@ -2,6 +2,7 @@
|
|||
<meta charset=utf-8>
|
||||
<meta name=timeout content=long>
|
||||
<meta name=variant content="?method=a&expected-eligible=navigation-source">
|
||||
<meta name=variant content="?method=area&expected-eligible=navigation-source">
|
||||
<meta name=variant content="?method=img&expected-eligible=event-source, trigger">
|
||||
<meta name=variant content="?method=img&eligible&expected-eligible=event-source, trigger">
|
||||
<meta name=variant content="?method=open&expected-eligible=navigation-source">
|
||||
|
|
|
@ -63,6 +63,23 @@ const resetRegisteredSources = () => {
|
|||
return fetch(`${blankURL()}?clear-stash=true`);
|
||||
}
|
||||
|
||||
function prepareAnchorOrArea(tag, referrerPolicy, eligible, url) {
|
||||
const el = document.createElement(tag);
|
||||
el.referrerPolicy = referrerPolicy;
|
||||
el.target = '_blank';
|
||||
el.textContent = 'link';
|
||||
if (eligible === null) {
|
||||
el.attributionSrc = url;
|
||||
el.href = blankURL();
|
||||
} else {
|
||||
el.attributionSrc = '';
|
||||
el.href = url;
|
||||
}
|
||||
return el;
|
||||
}
|
||||
|
||||
let nextMapId = 0;
|
||||
|
||||
/**
|
||||
* Method to clear the stash. Takes the URL as parameter. This could be for
|
||||
* event-level or aggregatable reports.
|
||||
|
@ -193,7 +210,7 @@ const registerAttributionSrc = ({
|
|||
.forEach(([key, value]) => url.searchParams.set(key, value));
|
||||
|
||||
switch (method) {
|
||||
case 'img':
|
||||
case 'img': {
|
||||
const img = document.createElement('img');
|
||||
img.referrerPolicy = referrerPolicy;
|
||||
if (eligible === null) {
|
||||
|
@ -203,6 +220,7 @@ const registerAttributionSrc = ({
|
|||
img.src = url;
|
||||
}
|
||||
return 'event';
|
||||
}
|
||||
case 'script':
|
||||
const script = document.createElement('script');
|
||||
script.referrerPolicy = referrerPolicy;
|
||||
|
@ -215,20 +233,26 @@ const registerAttributionSrc = ({
|
|||
}
|
||||
return 'event';
|
||||
case 'a':
|
||||
const a = document.createElement('a');
|
||||
a.referrerPolicy = referrerPolicy;
|
||||
a.target = '_blank';
|
||||
a.textContent = 'link';
|
||||
if (eligible === null) {
|
||||
a.attributionSrc = url;
|
||||
a.href = blankURL();
|
||||
} else {
|
||||
a.attributionSrc = '';
|
||||
a.href = url;
|
||||
}
|
||||
const a = prepareAnchorOrArea('a', referrerPolicy, eligible, url);
|
||||
document.body.appendChild(a);
|
||||
test_driver.click(a);
|
||||
return 'navigation';
|
||||
case 'area': {
|
||||
const area = prepareAnchorOrArea('area', referrerPolicy, eligible, url);
|
||||
const size = 100;
|
||||
area.coords = `0,0,${size},${size}`;
|
||||
area.shape = 'rect';
|
||||
const map = document.createElement('map');
|
||||
map.name = `map-${nextMapId++}`;
|
||||
map.append(area);
|
||||
const img = document.createElement('img');
|
||||
img.width = size;
|
||||
img.height = size;
|
||||
img.useMap = `#${map.name}`;
|
||||
document.body.append(map, img);
|
||||
test_driver.click(area);
|
||||
return 'navigation';
|
||||
}
|
||||
case 'open':
|
||||
test_driver.bless('open window', () => {
|
||||
const feature = referrerPolicy === 'no-referrer' ? 'noreferrer' : '';
|
||||
|
|
3
tests/wpt/tests/close-watcher/WEB_FEATURES.yml
vendored
Normal file
3
tests/wpt/tests/close-watcher/WEB_FEATURES.yml
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
features:
|
||||
- name: closewatcher
|
||||
files: "**"
|
|
@ -1,92 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<title> Test the snapshotted CSP is checked during task creation, not during
|
||||
execution.
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<iframe id="iframe"></iframe>
|
||||
<script>
|
||||
setup({ single_test: true });
|
||||
|
||||
function f() {
|
||||
location.href = "javascript:h()";
|
||||
}
|
||||
|
||||
let e1Dispatched = false;
|
||||
|
||||
document.addEventListener("securitypolicyviolation", (e1) => {
|
||||
if (e1.lineNumber == 88) {
|
||||
e1Dispatched = true;
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener("securitypolicyviolation", (e2) => {
|
||||
if (e2.lineNumber == 17) {
|
||||
assert_true(e1Dispatched, "e1 was dispatched before e2");
|
||||
done();
|
||||
}
|
||||
});
|
||||
|
||||
function addCSP() {
|
||||
const m = document.createElement("meta");
|
||||
m.setAttribute("http-equiv", "Content-Security-Policy");
|
||||
m.setAttribute("content", "default-src 'none'");
|
||||
document.head.append(m);
|
||||
}
|
||||
|
||||
window.addEventListener("load", () => {
|
||||
// Steps:
|
||||
// 1. Execute `javascript:` URL: queues task for executing `f`.
|
||||
// 2. Add CSP.
|
||||
// 3. Execute `javascript:` URL: queues `securitypolicyviolation` event e1
|
||||
// (expected) or a task for executing `g`.
|
||||
|
||||
// `f`: should queue another task, a different `securitypolicyviolation`
|
||||
// e2.
|
||||
// `g`: doesn't matter, won't be executed.
|
||||
|
||||
// Potentially two queues from the spec are relevant here:
|
||||
// Queue 1 for the `javascript:` URL navigations:
|
||||
// <https://html.spec.whatwg.org/#navigation-and-traversal-task-source>.
|
||||
// Queue 2 for the "securitypolicyviolation" events:
|
||||
// <https://github.com/w3c/webappsec-csp/issues/696>.
|
||||
|
||||
// After step 1:
|
||||
// Queue 1: [javascript-f]
|
||||
// After step 2:
|
||||
// Queue 1: [javascript-f]
|
||||
// Expected after step 3:
|
||||
// Queue 1: [javascript-f]; Queue 2: [e1]
|
||||
// After javascript-f:
|
||||
// Queue 1: []; Queue 2: [e1, e2]*
|
||||
// Unexpected after step 3:
|
||||
// Queue 1: [javascript-f, javascript-g]
|
||||
// After javascript-f:
|
||||
// Queue 1: [javascript-g]; Queue 2: [e2]
|
||||
// After javascript-g:
|
||||
// Queue 1: []; Queue 2: [e2, e1]*
|
||||
//
|
||||
// *: the order or processing two elements of different queues is
|
||||
// unspecified. For this test only the order within queue 2 matters.
|
||||
//
|
||||
// So e1 being dispatched before e2 implies the snapshotted CSP was
|
||||
// checked during task creation, not during task execution.
|
||||
//
|
||||
// That behavior isn't specified; see
|
||||
// <https://github.com/whatwg/html/issues/4651#issuecomment-2412623188>
|
||||
// and related comments. This test is a first step towards specifying
|
||||
// a deterministic behavior.
|
||||
|
||||
const iframe = document.getElementById("iframe");
|
||||
iframe.contentWindow.location.href = "javascript:parent.f()";
|
||||
addCSP();
|
||||
iframe.contentWindow.location.href = "javascript:g()";
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
3
tests/wpt/tests/content-security-policy/report-hash/default-src.https.window.js
vendored
Normal file
3
tests/wpt/tests/content-security-policy/report-hash/default-src.https.window.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
// META: script=/reporting/resources/report-helper.js
|
||||
// META: script=resources/report-hash-test-runner.sub.js
|
||||
run_tests();
|
3
tests/wpt/tests/content-security-policy/report-hash/default-src.https.window.js.sub.headers
vendored
Normal file
3
tests/wpt/tests/content-security-policy/report-hash/default-src.https.window.js.sub.headers
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
Reporting-Endpoints: csp-endpoint="/reporting/resources/report.py?reportID={{$id:uuid()}}"
|
||||
Content-Security-Policy: default-src 'self' {{hosts[alt][www]}}:{{ports[https][0]}} 'unsafe-inline' 'report-sha256'; report-to csp-endpoint
|
||||
Server-Timing: uuid;desc="{{$id}}",hash;desc="sha256-1XF/E08XndkoxwN6eIa5J89hYn3OVZ/UyB8BrU5jgzk="
|
18
tests/wpt/tests/content-security-policy/report-hash/multiple-policies.https.sub.html
vendored
Normal file
18
tests/wpt/tests/content-security-policy/report-hash/multiple-policies.https.sub.html
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="timeout" content="long">
|
||||
<title>Test that reports for same-origin subresources are sent with hashes</title>
|
||||
<script src='/resources/testharness.js'></script>
|
||||
<script src='/resources/testharnessreport.js'></script>
|
||||
<script src='/reporting/resources/report-helper.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Actually run the tests. -->
|
||||
<script src='resources/report-hash-test-runner.sub.js'></script>
|
||||
<script>
|
||||
run_tests();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
Reporting-Endpoints: csp-endpoint="/reporting/resources/report.py?reportID={{$id:uuid()}}"
|
||||
Content-Security-Policy: script-src-elem 'self' {{hosts[alt][www]}}:{{ports[https][0]}} 'unsafe-inline' 'report-sha256'; report-to csp-endpoint
|
||||
Reporting-Endpoints: csp-endpoint2="/reporting/resources/report.py?reportID={{$id2:uuid()}}"
|
||||
Content-Security-Policy: script-src-elem 'self' {{hosts[alt][www]}}:{{ports[https][0]}} 'unsafe-inline' 'report-sha512'; report-to csp-endpoint2
|
||||
Server-Timing: uuid;desc="{{$id}}",hash;desc="sha256-1XF/E08XndkoxwN6eIa5J89hYn3OVZ/UyB8BrU5jgzk="
|
||||
Server-Timing: uuid2;desc="{{$id2}}",hash2;desc="sha512-hG4x56V5IhUUepZdYU/lX7UOQJ2M7f6ud2EI7os4JV3OwXSZ002P3zkb9tXQkjpOO8UbtjuEufvdcU67Qt2tlw=="
|
||||
|
3
tests/wpt/tests/content-security-policy/report-hash/reportonly-default-src.https.window.js
vendored
Normal file
3
tests/wpt/tests/content-security-policy/report-hash/reportonly-default-src.https.window.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
// META: script=/reporting/resources/report-helper.js
|
||||
// META: script=resources/report-hash-test-runner.sub.js
|
||||
run_tests();
|
|
@ -0,0 +1,3 @@
|
|||
Reporting-Endpoints: csp-endpoint="/reporting/resources/report.py?reportID={{$id:uuid()}}"
|
||||
Content-Security-Policy-Report-Only: default-src 'self' {{hosts[alt][www]}}:{{ports[https][0]}} 'unsafe-inline' 'report-sha256'; report-to csp-endpoint
|
||||
Server-Timing: uuid;desc="{{$id}}",hash;desc="sha256-1XF/E08XndkoxwN6eIa5J89hYn3OVZ/UyB8BrU5jgzk="
|
|
@ -0,0 +1,3 @@
|
|||
// META: script=/reporting/resources/report-helper.js
|
||||
// META: script=resources/report-hash-test-runner.sub.js
|
||||
run_tests();
|
|
@ -0,0 +1,3 @@
|
|||
Reporting-Endpoints: csp-endpoint="/reporting/resources/report.py?reportID={{$id:uuid()}}"
|
||||
Content-Security-Policy-Report-Only: script-src-elem 'self' {{hosts[alt][www]}}:{{ports[https][0]}} 'unsafe-inline' 'report-sha256'; report-to csp-endpoint
|
||||
Server-Timing: uuid;desc="{{$id}}",hash;desc="sha256-1XF/E08XndkoxwN6eIa5J89hYn3OVZ/UyB8BrU5jgzk="
|
|
@ -0,0 +1,4 @@
|
|||
// META: script=/reporting/resources/report-helper.js
|
||||
// META: script=resources/report-hash-test-runner.sub.js
|
||||
run_tests();
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Reporting-Endpoints: csp-endpoint="/reporting/resources/report.py?reportID={{$id:uuid()}}"
|
||||
Content-Security-Policy-Report-Only: script-src 'none' {{hosts[alt][www]}}:{{ports[https][0]}} 'unsafe-inline' 'report-sha256'; report-to csp-endpoint
|
||||
Server-Timing: uuid;desc="{{$id}}",hash;desc="sha256-1XF/E08XndkoxwN6eIa5J89hYn3OVZ/UyB8BrU5jgzk="
|
||||
|
3
tests/wpt/tests/content-security-policy/report-hash/reportonly-script-src.https.window.js
vendored
Normal file
3
tests/wpt/tests/content-security-policy/report-hash/reportonly-script-src.https.window.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
// META: script=/reporting/resources/report-helper.js
|
||||
// META: script=resources/report-hash-test-runner.sub.js
|
||||
run_tests();
|
|
@ -0,0 +1,3 @@
|
|||
Reporting-Endpoints: csp-endpoint="/reporting/resources/report.py?reportID={{$id:uuid()}}"
|
||||
Content-Security-Policy-Report-Only: script-src 'self' {{hosts[alt][www]}}:{{ports[https][0]}} 'unsafe-inline' 'report-sha256'; report-to csp-endpoint
|
||||
Server-Timing: uuid;desc="{{$id}}",hash;desc="sha256-1XF/E08XndkoxwN6eIa5J89hYn3OVZ/UyB8BrU5jgzk="
|
129
tests/wpt/tests/content-security-policy/report-hash/resources/report-hash-test-runner.sub.js
vendored
Normal file
129
tests/wpt/tests/content-security-policy/report-hash/resources/report-hash-test-runner.sub.js
vendored
Normal file
|
@ -0,0 +1,129 @@
|
|||
function find_server_timing(name) {
|
||||
const server_timing = performance.getEntriesByType("navigation")[0].serverTiming;
|
||||
for (entry of server_timing) {
|
||||
if (entry.name == name) {
|
||||
return entry.description;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
const ORIGIN = "https://{{host}}:{{ports[https][0]}}";
|
||||
const REMOTE_ORIGIN = "https://{{hosts[alt][www]}}:{{ports[https][0]}}";
|
||||
const endpoint = `${ORIGIN}/reporting/resources/report.py`;
|
||||
const id = find_server_timing("uuid");
|
||||
const id2 = find_server_timing("uuid2");
|
||||
const subresource_url = `${ORIGIN}/reporting/resources/comment.js`;
|
||||
const crossorigin_subresource_url = `${REMOTE_ORIGIN}/reporting/resources/comment.js`;
|
||||
const subresource_hash = find_server_timing("hash");
|
||||
const subresource_hash2 = find_server_timing("hash2");
|
||||
let counter = 0;
|
||||
|
||||
function reporting_observer_setup(expected_url, expected_hash) {
|
||||
return new Promise(resolve => {
|
||||
new ReportingObserver((reports, observer) => {
|
||||
assert_unreached();
|
||||
observer.disconnect();
|
||||
}, { types: ["csp-hash"] }).observe();
|
||||
step_timeout(resolve, 100);
|
||||
});
|
||||
}
|
||||
|
||||
async function check_reports(uuid, expected_hash, url) {
|
||||
const reports = await pollReports(endpoint, uuid);
|
||||
checkReportExists(reports, 'csp-hash', location.href);
|
||||
const report = getReport(reports, 'csp-hash', location.href, url);
|
||||
assert_not_equals(report, null);
|
||||
assert_equals(report.body.hash, expected_hash);
|
||||
assert_equals(report.body.type, "subresource");
|
||||
assert_equals(report.body.destination, "script");
|
||||
}
|
||||
|
||||
function report_hash_test(url, populate_script_attributes, expected_hash, expected_hash2, description) {
|
||||
promise_test(async t => {
|
||||
const unique_subresource_url = `${url}?${++counter}`;
|
||||
const observer_promise = reporting_observer_setup(unique_subresource_url, subresource_hash);
|
||||
// Trigger a script load
|
||||
await new Promise(resolve => {
|
||||
const script = document.createElement('script');
|
||||
script.src = unique_subresource_url;
|
||||
populate_script_attributes(script);
|
||||
script.addEventListener('load', resolve);
|
||||
document.head.appendChild(script);
|
||||
});
|
||||
|
||||
await check_reports(id, expected_hash, unique_subresource_url);
|
||||
if (id2) {
|
||||
await check_reports(id2, expected_hash2, unique_subresource_url);
|
||||
}
|
||||
await observer_promise;
|
||||
}, description);
|
||||
}
|
||||
|
||||
function no_report_test(create_element, description) {
|
||||
promise_test(async t => {
|
||||
const unique_subresource_url = `${subresource_url}?${++counter}`;
|
||||
// Trigger a script load
|
||||
await new Promise(resolve => {
|
||||
const elem = create_element(unique_subresource_url);
|
||||
elem.addEventListener('load', resolve);
|
||||
elem.addEventListener('error', resolve);
|
||||
document.head.appendChild(elem);
|
||||
});
|
||||
|
||||
// Wait for report to be received.
|
||||
const reports = await pollReports(endpoint, id);
|
||||
const report = getReport(reports, 'csp-hash', location.href, unique_subresource_url);
|
||||
assert_equals(report, null);
|
||||
}, description);
|
||||
};
|
||||
|
||||
function run_tests() {
|
||||
report_hash_test(subresource_url, script => {
|
||||
script.crossOrigin = "anonymous";
|
||||
}, subresource_hash, subresource_hash2,
|
||||
"Reporting endpoints received hash for same-origin CORS script.");
|
||||
|
||||
report_hash_test(subresource_url, script => {
|
||||
}, subresource_hash, subresource_hash2,
|
||||
"Reporting endpoints received hash for same-origin no-CORS script.");
|
||||
|
||||
report_hash_test(crossorigin_subresource_url, script => {
|
||||
script.crossOrigin = "anonymous";
|
||||
}, subresource_hash, subresource_hash2,
|
||||
"Reporting endpoints received hash for cross-origin CORS script.");
|
||||
|
||||
report_hash_test(crossorigin_subresource_url, script => {
|
||||
}, /*expected_hash=*/"", /*expected_hash2=*/"",
|
||||
"Reporting endpoints received no hash for cross-origin no-CORS script.");
|
||||
|
||||
report_hash_test(subresource_url, script => {
|
||||
script.crossOrigin = "anonymous";
|
||||
script.integrity = "sha512-hG4x56V5IhUUepZdYU/lX7UOQJ2M7f6ud2EI7os4JV3OwXSZ002P3zkb9tXQkjpOO8UbtjuEufvdcU67Qt2tlw==";
|
||||
}, subresource_hash, subresource_hash2,
|
||||
"Reporting endpoints received the right hash for same-origin CORS script with integrity.");
|
||||
|
||||
no_report_test(url => {
|
||||
const script = document.createElement('script');
|
||||
script.src = url;
|
||||
script.crossOrigin = "anonymous"
|
||||
script.integrity = "sha256-foobar";
|
||||
return script;
|
||||
}, "Reporting endpoints received no report for failed integrity check with sha256.");
|
||||
|
||||
no_report_test(url => {
|
||||
const script = document.createElement('script');
|
||||
script.src = url;
|
||||
script.crossOrigin = "anonymous"
|
||||
script.integrity = "sha512-foobar";
|
||||
return script;
|
||||
}, "Reporting endpoints received no report for failed integrity check with sha512.");
|
||||
|
||||
no_report_test(url => {
|
||||
const link = document.createElement('link');
|
||||
link.href = url;
|
||||
link.crossOrigin = "anonymous"
|
||||
link.rel = "stylesheet"
|
||||
return link;
|
||||
}, "Reporting endpoints received no report for CORS stylesheet.");
|
||||
}
|
3
tests/wpt/tests/content-security-policy/report-hash/script-src-elem.https.window.js
vendored
Normal file
3
tests/wpt/tests/content-security-policy/report-hash/script-src-elem.https.window.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
// META: script=/reporting/resources/report-helper.js
|
||||
// META: script=resources/report-hash-test-runner.sub.js
|
||||
run_tests();
|
|
@ -0,0 +1,3 @@
|
|||
Reporting-Endpoints: csp-endpoint="/reporting/resources/report.py?reportID={{$id:uuid()}}"
|
||||
Content-Security-Policy: script-src-elem 'self' {{hosts[alt][www]}}:{{ports[https][0]}} 'unsafe-inline' 'report-sha256'; report-to csp-endpoint
|
||||
Server-Timing: uuid;desc="{{$id}}",hash;desc="sha256-1XF/E08XndkoxwN6eIa5J89hYn3OVZ/UyB8BrU5jgzk="
|
3
tests/wpt/tests/content-security-policy/report-hash/script-src-sha512.https.window.js
vendored
Normal file
3
tests/wpt/tests/content-security-policy/report-hash/script-src-sha512.https.window.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
// META: script=/reporting/resources/report-helper.js
|
||||
// META: script=resources/report-hash-test-runner.sub.js
|
||||
run_tests();
|
|
@ -0,0 +1,3 @@
|
|||
Reporting-Endpoints: csp-endpoint="/reporting/resources/report.py?reportID={{$id:uuid()}}"
|
||||
Content-Security-Policy: script-src 'self' {{hosts[alt][www]}}:{{ports[https][0]}} 'unsafe-inline' 'report-sha512' 'report-sha384' 'report-sha256'; report-to csp-endpoint
|
||||
Server-Timing: uuid;desc="{{$id}}",hash;desc="sha512-hG4x56V5IhUUepZdYU/lX7UOQJ2M7f6ud2EI7os4JV3OwXSZ002P3zkb9tXQkjpOO8UbtjuEufvdcU67Qt2tlw=="
|
3
tests/wpt/tests/content-security-policy/report-hash/script-src.https.window.js
vendored
Normal file
3
tests/wpt/tests/content-security-policy/report-hash/script-src.https.window.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
// META: script=/reporting/resources/report-helper.js
|
||||
// META: script=resources/report-hash-test-runner.sub.js
|
||||
run_tests();
|
3
tests/wpt/tests/content-security-policy/report-hash/script-src.https.window.js.sub.headers
vendored
Normal file
3
tests/wpt/tests/content-security-policy/report-hash/script-src.https.window.js.sub.headers
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
Reporting-Endpoints: csp-endpoint="/reporting/resources/report.py?reportID={{$id:uuid()}}"
|
||||
Content-Security-Policy: script-src 'self' {{hosts[alt][www]}}:{{ports[https][0]}} 'unsafe-inline' 'report-sha256'; report-to csp-endpoint
|
||||
Server-Timing: uuid;desc="{{$id}}",hash;desc="sha256-1XF/E08XndkoxwN6eIa5J89hYn3OVZ/UyB8BrU5jgzk="
|
31
tests/wpt/tests/css/css-anchor-position/chrome-379758203-crash.html
vendored
Normal file
31
tests/wpt/tests/css/css-anchor-position/chrome-379758203-crash.html
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="test-wait">
|
||||
<link rel="help" href="https://crbug.com/379758203">
|
||||
<style>
|
||||
.spacer { height: 2000px; }
|
||||
.anchor { anchor-name: --a; }
|
||||
#popover {
|
||||
transition: bottom 1s allow-discrete;
|
||||
position-anchor: --a;
|
||||
position-try-fallbacks: flip-block;
|
||||
top: anchor(bottom);
|
||||
bottom: auto;
|
||||
}
|
||||
</style>
|
||||
<div class="spacer"></div>
|
||||
<div class="anchor">
|
||||
<div id="popover" popover>Hello World</div>
|
||||
</div>
|
||||
<div class="spacer"></div>
|
||||
<script>
|
||||
requestAnimationFrame(() => {
|
||||
document.documentElement.scrollTop = 2000;
|
||||
requestAnimationFrame(() => {
|
||||
popover.showPopover();
|
||||
requestAnimationFrame(() => {
|
||||
document.documentElement.scrollTop = 0;
|
||||
document.documentElement.classList.remove("test-wait");
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -2,7 +2,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Grid Layout Test: only serialize 'grid' when the value can roundtrip</title>
|
||||
<title>CSS Grid Layout Test: only serialize 'grid' shorthands when the value can roundtrip</title>
|
||||
<link rel="author" title="Daniel Libby" href="mailto:dlibby@microsoft.com">
|
||||
<link rel="author" title="Kurt Catti-Schmidt" href="mailto:kschmi@microsoft.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid/#propdef-grid">
|
||||
|
@ -236,6 +236,41 @@
|
|||
'grid-template-columns': 'none',
|
||||
'grid-template-rows': 'repeat(auto-fit, 3px)'
|
||||
});
|
||||
|
||||
test_shorthand_roundtrip('grid-template: none;',
|
||||
{
|
||||
'grid': '',
|
||||
'grid-template-areas': 'none',
|
||||
'grid-template-rows': 'none',
|
||||
'grid-template-columns': 'none',
|
||||
'grid-template': 'none'
|
||||
});
|
||||
test_shorthand_roundtrip('grid-template: auto / auto;',
|
||||
{
|
||||
'grid': '',
|
||||
'grid-template-areas': 'none',
|
||||
'grid-template-rows': 'auto',
|
||||
'grid-template-columns': 'auto',
|
||||
'grid-template': 'auto / auto'
|
||||
});
|
||||
test_shorthand_roundtrip('grid-template: [header-top] "a a a" [header-bottom] [main-top] "b b b" 1fr [main-bottom] / auto 1fr auto',
|
||||
{
|
||||
'grid': '',
|
||||
'grid-template-areas': '"a a a" "b b b"',
|
||||
'grid-template-rows': '[header-top] auto [header-bottom main-top] 1fr [main-bottom]',
|
||||
'grid-template-columns': 'auto 1fr auto',
|
||||
'grid-template': '[header-top] "a a a" [header-bottom main-top] "b b b" 1fr [main-bottom] / auto 1fr auto'
|
||||
});
|
||||
|
||||
test_shorthand_roundtrip('grid-template: [header-top] "a a a" [header-bottom] [main-top] "b b b" 1fr [main-bottom] "c c c" "d d d" / auto',
|
||||
{
|
||||
'grid': '',
|
||||
'grid-template-areas': '"a a a" "b b b" "c c c" "d d d"',
|
||||
'grid-template-rows': '[header-top] auto [header-bottom main-top] 1fr [main-bottom] auto auto',
|
||||
'grid-template-columns': 'auto',
|
||||
'grid-template': '[header-top] "a a a" [header-bottom main-top] "b b b" 1fr [main-bottom] "c c c" "d d d" / auto'
|
||||
});
|
||||
|
||||
test_shorthand_roundtrip('grid-template-rows: auto auto; grid-template-columns: repeat(2, 3px); grid-template-areas: "one two" "three four"',
|
||||
{
|
||||
'grid': '',
|
||||
|
|
|
@ -28,6 +28,7 @@ function testValidGridTemplate(valueGridTemplate, valueGridAreas, serializedGrid
|
|||
|
||||
testValidGridTemplate("none / 1px", "\"a\"", "");
|
||||
testValidGridTemplate("none / none", "\"a\"", "");
|
||||
testValidGridTemplate("none / none", "\"a\" \"b\" \"c\" \"d\" \"e\"", "");
|
||||
testValidGridTemplate("auto / 1px", "\"a a a\"", "\"a a a\" / 1px");
|
||||
testValidGridTemplate("auto / auto", "\"a a a\"", "\"a a a\" / auto");
|
||||
testValidGridTemplate("10px 20px 30px / 40px 50px 60px 70px",
|
||||
|
|
39
tests/wpt/tests/css/css-grid/parsing/grid-template-shorthand-composition.html
vendored
Normal file
39
tests/wpt/tests/css/css-grid/parsing/grid-template-shorthand-composition.html
vendored
Normal file
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Grid Layout Test: grid-template-rows, grid-template-columns, and grid-template-areas properly set grid-template longhand</title>
|
||||
<link rel="author" title="Kurt Catti-Schmidt" href="mailto:kschmi@microsoft.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-template">
|
||||
<meta name="assert" content="grid-template serializes properly when longhands are set.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
function testValidGridTemplate(valueGridTemplateRows, valueGridTemplateColumns, valueGridAreas, serializedGridTemplateValue) {
|
||||
test(()=>{
|
||||
const root = document.children[0];
|
||||
root.style.gridTemplateRows = "";
|
||||
root.style.gridTemplateRows = valueGridTemplateRows;
|
||||
root.style.gridTemplateColumns = "";
|
||||
root.style.gridTemplateColumns = valueGridTemplateColumns;
|
||||
root.style.gridTemplateAreas = "";
|
||||
root.style.gridTemplateAreas = valueGridAreas;
|
||||
assert_equals(root.style.gridTemplate, serializedGridTemplateValue);
|
||||
}, `grid-template-rows: ${valueGridTemplateRows}, grid-template-columns: ${valueGridTemplateColumns}, and "grid-template-areas: ${valueGridAreas};" should be valid.`);
|
||||
}
|
||||
|
||||
// `none`
|
||||
testValidGridTemplate("none", "none", "none", "none");
|
||||
|
||||
// `<'grid-template-rows'> / <'grid-template-columns'>`
|
||||
testValidGridTemplate("auto", "auto", "none", "auto / auto");
|
||||
|
||||
// `[ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?`
|
||||
testValidGridTemplate("[header-top] auto [header-bottom main-top] 1fr [main-bottom]", "auto 1fr auto", "\"a a a\" \"b b b\"", "[header-top] \"a a a\" [header-bottom main-top] \"b b b\" 1fr [main-bottom] / auto 1fr auto");
|
||||
testValidGridTemplate("auto", "auto", "\"a a a\" \"b b b\"", "\"a a a\" \"b b b\" / auto");
|
||||
testValidGridTemplate("min-content", "min-content", "\"a a a\" \"b b b\" \"c c c\" \"d d d\"", "\"a a a\" min-content \"b b b\" \"c c c\" \"d d d\" / min-content");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -58,6 +58,15 @@ test_shorthand_value('grid-template',
|
|||
'grid-template-columns': 'auto 1fr auto',
|
||||
'grid-template-areas': '"a a a" "b b b"'
|
||||
});
|
||||
|
||||
test_shorthand_value('grid-template',
|
||||
' [] "a a a" []' +
|
||||
' [] "b b b" 1fr []' +
|
||||
' "c c c" / [] auto 1fr [] auto []', {
|
||||
'grid-template-rows': 'auto 1fr auto',
|
||||
'grid-template-columns': 'auto 1fr auto',
|
||||
'grid-template-areas': '"a a a" "b b b" "c c c"'
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
57
tests/wpt/tests/css/css-overflow/scrollable-overflow-padding-inline.html
vendored
Normal file
57
tests/wpt/tests/css/css-overflow/scrollable-overflow-padding-inline.html
vendored
Normal file
|
@ -0,0 +1,57 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Overflow Test: Ensure that padding inflation for inline elements are carried out as part of containing line box's bounds.</title>
|
||||
<link rel="author" title="David Shin" href="mailto:dshin@mozilla.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#scrollable">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1934960">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<style>
|
||||
.scroller {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
font: 10px/1 Ahem;
|
||||
padding: 10px;
|
||||
overflow: scroll;
|
||||
}
|
||||
.filler {
|
||||
width: 1px;
|
||||
height: 100px;
|
||||
background: purple;
|
||||
}
|
||||
</style>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/check-layout-th.js"></script>
|
||||
<body onload="checkLayout('.scroller')">
|
||||
<!-- Block-end is padding-inflated from the last line,
|
||||
even if it only consists of inline elements -->
|
||||
<div class="scroller" data-expected-scroll-height="130">
|
||||
<div class="filler"></div>
|
||||
<span>X</span>
|
||||
</div>
|
||||
<!-- Inline element's margin should not add to scrollable overflow,
|
||||
just like how it does not affect the next line's positioning -->
|
||||
<div class="scroller" data-expected-scroll-height="130">
|
||||
<div class="filler"></div>
|
||||
<span style="margin-bottom: 100px;">X</span>
|
||||
</div>
|
||||
<!-- Line bound is padding-inflated, but not its overflow. -->
|
||||
<div class="scroller" data-expected-scroll-height="120" style="line-height: 0;">
|
||||
<div class="filler"></div>
|
||||
<span>X</span>
|
||||
</div>
|
||||
<div class="scroller" data-expected-scroll-height="125" style="line-height: 5px;">
|
||||
<div class="filler"></div>
|
||||
<span>X</span>
|
||||
</div>
|
||||
<!-- Ruby element, despite being `display: ruby`, behaves as if inline -->
|
||||
<div class="scroller" data-expected-scroll-height="120" style="line-height: 0;">
|
||||
<div class="filler"></div>
|
||||
<ruby>X</ruby>
|
||||
</div>
|
||||
<!-- Inline replaced elements still trigger padding-inflation -->
|
||||
<div class="scroller" data-expected-scroll-height="280" style="line-height: 0px;">
|
||||
<div class="filler"></div>
|
||||
<img src="../css-images/support/60x60-green.png" style="margin-bottom: 100px;"></img>
|
||||
</div>
|
||||
</body>
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS ::checkmark Pseudo-Element Test</title>
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/pull/10986">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-forms/#checkmark-element">
|
||||
<meta name="assert" content="This test checks the validity of the ::checkmark pseudo element selector." />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS ::picker-icon Pseudo-Element Test</title>
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/pull/10986">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-forms/#picker-icon-pseudo-element">
|
||||
<meta name="assert" content="This test checks the validity of the ::picker-icon pseudo element selector." />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
60
tests/wpt/tests/css/css-rhythm/parsing/block-step-computed.html
vendored
Normal file
60
tests/wpt/tests/css/css-rhythm/parsing/block-step-computed.html
vendored
Normal file
|
@ -0,0 +1,60 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>CSS Rhythm: block-step computed values</title>
|
||||
<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-rhythm/#block-step">
|
||||
<meta name="assert" content="Checking computed values for block-step">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/computed-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="target"></div>
|
||||
<script>
|
||||
// Default values
|
||||
test_computed_value("block-step", "none");
|
||||
test_computed_value("block-step", "auto", "none");
|
||||
test_computed_value("block-step", "margin-box", "none");
|
||||
test_computed_value("block-step", "up", "none");
|
||||
|
||||
test_computed_value("block-step", "none auto", "none");
|
||||
test_computed_value("block-step", "none margin-box", "none");
|
||||
test_computed_value("block-step", "none up", "none");
|
||||
|
||||
test_computed_value("block-step", "auto none", "none");
|
||||
test_computed_value("block-step", "auto margin-box", "none");
|
||||
test_computed_value("block-step", "auto up", "none");
|
||||
|
||||
test_computed_value("block-step", "margin-box none", "none");
|
||||
test_computed_value("block-step", "margin-box auto", "none");
|
||||
test_computed_value("block-step", "margin-box up", "none");
|
||||
|
||||
test_computed_value("block-step", "up none", "none");
|
||||
test_computed_value("block-step", "up auto", "none");
|
||||
test_computed_value("block-step", "up margin-box", "none");
|
||||
|
||||
test_computed_value("block-step", "auto up margin-box", "none");
|
||||
test_computed_value("block-step", "none auto up margin-box", "none");
|
||||
|
||||
// Non-default values
|
||||
test_computed_value("block-step", "padding-box");
|
||||
test_computed_value("block-step", "content-box");
|
||||
test_computed_value("block-step", "100px");
|
||||
test_computed_value("block-step", "center");
|
||||
test_computed_value("block-step", "start");
|
||||
test_computed_value("block-step", "end");
|
||||
test_computed_value("block-step", "down");
|
||||
test_computed_value("block-step", "nearest");
|
||||
|
||||
test_computed_value("block-step", "none padding-box up", "padding-box");
|
||||
test_computed_value("block-step", "content-box 100px up", "100px content-box");
|
||||
test_computed_value("block-step", "content-box start 100px", "100px content-box start");
|
||||
test_computed_value("block-step", "100px center down padding-box", "100px padding-box center down");
|
||||
test_computed_value("block-step", "start 100px", "100px start");
|
||||
test_computed_value("block-step", "end 100px", "100px end");
|
||||
test_computed_value("block-step", "end nearest 100px", "100px end nearest");
|
||||
test_computed_value("block-step", "center content-box 100px", "100px content-box center");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
23
tests/wpt/tests/css/css-rhythm/parsing/block-step-invalid.html
vendored
Normal file
23
tests/wpt/tests/css/css-rhythm/parsing/block-step-invalid.html
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>CSS Rhythm: block-step invalid values</title>
|
||||
<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-rhythm/#block-step">
|
||||
<meta name="assert" content="Invalid values for block-step should not be parsed">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("block-step", "auto auto");
|
||||
test_invalid_value("block-step", "start end");
|
||||
test_invalid_value("block-step", "center start");
|
||||
test_invalid_value("block-step", "none none");
|
||||
test_invalid_value("block-step", "300px none");
|
||||
test_invalid_value("block-step", "300px start none");
|
||||
test_invalid_value("block-step", "300px start border-box padding-box");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
59
tests/wpt/tests/css/css-rhythm/parsing/block-step-valid.html
vendored
Normal file
59
tests/wpt/tests/css/css-rhythm/parsing/block-step-valid.html
vendored
Normal file
|
@ -0,0 +1,59 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>CSS Rhythm: block-step valid values</title>
|
||||
<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-rhythm/#block-step">
|
||||
<meta name="assert" content="Parsing valid values for block-step property">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
// Default values
|
||||
test_valid_value("block-step", "none");
|
||||
test_valid_value("block-step", "auto", "none");
|
||||
test_valid_value("block-step", "margin-box", "none");
|
||||
test_valid_value("block-step", "up", "none");
|
||||
|
||||
test_valid_value("block-step", "none auto", "none");
|
||||
test_valid_value("block-step", "none margin-box", "none");
|
||||
test_valid_value("block-step", "none up", "none");
|
||||
|
||||
test_valid_value("block-step", "auto none", "none");
|
||||
test_valid_value("block-step", "auto margin-box", "none");
|
||||
test_valid_value("block-step", "auto up", "none");
|
||||
|
||||
test_valid_value("block-step", "margin-box none", "none");
|
||||
test_valid_value("block-step", "margin-box auto", "none");
|
||||
test_valid_value("block-step", "margin-box up", "none");
|
||||
|
||||
test_valid_value("block-step", "up none", "none");
|
||||
test_valid_value("block-step", "up auto", "none");
|
||||
test_valid_value("block-step", "up margin-box", "none");
|
||||
|
||||
test_valid_value("block-step", "auto up margin-box", "none");
|
||||
test_valid_value("block-step", "none auto up margin-box", "none");
|
||||
|
||||
// Non-default values
|
||||
test_valid_value("block-step", "padding-box");
|
||||
test_valid_value("block-step", "content-box");
|
||||
test_valid_value("block-step", "100px");
|
||||
test_valid_value("block-step", "center");
|
||||
test_valid_value("block-step", "start");
|
||||
test_valid_value("block-step", "end");
|
||||
test_valid_value("block-step", "down");
|
||||
test_valid_value("block-step", "nearest");
|
||||
|
||||
test_valid_value("block-step", "none padding-box up", "padding-box");
|
||||
test_valid_value("block-step", "content-box 100px up", "100px content-box");
|
||||
test_valid_value("block-step", "content-box start 100px", "100px content-box start");
|
||||
test_valid_value("block-step", "100px center down padding-box", "100px padding-box center down");
|
||||
test_valid_value("block-step", "start 100px", "100px start");
|
||||
test_valid_value("block-step", "end 100px", "100px end");
|
||||
test_valid_value("block-step", "end nearest 100px", "100px end nearest");
|
||||
test_valid_value("block-step", "center content-box 100px", "100px content-box center");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -15,7 +15,6 @@ test_valid_selector("::part(mypart):active-view-transition-type(mytype)");
|
|||
test_valid_selector("::part(mypart):any-link");
|
||||
test_valid_selector("::part(mypart):autofill");
|
||||
test_valid_selector("::part(mypart):checked");
|
||||
test_valid_selector("::part(mypart):closed");
|
||||
test_valid_selector("::part(mypart):default");
|
||||
test_valid_selector("::part(mypart):defined");
|
||||
test_valid_selector("::part(mypart):dir(ltr)");
|
||||
|
|
29
tests/wpt/tests/css/css-transitions/allow-discrete-auto-inset.html
vendored
Normal file
29
tests/wpt/tests/css/css-transitions/allow-discrete-auto-inset.html
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Transitions Test: discrete transition for auto inset</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transitions-2/#transition-behavior-property">
|
||||
<link rel="match" href="/css/reference/ref-filled-green-100px-square-only.html">
|
||||
<style>
|
||||
#container {
|
||||
position: relative;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background: green;
|
||||
}
|
||||
#abs {
|
||||
position: absolute;
|
||||
transition: top 1000s step-start allow-discrete;
|
||||
inset: 0px;
|
||||
background: red;
|
||||
}
|
||||
#abs.auto {
|
||||
top: auto;
|
||||
}
|
||||
</style>
|
||||
<p>Test passes if there is a filled green square.</p>
|
||||
<div id="container">
|
||||
<div id="abs"></div>
|
||||
</div>
|
||||
<script>
|
||||
abs.offsetTop;
|
||||
abs.className = "auto";
|
||||
</script>
|
|
@ -4,10 +4,6 @@
|
|||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/css-animations/support/testcommon.js"></script>
|
||||
|
||||
<div class=testcase id=discrete>Allow discrete</div>
|
||||
<div class=testcase id=normal>No discrete</div>
|
||||
|
||||
<style>
|
||||
.testcase {
|
||||
float: left;
|
||||
|
@ -22,7 +18,10 @@
|
|||
float: right;
|
||||
}
|
||||
</style>
|
||||
|
||||
<body>
|
||||
<div class=testcase id=discrete>Allow discrete</div>
|
||||
<div class=testcase id=normal>No discrete</div>
|
||||
</body>
|
||||
<script>
|
||||
promise_test(async () => {
|
||||
await waitForAnimationFrames(2);
|
||||
|
|
|
@ -44,3 +44,12 @@ features:
|
|||
- name: calc-constants
|
||||
files:
|
||||
- calc-infinity-*
|
||||
- name: viewport-unit-variants
|
||||
files:
|
||||
- viewport-units-compute.html
|
||||
- viewport-units-invalidation.html
|
||||
- viewport-units-keyframes.html
|
||||
- viewport-units-media-queries.html
|
||||
- viewport-units-parsing.html
|
||||
- viewport-units-writing-mode-font-size.html
|
||||
- viewport-units-writing-mode.html
|
||||
|
|
|
@ -66,7 +66,8 @@ function run() {
|
|||
"multiplication of number and length");
|
||||
assert_invalid_value("margin-left", "calc(2px * 1px)", // invalid calc expression
|
||||
"multiplication of length and length");
|
||||
|
||||
assert_invalid_value("margin-left", "calc(20 / 0.75rem)", // invalid calc expression
|
||||
"division by non-number");
|
||||
}
|
||||
|
||||
run();
|
||||
|
|
|
@ -5,10 +5,8 @@
|
|||
<link rel="help" href="https://drafts.csswg.org/css-variables/#using-variables">
|
||||
<link rel="match" href="variable-generated-content-dynamic-001-ref.html">
|
||||
<style>
|
||||
:root {
|
||||
--my-attr: attr(data-foo);
|
||||
}
|
||||
div::before {
|
||||
--my-attr: attr(data-foo);
|
||||
content: var(--my-attr);
|
||||
}
|
||||
</style>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue