mirror of
https://github.com/servo/servo.git
synced 2025-09-18 02:48:20 +01:00
Sync WPT with upstream (14-09-2025) (#39293)
Automated downstream sync of changes from upstream as of 14-09-2025 [no-wpt-sync] Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
This commit is contained in:
parent
3ef3ba9378
commit
b3b79e049b
308 changed files with 6147 additions and 1657 deletions
9
tests/wpt/meta/FileAPI/blob/Blob-newobject.any.js.ini
vendored
Normal file
9
tests/wpt/meta/FileAPI/blob/Blob-newobject.any.js.ini
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
[Blob-newobject.any.serviceworker.html]
|
||||
expected: ERROR
|
||||
|
||||
[Blob-newobject.any.sharedworker.html]
|
||||
expected: ERROR
|
||||
|
||||
[Blob-newobject.any.html]
|
||||
|
||||
[Blob-newobject.any.worker.html]
|
|
@ -16,6 +16,12 @@
|
|||
[Deactivation of new transactions happens at end of invocation]
|
||||
expected: FAIL
|
||||
|
||||
[New transactions are deactivated before next task]
|
||||
expected: FAIL
|
||||
|
||||
[New transactions from microtask are deactivated before next task]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[transaction-deactivation-timing.any.sharedworker.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
3
tests/wpt/meta/content-security-policy/generic/image-document-applies-csp.html.ini
vendored
Normal file
3
tests/wpt/meta/content-security-policy/generic/image-document-applies-csp.html.ini
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[image-document-applies-csp.html]
|
||||
[Image document correctly applies CSP to other subresources.]
|
||||
expected: FAIL
|
|
@ -76,3 +76,6 @@
|
|||
|
||||
[Relative selectors set with selectorText are relative to :scope, not &]
|
||||
expected: FAIL
|
||||
|
||||
[Relative selectors set with selectorText are relative to :scope and &]
|
||||
expected: FAIL
|
||||
|
|
|
@ -64,3 +64,9 @@
|
|||
|
||||
[Mutating selectorText on outer style rule causes correct inner specificity]
|
||||
expected: FAIL
|
||||
|
||||
[Nesting-selector in <scope-end>]
|
||||
expected: FAIL
|
||||
|
||||
[Nested nesting-selectors within scope's <stylesheet> select inclusive descendants of the scope root]
|
||||
expected: FAIL
|
||||
|
|
|
@ -58,3 +58,6 @@
|
|||
|
||||
[@scope { & .b { } } and :where(:scope) .b]
|
||||
expected: FAIL
|
||||
|
||||
[@scope (#main) { & .b { } } and :where(#main) .b]
|
||||
expected: FAIL
|
||||
|
|
|
@ -127,3 +127,120 @@
|
|||
|
||||
[Property color value 'color-mix(in display-p3-linear, color(display-p3-linear .1 .2 .3 / 25%) 0%, color(display-p3-linear 0.5 none none / 50%))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3) 25%, oklab(0.5 0.6 0.7))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(25% oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3), 25% oklab(0.5 0.6 0.7))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7) 25%)']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3) 25%, oklab(0.5 0.6 0.7) 75%)']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3) 30%, oklab(0.5 0.6 0.7) 90%)']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3) 12.5%, oklab(0.5 0.6 0.7) 37.5%)']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3) 0%, oklab(0.5 0.6 0.7))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / .4), oklab(0.5 0.6 0.7 / .8))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / .4) 25%, oklab(0.5 0.6 0.7 / .8))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(25% oklab(0.1 0.2 0.3 / .4), oklab(0.5 0.6 0.7 / .8))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / .4), 25% oklab(0.5 0.6 0.7 / .8))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / .4), oklab(0.5 0.6 0.7 / .8) 25%)']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / .4) 25%, oklab(0.5 0.6 0.7 / .8) 75%)']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / .4) 30%, oklab(0.5 0.6 0.7 / .8) 90%)']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / .4) 12.5%, oklab(0.5 0.6 0.7 / .8) 37.5%)']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / .4) 0%, oklab(0.5 0.6 0.7 / .8))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(transparent, oklab(0.3 0.4 0.5))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(transparent 10%, oklab(0.3 0.4 0.5))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / 0), oklab(0.3 0.4 0.5))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / 0) 10%, oklab(0.3 0.4 0.5))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(white, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(white 10%, blue)']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(none none none), oklab(none none none))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(none none none), oklab(0.5 0.6 0.7))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3), oklab(none none none))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 none), oklab(0.5 0.6 0.7))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3), oklab(0.5 0.6 none))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(none 0.2 0.3), oklab(0.5 none 0.7))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / none), oklab(0.5 0.6 0.7))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / none), oklab(0.5 0.6 0.7 / 0.5))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / none), oklab(0.5 0.6 0.7 / none))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / 25%) 0%, oklab(0.5 none none / none))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / 25%) 0%, oklab(none 0.5 none / none))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / 25%) 0%, oklab(none none 0.5 / none))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / 25%) 0%, oklab(0.5 0.5 none / none))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / 25%) 0%, oklab(none none none / 0.5))']
|
||||
expected: FAIL
|
||||
|
||||
[Property color value 'color-mix(oklab(0.1 0.2 0.3 / 25%) 0%, oklab(0.5 none none / 0.5))']
|
||||
expected: FAIL
|
||||
|
|
|
@ -367,3 +367,132 @@
|
|||
|
||||
[e.style['color'\] = "color-mix(in display-p3-linear, color(display-p3-linear .1 .2 .3 / none), color(display-p3-linear .5 .6 .7 / none))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(hsl(120deg 10% 20%), hsl(30deg 30% 40%))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(hwb(120deg 10% 20%), hwb(30deg 30% 40%))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(lch(10 20 30), lch(50 60 70))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(oklch(0.1 20 30), oklch(0.5 60 70))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(lab(10 20 30), lab(50 60 70))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3) 25%, oklab(0.5 0.6 0.7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, 25% oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3), 25% oklab(0.5 0.6 0.7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7) 25%)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3) 25%, oklab(0.5 0.6 0.7) 75%)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3) 30%, oklab(0.5 0.6 0.7) 90%)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3) 12.5%, oklab(0.5 0.6 0.7) 37.5%)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3) 0%, oklab(0.5 0.6 0.7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3 / .4), oklab(0.5 0.6 0.7 / .8))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3 / .4) 25%, oklab(0.5 0.6 0.7 / .8))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, 25% oklab(0.1 0.2 0.3 / .4), oklab(0.5 0.6 0.7 / .8))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3 / .4), 25% oklab(0.5 0.6 0.7 / .8))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3 / .4), oklab(0.5 0.6 0.7 / .8) 25%)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3 / .4) 25%, oklab(0.5 0.6 0.7 / .8) 75%)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3 / .4) 30%, oklab(0.5 0.6 0.7 / .8) 90%)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3 / .4) 12.5%, oklab(0.5 0.6 0.7 / .8) 37.5%)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3 / .4) 0%, oklab(0.5 0.6 0.7 / .8))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(none none none), oklab(none none none))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(none none none), oklab(0.5 0.6 0.7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3), oklab(none none none))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 none), oklab(0.5 0.6 0.7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3), oklab(0.5 0.6 none))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(none 0.2 0.3), oklab(0.5 none 0.7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3 / none), oklab(0.5 0.6 0.7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3 / none), oklab(0.5 0.6 0.7 / 0.5))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(in oklab, oklab(0.1 0.2 0.3 / none), oklab(0.5 0.6 0.7 / none))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(color(srgb .1 .2 .3), color(srgb .5 .6 .7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(color(srgb-linear .1 .2 .3), color(srgb-linear .5 .6 .7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(color(display-p3 .1 .2 .3), color(display-p3 .5 .6 .7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(color(display-p3-linear .1 .2 .3), color(display-p3-linear .5 .6 .7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(color(a98-rgb .1 .2 .3), color(a98-rgb .5 .6 .7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(color(prophoto-rgb .1 .2 .3), color(prophoto-rgb .5 .6 .7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(color(rec2020 .1 .2 .3), color(rec2020 .5 .6 .7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(color(xyz .1 .2 .3), color(xyz .5 .6 .7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(color(xyz-d50 .1 .2 .3), color(xyz-d50 .5 .6 .7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "color-mix(color(xyz-d65 .1 .2 .3), color(xyz-d65 .5 .6 .7))" should set the property value]
|
||||
expected: FAIL
|
||||
|
|
|
@ -742,3 +742,6 @@
|
|||
|
||||
[e.style['color'\] = "color(from color-mix(in display-p3-linear, color(display-p3-linear 0.7 0.5 0.3), color(display-p3-linear 0.7 0.5 0.3)) display-p3-linear r g b / alpha)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['color'\] = "oklab(from color-mix(in oklab, oklab(0.25 0.2 0.5), oklab(0.25 0.2 0.5)) l a b / alpha)" should set the property value]
|
||||
expected: FAIL
|
||||
|
|
|
@ -49,3 +49,15 @@
|
|||
|
||||
[Container name set on :host from inside a shadow tree matching query for ::slotted inside the shadow tree]
|
||||
expected: FAIL
|
||||
|
||||
[Should match container inside shadow tree for ::part()]
|
||||
expected: FAIL
|
||||
|
||||
[Container name set inside a shadow tree should match query using ::part on the outside]
|
||||
expected: FAIL
|
||||
|
||||
[Container name set inside a shadow tree should match query for host child on the outside]
|
||||
expected: FAIL
|
||||
|
||||
[Container name set on :host from inside a shadow tree should match query for slotted from the outside of the shadow tree]
|
||||
expected: FAIL
|
||||
|
|
|
@ -37,3 +37,6 @@
|
|||
|
||||
[@font-face matching for quoted and unquoted generic(khmer-mul) (drawing text in a canvas)]
|
||||
expected: FAIL
|
||||
|
||||
[@font-face matching for quoted and unquoted generic(nastaliq) (drawing text in a canvas)]
|
||||
expected: FAIL
|
||||
|
|
2
tests/wpt/meta/css/css-grid/grid-items/grid-auto-margin-and-replaced-item-001.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-grid/grid-items/grid-auto-margin-and-replaced-item-001.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[grid-auto-margin-and-replaced-item-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[row-masonry-positioned-item-dynamic-change.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,36 @@
|
|||
[grid-template-columns-intrinsic-auto-repeat-computed-implicit-track.tentative.html]
|
||||
[Property grid-template-columns value '1px repeat(auto-fill, auto) 3px' computes to '10px 1px 0px 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px repeat(auto-fit, auto) 3px' computes to '10px 1px 0px 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px [a\] repeat(auto-fill, min-content max-content) [b\] 4px' computes to '10px 1px [a\] 0px 0px [b\] 4px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px [a\] repeat(auto-fit, min-content max-content) [b\] 4px' computes to '10px 1px [a\] 0px 0px [b\] 4px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px [a\] repeat(auto-fill, [b\] fit-content(200px) [c\]) [d\] 3px' computes to '10px 1px [a b\] 0px [c d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px [a\] repeat(auto-fit, [b\] fit-content(200px) [c\]) [d\] 3px' computes to '10px 1px [a b\] 0px [c d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 1px repeat(auto-fill, auto [b\] auto) 4px [d\]' computes to '10px [a\] 1px 0px [b\] 0px 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 1px repeat(auto-fit, auto [b\] auto) 4px [d\]' computes to '10px [a\] 1px 0px [b\] 0px 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '100% [a\] repeat(auto-fill, [b\] min-content [c\]) [d\] 300%' computes to '10px 1px [a b\] 0px [c d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '100% [a\] repeat(auto-fit, [b\] min-content [c\]) [d\] 300%' computes to '10px 1px [a b\] 0px [c d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 1em repeat(auto-fill, max-content [b\] auto) 4em [d\]' computes to '10px [a\] 1px 0px [b\] 0px 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 1em repeat(auto-fit, max-content [b\] auto) 4em [d\]' computes to '10px [a\] 1px 0px [b\] 0px 4px [d\]']
|
||||
expected: FAIL
|
|
@ -0,0 +1,36 @@
|
|||
[grid-template-columns-intrinsic-auto-repeat-computed-nogrid.tentative.html]
|
||||
[Property grid-template-columns value '1px repeat(auto-fill, auto) 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px repeat(auto-fit, auto) 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px [a\] repeat(auto-fill, min-content max-content) [b\] 4px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px [a\] repeat(auto-fit, min-content max-content) [b\] 4px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px [a\] repeat(auto-fill, [b\] fit-content(200px) [c\]) [d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px [a\] repeat(auto-fit, [b\] fit-content(200px) [c\]) [d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 1px repeat(auto-fill, auto [b\] auto) 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 1px repeat(auto-fit, auto [b\] auto) 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '100% [a\] repeat(auto-fill, [b\] min-content [c\]) [d\] 300%']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '100% [a\] repeat(auto-fit, [b\] min-content [c\]) [d\] 300%']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 1em repeat(auto-fill, max-content [b\] auto) 4em [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 1em repeat(auto-fit, max-content [b\] auto) 4em [d\]']
|
||||
expected: FAIL
|
|
@ -0,0 +1,24 @@
|
|||
[grid-template-columns-intrinsic-auto-repeat-computed-withcontent.tentative.html]
|
||||
[Property grid-template-columns value 'repeat(auto-fill, auto)']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value 'repeat(auto-fit, [one\] auto)']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value 'repeat(auto-fill, min-content [two\])']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value 'repeat(auto-fit, [three\] max-content [four\])']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 21px [b\] repeat(auto-fill, [c\] 22px [d\] auto [e\]) [f\] 24px [g\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 21px [b c\] repeat(auto-fill, [d e\] 22px [f g h\] fit-content(200px) [i j k l\]) [m n\] 24px [o\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] repeat(2, [b\] 20px [c d\] 21px [e f g\]) [h i\] repeat(auto-fit, [j\] auto [k l m\] min-content [n o p q\]) [r s\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[one\] repeat(2, minmax(50px, auto)) [two\] 30px [three\] repeat(auto-fill, auto) 40px [four five\] repeat(2, minmax(200px, auto)) [six\]']
|
||||
expected: FAIL
|
|
@ -0,0 +1,36 @@
|
|||
[grid-template-columns-intrinsic-auto-repeat-computed.tentative.html]
|
||||
[Property grid-template-columns value '1px repeat(auto-fill, auto) 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px repeat(auto-fit, auto) 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px [a\] repeat(auto-fill, min-content max-content) [b\] 4px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px [a\] repeat(auto-fit, min-content max-content) [b\] 4px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px [a\] repeat(auto-fill, [b\] fit-content(200px) [c\]) [d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '1px [a\] repeat(auto-fit, [b\] fit-content(200px) [c\]) [d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 1px repeat(auto-fill, auto [b\] auto) 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 1px repeat(auto-fit, auto [b\] auto) 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '100% [a\] repeat(auto-fill, [b\] min-content [c\]) [d\] 300%']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '100% [a\] repeat(auto-fit, [b\] min-content [c\]) [d\] 300%']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 1em repeat(auto-fill, max-content [b\] auto) 4em [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-columns value '[a\] 1em repeat(auto-fit, max-content [b\] auto) 4em [d\]']
|
||||
expected: FAIL
|
|
@ -0,0 +1,36 @@
|
|||
[grid-template-rows-intrinsic-auto-repeat-computed-implicit-track.tentative.html]
|
||||
[Property grid-template-rows value '1px repeat(auto-fill, auto) 3px' computes to '1px 0px 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px repeat(auto-fit, auto) 3px' computes to '1px 0px 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px [a\] repeat(auto-fill, min-content max-content) [b\] 4px' computes to '1px [a\] 0px 0px [b\] 4px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px [a\] repeat(auto-fit, min-content max-content) [b\] 4px' computes to '1px [a\] 0px 0px [b\] 4px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px [a\] repeat(auto-fill, [b\] fit-content(200px) [c\]) [d\] 3px' computes to '1px [a b\] 0px [c d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px [a\] repeat(auto-fit, [b\] fit-content(200px) [c\]) [d\] 3px' computes to '1px [a b\] 0px [c d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 1px repeat(auto-fill, auto [b\] auto) 4px [d\]' computes to '[a\] 1px 0px [b\] 0px 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 1px repeat(auto-fit, auto [b\] auto) 4px [d\]' computes to '[a\] 1px 0px [b\] 0px 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '100% [a\] repeat(auto-fill, [b\] min-content [c\]) [d\] 300%' computes to '1px [a b\] 0px [c d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '100% [a\] repeat(auto-fit, [b\] min-content [c\]) [d\] 300%' computes to '1px [a b\] 0px [c d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 1em repeat(auto-fill, max-content [b\] auto) 4em [d\]' computes to '[a\] 1px 0px [b\] 0px 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 1em repeat(auto-fit, max-content [b\] auto) 4em [d\]' computes to '[a\] 1px 0px [b\] 0px 4px [d\]']
|
||||
expected: FAIL
|
|
@ -0,0 +1,36 @@
|
|||
[grid-template-rows-intrinsic-auto-repeat-computed-nogrid.tentative.html]
|
||||
[Property grid-template-rows value '1px repeat(auto-fill, auto) 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px repeat(auto-fit, auto) 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px [a\] repeat(auto-fill, min-content max-content) [b\] 4px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px [a\] repeat(auto-fit, min-content max-content) [b\] 4px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px [a\] repeat(auto-fill, [b\] fit-content(200px) [c\]) [d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px [a\] repeat(auto-fit, [b\] fit-content(200px) [c\]) [d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 1px repeat(auto-fill, auto [b\] auto) 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 1px repeat(auto-fit, auto [b\] auto) 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '100% [a\] repeat(auto-fill, [b\] min-content [c\]) [d\] 300%']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '100% [a\] repeat(auto-fit, [b\] min-content [c\]) [d\] 300%']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 1em repeat(auto-fill, max-content [b\] auto) 4em [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 1em repeat(auto-fit, max-content [b\] auto) 4em [d\]']
|
||||
expected: FAIL
|
|
@ -0,0 +1,24 @@
|
|||
[grid-template-rows-intrinsic-auto-repeat-computed-withcontent.tentative.html]
|
||||
[Property grid-template-rows value 'repeat(auto-fill, auto)']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value 'repeat(auto-fit, [one\] auto)']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value 'repeat(auto-fill, min-content [two\])']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value 'repeat(auto-fit, [three\] max-content [four\])']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 21px [b\] repeat(auto-fill, [c\] 22px [d\] auto [e\]) [f\] 24px [g\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 21px [b c\] repeat(auto-fill, [d e\] 22px [f g h\] fit-content(200px) [i j k l\]) [m n\] 24px [o\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] repeat(2, [b\] 20px [c d\] 21px [e f g\]) [h i\] repeat(auto-fit, [j\] auto [k l m\] min-content [n o p q\]) [r s\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[one\] repeat(2, minmax(50px, auto)) [two\] 30px [three\] repeat(auto-fill, auto) 40px [four five\] repeat(2, minmax(200px, auto)) [six\]']
|
||||
expected: FAIL
|
|
@ -0,0 +1,36 @@
|
|||
[grid-template-rows-intrinsic-auto-repeat-computed.tentative.html]
|
||||
[Property grid-template-rows value '1px repeat(auto-fill, auto) 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px repeat(auto-fit, auto) 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px [a\] repeat(auto-fill, min-content max-content) [b\] 4px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px [a\] repeat(auto-fit, min-content max-content) [b\] 4px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px [a\] repeat(auto-fill, [b\] fit-content(200px) [c\]) [d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '1px [a\] repeat(auto-fit, [b\] fit-content(200px) [c\]) [d\] 3px']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 1px repeat(auto-fill, auto [b\] auto) 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 1px repeat(auto-fit, auto [b\] auto) 4px [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '100% [a\] repeat(auto-fill, [b\] min-content [c\]) [d\] 300%']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '100% [a\] repeat(auto-fit, [b\] min-content [c\]) [d\] 300%']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 1em repeat(auto-fill, max-content [b\] auto) 4em [d\]']
|
||||
expected: FAIL
|
||||
|
||||
[Property grid-template-rows value '[a\] 1em repeat(auto-fit, max-content [b\] auto) 4em [d\]']
|
||||
expected: FAIL
|
15
tests/wpt/meta/css/css-mixins/parameters.html.ini
vendored
Normal file
15
tests/wpt/meta/css/css-mixins/parameters.html.ini
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
[parameters.html]
|
||||
[Mixins with invalid parameter lists are ignored]
|
||||
expected: FAIL
|
||||
|
||||
[Basic mixin parameter passing]
|
||||
expected: FAIL
|
||||
|
||||
[Mixins can be called multiple times with different parameters]
|
||||
expected: FAIL
|
||||
|
||||
[Mixin argument parsing with arguments wrapped in {}]
|
||||
expected: FAIL
|
||||
|
||||
[Defaults in mixin parameters]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-035.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-035.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[line-clamp-035.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[line-clamp-035.tentative.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-025.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-025.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[line-clamp-auto-025.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[line-clamp-auto-025.tentative.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-overflow/scroll-target-group-inline-targets.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-overflow/scroll-target-group-inline-targets.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[scroll-target-group-inline-targets.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-text/text-autospace/text-autospace-002.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-text/text-autospace/text-autospace-002.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[text-autospace-002.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-text/text-autospace/text-autospace-003.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-text/text-autospace/text-autospace-003.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[text-autospace-003.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-text/text-autospace/text-autospace-004.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-text/text-autospace/text-autospace-004.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[text-autospace-004.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[word-spacing-002.html]
|
||||
expected: FAIL
|
3
tests/wpt/meta/custom-elements/form-associated/form-disabled-callback.html.ini
vendored
Normal file
3
tests/wpt/meta/custom-elements/form-associated/form-disabled-callback.html.ini
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[form-disabled-callback.html]
|
||||
[A disabled form-associated custom element should not submit an entry for it]
|
||||
expected: FAIL
|
|
@ -4,3 +4,6 @@
|
|||
|
||||
[Tests FormControlRange default values when no form control is set.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange handles empty value correctly.]
|
||||
expected: FAIL
|
||||
|
|
33
tests/wpt/meta/dom/ranges/tentative/FormControlRange-offset.html.ini
vendored
Normal file
33
tests/wpt/meta/dom/ranges/tentative/FormControlRange-offset.html.ini
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
[FormControlRange-offset.html]
|
||||
[FormControlRange with single character in textarea.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange with empty control in textarea.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange boundary positions in textarea.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange with Unicode characters in textarea.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange with single character in input.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange with empty control in input.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange boundary positions in input.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange with Unicode characters in input.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange preserves whitespace in textarea light DOM.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange should work correctly with weirdly formed light DOM structure.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange ignores malformed input child nodes.]
|
||||
expected: FAIL
|
15
tests/wpt/meta/dom/ranges/tentative/FormControlRange-range-updates.html.ini
vendored
Normal file
15
tests/wpt/meta/dom/ranges/tentative/FormControlRange-range-updates.html.ini
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
[FormControlRange-range-updates.html]
|
||||
[FormControlRange allows updating range on same element.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange can switch between different form controls.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange works with disconnected and then connected form controls.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange can switch between connected and disconnected form controls.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange reflects value changes on same element.]
|
||||
expected: FAIL
|
18
tests/wpt/meta/dom/ranges/tentative/FormControlRange-supported-elements.html.ini
vendored
Normal file
18
tests/wpt/meta/dom/ranges/tentative/FormControlRange-supported-elements.html.ini
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
[FormControlRange-supported-elements.html]
|
||||
[FormControlRange should support textarea.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange should support input[type=text\].]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange should support input[type=search\].]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange should support input[type=password\].]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange should support input[type=url\].]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange should support input[type=tel\].]
|
||||
expected: FAIL
|
15
tests/wpt/meta/dom/ranges/tentative/FormControlRange-toString.html.ini
vendored
Normal file
15
tests/wpt/meta/dom/ranges/tentative/FormControlRange-toString.html.ini
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
[FormControlRange-toString.html]
|
||||
[FormControlRange toString() reflects current value.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange toString() clamps to available length.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange toString() handles value shorter than range.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange toString() handles auto-collapsed backwards ranges.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange uses current input.value, not value attribute.]
|
||||
expected: FAIL
|
12
tests/wpt/meta/dom/ranges/tentative/FormControlRange-unsupported-elements.html.ini
vendored
Normal file
12
tests/wpt/meta/dom/ranges/tentative/FormControlRange-unsupported-elements.html.ini
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
[FormControlRange-unsupported-elements.html]
|
||||
[FormControlRange throws NotSupportedError for text node.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange should throw NotSupportedError for all unsupported HTML5 elements.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange should throw NotSupportedError for unsupported input types.]
|
||||
expected: FAIL
|
||||
|
||||
[NotSupportedError should take precedence over IndexSizeError when both element type and index are invalid for a FormControlRange.]
|
||||
expected: FAIL
|
6
tests/wpt/meta/dom/ranges/tentative/FormControlRange-validation.html.ini
vendored
Normal file
6
tests/wpt/meta/dom/ranges/tentative/FormControlRange-validation.html.ini
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
[FormControlRange-validation.html]
|
||||
[FormControlRange preserves state when setFormControlRange throws.]
|
||||
expected: FAIL
|
||||
|
||||
[FormControlRange handles all range types correctly: forward, backwards, and out-of-bounds.]
|
||||
expected: FAIL
|
|
@ -1,4 +1,4 @@
|
|||
[indexeddb.tentative.https.window.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[indexeddb]
|
||||
expected: TIMEOUT
|
||||
|
|
3
tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/008.html.ini
vendored
Normal file
3
tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/008.html.ini
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[008.html]
|
||||
[Link with onclick form submit to javascript url and href navigation ]
|
||||
expected: FAIL
|
|
@ -0,0 +1,6 @@
|
|||
[empty-iframe-load-event.html]
|
||||
[Check execution order from nested timeout]
|
||||
expected: FAIL
|
||||
|
||||
[Check execution order on load handler]
|
||||
expected: FAIL
|
|
@ -2,8 +2,5 @@
|
|||
[window.open]
|
||||
expected: FAIL
|
||||
|
||||
[link click]
|
||||
expected: FAIL
|
||||
|
||||
[form submission]
|
||||
expected: FAIL
|
||||
|
|
|
@ -10,3 +10,6 @@
|
|||
|
||||
[load event does not fire on window.open('about:blank?foo')]
|
||||
expected: FAIL
|
||||
|
||||
[load event does not fire on window.open('about:blank')]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[a-click.html]
|
||||
[aElement.click() before the load event must NOT replace]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[canvas.2d.disconnected-font-size-math.html]
|
||||
expected: FAIL
|
|
@ -1,6 +1,7 @@
|
|||
[autofocus-dialog.html]
|
||||
expected: TIMEOUT
|
||||
[<dialog> can contain autofocus, without stopping page autofocus content from working]
|
||||
expected: FAIL
|
||||
|
||||
[<dialog>-contained autofocus element gets focused when the dialog is shown]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
[document-with-fragment-empty.html]
|
||||
expected: TIMEOUT
|
||||
[Autofocus elements in iframed documents with empty fragments should work.]
|
||||
expected: FAIL
|
||||
|
||||
[Autofocus elements in top-level browsing context's documents with empty fragments should work.]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
[iframe_javascript_url_xhr.html]
|
||||
[Image load should not trigger load event for non-initial javascript URL load]
|
||||
expected: FAIL
|
||||
|
||||
[Load event for initial javascript URL load should be fired after script execution]
|
||||
expected: FAIL
|
|
@ -1,4 +1,3 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
|
|
|
@ -181,3 +181,6 @@
|
|||
|
||||
[text/plain: 0x00 in name (normal form)]
|
||||
expected: FAIL
|
||||
|
||||
[text/plain: Basic test (normal form)]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[disabled-003.html]
|
||||
expected: CRASH
|
|
@ -0,0 +1,3 @@
|
|||
[xml-stylesheet-blocking.xhtml]
|
||||
[xml-stylesheet blocks script execution and rendering]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[shadow-style-invalidation-vw-units.html]
|
||||
expected: FAIL
|
|
@ -1,12 +0,0 @@
|
|||
[TrustedTypePolicyFactory-blocking.tentative.html]
|
||||
[Block Trusted Type policy creation by event listener.]
|
||||
expected: FAIL
|
||||
|
||||
[Trusted Type policy creation.]
|
||||
expected: FAIL
|
||||
|
||||
[Block only default Trusted Type policy creation.]
|
||||
expected: FAIL
|
||||
|
||||
[Policy creation called before addEventListener function will not reached the listener.]
|
||||
expected: FAIL
|
|
@ -50,18 +50,14 @@
|
|||
|
||||
|
||||
[trusted-types-navigation.html?31-35]
|
||||
expected: TIMEOUT
|
||||
[Navigate a frame via form-submission with javascript:-urls w/ default policy in report-only mode.]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Navigate a window via form-submission with javascript:-urls w/ a default policy throwing an exception in enforcing mode.]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Navigate a window via form-submission with javascript:-urls w/ a default policy throwing an exception in report-only mode.]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Navigate a window via form-submission with javascript:-urls w/ a default policy making the URL invalid in enforcing mode.]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Navigate a frame via form-submission with javascript:-urls in report-only mode.]
|
||||
expected: FAIL
|
||||
|
@ -76,23 +72,23 @@
|
|||
[Navigate a frame via form-submission with javascript:-urls in enforcing mode.]
|
||||
expected: FAIL
|
||||
|
||||
[Navigate a frame via form-submission with javascript:-urls w/ default policy in enforcing mode.]
|
||||
[Navigate a window via form-submission with javascript:-urls in report-only mode.]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[trusted-types-navigation.html?06-10]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Navigate a frame via anchor with javascript:-urls in report-only mode.]
|
||||
expected: FAIL
|
||||
|
||||
[Navigate a frame via anchor with javascript:-urls w/ default policy in report-only mode.]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Navigate a window via anchor with javascript:-urls w/ a default policy throwing an exception in enforcing mode.]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Navigate a window via anchor with javascript:-urls w/ a default policy throwing an exception in report-only mode.]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
||||
[trusted-types-navigation.html?11-15]
|
||||
|
@ -154,3 +150,6 @@
|
|||
|
||||
[Navigate a frame via anchor with javascript:-urls in enforcing mode.]
|
||||
expected: FAIL
|
||||
|
||||
[Navigate a window via anchor with javascript:-urls in report-only mode.]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
[active-processing.https.html]
|
||||
[Executing "Setup graph"]
|
||||
expected: FAIL
|
||||
|
||||
[Setup graph with AudioWorklet and AudioBufferSourceNode]
|
||||
expected: FAIL
|
||||
|
|
|
@ -4,3 +4,9 @@
|
|||
|
||||
[Executing "expoRamp"]
|
||||
expected: FAIL
|
||||
|
||||
[linearRamp: Insert linearRamp after running for some time]
|
||||
expected: FAIL
|
||||
|
||||
[exponentialRamp: Insert exponentialRamp after running for some time]
|
||||
expected: FAIL
|
||||
|
|
|
@ -4,3 +4,9 @@
|
|||
|
||||
[Executing "test"]
|
||||
expected: FAIL
|
||||
|
||||
[initialize: AudioWorklet module loading]
|
||||
expected: FAIL
|
||||
|
||||
[test: Active processing emits expected channel-count changes]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[navigation.py]
|
||||
expected: TIMEOUT
|
3
tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/scroll_into_view.py.ini
vendored
Normal file
3
tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/scroll_into_view.py.ini
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[scroll_into_view.py]
|
||||
[test_scroll_into_view]
|
||||
expected: FAIL
|
2
tests/wpt/meta/webxr/render_state_update.https.html.ini
vendored
Normal file
2
tests/wpt/meta/webxr/render_state_update.https.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[render_state_update.https.html]
|
||||
expected: ERROR
|
25
tests/wpt/tests/.azure-pipelines.yml
vendored
25
tests/wpt/tests/.azure-pipelines.yml
vendored
|
@ -158,7 +158,7 @@ jobs:
|
|||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.tools_unittest']
|
||||
pool:
|
||||
vmImage: 'windows-2019'
|
||||
vmImage: 'windows-latest'
|
||||
variables:
|
||||
HYPOTHESIS_PROFILE: ci
|
||||
steps:
|
||||
|
@ -177,7 +177,7 @@ jobs:
|
|||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.tools_unittest']
|
||||
pool:
|
||||
vmImage: 'windows-2019'
|
||||
vmImage: 'windows-latest'
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
|
@ -194,7 +194,7 @@ jobs:
|
|||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest']
|
||||
pool:
|
||||
vmImage: 'windows-2019'
|
||||
vmImage: 'windows-latest'
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
|
@ -211,7 +211,7 @@ jobs:
|
|||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest']
|
||||
pool:
|
||||
vmImage: 'windows-2019'
|
||||
vmImage: 'windows-latest'
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
|
@ -228,7 +228,7 @@ jobs:
|
|||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.wpt_integration']
|
||||
pool:
|
||||
vmImage: 'windows-2019'
|
||||
vmImage: 'windows-latest'
|
||||
steps:
|
||||
# full checkout required
|
||||
- task: UsePythonVersion@0
|
||||
|
@ -250,7 +250,7 @@ jobs:
|
|||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.wpt_integration']
|
||||
pool:
|
||||
vmImage: 'windows-2019'
|
||||
vmImage: 'windows-latest'
|
||||
steps:
|
||||
# full checkout required
|
||||
- task: UsePythonVersion@0
|
||||
|
@ -274,10 +274,10 @@ jobs:
|
|||
eq(variables['Build.SourceBranch'], 'refs/heads/triggers/edge_stable'),
|
||||
and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_edge_stable']))
|
||||
strategy:
|
||||
parallel: 8 # chosen to make runtime ~2h
|
||||
parallel: 10 # chosen to make runtime ~2h
|
||||
timeoutInMinutes: 180
|
||||
pool:
|
||||
vmImage: 'windows-2019'
|
||||
vmImage: 'windows-latest'
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
|
@ -310,10 +310,10 @@ jobs:
|
|||
eq(variables['Build.SourceBranch'], 'refs/heads/triggers/edge_dev'),
|
||||
and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_edge_dev']))
|
||||
strategy:
|
||||
parallel: 8 # chosen to make runtime ~2h
|
||||
parallel: 10 # chosen to make runtime ~2h
|
||||
timeoutInMinutes: 180
|
||||
pool:
|
||||
vmImage: 'windows-2019'
|
||||
vmImage: 'windows-latest'
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
|
@ -324,6 +324,7 @@ jobs:
|
|||
- template: tools/ci/azure/install_edge.yml
|
||||
parameters:
|
||||
channel: dev
|
||||
- template: tools/ci/azure/configure_watson.yml
|
||||
- template: tools/ci/azure/update_hosts.yml
|
||||
- template: tools/ci/azure/update_manifest.yml
|
||||
- script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel dev edge
|
||||
|
@ -346,10 +347,10 @@ jobs:
|
|||
eq(variables['Build.SourceBranch'], 'refs/heads/triggers/edge_canary'),
|
||||
and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_edge_canary']))
|
||||
strategy:
|
||||
parallel: 8 # chosen to make runtime ~2h
|
||||
parallel: 10 # chosen to make runtime ~2h
|
||||
timeoutInMinutes: 180
|
||||
pool:
|
||||
vmImage: 'windows-2019'
|
||||
vmImage: 'windows-latest'
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
|
|
|
@ -21,5 +21,5 @@ def main(request, response):
|
|||
response_body = {
|
||||
"provider_origin": provider_origin,
|
||||
}
|
||||
return (200, [('Content-Type', 'application/json'), ('Set-Cookie', 'well_known_fetched=true; Path=/device-bound-session-credentials')],
|
||||
return (200, [('Content-Type', 'application/json')],
|
||||
json.dumps(response_body))
|
||||
|
|
12
tests/wpt/tests/FileAPI/blob/Blob-newobject.any.js
vendored
Normal file
12
tests/wpt/tests/FileAPI/blob/Blob-newobject.any.js
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
// META: title=Blob methods return new objects ([NewObject])
|
||||
// META: global=window,worker
|
||||
'use strict';
|
||||
|
||||
['stream', 'text', 'arrayBuffer', 'bytes'].forEach(method => {
|
||||
test(() => {
|
||||
const blob = new Blob(['PASS']);
|
||||
const a = blob[method]();
|
||||
const b = blob[method]();
|
||||
assert_not_equals(a, b, `Blob.${method}() must return a new object`);
|
||||
}, `Blob.${method}() returns [NewObject]`);
|
||||
});
|
3
tests/wpt/tests/console/WEB_FEATURES.yml
vendored
Normal file
3
tests/wpt/tests/console/WEB_FEATURES.yml
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
features:
|
||||
- name: console
|
||||
files: "**"
|
|
@ -26,16 +26,14 @@ body {
|
|||
})
|
||||
);
|
||||
observer.observe({entryTypes: ['container']});
|
||||
// Add the image during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
|
||||
// Add image of width equal to 100 and height equal to 100.
|
||||
const img = document.createElement('img');
|
||||
img.src = '/container-timing/resources/square100.png';
|
||||
img.setAttribute('id', 'img_id');
|
||||
document.body.appendChild(img);
|
||||
|
||||
beforeRender = performance.now();
|
||||
};
|
||||
}, 'Body with containertiming observed reports children image paints.');
|
||||
</script>
|
||||
|
||||
|
|
|
@ -25,17 +25,15 @@ body {
|
|||
})
|
||||
);
|
||||
observer.observe({entryTypes: ['container']});
|
||||
// Add the image during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
|
||||
// Add image of width equal to 100 and height equal to 100.
|
||||
const img = document.createElement('img');
|
||||
img.src = '/container-timing/resources/square100.png';
|
||||
img.setAttribute('containertiming', 'image_ct');
|
||||
img.setAttribute('id', 'my_id');
|
||||
document.body.appendChild(img);
|
||||
|
||||
beforeRender = performance.now();
|
||||
};
|
||||
}, 'Element with containertiming attribute is observable and reports the image paint.');
|
||||
</script>
|
||||
|
||||
|
|
|
@ -27,17 +27,15 @@ body {
|
|||
);
|
||||
observer.observe({type: 'container', buffered: true });
|
||||
}, 2000);
|
||||
// Add the image during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
|
||||
// Add image of width equal to 100 and height equal to 100.
|
||||
const img = document.createElement('img');
|
||||
img.src = '/container-timing/resources/square100.png';
|
||||
img.setAttribute('containertiming', 'image_ct');
|
||||
img.setAttribute('id', 'my_id');
|
||||
document.body.appendChild(img);
|
||||
|
||||
beforeRender = performance.now();
|
||||
};
|
||||
}, 'Paint is reported when observation starts after image paint if buffering is enabled.');
|
||||
</script>
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ body {
|
|||
<script src="/container-timing/resources/container-timing-helpers.js"></script>
|
||||
<script src="/element-timing/resources/element-timing-helpers.js"></script>
|
||||
<script>
|
||||
let beforeRender;
|
||||
async_test(function (t) {
|
||||
assert_implements(window.PerformanceContainerTiming, "PerformanceContainerTiming is not implemented");
|
||||
t.step_timeout(() => {
|
||||
|
@ -26,17 +25,13 @@ body {
|
|||
t.done();
|
||||
}, 2000);
|
||||
}, 2000);
|
||||
// Add the image during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
|
||||
// Add image of width equal to 100 and height equal to 100.
|
||||
const img = document.createElement('img');
|
||||
img.src = '/container-timing/resources/square100.png';
|
||||
img.setAttribute('containertiming', 'image_ct');
|
||||
img.setAttribute('id', 'my_id');
|
||||
document.body.appendChild(img);
|
||||
beforeRender = performance.now();
|
||||
};
|
||||
}, 'containertiming does not report paints before observing if buffering is disabled.');
|
||||
</script>
|
||||
|
||||
|
|
|
@ -20,17 +20,14 @@ body {
|
|||
}
|
||||
);
|
||||
observer.observe({entryTypes: ['container']});
|
||||
t.step_timeout(() => {
|
||||
t.done();
|
||||
}, 2000);
|
||||
// Add the image during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
|
||||
finishOnElementTiming(t);
|
||||
|
||||
const div = document.createElement('div');
|
||||
div.setAttribute('containertiming', 'div_ct');
|
||||
document.body.appendChild(div);
|
||||
beforeRender = performance.now();
|
||||
};
|
||||
|
||||
addPaintingElementTimingAfterDoubleRAF(document.body);
|
||||
}, 'Container timing did not report paints when there was nothing to paint.');
|
||||
</script>
|
||||
|
||||
|
|
|
@ -23,16 +23,14 @@ body {
|
|||
})
|
||||
);
|
||||
observer.observe({entryTypes: ['container']});
|
||||
// Add the text during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
|
||||
const p = document.createElement('p');
|
||||
p.setAttribute('containertiming', 'p_ct');
|
||||
p.id = 'my_id';
|
||||
p.innerText = "This is a text";
|
||||
document.body.appendChild(p);
|
||||
|
||||
beforeRender = performance.now();
|
||||
};
|
||||
}, 'Element with containertiming attribute is observable and reports the text paint.');
|
||||
</script>
|
||||
|
||||
|
|
|
@ -26,9 +26,7 @@ body {
|
|||
})
|
||||
);
|
||||
observer.observe({entryTypes: ['container']});
|
||||
// Add the image during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
|
||||
// Add a div that is the container timing root
|
||||
const div = document.createElement('div');
|
||||
div.setAttribute('containertiming', 'div_ct');
|
||||
|
@ -50,7 +48,6 @@ body {
|
|||
div.appendChild(img2);
|
||||
|
||||
beforeRender = performance.now();
|
||||
};
|
||||
}, 'Overlapping images report to containertiming.');
|
||||
</script>
|
||||
|
||||
|
|
|
@ -25,20 +25,19 @@ body {
|
|||
})
|
||||
);
|
||||
observer.observe({entryTypes: ['container']});
|
||||
// Add the image during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
|
||||
// Add a div that is the container timing root
|
||||
const div = document.createElement('div');
|
||||
div.setAttribute('containertiming', 'div_ct');
|
||||
document.body.appendChild(div);
|
||||
|
||||
// Add image of width equal to 100 and height equal to 100.
|
||||
const img = document.createElement('img');
|
||||
img.src = '/container-timing/resources/square100.png';
|
||||
img.setAttribute('id', 'img_id');
|
||||
div.appendChild(img);
|
||||
|
||||
beforeRender = performance.now();
|
||||
};
|
||||
}, 'Paint of the image child of container timing is reported.');
|
||||
</script>
|
||||
|
||||
|
|
|
@ -23,9 +23,7 @@ body {
|
|||
})
|
||||
);
|
||||
observer.observe({entryTypes: ['container']});
|
||||
// Add the text during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
|
||||
// Add a div that is the container timing root
|
||||
const div = document.createElement('div');
|
||||
div.setAttribute('containertiming', 'div_ct');
|
||||
|
@ -35,8 +33,8 @@ body {
|
|||
p.id = 'p_id';
|
||||
p.innerText = "This is a text";
|
||||
div.appendChild(p);
|
||||
|
||||
beforeRender = performance.now();
|
||||
};
|
||||
}, 'Paint of the text child of container timing is reported.');
|
||||
</script>
|
||||
|
||||
|
|
|
@ -21,23 +21,20 @@ body {
|
|||
);
|
||||
observer.observe({entryTypes: ['container']});
|
||||
|
||||
// Wait 2 seconds for observations, then finish successfully
|
||||
t.step_timeout(() => {
|
||||
t.done();
|
||||
}, 2000);
|
||||
// Add the image during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
finishOnElementTiming(t);
|
||||
|
||||
// Add a div that is the container timing root
|
||||
const div = document.createElement('div');
|
||||
div.setAttribute('containertiming', 'div_ct');
|
||||
document.body.appendChild(div);
|
||||
|
||||
// Add image of width equal to 100 and height equal to 100.
|
||||
const img = document.createElement('img');
|
||||
img.src = '/container-timing/resources/square100.png';
|
||||
img.setAttribute('id', 'img_id');
|
||||
document.body.appendChild(img);
|
||||
};
|
||||
|
||||
addPaintingElementTimingAfterDoubleRAF(document.body);
|
||||
}, 'Containertiming observed without paintable contents and an image outside does not report observations.');
|
||||
</script>
|
||||
|
||||
|
|
|
@ -25,9 +25,7 @@ body {
|
|||
})
|
||||
);
|
||||
observer.observe({entryTypes: ['container']});
|
||||
// Add the image during onload to be sure that the observer is registered
|
||||
// in time.
|
||||
window.onload = () => {
|
||||
|
||||
// Add a div that is the container timing root
|
||||
const div1 = document.createElement('div');
|
||||
div1.setAttribute('containertiming', 'div1_ct');
|
||||
|
@ -43,8 +41,8 @@ body {
|
|||
img.src = '/container-timing/resources/square100.png';
|
||||
img.setAttribute('id', 'img_id');
|
||||
div2.appendChild(img);
|
||||
|
||||
beforeRender = performance.now();
|
||||
};
|
||||
}, 'A parent containertiming root with default nesting policy does not get paints from children containertiming roots.');
|
||||
</script>
|
||||
|
||||
|
|
26
tests/wpt/tests/content-security-policy/generic/image-document-applies-csp.html
vendored
Normal file
26
tests/wpt/tests/content-security-policy/generic/image-document-applies-csp.html
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<title>CSP header applied to image document</title>
|
||||
<link rel="help" href="https://github.com/servo/servo/issues/38180">
|
||||
<script src='/resources/testharness.js'></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<iframe id="iframe" src="../support/pass.png?pipe=header(Content-Security-Policy,default-src 'none')"></iframe>
|
||||
<script>
|
||||
let iframe = document.getElementById("iframe");
|
||||
promise_test(async t => {
|
||||
await t.step_wait(() => {
|
||||
return iframe.contentDocument.querySelector("img") !== null;
|
||||
}, "Wait for image document to be loaded", 5000, 100);
|
||||
return new Promise((resolve, reject) => {
|
||||
let newImg = iframe.contentDocument.createElement("img");
|
||||
newImg.onload = reject;
|
||||
newImg.onerror = resolve;
|
||||
newImg.src = "../support/fail.png";
|
||||
iframe.contentDocument.body.appendChild(newImg);
|
||||
});
|
||||
}, "Image document correctly applies CSP to other subresources.");
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,7 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSP header ignored for image in image document</title>
|
||||
<link rel="help" href="https://github.com/servo/servo/issues/38180">
|
||||
<link rel='match' href='image-document-ignores-csp-for-loading-main-image-ref.html'>
|
||||
<link rel="author" title="Josh Matthews" href="mailto:josh@joshmatthews.net">
|
||||
<iframe src="../support/pass.png?pipe=header(Content-Security-Policy,default-src 'none')">
|
|
@ -1,7 +0,0 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSP header ignored for image document</title>
|
||||
<link rel="help" href="https://github.com/servo/servo/issues/38180">
|
||||
<link rel='match' href='image-document-ignores-csp-ref.html'>
|
||||
<link rel="author" title="Josh Matthews" href="mailto:josh@joshmatthews.net">
|
||||
<iframe src="../support/pass3.png">
|
Binary file not shown.
Before Width: | Height: | Size: 1.6 KiB |
|
@ -1 +0,0 @@
|
|||
Content-Security-Policy: default-src 'none'
|
|
@ -19,14 +19,6 @@
|
|||
.abspos {
|
||||
position: absolute;
|
||||
}
|
||||
.columns {
|
||||
column-count: 2;
|
||||
column-fill: auto;
|
||||
column-gap: 10px;
|
||||
column-width: 100px;
|
||||
width: 210px;
|
||||
height: 100px;
|
||||
}
|
||||
.anchor {
|
||||
anchor-name: --a1;
|
||||
background: orange;
|
||||
|
@ -38,8 +30,8 @@
|
|||
background: lime;
|
||||
}
|
||||
</style>
|
||||
<body onload="checkLayoutForAnchorPos('.target')">
|
||||
<div class="container relpos xcolumns">
|
||||
<body>
|
||||
<div class="container relpos">
|
||||
<div style="height: 150px"></div>
|
||||
<div class="relpos">
|
||||
<span class="target" data-expected-width=20></span>
|
||||
|
@ -55,4 +47,7 @@
|
|||
<span class="target" data-expected-width=30></span>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
document.fonts.ready.then(() => checkLayoutForAnchorPos('.target'));
|
||||
</script>
|
||||
</body>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1">
|
||||
<title>Tests anchor positioning with nested scroll containers</title>
|
||||
<link rel="author" href="mailto:xiaochengh@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-anchor-1/">
|
||||
|
|
34
tests/wpt/tests/css/css-anchor-position/chrome-443261872.html
vendored
Normal file
34
tests/wpt/tests/css/css-anchor-position/chrome-443261872.html
vendored
Normal file
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Chrome bug 443261872: style attribute invalidation for tree-scoped anchor-name</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#name">
|
||||
<link rel="help" href="https://crbug.com/443261872">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
</style>
|
||||
<div id="host">
|
||||
<template shadowrootmode="open">
|
||||
<style>
|
||||
#anchor {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
#anchored {
|
||||
position-anchor: --panel-anchor;
|
||||
position: absolute;
|
||||
inset: anchor(top) anchor(right) anchor(bottom) anchor(left);
|
||||
}
|
||||
</style>
|
||||
<div id="anchor" style="anchor-name:--panel-anchor; color:yellow"></div>
|
||||
<div id="anchored"></div>
|
||||
</template>
|
||||
</div>
|
||||
<script>
|
||||
test(() => {
|
||||
const anchor = host.shadowRoot.querySelector("#anchor");
|
||||
const anchored = host.shadowRoot.querySelector("#anchored");
|
||||
anchored.offsetTop;
|
||||
anchor.style.color = "pink";
|
||||
assert_equals(anchored.offsetWidth, 100);
|
||||
}, "Changing inline style color does not change tree-scope for anchor-name");
|
||||
</script>
|
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Conditional Test: @container anchored(fallback) matching 'any' <position-area></title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-anchor-position-2/#anchored-container-queries">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/12610">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/css-conditional/container-queries/support/cq-testcommon.js"></script>
|
||||
<style>
|
||||
#anchor {
|
||||
anchor-name: --a;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
#anchored {
|
||||
position: absolute;
|
||||
position-anchor: --a;
|
||||
position-area: top;
|
||||
position-try-fallbacks: span-bottom;
|
||||
width: 100px;
|
||||
/* Too tall to fit over the anchor to trigger fallback */
|
||||
height: 100px;
|
||||
container-type: anchored;
|
||||
}
|
||||
#target {
|
||||
@container anchored(fallback: any) { --any: yes; }
|
||||
@container anchored(fallback: any span-bottom) { --any-span-bottom: yes; }
|
||||
@container anchored(fallback: span-end any) { --span-end-any: yes; }
|
||||
@container anchored(fallback: any span-all) { --any-span-all: yes; }
|
||||
}
|
||||
</style>
|
||||
<div id="anchor"></div>
|
||||
<div id="anchored">
|
||||
<div id="target"></div>
|
||||
</div>
|
||||
<script>
|
||||
test(() => {
|
||||
const style = getComputedStyle(target);
|
||||
assert_equals(style.getPropertyValue("--any"), "yes");
|
||||
assert_equals(style.getPropertyValue("--any-span-bottom"), "yes");
|
||||
assert_equals(style.getPropertyValue("--span-end-any"), "yes");
|
||||
assert_equals(style.getPropertyValue("--any-span-all"), "yes");
|
||||
}, "@container anchored(fallback: <position-area>) querying 'any'");
|
||||
</script>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Conditional Test: @container anchored query parsing - 'any' position-area</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-anchor-position-2/#anchored-container-queries">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/12610">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/css-conditional/container-queries/support/cq-testcommon.js"></script>
|
||||
<div style="container-name:name;container-type:anchored">
|
||||
<main id="cq-main"></main>
|
||||
</div>
|
||||
<script>
|
||||
test_cq_condition_known('anchored(fallback: any)');
|
||||
test_cq_condition_known('anchored(fallback: any any)');
|
||||
test_cq_condition_known('anchored(fallback: any top)');
|
||||
test_cq_condition_known('anchored(fallback: center any)');
|
||||
test_cq_condition_known('anchored(fallback: any self-start)');
|
||||
test_cq_condition_known('anchored(fallback: inline-end any)');
|
||||
|
||||
test_cq_condition_unknown('anchored(fallback: any none)');
|
||||
</script>
|
35
tests/wpt/tests/css/css-anchor-position/pseudo-element-implicit-anchor-center.html
vendored
Normal file
35
tests/wpt/tests/css/css-anchor-position/pseudo-element-implicit-anchor-center.html
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Anchor Positioning: Originating element implicit anchor for pseudo elements using anchor-center</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#implicit">
|
||||
<link rel="match" href="/css/reference/ref-filled-green-100px-square-only.html">
|
||||
<style>
|
||||
#anchor {
|
||||
display: flow-root;
|
||||
margin-left: -50px;
|
||||
margin-top: -50px;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
#anchor::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background: green;
|
||||
/* Should be centered inside #anchor */
|
||||
place-self: anchor-center;
|
||||
}
|
||||
#ref {
|
||||
margin-left: 50px;
|
||||
margin-top: 50px;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: red;
|
||||
}
|
||||
</style>
|
||||
<p>Test passes if there is a filled green square.</p>
|
||||
<div id="wrapper">
|
||||
<div id="anchor">
|
||||
<div id="ref"></div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,5 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Tests anchor positioned scrolling with nested scroll containers</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1">
|
||||
<link rel="author" href="mailto:xiaochengh@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-anchor-1/">
|
||||
<style>
|
||||
|
|
3
tests/wpt/tests/css/css-box/margin-trim/WEB_FEATURES.yml
vendored
Normal file
3
tests/wpt/tests/css/css-box/margin-trim/WEB_FEATURES.yml
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
features:
|
||||
- name: margin-trim
|
||||
files: "**"
|
|
@ -861,12 +861,9 @@ test_scope_invalidation(document.currentScript, () => {
|
|||
assert_green(c);
|
||||
let scope_rule = main.querySelector('style').sheet.cssRules[1];
|
||||
assert_true(scope_rule instanceof CSSScopeRule);
|
||||
// Note: relative selectors imply a :where(:scope) selector to the left,
|
||||
// which is observably different from an implicit '&' selector through
|
||||
// specificity.
|
||||
scope_rule.cssRules[0].selectorText = '> .b'; /* Still (0, 1, 0) */
|
||||
scope_rule.cssRules[1].selectorText = '& > .c'; /* (0, 3, 0) */
|
||||
scope_rule.cssRules[1].selectorText = '& > .c'; /* Still (0, 1, 0) */
|
||||
assert_green(b);
|
||||
assert_red(c);
|
||||
}, 'Relative selectors set with selectorText are relative to :scope, not &');
|
||||
assert_green(c);
|
||||
}, 'Relative selectors set with selectorText are relative to :scope and &');
|
||||
</script>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<title>@scope - nesting (&)</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-cascade-6/#scope-atrule">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-nesting-1/#nest-selector">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/9740">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<main id=main></main>
|
||||
|
@ -9,12 +10,18 @@
|
|||
<template id=test_nest_scope_end>
|
||||
<div>
|
||||
<style>
|
||||
@scope (.a) to (& > &) {
|
||||
* { z-index:1; }
|
||||
/* (& > .b) behaves like (:where(:scope) > .b), due & mapping to :where(:scope).*/
|
||||
@scope (.a) to (& > .b) {
|
||||
:scope { z-index:1; }
|
||||
}
|
||||
|
||||
/* Should not match, since <scope-end> refers to the scope itself. */
|
||||
@scope (.a) to (.b&) {
|
||||
:scope { z-index:42; }
|
||||
}
|
||||
</style>
|
||||
<div class=a> <!-- This scope is limited by the element below. -->
|
||||
<div class=a> <!-- This scope is limited by its own root. -->
|
||||
<div class="a b">
|
||||
<div class=b>
|
||||
<div id=below></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -25,7 +32,10 @@
|
|||
test((t) => {
|
||||
t.add_cleanup(() => main.replaceChildren());
|
||||
main.append(test_nest_scope_end.content.cloneNode(true));
|
||||
|
||||
let a = document.querySelector('.a');
|
||||
let b = document.querySelector('.a > .b');
|
||||
assert_equals(getComputedStyle(a).zIndex, '1');
|
||||
assert_equals(getComputedStyle(b).zIndex, 'auto');
|
||||
assert_equals(getComputedStyle(below).zIndex, 'auto');
|
||||
assert_equals(getComputedStyle(outside).zIndex, 'auto');
|
||||
}, 'Nesting-selector in <scope-end>');
|
||||
|
@ -97,16 +107,16 @@ test((t) => {
|
|||
<template id=test_inner_nest>
|
||||
<div>
|
||||
<style>
|
||||
@scope (.a) {
|
||||
& + & {
|
||||
@scope (#div) {
|
||||
& {
|
||||
z-index: 1;
|
||||
& {
|
||||
z-index: 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class=a>
|
||||
<div id=inner1 class=a></div>
|
||||
<div id=inner2 class=a></div>
|
||||
</div>
|
||||
<div id=div></div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -114,9 +124,8 @@ test((t) => {
|
|||
t.add_cleanup(() => main.replaceChildren());
|
||||
main.append(test_inner_nest.content.cloneNode(true));
|
||||
|
||||
assert_equals(getComputedStyle(inner1).zIndex, 'auto');
|
||||
assert_equals(getComputedStyle(inner2).zIndex, '1');
|
||||
}, 'Nesting-selector in the scope\'s <stylesheet>');
|
||||
assert_equals(getComputedStyle(div).zIndex, '2');
|
||||
}, 'Nested nesting-selectors within scope\'s <stylesheet> select inclusive descendants of the scope root');
|
||||
</script>
|
||||
|
||||
<template id=test_parent_in_pseudo_scope>
|
||||
|
@ -227,38 +236,6 @@ test((t) => {
|
|||
}, 'Parent pseudo class within scope-start');
|
||||
</script>
|
||||
|
||||
<template id=test_parent_pseudo_in_nested_scope_end>
|
||||
<div>
|
||||
<style>
|
||||
.a {
|
||||
/* Note that & in <scope-end> refers to <scope-start>,
|
||||
not the outer style rule. */
|
||||
@scope (&.b) to (&.c) {
|
||||
:scope, * { z-index: 1; }
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class="a b">
|
||||
<div class="a c">
|
||||
<div class="a b c">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
test((t) => {
|
||||
t.add_cleanup(() => main.replaceChildren());
|
||||
main.append(test_parent_pseudo_in_nested_scope_end.content.cloneNode(true));
|
||||
|
||||
let ab = document.querySelector('.a.b:not(.c)');
|
||||
let ac = document.querySelector('.a.c:not(.b)');
|
||||
let abc = document.querySelector('.a.b.c');
|
||||
assert_equals(getComputedStyle(ab).zIndex, '1');
|
||||
assert_equals(getComputedStyle(ac).zIndex, '1');
|
||||
assert_equals(getComputedStyle(abc).zIndex, 'auto', 'limit element is not in scope');
|
||||
}, 'Parent pseudo class within scope-end');
|
||||
</script>
|
||||
|
||||
<template id=test_parent_pseudo_in_nested_scope_body>
|
||||
<div>
|
||||
|
@ -621,7 +598,12 @@ test((t) => {
|
|||
main.append(test_insert_ampersand_rule_within_scope.content.cloneNode(true));
|
||||
assert_equals(getComputedStyle(child).color, 'rgb(255, 0, 0)');
|
||||
let scope_rule = main.querySelector('style').sheet.cssRules[0].cssRules[0];
|
||||
scope_rule.insertRule('& #child { color: green; }');
|
||||
// & does not add specificity - inserting it up front does nothing...
|
||||
scope_rule.insertRule('& #child { color: green; }', 0);
|
||||
assert_equals(getComputedStyle(child).color, 'rgb(255, 0, 0)');
|
||||
scope_rule.deleteRule(0);
|
||||
// ... But inserting it at the end makes it win by order of appearance.
|
||||
scope_rule.insertRule('& #child { color: green; }', scope_rule.cssRules.length);
|
||||
assert_equals(getComputedStyle(child).color, 'rgb(0, 128, 0)');
|
||||
}, 'Insert a nested style rule within @scope, &');
|
||||
</script>
|
||||
|
|
|
@ -79,15 +79,14 @@ test_scope_specificity(['@scope (#main) to (.b)', '.a'], '.a');
|
|||
test_scope_specificity(['@scope (#main, .foo, .bar)', '#a'], '#a');
|
||||
test_scope_specificity(['@scope (#main)', 'div.b'], 'div.b');
|
||||
test_scope_specificity(['@scope (#main)', ':scope .b'], '.a .b');
|
||||
// Inherit the specificity of the scope-start selector.
|
||||
test_scope_specificity(['@scope (#main)', '& .b'], '#main .b');
|
||||
// & behaves like :where(:scope) - No specificity is added.
|
||||
// See https://github.com/w3c/csswg-drafts/issues/9740
|
||||
test_scope_specificity(['@scope (#main)', '& .b'], ':where(#main) .b');
|
||||
test_scope_specificity(['@scope (#main)', 'div .b'], 'div .b');
|
||||
test_scope_specificity(['@scope (#main)', '@scope (.a)', '.b'], '.b');
|
||||
// Explicit `:scope` adds specficity.
|
||||
test_scope_specificity(['@scope (#main)', ':scope .b'], ':scope .b');
|
||||
// Using & in scoped style with implicit scope root matches the same elements
|
||||
// as `:scope`, but does not add any specificity.
|
||||
// https://github.com/w3c/csswg-drafts/issues/10196
|
||||
// & behaves like :where(:scope), even for implicit scope roots.
|
||||
test_scope_specificity(['@scope', '& .b'], ':where(:scope) .b', styleImplicit);
|
||||
// Using relative selector syntax does not add specificity
|
||||
test_scope_specificity(['@scope (#main)', '> .a'], ':where(#main) > .a');
|
||||
|
|
|
@ -91,6 +91,8 @@
|
|||
// Insert inner <a> with JS, since the parser can't produce this result.
|
||||
let inner_a = document.createElement('a');
|
||||
inner_a.setAttribute('href', '');
|
||||
inner_a.setAttribute('class', 'with_class_inner');
|
||||
inner_a.setAttribute('style', 'color: green');
|
||||
inner_a.textContent = 'Visited2';
|
||||
outer_visited.append(inner_a);
|
||||
</script>
|
||||
|
|
|
@ -186,7 +186,7 @@
|
|||
<template shadowrootmode=open>
|
||||
<main>
|
||||
Main
|
||||
<a href="">
|
||||
<a href="" class="with_class_outer">
|
||||
Visited1
|
||||
</a>
|
||||
</main>
|
||||
|
@ -198,6 +198,17 @@
|
|||
@scope (:visited) {
|
||||
:scope > :visited { background-color: coral; }
|
||||
}
|
||||
@scope (:visited) {
|
||||
:visited > :scope { background-color: lightgrey; }
|
||||
}
|
||||
@scope(.with_class_inner) {
|
||||
:visited > :scope { color: yellow; }
|
||||
}
|
||||
|
||||
/* Should match */
|
||||
@scope(.with_class_outer) {
|
||||
:scope > :visited { color: green; }
|
||||
}
|
||||
</style>
|
||||
</template>
|
||||
</div>
|
||||
|
@ -207,8 +218,10 @@
|
|||
// Insert the inner :visited link with JS, since the parser
|
||||
// can't produce this.
|
||||
let outer_a = visited_in_visited.shadowRoot.querySelector('main > a');
|
||||
|
||||
let inner_a = document.createElement('a');
|
||||
inner_a.setAttribute('href', '');
|
||||
inner_a.setAttribute('class', 'with_class_inner');
|
||||
inner_a.textContent = 'Visited2';
|
||||
outer_a.append(inner_a);
|
||||
}
|
||||
|
|
|
@ -444,50 +444,53 @@
|
|||
fuzzy_test_computed_color(`color-mix(in lab, lab(10 20 30 / 25%) 0%, lab(50 none none / 0.5))`, `lab(50 20 30 / 0.5)`);
|
||||
|
||||
// oklab()
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7))`, `oklab(0.3 0.4 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3) 25%, oklab(0.5 0.6 0.7))`, `oklab(0.4 0.5 0.6)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, 25% oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7))`, `oklab(0.4 0.5 0.6)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3), 25% oklab(0.5 0.6 0.7))`, `oklab(0.2 0.3 0.4)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7) 25%)`, `oklab(0.2 0.3 0.4)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3) 25%, oklab(0.5 0.6 0.7) 75%)`, `oklab(0.4 0.5 0.6)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3) 30%, oklab(0.5 0.6 0.7) 90%)`, `oklab(0.4 0.5 0.6)`); // Scale down > 100% sum.
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3) 12.5%, oklab(0.5 0.6 0.7) 37.5%)`, `oklab(0.4 0.5 0.6 / 0.5)`); // Scale up < 100% sum, causes alpha multiplication.
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3) 0%, oklab(0.5 0.6 0.7))`, `oklab(0.5 0.6 0.7)`);
|
||||
// Absence of colorspace means OKLab.
|
||||
for (const colorSpace of ["", "in oklab, "]) {
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7))`, `oklab(0.3 0.4 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3) 25%, oklab(0.5 0.6 0.7))`, `oklab(0.4 0.5 0.6)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}25% oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7))`, `oklab(0.4 0.5 0.6)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3), 25% oklab(0.5 0.6 0.7))`, `oklab(0.2 0.3 0.4)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3), oklab(0.5 0.6 0.7) 25%)`, `oklab(0.2 0.3 0.4)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3) 25%, oklab(0.5 0.6 0.7) 75%)`, `oklab(0.4 0.5 0.6)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3) 30%, oklab(0.5 0.6 0.7) 90%)`, `oklab(0.4 0.5 0.6)`); // Scale down > 100% sum.
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3) 12.5%, oklab(0.5 0.6 0.7) 37.5%)`, `oklab(0.4 0.5 0.6 / 0.5)`); // Scale up < 100% sum, causes alpha multiplication.
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3) 0%, oklab(0.5 0.6 0.7))`, `oklab(0.5 0.6 0.7)`);
|
||||
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / .4), oklab(0.5 0.6 0.7 / .8))`, `oklab(0.36666664 0.46666664 0.56666664 / 0.6)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / .4) 25%, oklab(0.5 0.6 0.7 / .8))`, `oklab(0.44285713 0.54285717 0.6428571 / 0.7)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, 25% oklab(0.1 0.2 0.3 / .4), oklab(0.5 0.6 0.7 / .8))`, `oklab(0.44285713 0.54285717 0.6428571 / 0.7)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / .4), 25% oklab(0.5 0.6 0.7 / .8))`, `oklab(0.26 0.36 0.46 / 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / .4), oklab(0.5 0.6 0.7 / .8) 25%)`, `oklab(0.26 0.36 0.46 / 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / .4) 25%, oklab(0.5 0.6 0.7 / .8) 75%)`, `oklab(0.44285713 0.54285717 0.6428571 / 0.7)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / .4) 30%, oklab(0.5 0.6 0.7 / .8) 90%)`, `oklab(0.44285713 0.54285717 0.6428571 / 0.7)`); // Scale down > 100% sum.
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / .4) 12.5%, oklab(0.5 0.6 0.7 / .8) 37.5%)`, `oklab(0.44285713 0.54285717 0.6428571 / 0.35)`); // Scale up < 100% sum, causes alpha multiplication.
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / .4) 0%, oklab(0.5 0.6 0.7 / .8))`, `oklab(0.5 0.6 0.7 / 0.8)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / .4), oklab(0.5 0.6 0.7 / .8))`, `oklab(0.36666664 0.46666664 0.56666664 / 0.6)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / .4) 25%, oklab(0.5 0.6 0.7 / .8))`, `oklab(0.44285713 0.54285717 0.6428571 / 0.7)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}25% oklab(0.1 0.2 0.3 / .4), oklab(0.5 0.6 0.7 / .8))`, `oklab(0.44285713 0.54285717 0.6428571 / 0.7)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / .4), 25% oklab(0.5 0.6 0.7 / .8))`, `oklab(0.26 0.36 0.46 / 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / .4), oklab(0.5 0.6 0.7 / .8) 25%)`, `oklab(0.26 0.36 0.46 / 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / .4) 25%, oklab(0.5 0.6 0.7 / .8) 75%)`, `oklab(0.44285713 0.54285717 0.6428571 / 0.7)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / .4) 30%, oklab(0.5 0.6 0.7 / .8) 90%)`, `oklab(0.44285713 0.54285717 0.6428571 / 0.7)`); // Scale down > 100% sum.
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / .4) 12.5%, oklab(0.5 0.6 0.7 / .8) 37.5%)`, `oklab(0.44285713 0.54285717 0.6428571 / 0.35)`); // Scale up < 100% sum, causes alpha multiplication.
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / .4) 0%, oklab(0.5 0.6 0.7 / .8))`, `oklab(0.5 0.6 0.7 / 0.8)`);
|
||||
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, transparent, oklab(0.3 0.4 0.5))`, 'oklab(0.3 0.4 0.5 / 0.5)');
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, transparent 10%, oklab(0.3 0.4 0.5))`, 'oklab(0.3 0.4 0.5 / 0.9)');
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / 0), oklab(0.3 0.4 0.5))`, 'oklab(0.3 0.4 0.5 / 0.5)');
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / 0) 10%, oklab(0.3 0.4 0.5))`, 'oklab(0.3 0.4 0.5 / 0.9)');
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}transparent, oklab(0.3 0.4 0.5))`, 'oklab(0.3 0.4 0.5 / 0.5)');
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}transparent 10%, oklab(0.3 0.4 0.5))`, 'oklab(0.3 0.4 0.5 / 0.9)');
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / 0), oklab(0.3 0.4 0.5))`, 'oklab(0.3 0.4 0.5 / 0.5)');
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / 0) 10%, oklab(0.3 0.4 0.5))`, 'oklab(0.3 0.4 0.5 / 0.9)');
|
||||
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, white, blue)`, `oklab(0.726 -0.016 -0.156)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, white 10%, blue)`, `oklab(0.507 -0.029 -0.28)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}white, blue)`, `oklab(0.726 -0.016 -0.156)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}white 10%, blue)`, `oklab(0.507 -0.029 -0.28)`);
|
||||
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(none none none), oklab(none none none))`, `oklab(none none none)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(none none none), oklab(0.5 0.6 0.7))`, `oklab(0.5 0.6 0.7)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3), oklab(none none none))`, `oklab(0.1 0.2 0.3)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 none), oklab(0.5 0.6 0.7))`, `oklab(0.3 0.4 0.7)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3), oklab(0.5 0.6 none))`, `oklab(0.3 0.4 0.3)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(none 0.2 0.3), oklab(0.5 none 0.7))`, `oklab(0.5 0.2 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / none), oklab(0.5 0.6 0.7))`, `oklab(0.3 0.4 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / none), oklab(0.5 0.6 0.7 / 0.5))`, `oklab(0.3 0.4 0.5 / 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / none), oklab(0.5 0.6 0.7 / none))`, `oklab(0.3 0.4 0.5 / none)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(none none none), oklab(none none none))`, `oklab(none none none)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(none none none), oklab(0.5 0.6 0.7))`, `oklab(0.5 0.6 0.7)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3), oklab(none none none))`, `oklab(0.1 0.2 0.3)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 none), oklab(0.5 0.6 0.7))`, `oklab(0.3 0.4 0.7)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3), oklab(0.5 0.6 none))`, `oklab(0.3 0.4 0.3)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(none 0.2 0.3), oklab(0.5 none 0.7))`, `oklab(0.5 0.2 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / none), oklab(0.5 0.6 0.7))`, `oklab(0.3 0.4 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / none), oklab(0.5 0.6 0.7 / 0.5))`, `oklab(0.3 0.4 0.5 / 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / none), oklab(0.5 0.6 0.7 / none))`, `oklab(0.3 0.4 0.5 / none)`);
|
||||
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / 25%) 0%, oklab(0.5 none none / none))`, `oklab(0.5 0.2 0.3 / 0.25)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / 25%) 0%, oklab(none 0.5 none / none))`, `oklab(0.1 0.5 0.3 / 0.25)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / 25%) 0%, oklab(none none 0.5 / none))`, `oklab(0.1 0.2 0.5 / 0.25)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / 25%) 0%, oklab(0.5 0.5 none / none))`, `oklab(0.5 0.5 0.3 / 0.25)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / 25%) 0%, oklab(none none none / 0.5))`, `oklab(0.1 0.2 0.3 / 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(in oklab, oklab(0.1 0.2 0.3 / 25%) 0%, oklab(0.5 none none / 0.5))`, `oklab(0.5 0.2 0.3 / 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / 25%) 0%, oklab(0.5 none none / none))`, `oklab(0.5 0.2 0.3 / 0.25)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / 25%) 0%, oklab(none 0.5 none / none))`, `oklab(0.1 0.5 0.3 / 0.25)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / 25%) 0%, oklab(none none 0.5 / none))`, `oklab(0.1 0.2 0.5 / 0.25)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / 25%) 0%, oklab(0.5 0.5 none / none))`, `oklab(0.5 0.5 0.3 / 0.25)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / 25%) 0%, oklab(none none none / 0.5))`, `oklab(0.1 0.2 0.3 / 0.5)`);
|
||||
fuzzy_test_computed_color(`color-mix(${colorSpace}oklab(0.1 0.2 0.3 / 25%) 0%, oklab(0.5 none none / 0.5))`, `oklab(0.5 0.2 0.3 / 0.5)`);
|
||||
}
|
||||
|
||||
for (const colorSpace of [ "srgb", "srgb-linear", "display-p3", "display-p3-linear", "a98-rgb", "prophoto-rgb", "rec2020", "xyz", "xyz-d50", "xyz-d65" ]) {
|
||||
const resultColorSpace = colorSpace == "xyz" ? "xyz-d65" : colorSpace;
|
||||
|
|
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