diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-001.html.ini new file mode 100644 index 00000000000..1b564067500 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-001.html.ini @@ -0,0 +1,2 @@ +[border-radius-side-shorthands-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-002.html.ini new file mode 100644 index 00000000000..fec1a554e25 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-002.html.ini @@ -0,0 +1,2 @@ +[border-radius-side-shorthands-002.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-001.html.ini new file mode 100644 index 00000000000..c2e29dd542a --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-002.html.ini new file mode 100644 index 00000000000..10165f92f79 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-002.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-003.html.ini new file mode 100644 index 00000000000..9f0d557bdd8 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-003.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-003.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-004.html.ini new file mode 100644 index 00000000000..5d4a5ed69c8 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-004.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-004.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-001.html.ini new file mode 100644 index 00000000000..9b7348a115d --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-bottom-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-left-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-left-001.html.ini new file mode 100644 index 00000000000..3185eea7488 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-left-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-bottom-left-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-001.html.ini new file mode 100644 index 00000000000..80e6f10fb4c --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-bottom-right-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-002.html.ini new file mode 100644 index 00000000000..21a63159e98 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-bottom-right-002.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-left-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-left-001.html.ini new file mode 100644 index 00000000000..47db92a0452 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-left-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-left-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-right-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-right-001.html.ini new file mode 100644 index 00000000000..ecf516cab6c --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-right-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-right-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-001.html.ini new file mode 100644 index 00000000000..959fb5ff2c7 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-001.html.ini new file mode 100644 index 00000000000..0bf4ca03b2b --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-left-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-002.html.ini new file mode 100644 index 00000000000..2862867aba1 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-left-002.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-001.html.ini new file mode 100644 index 00000000000..dcbd8a120b9 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-left-bottom-right-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-002.html.ini new file mode 100644 index 00000000000..6ed5f9eb0f4 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-left-bottom-right-002.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-003.html.ini new file mode 100644 index 00000000000..0fee30dcf08 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-003.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-left-bottom-right-003.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-001.html.ini new file mode 100644 index 00000000000..56514e01ab0 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-right-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-001.html.ini new file mode 100644 index 00000000000..7556fd29358 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-right-bottom-left-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-002.html.ini new file mode 100644 index 00000000000..d7bc78da1b0 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-right-bottom-left-002.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-003.html.ini new file mode 100644 index 00000000000..67027c4cdf9 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-003.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-right-bottom-left-003.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-left-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-left-001.html.ini new file mode 100644 index 00000000000..620c2e6df45 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-left-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-round-bottom-left-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-001.html.ini new file mode 100644 index 00000000000..920cfed142f --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-round-bottom-right-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-002.html.ini new file mode 100644 index 00000000000..2dbd0a5f0f7 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-round-bottom-right-002.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-001.html.ini new file mode 100644 index 00000000000..56a54757ecd --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-round-top-left-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-002.html.ini new file mode 100644 index 00000000000..62e84aa90df --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-round-top-left-002.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-top-right-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-top-right-001.html.ini new file mode 100644 index 00000000000..58dd8ab9997 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-borders/tentative/corner-shape/corner-shape-round-top-right-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-round-top-right-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-cascade/scope-implicit-external.html.ini b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-implicit-external.html.ini index 915c74ee9e1..a1af9423136 100644 --- a/tests/wpt/meta-legacy-layout/css/css-cascade/scope-implicit-external.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-implicit-external.html.ini @@ -1,3 +1,9 @@ [scope-implicit-external.html] [@scope with external stylesheet] expected: FAIL + + [@scope with external stylesheet through link element] + expected: FAIL + + [@scope with external stylesheet through @import] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-cascade/scope-proximity.html.ini b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-proximity.html.ini index a7da73bd87c..d17662333ff 100644 --- a/tests/wpt/meta-legacy-layout/css/css-cascade/scope-proximity.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-proximity.html.ini @@ -7,3 +7,6 @@ [Specificity wins over proximity] expected: FAIL + + [Identical root with further proximity is not ignored] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-cascade/scope-shadow-sharing.html.ini b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-shadow-sharing.html.ini new file mode 100644 index 00000000000..ba5f030033e --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-shadow-sharing.html.ini @@ -0,0 +1,2 @@ +[scope-shadow-sharing.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-cascade/scope-specificity.html.ini b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-specificity.html.ini index f2161e65309..cf0b84e5101 100644 --- a/tests/wpt/meta-legacy-layout/css/css-cascade/scope-specificity.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-specificity.html.ini @@ -22,3 +22,36 @@ [@scope (#main) { @scope (.a) { .b { } } }] expected: FAIL + + [@scope (#main) { .b { } } and .b] + expected: FAIL + + [@scope (#main) to (.b) { .a { } } and .a] + expected: FAIL + + [@scope (#main, .foo, .bar) { #a { } } and #a] + expected: FAIL + + [@scope (#main) { div.b { } } and div.b] + expected: FAIL + + [@scope (#main) { :scope .b { } } and .a .b] + expected: FAIL + + [@scope (#main) { & .b { } } and #main .b] + expected: FAIL + + [@scope (#main) { div .b { } } and div .b] + expected: FAIL + + [@scope (#main) { @scope (.a) { .b { } } } and .b] + expected: FAIL + + [@scope (#main) { :scope .b { } } and :scope .b] + expected: FAIL + + [@scope { & .b { } } and :scope .b] + expected: FAIL + + [@scope (#main) { > .a { } } and :where(#main) > .a] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-pseudo/first-letter-width-2.html.ini b/tests/wpt/meta-legacy-layout/css/css-pseudo/first-letter-width-2.html.ini new file mode 100644 index 00000000000..4ecd64faef3 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-pseudo/first-letter-width-2.html.ini @@ -0,0 +1,2 @@ +[first-letter-width-2.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-030.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-030.html.ini new file mode 100644 index 00000000000..f2e621cd9b7 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-030.html.ini @@ -0,0 +1,2 @@ +[line-breaking-030.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-031.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-031.html.ini new file mode 100644 index 00000000000..0aaf88b0f58 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-031.html.ini @@ -0,0 +1,2 @@ +[line-breaking-031.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-032.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-032.html.ini new file mode 100644 index 00000000000..0e7824acbb5 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-032.html.ini @@ -0,0 +1,2 @@ +[line-breaking-032.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-spacing-trim-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-spacing-trim-computed.html.ini index 5fab60bb026..58cb15717b5 100644 --- a/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-spacing-trim-computed.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-spacing-trim-computed.html.ini @@ -28,3 +28,6 @@ [Property text-spacing-trim value 'trim-start'] expected: FAIL + + [Property text-spacing-trim value 'trim-both'] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-spacing-trim-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-spacing-trim-valid.html.ini index 48ded869ba1..4061c795842 100644 --- a/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-spacing-trim-valid.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-spacing-trim-valid.html.ini @@ -28,3 +28,6 @@ [e.style['text-spacing-trim'\] = "trim-start" should set the property value] expected: FAIL + + [e.style['text-spacing-trim'\] = "trim-both" should set the property value] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/webkit-text-stroke-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/webkit-text-stroke-computed.html.ini deleted file mode 100644 index 6b4372771dd..00000000000 --- a/tests/wpt/meta-legacy-layout/css/css-text/parsing/webkit-text-stroke-computed.html.ini +++ /dev/null @@ -1,9 +0,0 @@ -[webkit-text-stroke-computed.html] - [Property -webkit-text-stroke value 'green'] - expected: FAIL - - [Property -webkit-text-stroke value '3px'] - expected: FAIL - - [Property -webkit-text-stroke value '1px red'] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/transform-with-sign-function.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-with-sign-function.html.ini new file mode 100644 index 00000000000..7d7a21ed7ce --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-with-sign-function.html.ini @@ -0,0 +1,27 @@ +[transform-with-sign-function.html] + [skew(calc(sign(1em - 1px) * 2deg), calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to skew(2deg, 2deg)] + expected: FAIL + + [skewX(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to skewX(2deg)] + expected: FAIL + + [skewY(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to skewY(2deg)] + expected: FAIL + + [matrix(calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2)) should be used-value-equivalent to matrix(2, 2, 2, 2, 2, 2)] + expected: FAIL + + [matrix3d(calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2),calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2)) should be used-value-equivalent to matrix3d(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)] + expected: FAIL + + [rotate(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to rotate(2deg)] + expected: FAIL + + [rotateX(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to rotateX(2deg)] + expected: FAIL + + [rotateY(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to rotateY(2deg)] + expected: FAIL + + [rotateZ(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to rotateZ(2deg)] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/cssom/adoptedstylesheets-modify-array-and-sheet.html.ini b/tests/wpt/meta-legacy-layout/css/cssom/adoptedstylesheets-modify-array-and-sheet.html.ini new file mode 100644 index 00000000000..97401f0fd7c --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/cssom/adoptedstylesheets-modify-array-and-sheet.html.ini @@ -0,0 +1,2 @@ +[adoptedstylesheets-modify-array-and-sheet.html] + expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini deleted file mode 100644 index d6188c03424..00000000000 --- a/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[traverse_the_history_4.html] - [Multiple history traversals, last would be aborted] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini index 25d9964f057..e5994e21efc 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini @@ -1,4 +1,5 @@ [iframe_sandbox_popups_escaping-1.html] type: testharness + expected: CRASH [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini index b83d68ddd33..68203d2a082 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini @@ -1,3 +1,4 @@ [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 diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini index 6f7461b9472..53b0601e68c 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini @@ -1,4 +1,5 @@ [iframe_sandbox_popups_nonescaping-1.html] type: testharness + expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini index 76e34322dca..f2378357bcc 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini @@ -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 diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini new file mode 100644 index 00000000000..7682a4830bf --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini @@ -0,0 +1,4 @@ +[reparent-form-during-planned-navigation-task.html] + expected: TIMEOUT + [reparent-form-during-planned-navigation-task] + expected: TIMEOUT diff --git a/tests/wpt/meta/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.html.ini similarity index 75% rename from tests/wpt/meta/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.tentative.html.ini rename to tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.html.ini index 12bb3b1110f..0d6dfa4527a 100644 --- a/tests/wpt/meta/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.tentative.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.html.ini @@ -1,4 +1,4 @@ -[show-picker-cross-origin-iframe.tentative.html] +[show-picker-cross-origin-iframe.html] [Test showPicker() called from cross-origin iframe 1] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini deleted file mode 100644 index 752f99a106e..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[async-script.html?default] - -[async-script.html?reload] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini new file mode 100644 index 00000000000..fc0233f5241 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini @@ -0,0 +1,3 @@ +[module-delayed.html] + [async document.write in a module] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/resource-timing/test_resource_timing.html.ini b/tests/wpt/meta-legacy-layout/resource-timing/test_resource_timing.html.ini index 86a2572b9b8..12581463c49 100644 --- a/tests/wpt/meta-legacy-layout/resource-timing/test_resource_timing.html.ini +++ b/tests/wpt/meta-legacy-layout/resource-timing/test_resource_timing.html.ini @@ -68,3 +68,6 @@ [PerformanceEntry has correct protocol attribute (xmlhttprequest)] expected: FAIL + + [PerformanceEntry has correct name, initiatorType, startTime, and duration (img)] + expected: FAIL diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json index c16bd3b5bf6..38d797895ce 100644 --- a/tests/wpt/meta/MANIFEST.json +++ b/tests/wpt/meta/MANIFEST.json @@ -584,35 +584,35 @@ }, "css-anchor-position": { "anchor-scroll-composited-scrolling-001-crash.html": [ - "4dd9bad60eae27737e7b69739dc8f6629204c8bb", + "e8ecde3a3e36702d8833c6caa0c94782243edba4", [ null, {} ] ], "anchor-scroll-composited-scrolling-002-crash.html": [ - "80dabbb6661e56aa9450574d3c545668946bda09", + "3300346474347e9dc1869cc50ca214c8a17557c0", [ null, {} ] ], "anchor-scroll-composited-scrolling-003-crash.html": [ - "f46d902ffee7ce2867a1d422d25973bca7dc6dc6", + "ea15a9e2fcd845677fe4fb99df35e45cbaa2b325", [ null, {} ] ], "anchor-scroll-composited-scrolling-004-crash.html": [ - "ee5ad2f41ae3a7b99f65c38de00e03595c380e9f", + "97e66bea26730b6d09e205d7ea5707597c15614e", [ null, {} ] ], "anchor-scroll-composited-scrolling-005-crash.html": [ - "c5e44a79e797316249fa46e1e870e26ca9a13a5e", + "0c6bf68e60c29f0a5cc47c44e02a601f67f0669d", [ null, {} @@ -3916,6 +3916,20 @@ null, {} ] + ], + "transition-to-none-crash-001.html": [ + "b7eaca3f0b19f4e62809abd6f7af38ff8fa57d22", + [ + null, + {} + ] + ], + "transition-to-none-crash-002.html": [ + "45548f809a3faa82921b447f98e08c3048e9aeb3", + [ + null, + {} + ] ] } }, @@ -24386,6 +24400,13 @@ {} ] ], + "pointerevent_predicted_coalesced_targets-manual.html": [ + "b46f743647335cfd8fa5cfa373d49b403e4f12f6", + [ + null, + {} + ] + ], "pointerevent_touch-action-rotated-divs_touch-manual.html": [ "194e933f91ab068ff3fb2abc7dd064316380de68", [ @@ -32982,6 +33003,19 @@ {} ] ], + "page-margin-auto-and-non-zero-print.html": [ + "6287c2a1032c791d78fa9fb64f99e1c4335f1543", + [ + null, + [ + [ + "/css/css-page/page-margin-auto-and-non-zero-print-ref.html", + "==" + ] + ], + {} + ] + ], "page-margin-auto-negative-print.tentative.html": [ "452056a1003e7b9d7a56601e72683d3d6f60f2a0", [ @@ -121812,7 +121846,7 @@ ] ], "anchor-position-circular.html": [ - "85fca57421cb1380b8b83c1fe778cefb1e14ce79", + "a0147ecc528646d4e74c25a428367cbea9fefbd6", [ null, [ @@ -121838,7 +121872,7 @@ ] ], "anchor-position-top-layer-001.html": [ - "a8513bb74ca02918d8cdc274669d583f450a2318", + "f40cc0dccf3ccbef010629ebc809229ba83c9b45", [ null, [ @@ -121851,7 +121885,7 @@ ] ], "anchor-position-top-layer-002.html": [ - "9ce0b8e5f9fe50bc6d38829ae7f43f98a40256cf", + "11885251ec4189659b05d4d31cccd615eace9171", [ null, [ @@ -121864,7 +121898,7 @@ ] ], "anchor-position-top-layer-003.html": [ - "3bc815af0cab70a754f7f353e496715e147812bd", + "eb2d2b3fbbc115e9b73fad0b2107d752c8963ad4", [ null, [ @@ -121877,7 +121911,7 @@ ] ], "anchor-position-top-layer-004.html": [ - "ad0a7b8b32f278d8a2f57a9e60e2bca6a0e1cf1f", + "5fa1c33b12e7d85de13128d82a5342a170c5f392", [ null, [ @@ -121890,7 +121924,7 @@ ] ], "anchor-position-top-layer-005.html": [ - "51aa482aee52eb3766caef80380c854e94866de3", + "418178e5418179f7b417e800ecec14a73cc8739c", [ null, [ @@ -121903,7 +121937,7 @@ ] ], "anchor-position-top-layer-006.html": [ - "a3b9e63c06b59b9f308fd221c8619fda18ef65ac", + "c235eccc160b8442295182901c895d286fa0fff9", [ null, [ @@ -121916,7 +121950,7 @@ ] ], "anchor-scroll-001.html": [ - "b9dfc56e2effe4d9e9c6d48002dd052ae64f6b4e", + "d0b42cd6202ecc3baec9bb17b59a7ca282d04247", [ null, [ @@ -121929,7 +121963,7 @@ ] ], "anchor-scroll-chained-001.html": [ - "3a86da5f709349926d8139ba57fb9729c282d218", + "d853ad39a39d7caf690491ca995e839efb384b2c", [ null, [ @@ -121942,7 +121976,7 @@ ] ], "anchor-scroll-chained-002.html": [ - "38dadba5c83996acfcc2dc1e77157ae4ca0f5490", + "148dedf9488eb3f599e1e5f270ce4ea07cb1ac6b", [ null, [ @@ -121955,7 +121989,7 @@ ] ], "anchor-scroll-chained-003.html": [ - "6352ebbfb680dc9decc01511730075a3936f64d6", + "5f4c0ff30060455573facb3ae224ab8a3e147557", [ null, [ @@ -121968,7 +122002,7 @@ ] ], "anchor-scroll-chained-004.html": [ - "b31519f5803e247659937a6e9874d50643c74c1e", + "454abf63b1b1af062c2c6c132acff4c38db8058f", [ null, [ @@ -121981,7 +122015,7 @@ ] ], "anchor-scroll-chained-fallback.html": [ - "221df77b063910a5e2715031157c797a69632dc5", + "ab2090e0048fe8af38e76f34ed7277d945bb18ad", [ null, [ @@ -121994,7 +122028,7 @@ ] ], "anchor-scroll-composited-scrolling-006.html": [ - "49c6dc780c785f7dcf52aadd0d536c55ee72c2c4", + "8a53ae24e5b5a203a875219263c12ef40d5c9c56", [ null, [ @@ -122007,7 +122041,7 @@ ] ], "anchor-scroll-fixedpos-002.html": [ - "1a05d8b93a1049616592cd09e656eb2bf102ecf0", + "970fb45af0c8208aa509f554619326254f97ce18", [ null, [ @@ -122020,7 +122054,7 @@ ] ], "anchor-scroll-fixedpos.html": [ - "7923ed789de055a8d7a7e1b99a549f022499832d", + "09ad897b3f9bf4b7f64bfe99e70a183203f957b7", [ null, [ @@ -122033,7 +122067,7 @@ ] ], "anchor-scroll-nested.html": [ - "291fe0d7103fa310f48a4ea3a3963b98ccdea361", + "ad39224ae41e82159721f139143dfa7ca47350a6", [ null, [ @@ -122046,7 +122080,7 @@ ] ], "anchor-scroll-overflow-hidden.html": [ - "b57e39956bbbb3f268b25d3dabedb6c97ef22dd0", + "d26e48dc67b4805853d0628f89662c1afbe09ace", [ null, [ @@ -122059,7 +122093,7 @@ ] ], "anchor-scroll-position-try-012.html": [ - "7c0b381999d303dcefd8dccbdcad60d9c4b1d29d", + "5e3bf50a6e714ea9acfad17761a23053d10a0fe9", [ null, [ @@ -122085,7 +122119,7 @@ ] ], "anchor-scroll-to-sticky-001.html": [ - "a6c3b0572533a2cb689ce23655f0b16ff47ea3b9", + "9ce92592901d9f72c308d38fed67b90c1184612d", [ null, [ @@ -122098,7 +122132,7 @@ ] ], "anchor-scroll-to-sticky-002.html": [ - "e2d91fe4dd69664f9504cd6ba93d33e40617ee14", + "f3e517c4312f90f7d49966a36608b4cb62726497", [ null, [ @@ -122111,7 +122145,7 @@ ] ], "anchor-scroll-to-sticky-003.html": [ - "b40f5cc8d519f023176c803ad1cf9e475f6153d9", + "ac5e1c3c692e6eaa93789bd8145fb27bbe61d916", [ null, [ @@ -122124,7 +122158,7 @@ ] ], "anchor-scroll-to-sticky-004.html": [ - "30325ce1e0fa146af4f082481f90569dda2dff19", + "ab96639dab06edd71af496546609b48d555b9301", [ null, [ @@ -122137,7 +122171,7 @@ ] ], "anchor-scroll-update-001.html": [ - "aa49fbcc6db54a74e6899ff8b1c2fb7a03d851ab", + "3ff32ba73954c62beef10f5e8c8640593ef83fd6", [ null, [ @@ -122163,7 +122197,7 @@ ] ], "anchor-scroll-update-003.html": [ - "2e1532badfac6983d1727b19f4d597b1be54b171", + "e41736dbf7117ee109689d2be3e84014693551b7", [ null, [ @@ -122176,7 +122210,7 @@ ] ], "anchor-scroll-update-004.html": [ - "87138fb2d92a8da80e19c2c6a546de2f75b9c6fe", + "651b262d14fc31e1b0654a70c63886cf2d0fd1a1", [ null, [ @@ -122189,7 +122223,7 @@ ] ], "anchor-scroll-update-005.html": [ - "37874bba5528a1c3b9345801bdfd7cedd463759c", + "9c32bda6fcc62089a58071d99936cfbffb863f56", [ null, [ @@ -122202,7 +122236,7 @@ ] ], "anchor-scroll-update-006.html": [ - "81defee7cf4c3d8a0dfa03391b4d52becbb585db", + "d896d9ca53747b582b0c5de0bdb7ac899c9cd1d8", [ null, [ @@ -122215,7 +122249,7 @@ ] ], "anchor-scroll-update-007.html": [ - "33050348c4d2908f080868cce0d08311352a6eb2", + "01d568fff8df70a9d497ce1bac7885b9be7870bc", [ null, [ @@ -122228,7 +122262,7 @@ ] ], "anchor-scroll-vlr.html": [ - "76186f9cad7daa74a3e9faa31db12df5d020979d", + "dd6d94b23e1b2ebc14c07599e1133d45c302c03b", [ null, [ @@ -122241,7 +122275,7 @@ ] ], "anchor-scroll-vrl.html": [ - "13ea8b37abdd702de8e45cae81de0d29cc400430", + "a1ee7dd6206bfba1a7c108a5b3181aef8d614484", [ null, [ @@ -132563,7 +132597,377 @@ ], {} ] - ] + ], + "tentative": { + "border-radius-side-shorthands": { + "border-radius-side-shorthands-001.html": [ + "f85e288305862716657f1c7289837f2a2da6b728", + [ + null, + [ + [ + "/css/css-borders/reference/border-radius-side-shorthands-ref.html", + "==" + ] + ], + {} + ] + ], + "border-radius-side-shorthands-002.html": [ + "4a716041c4fe8b54da361cb293e5d4e86e9ee3e3", + [ + null, + [ + [ + "/css/css-borders/reference/border-radius-side-shorthands-ref.html", + "==" + ] + ], + {} + ] + ] + }, + "corner-shape": { + "corner-shape-angle-001.html": [ + "7ba0794c5a857d2430a6fc0f5689dbf6c883c0ad", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-002.html": [ + "8c111cb6bd0130760f612abd54407c66982b3d31", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-003.html": [ + "fa9f3ff64836c5424f5825ea99c890a4530875c5", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-004.html": [ + "ee9d7d3b8924fbd7db37d687a3c514f418cea818", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-bottom-001.html": [ + "1ffb03dd1a83be077ebe06f49fc3de4dc136101e", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-bottom-001-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-bottom-left-001.html": [ + "6125dc2c4d577e47abf4c45ae65bd90ef3535b4a", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-bottom-left-001-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-bottom-right-001.html": [ + "6e55000fd4ea49c4f3a6a2cc5d5c4c333f67ed56", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-bottom-right-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-bottom-right-002.html": [ + "147752da234fee1d08790ad7cd99e71b8414cb04", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-bottom-right-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-left-001.html": [ + "75f280175b0f1c3f97f8d0eb660515cf0d8175e6", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-left-001-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-right-001.html": [ + "2f6ca76697c9a685d705f11875d62eeabc896960", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-right-001-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-top-001.html": [ + "dd8226631022e41a739b7dcb443b76382e931924", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-top-001-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-top-left-001.html": [ + "6f8c5ddb93b09033c00a0ba641c2af9fcc8bda9b", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-top-left-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-top-left-002.html": [ + "34e2b68519681950e85c5ce309d3f3afee8b7cf7", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-top-left-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-top-left-bottom-right-001.html": [ + "fefd25ca7515ff1d7e2a774bcdbefb7835ab3824", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-top-left-bottom-right-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-top-left-bottom-right-002.html": [ + "c850f8d9b62cdbdab04ace49a4e95d354b913179", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-top-left-bottom-right-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-top-left-bottom-right-003.html": [ + "73bed5ebdad02a5b892bb73ad627b846a5c88999", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-top-left-bottom-right-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-top-right-001.html": [ + "9081efe556d0ea98810a3861bba2645a07bbb9db", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-top-right-001-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-top-right-bottom-left-001.html": [ + "190d2e15d975d223c112b23673c138980b5253de", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-top-right-bottom-left-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-top-right-bottom-left-002.html": [ + "51e5bd13a8873afdd820c7315ac8d8019927f413", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-top-right-bottom-left-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-angle-top-right-bottom-left-003.html": [ + "a2fc196249b6ba91bbf2695b69cd318ab0be4d36", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-angle-top-right-bottom-left-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-round-bottom-left-001.html": [ + "33c982a057f6ccaa5ee85d35570cb11a5f750332", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-round-bottom-left-001-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-round-bottom-right-001.html": [ + "720565d444262b29435fbad0a3858efabf299cca", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-round-bottom-right-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-round-bottom-right-002.html": [ + "cc96662bc3b435e67050db0728d0267f54c3a084", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-round-bottom-right-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-round-top-left-001.html": [ + "6e5c58bd4c3cf8ba9162fc1e600669faacc91b48", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-round-top-left-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-round-top-left-002.html": [ + "11fe4be8fd027339e4969cb7fc636eb56474cf9a", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-round-top-left-ref.html", + "==" + ] + ], + {} + ] + ], + "corner-shape-round-top-right-001.html": [ + "6115c934a489a09f258343a7796be8b220b6fed6", + [ + null, + [ + [ + "/css/css-borders/reference/corner-shape-round-top-right-001-ref.html", + "==" + ] + ], + {} + ] + ] + } + } }, "css-box": { "margin-trim": { @@ -144623,6 +145027,19 @@ {} ] ], + "scope-shadow-sharing.html": [ + "e078721e0f5a07ab90a62495f0632644fb12d754", + [ + null, + [ + [ + "/css/css-cascade/scope-shadow-sharing-ref.html", + "==" + ] + ], + {} + ] + ], "scope-visited.html": [ "392aeb667b201072ff1a70aec745f75019cff54b", [ @@ -196057,6 +196474,32 @@ {} ] ], + "text-box-trim-block-in-inline-start-001.html": [ + "9d14a08bc2ab509955cf5be11cc797ff9f59e48c", + [ + null, + [ + [ + "/css/css-inline/text-box-trim/text-box-trim-block-in-inline-start-001-ref.html", + "==" + ] + ], + {} + ] + ], + "text-box-trim-block-in-inline-start-002.html": [ + "67bfa343781cf35b3ce74297b35ee09c0f89fc05", + [ + null, + [ + [ + "/css/css-inline/text-box-trim/text-box-trim-block-in-inline-start-001-ref.html", + "==" + ] + ], + {} + ] + ], "text-box-trim-dynamic-001.html": [ "5cd25060934ef6a73aa0d01141adde8296103c08", [ @@ -196186,6 +196629,19 @@ {} ] ], + "text-box-trim-end-empty-line-001.html": [ + "30061b208d6b6b51bd917da180a9a44608392f1c", + [ + null, + [ + [ + "/css/css-inline/text-box-trim/text-box-trim-end-empty-line-001-ref.html", + "==" + ] + ], + {} + ] + ], "text-box-trim-float-clear-br-001.html": [ "985ae60c46db62bb01f8c886b11e4cb3289b48bc", [ @@ -196199,6 +196655,19 @@ {} ] ], + "text-box-trim-float-clear-br-002.html": [ + "5798525e476447347d36030319c024fcdc2db820", + [ + null, + [ + [ + "/css/css-inline/text-box-trim/text-box-trim-float-clear-br-002-ref.html", + "==" + ] + ], + {} + ] + ], "text-box-trim-float-start-001.html": [ "99e4736baf09257d4f14577598f4f8d531c7c681", [ @@ -205994,6 +206463,19 @@ } ] ], + "mask-mode-luminance-with-mask-size.html": [ + "c618981585a123c1899d3218b352dbff9908b064", + [ + null, + [ + [ + "/css/css-masking/mask-image/mask-mode-luminance-with-mask-size-ref.html", + "==" + ] + ], + {} + ] + ], "mask-mode-to-mask-type-svg.html": [ "f3719c7098514250d1325016d27faf399ebe2cb7", [ @@ -219548,6 +220030,45 @@ ], {} ] + ], + "registered-property-computation-color-001.html": [ + "d694908cdd1478a3c41e9f90cdd5eeb956ca78ad", + [ + null, + [ + [ + "/css/css-properties-values-api/registered-property-computation-color-001-ref.html", + "==" + ] + ], + {} + ] + ], + "registered-property-computation-color-002.html": [ + "041697695e3478dfe8429e2354fc84547ee0e7cd", + [ + null, + [ + [ + "/css/css-properties-values-api/registered-property-computation-color-001-ref.html", + "==" + ] + ], + {} + ] + ], + "registered-property-computation-color-003.html": [ + "66092edf41d125c0c77914df4309c818fb524491", + [ + null, + [ + [ + "/css/css-properties-values-api/registered-property-computation-color-003-ref.html", + "==" + ] + ], + {} + ] ] }, "css-pseudo": { @@ -220243,6 +220764,19 @@ {} ] ], + "first-letter-width-2.html": [ + "e7d01afe47291b507179ca4f984e710d06ee526e", + [ + null, + [ + [ + "/css/css-pseudo/first-letter-width-2-ref.html", + "==" + ] + ], + {} + ] + ], "first-letter-width.html": [ "fedf917c62a1c34c054b7484594ced16960c4c17", [ @@ -222864,6 +223398,19 @@ {} ] ], + "no-break-opportunity-at-end.html": [ + "83a05b3dce46fd5bf1963c1f85c4119fdff0498b", + [ + null, + [ + [ + "/css/css-ruby/break-within-bases/no-break-opportunity-at-end-ref.html", + "==" + ] + ], + {} + ] + ], "text-wrap.tentative.html": [ "b2acd519a60dab9660122a8586978138e6d1f065", [ @@ -240764,6 +241311,45 @@ {} ] ], + "line-breaking-030.html": [ + "9cf0b3d5c418a7a5350c2030d700cb14aedb97a3", + [ + null, + [ + [ + "/css/css-text/line-breaking/reference/line-breaking-030-ref.html", + "==" + ] + ], + {} + ] + ], + "line-breaking-031.html": [ + "c8e34574165faee1b7b3aa0e5a56607980dc94f6", + [ + null, + [ + [ + "/css/css-text/line-breaking/reference/line-breaking-030-ref.html", + "==" + ] + ], + {} + ] + ], + "line-breaking-032.html": [ + "2c79f5955f405fe01a67578a3990ff696fbde59b", + [ + null, + [ + [ + "/css/css-text/line-breaking/reference/line-breaking-030-ref.html", + "==" + ] + ], + {} + ] + ], "line-breaking-atomic-001.html": [ "e071378c95fd436484a3056ecb2ba6ff35ddbaae", [ @@ -250649,6 +251235,23 @@ {} ] ], + "text-wrap-balance-005.html": [ + "cf5789cd5ba256b077dfed685638586d042c6249", + [ + null, + [ + [ + "/css/css-text/white-space/reference/text-wrap-balance-004-a-ref.html", + "==" + ], + [ + "/css/css-text/white-space/reference/text-wrap-balance-004-b-ref.html", + "==" + ] + ], + {} + ] + ], "text-wrap-balance-align-001.html": [ "b27823b72a4dfec983e0e0eae7a5436d9f958b74", [ @@ -327301,6 +327904,19 @@ {} ] ], + "block-in-inline.html": [ + "6fbde753b53dceee659fa784600835eebdfe2fa7", + [ + null, + [ + [ + "/html/rendering/widgets/button-layout/block-in-inline-ref.html", + "==" + ] + ], + {} + ] + ], "display-none-or-contents.html": [ "8f0ad3ab29c9d976bf18e2f180d4862d41aebb3e", [ @@ -330368,7 +330984,7 @@ ] ], "popover-anchor-display.tentative.html": [ - "21de8fd58e611be62afb904837bba1c8f30f64ab", + "1475c7de7283f3f6cb21ae40f1ae2852193e63d3", [ null, [ @@ -339160,6 +339776,19 @@ {} ] ], + "non-scaling-stroke-001.html": [ + "a9870ac8bb22094ecb4664228d185fe803758365", + [ + null, + [ + [ + "/svg/painting/reftests/green-100x100.svg", + "==" + ] + ], + {} + ] + ], "paint-context-001.svg": [ "7be33cb20fb257496cb1357a5481edecf364bc59", [ @@ -340629,6 +341258,45 @@ {} ] ], + "use-external-resource-no-svg-root.html": [ + "444dbe843f1ca9f1154b3c112018d1e10c73e0df", + [ + null, + [ + [ + "/svg/struct/reftests/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "use-external-resource-target-pseudo-001.html": [ + "153aedba026055a9dba922ca08385090b9fe9880", + [ + null, + [ + [ + "/svg/struct/reftests/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], + "use-external-resource-target-pseudo-002.html": [ + "0a483aff54d4d9bb9fa363868630e485248e095a", + [ + null, + [ + [ + "/svg/struct/reftests/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], "use-external-resource-with-revalidation.tentative.html": [ "d899165fa9ccef15d893b599ec6a8f4e005bcb36", [ @@ -340707,6 +341375,19 @@ {} ] ], + "use-referencing-non-svg-fragment-element.html": [ + "2bf828c3bab856617791ee0b1d96d2937af88ec9", + [ + null, + [ + [ + "/svg/struct/reftests/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], "use-same-origin.svg": [ "0aa1ec83afd68b3ea6022d33f6ec6f8103d99661", [ @@ -341003,6 +341684,32 @@ {} ] ], + "lengthAdjust-large-font-vertical.svg": [ + "5127081bf6907159d803a5e5af71eb72486e629b", + [ + null, + [ + [ + "/svg/text/reftests/green-100x100.svg", + "==" + ] + ], + {} + ] + ], + "lengthAdjust-large-font.svg": [ + "7a204fe8a7984a0f9838448b6d81cfb0668e2584", + [ + null, + [ + [ + "/svg/text/reftests/green-100x100.svg", + "==" + ] + ], + {} + ] + ], "lengthAdjust-vertical.svg": [ "32ebd2ae38481e1121971c7cfa60f0eb256dff47", [ @@ -368640,7 +369347,7 @@ ], "support": { "304-response.py": [ - "f9756555f79ee350f9b86de5b5b221c056265e09", + "b8d346e448af982e062f74c6a7e34249ee8c5163", [] ], "eval.js": [ @@ -370210,14 +370917,6 @@ "a6d33ff6f75c408712f8b1cf6b78b50326d4f3fc", [] ], - "digital-identity-helper.js": [ - "8fff82745172154972dcda4c3c6cb98d4a5af5e1", - [] - ], - "digital-identity-iframe.html": [ - "8b3a424d1e21d381b76849deb261762aec016298", - [] - ], "echoing-nester.html": [ "d4f5899da7894749a51039f9d5bf3b8bfd680570", [] @@ -390527,10 +391226,74 @@ "3c8c470ef5ac93ed8d29fb26d40a2c4bbea47827", [] ], + "border-radius-side-shorthands-ref.html": [ + "428a1c8bf79bf545aafb859d4f586d842874f583", + [] + ], "borders-on-sub-unit-sized-elements-ref.html": [ "19233778ed87c6153924a153e5fdaadc5925a057", [] ], + "corner-shape-angle-bottom-001-ref.html": [ + "b66d20e03eb5316afe5b82de96270f4c30af8e3c", + [] + ], + "corner-shape-angle-bottom-left-001-ref.html": [ + "9cb42c2d6375ba618ee4c7ea2fa0c734317becd6", + [] + ], + "corner-shape-angle-bottom-right-ref.html": [ + "bf05cdb6c1f0dee933cadb3ade4933bdf16dedea", + [] + ], + "corner-shape-angle-left-001-ref.html": [ + "c9b74047907d9a7346e7956d0660cdb4c68030b5", + [] + ], + "corner-shape-angle-ref.html": [ + "6080f68c654ecded6545e9627dba427a42d345f1", + [] + ], + "corner-shape-angle-right-001-ref.html": [ + "0fb9b128368bb2f6669aacbf60875ca9f5a79bd1", + [] + ], + "corner-shape-angle-top-001-ref.html": [ + "d16076c29e1bc19edc21a078b1cf53905c2f4d92", + [] + ], + "corner-shape-angle-top-left-bottom-right-ref.html": [ + "1588d40f4c5f994748ef6a60b7c0a6305c277a0e", + [] + ], + "corner-shape-angle-top-left-ref.html": [ + "d461b7708096ca7c21be869430ba095f918207c3", + [] + ], + "corner-shape-angle-top-right-001-ref.html": [ + "9047db1de0358c9f5e070c5dd8684a90b8e577fa", + [] + ], + "corner-shape-angle-top-right-bottom-left-ref.html": [ + "0cda23ed45d4427a972413cb5d1614316e365cbb", + [] + ], + "corner-shape-round-bottom-left-001-ref.html": [ + "eff799bb96af234df351e2e30b67df04497160e3", + [] + ], + "corner-shape-round-bottom-right-ref.html": [ + "3e60f0058f65ae7f57017dca654f8c85299028b6", + [] + ], + "corner-shape-round-top-left-ref.html": [ + "864f1fca7add0640e8d6389f88d3a4b818b0dadd", + [] + ], + "corner-shape-round-top-right-001-ref.html": [ + "56caa3dac0af793dc83f808dc876523d643c8d11", + [] + ], "subpixel-border-width-ref.tentative.html": [ "3ba8ac5754ef75130a6e843c5bc259190b8b63f1", [] @@ -390543,6 +391306,68 @@ "b8ce0e834856b0a53545ccd2cf5046a83a0a8fb4", [] ] + }, + "support": { + "corner-shape-angle-all.svg": [ + "4463dc02624cc549cc3148711ebf95a2139a6f11", + [] + ], + "corner-shape-angle-bottom-left.svg": [ + "f6ffa30bbabd719bdf96bf1bf902fb4b493c833d", + [] + ], + "corner-shape-angle-bottom-right.svg": [ + "65ccb694f3e4c17cd8d0d80c43932083e4b8f63a", + [] + ], + "corner-shape-angle-bottom.svg": [ + "a1b46822f99728bcb23705376c716452369bf7b8", + [] + ], + "corner-shape-angle-left.svg": [ + "5cb22750b4d47252b123aa40598939701faa24e9", + [] + ], + "corner-shape-angle-right.svg": [ + "4e7fe54a373e66ffe6cc6e9f3e7b736a08e7e42f", + [] + ], + "corner-shape-angle-top-left-bottom-right.svg": [ + "7581bde26d760fed6869bbef262000c0003f0952", + [] + ], + "corner-shape-angle-top-left.svg": [ + "793e0dae88908c91cf669ef6ec62a53ea5569aaa", + [] + ], + "corner-shape-angle-top-right-bottom-left.svg": [ + "285ba108762e89801908ea2afe2266f2389108db", + [] + ], + "corner-shape-angle-top-right.svg": [ + "12c5f5fe858d05a47d4d12f3616fee4489495d81", + [] + ], + "corner-shape-angle-top.svg": [ + "1b460436605364e8890abeaf25e90c6123ca7c0e", + [] + ], + "corner-shape-round-bottom-left.svg": [ + "9947b39748ae2ad5e0bc0ca6c7977dda5d041f87", + [] + ], + "corner-shape-round-bottom-right.svg": [ + "b01202b8be40df2ba5407c4ddebd72773b184efc", + [] + ], + "corner-shape-round-top-left.svg": [ + "3ec5f63d7070071ae04e45ba1d960ce490bc1068", + [] + ], + "corner-shape-round-top-right.svg": [ + "ffadca194e2b36105f6342023e65a57e45f978c5", + [] + ] } }, "css-box": { @@ -391324,6 +392149,10 @@ "2ad6a0995a9e3bb9db0131eb2c42b19d09768fb4", [] ], + "scope-shadow-sharing-ref.html": [ + "4ade124bcd89965d2e4c325c81a6cc29d3686a23", + [] + ], "scope-visited-ref.html": [ "91efd659216ab1de4efdfe2cac961bc6200ae62b", [] @@ -407563,6 +408392,10 @@ [] ] }, + "text-box-trim-block-in-inline-start-001-ref.html": [ + "dd288036917d9a4a4e85e968b4b7486b0f22a039", + [] + ], "text-box-trim-dynamic-001-ref.html": [ "8f089635faebf04c4acde22bb60ec532661a1eba", [] @@ -407571,10 +408404,18 @@ "433670fda11201f97ec517456b0e0d58654ad2f2", [] ], + "text-box-trim-end-empty-line-001-ref.html": [ + "5c0dd61f7a4d3ffbdf7d1695cbadd4dc59af2447", + [] + ], "text-box-trim-float-clear-br-001-ref.html": [ "dd66e5a732d9fc849e5a2aeb9e155bb09ff2a525", [] ], + "text-box-trim-float-clear-br-002-ref.html": [ + "d4275a8df5fdd158c06c2e5acb618865f8b98d63", + [] + ], "text-box-trim-float-start-001-ref.html": [ "1b1941c96f15a76a8a6d38b17ac31e4e60fa94dc", [] @@ -408853,6 +409694,10 @@ "5d82c5cf27a1ec69c5f646830ebbbf0f04c5264c", [] ], + "mask-mode-luminance-with-mask-size-ref.html": [ + "6c78328b941ec3644dc6b050149dcfd783812214", + [] + ], "mask-mode-ref.html": [ "0f7dbd571fe155a57ff2d15e5dfc50f0dacd61ed", [] @@ -410205,7 +411050,7 @@ [] ], "WEB_FEATURES.yml": [ - "c10a9f36af5d7bd037576cc0bba56234618955e2", + "7d0688929ab0dd06031443a48b4b25844d260506", [] ], "clip-001-ref.html": [ @@ -410416,6 +411261,12 @@ "a40bd5aacee3d21c5fd480194866bb338a8e3057", [] ], + "parsing": { + "WEB_FEATURES.yml": [ + "23f8c445d554853895235082290c46f5e8411c7e", + [] + ] + }, "reference": { "input-scrollable-region-001-ref.html": [ "d7125ee2ef3285d461b2172208e23d8d4cc27a64", @@ -411042,6 +411893,10 @@ "20d16df19de9dc0ad95f5b17344cd21210983c18", [] ], + "page-margin-auto-and-non-zero-print-ref.html": [ + "5f9be531886c9aaa78df681bb494c50177073c02", + [] + ], "page-margin-auto-negative-print-ref.tentative.html": [ "9e816c12fb7ddcd94cdfaf1e910f6146e70c05c6", [] @@ -412124,6 +412979,14 @@ "758e769d7821fa55b82e339883f1f9c4d4f0d5e7", [] ], + "registered-property-computation-color-001-ref.html": [ + "651e943b154a96b6dbb5035e4307d78b9ab9c08f", + [] + ], + "registered-property-computation-color-003-ref.html": [ + "e030fdf37c68bd6cfd3b8efa1c361db880044646", + [] + ], "resources": { "utils.js": [ "a952a4feedc5523219eccd231c9bf1c1dc624755", @@ -412266,6 +413129,10 @@ "82c5074fd26aa2dc35c9c8fa77dd3bf1099c5f88", [] ], + "first-letter-width-2-ref.html": [ + "67fe00ca79030554f19be7100ccb505dc273e300", + [] + ], "first-letter-width-ref.html": [ "8ebb00b9dcc10f43df0efea20991af653f5cb691", [] @@ -412995,6 +413862,10 @@ "32a294b581b01b85f83fbf8ab2b98d15049e9609", [] ], + "no-break-opportunity-at-end-ref.html": [ + "f69f8d9456f04e5af630a4c8327abcee0eabb940", + [] + ], "text-wrap-ref.html": [ "7b814db7e49bb544b153fc4a08a4c1ffeb63f8bb", [] @@ -417086,6 +417957,10 @@ "fad3f46f1a872bf44477263c72cafb0fa0c8aa12", [] ], + "line-breaking-030-ref.html": [ + "628fff26e33038f9afeb39b82bbd6bbb86a471f8", + [] + ], "line-breaking-atomic-007-ref.html": [ "86bee401970cca02b14cca850899103a77c4e12d", [] @@ -418808,6 +419683,14 @@ "318480bb5028d95c6a1ec3a3dfcd7fd50c0b662d", [] ], + "text-wrap-balance-004-a-ref.html": [ + "96ed5f2fe53ab31ac6c045078917cc36921842fa", + [] + ], + "text-wrap-balance-004-b-ref.html": [ + "d1171917c866a1d664aa998ddffa1b5139b62682", + [] + ], "text-wrap-balance-004-misref.html": [ "d3574427b2d751abfec78d3c43e6b497aa966147", [] @@ -429271,7 +430154,7 @@ [] ], "WEB_FEATURES.yml": [ - "2449bf4808f60c035717f1773c72ddd52df1c087", + "a674f92e29ca70907f622d05579acf489ba22219", [] ], "attribute-selectors": { @@ -429468,7 +430351,7 @@ }, "invalidation": { "WEB_FEATURES.yml": [ - "5e6a6d0d5c0c3fcec6b45c11ba6c4adeedb3180b", + "1f80a7755b3dbc8e80496cf3ac5efdde7dda9b63", [] ], "any-link-attribute-removal-ref.html": [ @@ -430336,6 +431219,22 @@ [] ] }, + "digital-credentials": { + "META.yml": [ + "8a7db924976bf95537afe45854962916207e5b61", + [] + ], + "support": { + "digital-identity-helper.js": [ + "8fff82745172154972dcda4c3c6cb98d4a5af5e1", + [] + ], + "digital-identity-iframe.html": [ + "8b3a424d1e21d381b76849deb261762aec016298", + [] + ] + } + }, "direct-sockets": { "META.yml": [ "ace03410a2394cd404607607daa070ae5f00915f", @@ -430858,7 +431757,7 @@ [] ], "scroll_support.js": [ - "e536b7d7488cf964ec5da5abdc45d5f3852d8909", + "a708364df07cada66cc5ed672af3a328fae3ab9c", [] ], "scrollend-event-fires-to-iframe-inner-frame.html": [ @@ -430866,7 +431765,7 @@ [] ], "scrollend-user-scroll-common.js": [ - "5c278784d83916beda046e9c6b760429c3dc9804", + "1b63723388284352dd5e83533e996a826fa37d00", [] ] } @@ -432735,7 +433634,7 @@ [] ], "events-session-closed-event.js": [ - "44f683eac854b1f0fea6a845c0ea841e84eb5c26", + "f3132f56c1124532bffcaba881c5eca9b71bdf99", [] ], "events.js": [ @@ -433246,7 +434145,7 @@ [] ], "feature-policy-frame-policy-timing-iframe-camera.https.sub.html": [ - "995ac2134e75013b7c8a4b8ddf20ebff48749229", + "0eaafcd5946f95ec29f0485c3d372b71eb774f36", [] ], "feature-policy-header-policy-allowed-for-all.https.sub.html.sub.headers": [ @@ -436108,6 +437007,10 @@ "c6799f0edb9a6be8a5223ba86c3051e043373b64", [] ], + "focus-event-after-switching-iframes-inner.html": [ + "33b26c15822b6be1e16cdab2b25f51231bf92ca7", + [] + ], "focus-restoration-in-different-site-iframes-inner-window.html": [ "a5c75f496bd788c1c6ae389f308d0f2902ef71e4", [] @@ -438168,7 +439071,7 @@ [] ], "remote-context-helper.js": [ - "6c66050072c5c3e464982e9253bde51f5c4bea01", + "a7202656c860a2a3fbbfc3ce9d688db2cbe37127", [] ] } @@ -442283,7 +443186,7 @@ [] ], "text.yaml": [ - "4aa1a55f8e28063ac36cc70b9f93f8686a1ea857", + "22ec2f66b5b57d05052696121a9fc05bb98d38cb", [] ], "the-canvas-state.yaml": [ @@ -448382,6 +449285,10 @@ "243f0add0deb144ff4fc9d7c822c7b283aef9dba", [] ], + "block-in-inline-ref.html": [ + "57a06d7d836d44260dc019994b75e3983e365de1", + [] + ], "display-none-or-contents-ref.html": [ "c20a3065e443ed09151be84d5f350a31fe0977c6", [] @@ -449272,6 +450179,10 @@ ] }, "the-iframe-element": { + "WEB_FEATURES.yml": [ + "a1ff481467e12dc791aff84c9d128d3bb3c7de8a", + [] + ], "change_child.html": [ "738ceee5293aaccd39e87d9f1fc0e0ba2a2f6b98", [] @@ -449578,6 +450489,10 @@ "083aa90b4152f5294ce641309a1afa4db0a48cc3", [] ], + "WEB_FEATURES.yml": [ + "28d0ead2dbc3f9db5e7c2714cc72434b4bc367a2", + [] + ], "available-images-ref.html": [ "8061abae50899a2befe286723d8bd5c285b356ab", [] @@ -450726,7 +451641,7 @@ [] ], "popover-anchor-display-ref.html": [ - "ee965a1d59d78899ada38a6360f436ead9374f1d", + "646cf5c26639be186252f46ad44f2e49048d8f8f", [] ], "popover-anchor-inset-rule-display-ref.html": [ @@ -451022,64 +451937,6 @@ ] } }, - "defer-script": { - "README.md": [ - "ac5c91c9a2eab22e4815cab7a7603359d2faceb4", - [] - ], - "resources": { - "async-script-1.js": [ - "267f324aa650154ff8fc787124132774b91e2259", - [] - ], - "defer-script-1.js": [ - "1a0524f4fbd271f9ffed2d8d37d75682620def47", - [] - ], - "defer-script-2.js": [ - "d644e37f182bb3211659f5a5543b44e16550e74f", - [] - ], - "document-open-write-close.js": [ - "80703d5c0ef1cebdaf9e5b91ff42d75e92c494a5", - [] - ], - "document-open-write.js": [ - "178c374df6999fce51a557701842a857cdae46f9", - [] - ], - "document-write-close.js": [ - "7cdde0d78ffa1ec13a6d47a12883b8f7ed957321", - [] - ], - "document-write-iframe.sub.html": [ - "e3022e3bf1f9a6a8e49337e57250b5e77416d63b", - [] - ], - "document-write.js": [ - "413a9bc6210f52b305356373f58623dd2e6e392e", - [] - ], - "helper.js": [ - "89c6d1e8282097b5258588f688ae9fd2cbd69ad7", - [] - ], - "sync-script-1.js": [ - "726b56346e8c32c79028540085e09806d3105527", - [] - ], - "sync-script-2.js": [ - "ba2edfbf270583ab62e32647fcd234f7b039ed83", - [] - ] - }, - "support": { - "async-script.html": [ - "d513bafe4f6db18b4d5685ceffa1c9ce03837350", - [] - ] - } - }, "defer.js": [ "c4449ca7c8a598e3712c8b24eb9e424775c19102", [] @@ -460810,7 +461667,7 @@ [] ], "permissions-policy-frame-policy-timing-iframe-camera.https.sub.html": [ - "995ac2134e75013b7c8a4b8ddf20ebff48749229", + "0eaafcd5946f95ec29f0485c3d372b71eb774f36", [] ], "permissions-policy-header-policy-allowed-for-all.https.sub.html.sub.headers": [ @@ -464183,7 +465040,7 @@ [] ], "webxr-test.js": [ - "aba3447982bd8523410494e81a48effab7927576", + "a0713e03cce229277a648c8c853b979849e5288d", [] ], "webxr-test.js.headers": [ @@ -464680,7 +465537,7 @@ [] ], "testharness.js": [ - "c5c375e1720be8390abf85340bae915eaab65565", + "61cd18511151f3574a41aabcfdb0b3531244c534", [] ], "testharness.js.headers": [ @@ -467547,6 +468404,10 @@ "e570958701db47250cf6d87a16f4722a84e626b2", [] ], + "shadowrealm-promise-rejection-test-worker.js": [ + "5c9737a67aa2f085756edf632f087d5c599a0259", + [] + ], "silence.oga": [ "af591880436af43abb4cee59fde320081bcac7ed", [] @@ -469151,6 +470012,26 @@ "c1ca36dc2fa570f9f6eb57f4e9c17fe91a5f4af4", [] ], + "session-storage-carry-over-to-prerender-page.html": [ + "39df79c84762fd506b21132972fa7567a8977c2e", + [] + ], + "session-storage-isolated-while-prerendering.html": [ + "46170393deb4ad101bfb4185dcc72fd4558422c9", + [] + ], + "session-storage-no-leak-to-initiator-page.html": [ + "6c0ee4c4adbab917803a2e08377af3004f131430", + [] + ], + "session-storage-swap-after-activate.html": [ + "c5e443721491a7551aa33439f92996b9d6d5a954", + [] + ], + "session-storage-utils.js": [ + "06688e3bd4cf6e8d251ef694ffba40b8dab95248", + [] + ], "shared-worker.py": [ "48e5cd9c153eb5caf4c2b05cc4125b534f1ef93d", [] @@ -470031,6 +470912,10 @@ "3739265b23d22e39f2e2acdc90d94c583b36f4f9", [] ], + "green-100x100.svg": [ + "120941444a4898197d6b6001f9908a6cd48b62ba", + [] + ], "marker-path-001-ref.svg": [ "202ac3420dc080f85c4a2cac5e13ccbea6d0235e", [] @@ -470464,10 +471349,22 @@ "3f0c26c8feaf58e51ef387c972c2b772166d0fe8", [] ], + "non-svg-root-resource.xml": [ + "6012063ea5b03ce468b950d348bbb0265a249550", + [] + ], "red-rect.svg": [ "1ee578ab6adba89df340fa643a93f63368344421", [] ], + "sprites-stacked.svg": [ + "bebe1bd9198068da848ebadd46d90b19c62a53eb", + [] + ], + "sprites-target.svg": [ + "1eb11bfbfb4271442c83a99e81a8a44ad8c1d1da", + [] + ], "sprites.svg": [ "f73b8851913f402aa41adac40360b15acbad1119", [] @@ -482065,7 +482962,7 @@ [] ], "client.py": [ - "045bc048c4b3e95de8e22c4a05d7a6642b96bc19", + "ee3ef1ea95d5aeff7cdc14f378b0a975b8d94b4d", [] ], "error.py": [ @@ -483411,7 +484308,7 @@ [] ], "WorkerGlobalScope-eval.https.js": [ - "0631375208726c23128d2a1655d019c778e10668", + "95ac1ff844b3e4e6f01a4abb3cf4846df514bf70", [] ], "WorkerGlobalScope-eval.https.js.headers": [ @@ -486275,7 +487172,7 @@ ] }, "conftest.py": [ - "424fa8b5c75d73a5fe3e9c3c2e86c2d0a7e05399", + "97f392b0818e4eb4ba6cb23105e9055da7b75af5", [] ], "continue_request": { @@ -487601,11 +488498,11 @@ ] }, "utils.js": [ - "0d3443b3dc955264a2fbbd9ceaf28e87b60f1df5", + "eba8b10182d9b52e47061caf5072889aa0ce49a7", [] ], "utils_validation.js": [ - "35e634530d7ac2ab46b56a3545f738acf70c4208", + "7ef52497a9ab521f7c48e26a29b2d075e234e822", [] ] } @@ -493496,25 +494393,162 @@ {} ] ], - "bindings-inject-keys-bypass-setters.html": [ - "e67377fb77f9c5d7ab16104490d0cb2b1f64975e", + "bindings-inject-keys-bypass.any.js": [ + "a32a7a6633883c122ae7774e74999e5d7844de49", [ - null, - {} + "IndexedDB/bindings-inject-keys-bypass.any.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "title", + "IndexedDB: ES bindings - Inject a key into a value - Keys bypass setters" + ], + [ + "script", + "resources/support-promises.js" + ] + ] + } + ], + [ + "IndexedDB/bindings-inject-keys-bypass.any.serviceworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "title", + "IndexedDB: ES bindings - Inject a key into a value - Keys bypass setters" + ], + [ + "script", + "resources/support-promises.js" + ] + ] + } + ], + [ + "IndexedDB/bindings-inject-keys-bypass.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "title", + "IndexedDB: ES bindings - Inject a key into a value - Keys bypass setters" + ], + [ + "script", + "resources/support-promises.js" + ] + ] + } + ], + [ + "IndexedDB/bindings-inject-keys-bypass.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "title", + "IndexedDB: ES bindings - Inject a key into a value - Keys bypass setters" + ], + [ + "script", + "resources/support-promises.js" + ] + ] + } ] ], - "bindings-inject-values-bypass-chain.html": [ - "73505edf1ddc64d716d2ffe0b434615513273a08", + "bindings-inject-values-bypass.any.js": [ + "03d488480d7e44e905069947593d9c02a94e41ba", [ - null, - {} - ] - ], - "bindings-inject-values-bypass-setters.html": [ - "6c4fb93bfd99abcf393b0a6c1319204510d9dcf3", + "IndexedDB/bindings-inject-values-bypass.any.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "title", + "IndexedDB: ES bindings - Inject a key into a value - Values bypass chain and setters" + ], + [ + "script", + "resources/support-promises.js" + ] + ] + } + ], [ - null, - {} + "IndexedDB/bindings-inject-values-bypass.any.serviceworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "title", + "IndexedDB: ES bindings - Inject a key into a value - Values bypass chain and setters" + ], + [ + "script", + "resources/support-promises.js" + ] + ] + } + ], + [ + "IndexedDB/bindings-inject-values-bypass.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "title", + "IndexedDB: ES bindings - Inject a key into a value - Values bypass chain and setters" + ], + [ + "script", + "resources/support-promises.js" + ] + ] + } + ], + [ + "IndexedDB/bindings-inject-values-bypass.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "title", + "IndexedDB: ES bindings - Inject a key into a value - Values bypass chain and setters" + ], + [ + "script", + "resources/support-promises.js" + ] + ] + } ] ], "blob-composite-blob-reads.any.js": [ @@ -506436,7 +507470,16 @@ ] ], "comp_name_from_content.html": [ - "2f6b3ab6b474778ff4b296dafd40be90132be6a9", + "e03833e41c2800649ce6d40a67a13ad12cd5db29", + [ + null, + { + "testdriver": true + } + ] + ], + "comp_name_from_content.tentative.html": [ + "bcaf8db7471e3441f684e21725c3dd9a7a02dadf", [ null, { @@ -515777,7 +516820,7 @@ "feature-policy": { "clipboard-read": { "clipboard-read-disabled-by-feature-policy.tentative.https.sub.html": [ - "8ca1819df8b3b6762107c6be60079d313fcbd209", + "16a17b5158d0b47e40cb36df80cef8915875b806", [ null, { @@ -515786,7 +516829,7 @@ ] ], "clipboard-read-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html": [ - "367d033d0f6afa1c2a9c6a0048444e012118656d", + "2998e058b3d09f143c1f390618a325685fdc8481", [ null, { @@ -515804,7 +516847,7 @@ ] ], "clipboard-read-enabled-by-feature-policy-cross-origin-tentative.https.sub.html": [ - "c371ea3b41cb2e648202f1aaf76b542fa0f033f8", + "88c8d845b26e45466fa4ee028a9777d3367d5f1e", [ null, { @@ -515813,7 +516856,7 @@ ] ], "clipboard-read-enabled-by-feature-policy.tentative.https.sub.html": [ - "c21d6cf0f6214e79227b1f1b06faaf142d8a48c9", + "e392def5e9076a30399238213e474f95e66cf903", [ null, { @@ -515822,7 +516865,7 @@ ] ], "clipboard-read-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html": [ - "79dd6cf891cf5618fc51fa90f183a8ece97226a8", + "e9df891d4bd51d88ebaaf1abea093f510b702cb3", [ null, { @@ -515833,7 +516876,7 @@ }, "clipboard-write": { "clipboard-write-disabled-by-feature-policy.tentative.https.sub.html": [ - "b328debde2979499b2e095e33fdb0be440c2ad6b", + "297d074a7d725d6c34d6f46c945968fab4599dd5", [ null, { @@ -515842,7 +516885,7 @@ ] ], "clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html": [ - "e669c8fec4910dc8f3f7a038b69f0b17e671c94a", + "45bba1b8d35ec21a3120465edd29cdce222abaf2", [ null, { @@ -515860,7 +516903,7 @@ ] ], "clipboard-write-enabled-by-feature-policy-cross-origin-tentative.https.sub.html": [ - "6e7029cc789a63e0603b596739ca6eac36bbdc88", + "8f64fdbe02ebd1e2f8d4565899edb913a7f56ca4", [ null, { @@ -515869,7 +516912,7 @@ ] ], "clipboard-write-enabled-by-feature-policy.tentative.https.sub.html": [ - "cb908df65f283ae68bd18e0aaec2085bf30dfe71", + "701759b61c935d095dc04343ab4bb9d8d359ef24", [ null, { @@ -515878,7 +516921,7 @@ ] ], "clipboard-write-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html": [ - "532c72545c7546fc45150bcf5f41f2eefb40e7b1", + "b976a17a7cbff604129d25437b83386e54602b0d", [ null, { @@ -522389,7 +523432,7 @@ }, "generic": { "304-response-should-update-csp.sub.html": [ - "b16eadaedc07ca9dbc60310d850d49ded370d22a", + "a882dc289144c176df555c14c83802e018b45250", [ null, {} @@ -527681,15 +528724,6 @@ {} ] ], - "digital-identity.https.html": [ - "cc279735bd7b5320a3eeb530144bd7b1a9e44c69", - [ - null, - { - "testdriver": true - } - ] - ], "fedcm-abort.https.html": [ "0f03bff832f800c9ce69de69003c88bbbd471fca", [ @@ -528200,6 +529234,15 @@ } ] ], + "non-fully-active.https.html": [ + "8101599cedb70ba4a258ef3b4bae3543f42602f8", + [ + null, + { + "testdriver": true + } + ] + ], "otpcredential-get-basics.https.html": [ "3907f85450fe4642720b2c8ec374f7f689bfbdd1", [ @@ -530322,7 +531365,7 @@ ] ], "anchor-name-multicol-002.html": [ - "73b7b566206707ac4cb3447cc732bf0026044761", + "4f84f173984a620fe6e1b1baef011747e294ba20", [ null, {} @@ -530504,7 +531547,7 @@ ] ], "anchor-position-multicol-colspan-001.html": [ - "f90ee5c3a262968d6126ac7ef7353bfb713891a2", + "2938500ca49d48d9e6fd90486e08eeb1669a2df5", [ null, {} @@ -530588,28 +531631,28 @@ ] ], "anchor-scroll-002.html": [ - "2c51e6a1a3ab74ff7963c5e77f0ec8dcc0d1f408", + "49a38c0e69eb830fa70283b28baf62e00997ba32", [ null, {} ] ], "anchor-scroll-003.html": [ - "6c0dd08355c47152b281e07b759a9b4c513af180", + "4f5b0dbba5588b60be82d2f437e349fdebb07331", [ null, {} ] ], "anchor-scroll-004.html": [ - "c0e0afb23f143e157b163cd28af96db62496b457", + "e21507acb64bfbd94802b5188cadc9e0f2fce890", [ null, {} ] ], "anchor-scroll-005.html": [ - "f8f26b719f07c2d38324f3e1b7e0287e2b7ffd51", + "bab19249cedda55b3e020c679f43ca472bcc707b", [ null, {} @@ -530630,84 +531673,84 @@ ] ], "anchor-scroll-js-expose.html": [ - "3b3f1a06086ae85d2fa1944cc1c2beb41935656b", + "968ce5ab68306af76e18d253b2d4524993410b3c", [ null, {} ] ], "anchor-scroll-position-try-001.html": [ - "3130018e73d921fb7d742fc1e7591672c4130488", + "e314e9634d900f6605d4e3ceec31abc7ff099750", [ null, {} ] ], "anchor-scroll-position-try-002.html": [ - "52bbcd62fc1931e3e3ed9d81cebc12e39d1411be", + "4e281177eb78246c438c860ea22056a75a7c24eb", [ null, {} ] ], "anchor-scroll-position-try-003.html": [ - "b89a574d768edf3b13e7ac90d51aecddec553380", + "d35d2ac2699bab1133e6e656259b68d14728923e", [ null, {} ] ], "anchor-scroll-position-try-004.html": [ - "bf0bee972deadd0c45f037c0fc455cda2923623c", + "cc61a0443c86231b209698a9df48bcb15ee71a08", [ null, {} ] ], "anchor-scroll-position-try-005.html": [ - "197a9e4f79c2a89fb8d4d3e1e8f7239ae696cd4c", + "995010afd4bfb34c16b32d9737090706e8e1cca7", [ null, {} ] ], "anchor-scroll-position-try-006.html": [ - "132c45c89c75d69030db21539c7d84a996fa6c42", + "632b5762c0e8a82f430903370836accdf0eecd06", [ null, {} ] ], "anchor-scroll-position-try-007.html": [ - "a02bd35a669a920272ab8f05c199d0e831a5e58f", + "8ac54db0633c0cb014c511fdc18723ee92ea5889", [ null, {} ] ], "anchor-scroll-position-try-008.html": [ - "2deddd587ef2a52a0548cf6498f2393e5f351e10", + "d95d531a0c3663ade0d1d7f5143b731ba5705ecc", [ null, {} ] ], "anchor-scroll-position-try-009.html": [ - "0d7d6b077fc734b72283c87c383d85f54c34573b", + "94b2c64ecc41205b7897a8f46584a5da8bc9fe3c", [ null, {} ] ], "anchor-scroll-position-try-010.html": [ - "21f32ad068e64d6231c42f56ec172b83a309eac6", + "eab81f0340b10b73881747357d62a2be273d5652", [ null, {} ] ], "anchor-scroll-position-try-011.html": [ - "5de84610105129ca6b86c0c83bd64a85bdde1b68", + "d13b5485d0f299474218764a442a43da89171ed7", [ null, {} @@ -531150,7 +532193,7 @@ ] ], "position-try-grid-001.html": [ - "87a30e26eca4a92edb796f6c22cbe6b2f8da54cd", + "74888f25486879e2034f931b724bb2880a51aade", [ null, {} @@ -534186,14 +535229,14 @@ ] ], "at-scope-parsing.html": [ - "8390738dd8a812baa73a7045026888935a5253d6", + "e984c1dcc29e1fe1fe199b16f6eafdb5403d1a2b", [ null, {} ] ], "at-scope-relative-syntax.html": [ - "274d9afbebec2be5532a6a55ca1b605a2dbe6559", + "8b0e41ab13e1fff6e1ce3a563845553e2d0ca831", [ null, {} @@ -534482,7 +535525,7 @@ ] ], "scope-evaluation.html": [ - "c6ea13c862df3adbcafe6bf61436e11f5ed36c92", + "a70d2a59b7f54212b5e267182aac7dd5acdd1658", [ null, {} @@ -534507,7 +535550,7 @@ ] ], "scope-implicit-external.html": [ - "d1ac738b778da33fa0359646a0ef876b339d5a64", + "aee0b23856d4aad360d5ac660130dde0472a5c67", [ null, {} @@ -534556,7 +535599,7 @@ ] ], "scope-proximity.html": [ - "c133a71e9a804b52c8d2556b1a8d1f26b3962636", + "0d62aa303aa75749b2c958ae04c1b41756bedcaf", [ null, {} @@ -534570,7 +535613,7 @@ ] ], "scope-specificity.html": [ - "0f48c605a852b2b2a40c093a45305bcd21b6c7b4", + "fa103ff3742fb341e80bf28b4a753d5a52918ddc", [ null, {} @@ -536301,7 +537344,7 @@ ] ], "content-visibility-auto-state-changed.html": [ - "f771907091f77464a654d252f4042a80d83048e8", + "0333c052e4a2ea80e750e9da342657abd337420e", [ null, { @@ -537067,7 +538110,14 @@ {} ] ] - } + }, + "webkit-text-stroke-computed.html": [ + "0dadfe402a58bf7c480910fe5a2ce6bf427f186f", + [ + null, + {} + ] + ] }, "css-flexbox": { "abspos": { @@ -548638,7 +549688,7 @@ ] }, "at-property-animation.html": [ - "f7a8e1697840225ef871f777c3e6b0f6eca48929", + "44361a0566b22e1ebced29105ab0bb785bbd7f44", [ null, {} @@ -548833,6 +549883,13 @@ {} ] ], + "var-reference-registered-properties-002.html": [ + "9a6c78fc45b09b7a65e93e229090f5ffc4feaa34", + [ + null, + {} + ] + ], "var-reference-registered-properties-cycles.html": [ "91792ef51db097ed626839537b40814c12b98cef", [ @@ -550550,6 +551607,15 @@ } ] ], + "snap-fling-in-large-area.html": [ + "4797ddbd9a25c8475786bbe9cf5552f7e47ad879", + [ + null, + { + "testdriver": true + } + ] + ], "snap-inline-block.html": [ "9606023e167444ec85ea60ea9c21670533463db0", [ @@ -556008,21 +557074,21 @@ ] ], "text-spacing-trim-computed.html": [ - "163a740103c0ef06b295b591b5d73a2a3309d686", + "e76d8564fe5aab951a8e95c1f1402531e112521d", [ null, {} ] ], "text-spacing-trim-invalid.html": [ - "9f835352b286d6d4adce131ba69a90ae8adfd01d", + "ca10d4ea13d8dcec9cbbc9a4ab1cf91d52994cce", [ null, {} ] ], "text-spacing-trim-valid.html": [ - "a83a099480d2b3de6347859377544d482d54c205", + "9bd0ff071f6bac29d7941862b26848d1636dc4ef", [ null, {} @@ -556126,13 +557192,6 @@ {} ] ], - "webkit-text-stroke-computed.html": [ - "0dadfe402a58bf7c480910fe5a2ce6bf427f186f", - [ - null, - {} - ] - ], "white-space-collapse-computed.html": [ "506e257cbe72c4c9469dc20d0e360c80e4367a5f", [ @@ -557480,6 +558539,13 @@ {} ] ], + "transform-with-sign-function.html": [ + "b6e179d390b9bf484e64e3c90ac9fd23f0df7891", + [ + null, + {} + ] + ], "transform_translate.html": [ "8428832455492c96a86802f350e887d408b4f3a1", [ @@ -564175,6 +565241,13 @@ {} ] ], + "adoptedstylesheets-modify-array-and-sheet.html": [ + "dab1da3737f4aec439b7ee418f919ac4db83148f", + [ + null, + {} + ] + ], "adoptedstylesheets-observablearray.html": [ "783a0541633d3f2b5fdfae90c364ffa8350be561", [ @@ -570191,6 +571264,26 @@ ] ] }, + "digital-credentials": { + "digital-credentials.tentative.https.html": [ + "30e24e5450a463d59a09ccf9150c15170b85e901", + [ + null, + { + "testdriver": true + } + ] + ], + "non-fully-active.https.html": [ + "dac4cecb78c03dfd7b09fb14412c11cfbecf533b", + [ + null, + { + "testdriver": true + } + ] + ] + }, "direct-sockets": { "disabled-by-permissions-policy.https.sub.html": [ "cc2f58b76a6bdf533057e3d6f45ddac8c91b7b6b", @@ -571837,7 +572930,7 @@ ] ], "scrollend-event-fires-to-iframe-window.html": [ - "4e53158087018884a82e5086ca6bdaf2d12661be", + "9cd3b421fe9036be62dbf9718521a04a5fed9498", [ null, { @@ -593664,7 +594757,7 @@ ] ], "feature-policy-frame-policy-timing.https.sub.html": [ - "665f24f96df84306a949cf3f2cec69b086b1e079", + "79e42b30cc4cd886079bcb349ae1ea5389b20cdb", [ null, {} @@ -620292,6 +621385,15 @@ {} ] ], + "focus-event-after-switching-iframes.sub.html": [ + "297fd0756fd6ced200352c59de2fd0abbf78b1b7", + [ + null, + { + "testdriver": true + } + ] + ], "focus-restoration-in-different-site-iframes-window.html": [ "61e604b3c77010866e54507211b6c57d84bc781a", [ @@ -627321,7 +628423,7 @@ ] ], "addWorker.window.js": [ - "d4ba8b031270e241abbb792367eb8511b4444546", + "3778ad3e5235273951f216de1534afc180c26e6f", [ "html/browsers/browsing-the-web/remote-context-helper-tests/addWorker.window.html", { @@ -627354,6 +628456,40 @@ } ] ], + "addWorkerNull.window.js": [ + "460b60d6021a0e767488432e59e156f805411ff0", + [ + "html/browsers/browsing-the-web/remote-context-helper-tests/addWorkerNull.window.html", + { + "script_metadata": [ + [ + "title", + "RemoteContextWrapper addWorker no global variable" + ], + [ + "script", + "/common/dispatcher/dispatcher.js" + ], + [ + "script", + "/common/get-host-info.sub.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js" + ], + [ + "script", + "./resources/test-helper.js" + ] + ] + } + ] + ], "constructor.window.js": [ "dcbb3dabbc1d345e6eaa424a2f167e29b4f05ac0", [ @@ -638688,13 +639824,6 @@ {} ] ], - "2d.text.measure.advances-not-defined.html": [ - "55c0e228e0b0461a5da4cb31f7e622dbee664329", - [ - null, - {} - ] - ], "2d.text.measure.baselines.html": [ "9d947eb361879bdc55306d2b9313fcf221769016", [ @@ -652055,20 +653184,6 @@ {} ] ], - "2d.text.measure.advances-not-defined.html": [ - "4bddaf0b2e00b9c84eefb151ae98ab1043e31b7a", - [ - null, - {} - ] - ], - "2d.text.measure.advances-not-defined.worker.js": [ - "f0b587dea27c717a9242f7f352cab300afc2b086", - [ - "html/canvas/offscreen/text/2d.text.measure.advances-not-defined.worker.html", - {} - ] - ], "2d.text.measure.baselines.html": [ "9d0cc1268d5314a7a4e06de3c60421ea7ea1795c", [ @@ -669310,6 +670425,16 @@ {} ] ], + "click-user-gesture.html": [ + "c6fe7345f2028cff1113a828c4ac330d1c076f9c", + [ + null, + { + "testdriver": true, + "timeout": "long" + } + ] + ], "clone.html": [ "0f7e053baad5bacdd7de424f96989cc43de721d8", [ @@ -669864,7 +670989,7 @@ ] ], "show-picker-disabled-readonly.html": [ - "8fdffc158f45143bfdc554e4be41f2bd8354ef04", + "a5aae6590386014152d03ac459f1e6a66d232405", [ null, { @@ -669873,7 +670998,7 @@ ] ], "show-picker-user-gesture.html": [ - "6b94b4f0f00ea71c4e5a0740e315fe4c2fbbf896", + "8113a2f32cd13b0f605d8bafb897191d4b7e0117", [ null, { @@ -670324,14 +671449,14 @@ } ] ], - "show-picker-cross-origin-iframe.tentative.html": [ + "show-picker-cross-origin-iframe.html": [ "3f710b39c60beb205ac131929849442fac2cf430", [ null, {} ] ], - "show-picker-disabled.tentative.html": [ + "show-picker-disabled.html": [ "f20bc2cf61b2544892740bf7c37fe617e1ca25ef", [ null, @@ -670340,7 +671465,7 @@ } ] ], - "show-picker-multiple.tentative.html": [ + "show-picker-multiple.html": [ "c38e98ee4e95aa4ae0cc9603ca55c9970faf3b1b", [ null, @@ -670350,7 +671475,7 @@ } ] ], - "show-picker-size.tentative.html": [ + "show-picker-size.html": [ "b9b10c42a9126d21fbf31c704b83d001edc5b7a4", [ null, @@ -670360,8 +671485,8 @@ } ] ], - "show-picker-user-gesture.tentative.html": [ - "e917fe2a612d937e3c1ae429633f0d6ec415ac28", + "show-picker-user-gesture.html": [ + "7a9d88cb1c33eea8410f5bfb33aef0c457bfeb88", [ null, { @@ -672816,47 +673941,6 @@ {} ] ], - "defer-script": { - "async-script-2.html": [ - "f7377d847adc04163e50c6a51294363b5a45de35", - [ - null, - {} - ] - ], - "async-script.html": [ - "90f657679f922b92f8ac3737b44660e1562defb6", - [ - "html/semantics/scripting-1/the-script-element/defer-script/async-script.html?default", - {} - ], - [ - "html/semantics/scripting-1/the-script-element/defer-script/async-script.html?reload", - {} - ] - ], - "defer-script-xml.xhtml": [ - "9d02ff39f517c8c5c68c94e3e56fe8e44f88ffd8", - [ - null, - {} - ] - ], - "defer-script.html": [ - "62c3a74014f080f056ae636cd38669a488f212ff", - [ - null, - {} - ] - ], - "document-write.html": [ - "63e251bae5c0a0274481c196c0a942e88e8a3f2d", - [ - null, - {} - ] - ] - }, "emptyish-script-elements.html": [ "37f4a87c95ea21fdadee85575ad24e7fed9fba55", [ @@ -684745,6 +685829,33 @@ } ] ], + "input-events-arrow-key-on-number-input-delete-document.html": [ + "20dad0da40a1cb431bd454645f7b480d0827517b", + [ + null, + { + "testdriver": true + } + ] + ], + "input-events-arrow-key-on-number-input-prevent-default.html": [ + "cc3984fe64dcbc926b1b317a3c6cbf0e77d2611b", + [ + null, + { + "testdriver": true + } + ] + ], + "input-events-arrow-key-on-number-input.html": [ + "75c594c2cbe517dd8f5df50f2fb723ee7acd207f", + [ + null, + { + "testdriver": true + } + ] + ], "input-events-cut-paste.html": [ "f2ca5a0a654f270d33d8662f4e8b25369cd98df7", [ @@ -684897,6 +686008,33 @@ } ] ], + "input-events-spin-button-click-on-number-input-delete-document.html": [ + "1b179952ca446ea2e4c803d85a899c89c16ac486", + [ + null, + { + "testdriver": true + } + ] + ], + "input-events-spin-button-click-on-number-input-prevent-default.html": [ + "558000940c987e6d1c30d0899244e7ae26ae00b5", + [ + null, + { + "testdriver": true + } + ] + ], + "input-events-spin-button-click-on-number-input.html": [ + "e86be1798e475b425f2cd170599fb43541950a68", + [ + null, + { + "testdriver": true + } + ] + ], "input-events-typing.html": [ "a894beea9bd381313b999e45abe0b4b8f61c804b", [ @@ -701448,7 +702586,7 @@ ] ], "permissions-policy-frame-policy-timing.https.sub.html": [ - "bea9673d620ba5f346b76f2881472607d3101984", + "f3b3c9cbf88c8a412caac28afa01baa60fb1cfbb", [ null, {} @@ -725781,6 +726919,13 @@ {} ] ], + "shadowrealm-promise-rejection.https.html": [ + "3fa2331b7f9a8ccbda83a93dad0d47e85e17cdde", + [ + null, + {} + ] + ], "skip-waiting-installed.https.html": [ "b604f651b3c1deb38d891c77394a8f175a19c34e", [ @@ -726189,7 +727334,7 @@ }, "shadow-dom": { "Document-caretPositionFromPoint.tentative.html": [ - "f3053ee71150932451729aeab07dc1eb2c7920a1", + "b01bc0ae6edfef1fedfcfeb5f1aeab94178d8895", [ null, {} @@ -727168,7 +728313,7 @@ ] ], "selection-direction.tentative.html": [ - "b5b3f6044c7da188b5f1e4b3eb78eba8b1d14122", + "6ec9b1934f989e289aa6b746b605456fa1929d11", [ null, { @@ -731348,6 +732493,15 @@ } ] ], + "session-storage.tentative.html": [ + "92d73285cce8df081691cb13d7bd288ab79b6b52", + [ + null, + { + "timeout": "long" + } + ] + ], "state-and-event.html": [ "7e8e7fd0a92b7175d2f761f128723404f4a3ba08", [ @@ -742622,6 +743776,13 @@ {} ] ], + "Document-write-exception-order.xhtml": [ + "db7c0631243477d5f34a0e2bfbe3c587ca1d123d", + [ + null, + {} + ] + ], "Document-write.html": [ "7902733f67c23bad9529505565308a6e5a8db887", [ @@ -742940,14 +744101,14 @@ ] ], "block-string-assignment-to-Element-insertAdjacentHTML.html": [ - "228887d0423d3144afd684ace223bc16a7124f9f", + "e4fec3a8a70dbfbdb92668a8b84395163557d0b1", [ null, {} ] ], "block-string-assignment-to-Element-outerHTML.html": [ - "9b6cf72cb4017c86e0d0862f967c9b26cea0c149", + "acf5a42622ca9d38b61e3c6b0d9cbd852dd73fc5", [ null, {} @@ -743058,8 +744219,15 @@ {} ] ], + "eval-csp-tt-default-policy-mutate.html": [ + "f7909a32a6ecdd92e902a1034b11c0f8c94b98b4", + [ + null, + {} + ] + ], "eval-csp-tt-default-policy.html": [ - "ab9b98df64ec2fefc29a266dddb57e3b9c5638f6", + "4ca9c562f506b3a226213d69a85781929439b56c", [ null, {} @@ -743094,7 +744262,7 @@ ] ], "eval-with-permissive-csp.html": [ - "fb0776852e71440b5b5679e64e05d5d52963a5d8", + "b3dc352017675a2634aa96ac1fdea01b55ce9243", [ null, {} @@ -747957,6 +749125,15 @@ } ] ], + "roles.tentative.html": [ + "a889c9934ffe236010cc0105f4db762ed1124296", + [ + null, + { + "testdriver": true + } + ] + ], "synonym-roles.html": [ "f9d3d7d0a9a9958e9a62d2e8f5b2fe33db968985", [ @@ -770425,7 +771602,7 @@ ], "validation_tests": { "argMinMax.https.any.js": [ - "6e8d5583064715797b7da6db6b6e0c65390a4883", + "42d9adb57fec8ab956be4be8dde656db710a9cd6", [ "webnn/validation_tests/argMinMax.https.any.html", { @@ -770466,7 +771643,7 @@ ] ], "batchNormalization.https.any.js": [ - "cafd9f9cd50c9caeb1fc251fe7a44d21e024cc38", + "a1c79000d202ef793857f3826156d80683b3052a", [ "webnn/validation_tests/batchNormalization.https.any.html", { @@ -772634,10 +773811,12 @@ ] ], "RTCPeerConnection-addTcpIceCandidate.html": [ - "1e7fc3ba9576d0ee124a6d6ee9729d682ee86fe8", + "ca7a682708f589941fdca2b8495ee40a89917d49", [ null, - {} + { + "timeout": "long" + } ] ], "RTCPeerConnection-addTrack.https.html": [ @@ -773262,7 +774441,7 @@ ] ], "RTCRtpTransceiver-setCodecPreferences.html": [ - "8142132a8c32f3a72cb65d07c0dee7cecc3c867b", + "b3129b49869fec05f351ff3403f785eb2fe1fcc3", [ null, {} @@ -819303,7 +820482,7 @@ }, "context_created": { "context_created.py": [ - "35692a9684547f70a83639c1c7d090333d1d5dfa", + "5172b25d9971bb2538185f9c82475ac76fb2252a", [ null, {} @@ -820078,8 +821257,29 @@ ] }, "continue_request": { + "body.py": [ + "da7cff78a502ccf97455df10a7b2718c7f0bf008", + [ + null, + {} + ] + ], + "cookies.py": [ + "eb79529ab1c8a2570d212b8b2f2868f080151dce", + [ + null, + {} + ] + ], + "headers.py": [ + "11106c7720883d5f9bfe5b95163b01e19de641f5", + [ + null, + {} + ] + ], "invalid.py": [ - "d7cfa629c0851671e260f76b4b8a9ae28bb34f2d", + "9a1a3166f8b47a69e7f98176a8969ccd09183628", [ null, { @@ -820087,6 +821287,13 @@ } ] ], + "method.py": [ + "ed342913adb486aded7eae76e88d190960febeda", + [ + null, + {} + ] + ], "request.py": [ "c55e477ad7475060708c27eafe6b8711dfb9ccdb", [ diff --git a/tests/wpt/meta/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-001.html.ini new file mode 100644 index 00000000000..1b564067500 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-001.html.ini @@ -0,0 +1,2 @@ +[border-radius-side-shorthands-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-002.html.ini b/tests/wpt/meta/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-002.html.ini new file mode 100644 index 00000000000..fec1a554e25 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-002.html.ini @@ -0,0 +1,2 @@ +[border-radius-side-shorthands-002.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-001.html.ini new file mode 100644 index 00000000000..c2e29dd542a --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-002.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-002.html.ini new file mode 100644 index 00000000000..10165f92f79 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-002.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-003.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-003.html.ini new file mode 100644 index 00000000000..9f0d557bdd8 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-003.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-003.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-004.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-004.html.ini new file mode 100644 index 00000000000..5d4a5ed69c8 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-004.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-004.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-001.html.ini new file mode 100644 index 00000000000..9b7348a115d --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-bottom-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-left-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-left-001.html.ini new file mode 100644 index 00000000000..3185eea7488 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-left-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-bottom-left-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-001.html.ini new file mode 100644 index 00000000000..80e6f10fb4c --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-bottom-right-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-002.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-002.html.ini new file mode 100644 index 00000000000..21a63159e98 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-bottom-right-002.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-left-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-left-001.html.ini new file mode 100644 index 00000000000..47db92a0452 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-left-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-left-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-right-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-right-001.html.ini new file mode 100644 index 00000000000..ecf516cab6c --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-right-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-right-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-001.html.ini new file mode 100644 index 00000000000..959fb5ff2c7 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-001.html.ini new file mode 100644 index 00000000000..0bf4ca03b2b --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-left-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-002.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-002.html.ini new file mode 100644 index 00000000000..2862867aba1 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-left-002.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-001.html.ini new file mode 100644 index 00000000000..dcbd8a120b9 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-left-bottom-right-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-002.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-002.html.ini new file mode 100644 index 00000000000..6ed5f9eb0f4 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-left-bottom-right-002.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-003.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-003.html.ini new file mode 100644 index 00000000000..0fee30dcf08 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-003.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-left-bottom-right-003.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-001.html.ini new file mode 100644 index 00000000000..56514e01ab0 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-right-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-001.html.ini new file mode 100644 index 00000000000..7556fd29358 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-right-bottom-left-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-002.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-002.html.ini new file mode 100644 index 00000000000..d7bc78da1b0 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-right-bottom-left-002.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-003.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-003.html.ini new file mode 100644 index 00000000000..67027c4cdf9 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-003.html.ini @@ -0,0 +1,2 @@ +[corner-shape-angle-top-right-bottom-left-003.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-left-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-left-001.html.ini new file mode 100644 index 00000000000..620c2e6df45 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-left-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-round-bottom-left-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-001.html.ini new file mode 100644 index 00000000000..920cfed142f --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-round-bottom-right-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-002.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-002.html.ini new file mode 100644 index 00000000000..2dbd0a5f0f7 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-round-bottom-right-002.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-001.html.ini new file mode 100644 index 00000000000..56a54757ecd --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-round-top-left-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-002.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-002.html.ini new file mode 100644 index 00000000000..62e84aa90df --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-002.html.ini @@ -0,0 +1,2 @@ +[corner-shape-round-top-left-002.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-top-right-001.html.ini b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-top-right-001.html.ini new file mode 100644 index 00000000000..58dd8ab9997 --- /dev/null +++ b/tests/wpt/meta/css/css-borders/tentative/corner-shape/corner-shape-round-top-right-001.html.ini @@ -0,0 +1,2 @@ +[corner-shape-round-top-right-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-cascade/scope-implicit-external.html.ini b/tests/wpt/meta/css/css-cascade/scope-implicit-external.html.ini index 915c74ee9e1..a1af9423136 100644 --- a/tests/wpt/meta/css/css-cascade/scope-implicit-external.html.ini +++ b/tests/wpt/meta/css/css-cascade/scope-implicit-external.html.ini @@ -1,3 +1,9 @@ [scope-implicit-external.html] [@scope with external stylesheet] expected: FAIL + + [@scope with external stylesheet through link element] + expected: FAIL + + [@scope with external stylesheet through @import] + expected: FAIL diff --git a/tests/wpt/meta/css/css-cascade/scope-proximity.html.ini b/tests/wpt/meta/css/css-cascade/scope-proximity.html.ini index a7da73bd87c..d17662333ff 100644 --- a/tests/wpt/meta/css/css-cascade/scope-proximity.html.ini +++ b/tests/wpt/meta/css/css-cascade/scope-proximity.html.ini @@ -7,3 +7,6 @@ [Specificity wins over proximity] expected: FAIL + + [Identical root with further proximity is not ignored] + expected: FAIL diff --git a/tests/wpt/meta/css/css-cascade/scope-shadow-sharing.html.ini b/tests/wpt/meta/css/css-cascade/scope-shadow-sharing.html.ini new file mode 100644 index 00000000000..ba5f030033e --- /dev/null +++ b/tests/wpt/meta/css/css-cascade/scope-shadow-sharing.html.ini @@ -0,0 +1,2 @@ +[scope-shadow-sharing.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-cascade/scope-specificity.html.ini b/tests/wpt/meta/css/css-cascade/scope-specificity.html.ini index f2161e65309..cf0b84e5101 100644 --- a/tests/wpt/meta/css/css-cascade/scope-specificity.html.ini +++ b/tests/wpt/meta/css/css-cascade/scope-specificity.html.ini @@ -22,3 +22,36 @@ [@scope (#main) { @scope (.a) { .b { } } }] expected: FAIL + + [@scope (#main) { .b { } } and .b] + expected: FAIL + + [@scope (#main) to (.b) { .a { } } and .a] + expected: FAIL + + [@scope (#main, .foo, .bar) { #a { } } and #a] + expected: FAIL + + [@scope (#main) { div.b { } } and div.b] + expected: FAIL + + [@scope (#main) { :scope .b { } } and .a .b] + expected: FAIL + + [@scope (#main) { & .b { } } and #main .b] + expected: FAIL + + [@scope (#main) { div .b { } } and div .b] + expected: FAIL + + [@scope (#main) { @scope (.a) { .b { } } } and .b] + expected: FAIL + + [@scope (#main) { :scope .b { } } and :scope .b] + expected: FAIL + + [@scope { & .b { } } and :scope .b] + expected: FAIL + + [@scope (#main) { > .a { } } and :where(#main) > .a] + expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/text-spacing-trim-computed.html.ini b/tests/wpt/meta/css/css-text/parsing/text-spacing-trim-computed.html.ini index 5fab60bb026..58cb15717b5 100644 --- a/tests/wpt/meta/css/css-text/parsing/text-spacing-trim-computed.html.ini +++ b/tests/wpt/meta/css/css-text/parsing/text-spacing-trim-computed.html.ini @@ -28,3 +28,6 @@ [Property text-spacing-trim value 'trim-start'] expected: FAIL + + [Property text-spacing-trim value 'trim-both'] + expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/text-spacing-trim-valid.html.ini b/tests/wpt/meta/css/css-text/parsing/text-spacing-trim-valid.html.ini index 48ded869ba1..4061c795842 100644 --- a/tests/wpt/meta/css/css-text/parsing/text-spacing-trim-valid.html.ini +++ b/tests/wpt/meta/css/css-text/parsing/text-spacing-trim-valid.html.ini @@ -28,3 +28,6 @@ [e.style['text-spacing-trim'\] = "trim-start" should set the property value] expected: FAIL + + [e.style['text-spacing-trim'\] = "trim-both" should set the property value] + expected: FAIL diff --git a/tests/wpt/meta/css/css-text/parsing/webkit-text-stroke-computed.html.ini b/tests/wpt/meta/css/css-text/parsing/webkit-text-stroke-computed.html.ini deleted file mode 100644 index 6b4372771dd..00000000000 --- a/tests/wpt/meta/css/css-text/parsing/webkit-text-stroke-computed.html.ini +++ /dev/null @@ -1,9 +0,0 @@ -[webkit-text-stroke-computed.html] - [Property -webkit-text-stroke value 'green'] - expected: FAIL - - [Property -webkit-text-stroke value '3px'] - expected: FAIL - - [Property -webkit-text-stroke value '1px red'] - expected: FAIL diff --git a/tests/wpt/meta/css/css-text/white-space/text-wrap-balance-005.html.ini b/tests/wpt/meta/css/css-text/white-space/text-wrap-balance-005.html.ini new file mode 100644 index 00000000000..1523c5e7013 --- /dev/null +++ b/tests/wpt/meta/css/css-text/white-space/text-wrap-balance-005.html.ini @@ -0,0 +1,2 @@ +[text-wrap-balance-005.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-transforms/transform-with-sign-function.html.ini b/tests/wpt/meta/css/css-transforms/transform-with-sign-function.html.ini new file mode 100644 index 00000000000..7d7a21ed7ce --- /dev/null +++ b/tests/wpt/meta/css/css-transforms/transform-with-sign-function.html.ini @@ -0,0 +1,27 @@ +[transform-with-sign-function.html] + [skew(calc(sign(1em - 1px) * 2deg), calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to skew(2deg, 2deg)] + expected: FAIL + + [skewX(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to skewX(2deg)] + expected: FAIL + + [skewY(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to skewY(2deg)] + expected: FAIL + + [matrix(calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2)) should be used-value-equivalent to matrix(2, 2, 2, 2, 2, 2)] + expected: FAIL + + [matrix3d(calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2),calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2), calc(sign(1em - 1px) * 2)) should be used-value-equivalent to matrix3d(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)] + expected: FAIL + + [rotate(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to rotate(2deg)] + expected: FAIL + + [rotateX(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to rotateX(2deg)] + expected: FAIL + + [rotateY(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to rotateY(2deg)] + expected: FAIL + + [rotateZ(calc(sign(1em - 1px) * 2deg)) should be used-value-equivalent to rotateZ(2deg)] + expected: FAIL diff --git a/tests/wpt/meta/css/css-transitions/disconnected-element-001.html.ini b/tests/wpt/meta/css/css-transitions/disconnected-element-001.html.ini deleted file mode 100644 index fc97b691ef9..00000000000 --- a/tests/wpt/meta/css/css-transitions/disconnected-element-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[disconnected-element-001.html] - expected: TIMEOUT diff --git a/tests/wpt/meta/css/cssom/adoptedstylesheets-modify-array-and-sheet.html.ini b/tests/wpt/meta/css/cssom/adoptedstylesheets-modify-array-and-sheet.html.ini new file mode 100644 index 00000000000..97401f0fd7c --- /dev/null +++ b/tests/wpt/meta/css/cssom/adoptedstylesheets-modify-array-and-sheet.html.ini @@ -0,0 +1,2 @@ +[adoptedstylesheets-modify-array-and-sheet.html] + expected: ERROR diff --git a/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.https.sub.html.ini index 3d6068202c8..578ce049089 100644 --- a/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.https.sub.html.ini +++ b/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.https.sub.html.ini @@ -4,7 +4,7 @@ expected: FAIL [sec-fetch-site - Cross-site, no attributes] - expected: TIMEOUT + expected: FAIL [sec-fetch-site - Same site, no attributes] expected: NOTRUN diff --git a/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini index 4648085f98d..410ec4c1d39 100644 --- a/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini +++ b/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini @@ -41,6 +41,3 @@ [sec-fetch-site - HTTPS downgrade-upgrade, no attributes] expected: NOTRUN - - [sec-fetch-site - Not sent to non-trustworthy same-origin destination, no attributes] - expected: FAIL diff --git a/tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.advances-not-defined.html.ini b/tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.advances-not-defined.html.ini deleted file mode 100644 index ce39bad4c0e..00000000000 --- a/tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.advances-not-defined.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[2d.text.measure.advances-not-defined.html] - [Testing that TextMetrics.advances is not defined] - expected: FAIL diff --git a/tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.advances-not-defined.worker.js.ini b/tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.advances-not-defined.worker.js.ini deleted file mode 100644 index 327a3c86a01..00000000000 --- a/tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.advances-not-defined.worker.js.ini +++ /dev/null @@ -1,3 +0,0 @@ -[2d.text.measure.advances-not-defined.worker.html] - [Testing that TextMetrics.advances is not defined] - expected: FAIL diff --git a/tests/wpt/meta/html/rendering/widgets/button-layout/block-in-inline.html.ini b/tests/wpt/meta/html/rendering/widgets/button-layout/block-in-inline.html.ini new file mode 100644 index 00000000000..d342f0c6653 --- /dev/null +++ b/tests/wpt/meta/html/rendering/widgets/button-layout/block-in-inline.html.ini @@ -0,0 +1,2 @@ +[block-in-inline.html] + expected: FAIL diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini index 24903b5f66f..d7d0d3ef89d 100644 --- a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini +++ b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini @@ -1,4 +1,4 @@ [iframe_sandbox_popups_escaping-1.html] expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini index 4034793cc72..c6f1e5d7d84 100644 --- a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini +++ b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini @@ -1,3 +1,4 @@ [iframe_sandbox_popups_nonescaping-2.html] + expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.tentative.html.ini b/tests/wpt/meta/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.html.ini similarity index 75% rename from tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.tentative.html.ini rename to tests/wpt/meta/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.html.ini index 12bb3b1110f..0d6dfa4527a 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.tentative.html.ini +++ b/tests/wpt/meta/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.html.ini @@ -1,4 +1,4 @@ -[show-picker-cross-origin-iframe.tentative.html] +[show-picker-cross-origin-iframe.html] [Test showPicker() called from cross-origin iframe 1] expected: FAIL diff --git a/tests/wpt/meta/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini b/tests/wpt/meta/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini deleted file mode 100644 index 6339abba6d9..00000000000 --- a/tests/wpt/meta/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[async-script.html?reload] - expected: ERROR - -[async-script.html?default] diff --git a/tests/wpt/tests/IndexedDB/bindings-inject-keys-bypass-setters.html b/tests/wpt/tests/IndexedDB/bindings-inject-keys-bypass-setters.html deleted file mode 100644 index e67377fb77f..00000000000 --- a/tests/wpt/tests/IndexedDB/bindings-inject-keys-bypass-setters.html +++ /dev/null @@ -1,35 +0,0 @@ - - -IndexedDB: ES bindings - Inject a key into a value - Keys bypass setters - - - - - diff --git a/tests/wpt/tests/IndexedDB/bindings-inject-keys-bypass.any.js b/tests/wpt/tests/IndexedDB/bindings-inject-keys-bypass.any.js new file mode 100644 index 00000000000..a32a7a66338 --- /dev/null +++ b/tests/wpt/tests/IndexedDB/bindings-inject-keys-bypass.any.js @@ -0,0 +1,29 @@ +// META: global=window,worker +// META: title=IndexedDB: ES bindings - Inject a key into a value - Keys bypass setters +// META: script=resources/support-promises.js + +'use_strict'; + +promise_test(async t => { + const db = await createDatabase(t, db => { + db.createObjectStore('store'); + }); + + let setter_called = false; + Object.defineProperty(Object.prototype, '10', { + configurable: true, + set: value => { setter_called = true; }, + }); + t.add_cleanup(() => { delete Object.prototype['10']; }); + + const tx = db.transaction('store', 'readwrite', { durability: 'relaxed' }); + const result = await promiseForRequest(t, tx.objectStore('store').put( + 'value', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'key'])); + + assert_false(setter_called, + 'Setter should not be called for key result.'); + assert_true(result.hasOwnProperty('10'), + 'Result should have own-property overriding prototype setter.'); + assert_equals(result[10], 'key', + 'Result should have expected property.'); +}, 'Returning keys to script should bypass prototype setters'); diff --git a/tests/wpt/tests/IndexedDB/bindings-inject-values-bypass-chain.html b/tests/wpt/tests/IndexedDB/bindings-inject-values-bypass-chain.html deleted file mode 100644 index 73505edf1dd..00000000000 --- a/tests/wpt/tests/IndexedDB/bindings-inject-values-bypass-chain.html +++ /dev/null @@ -1,35 +0,0 @@ - - -IndexedDB: ES bindings - Inject a key into a value - Values bypass chain - - - - - diff --git a/tests/wpt/tests/IndexedDB/bindings-inject-values-bypass-setters.html b/tests/wpt/tests/IndexedDB/bindings-inject-values-bypass-setters.html deleted file mode 100644 index 6c4fb93bfd9..00000000000 --- a/tests/wpt/tests/IndexedDB/bindings-inject-values-bypass-setters.html +++ /dev/null @@ -1,36 +0,0 @@ - - -IndexedDB: ES bindings - Inject a key into a value - Values bypass - setters - - - - - diff --git a/tests/wpt/tests/IndexedDB/bindings-inject-values-bypass.any.js b/tests/wpt/tests/IndexedDB/bindings-inject-values-bypass.any.js new file mode 100644 index 00000000000..03d488480d7 --- /dev/null +++ b/tests/wpt/tests/IndexedDB/bindings-inject-values-bypass.any.js @@ -0,0 +1,53 @@ +// META: global=window,worker +// META: title=IndexedDB: ES bindings - Inject a key into a value - Values bypass chain and setters +// META: script=resources/support-promises.js + +'use_strict'; + +promise_test(async t => { + const db = await createDatabase(t, db => { + db.createObjectStore('store', {autoIncrement: true, keyPath: 'a.b.c'}); + }); + + Object.prototype.a = {b: {c: 'on proto'}}; + t.add_cleanup(() => { delete Object.prototype.a; }); + + const tx = db.transaction('store', 'readwrite', {durability: "relaxed"}); + tx.objectStore('store').put({}); + const result = await promiseForRequest(t, tx.objectStore('store').get(1)); + + assert_true(result.hasOwnProperty('a'), + 'Result should have own-properties overriding prototype.'); + assert_true(result.a.hasOwnProperty('b'), + 'Result should have own-properties overriding prototype.'); + assert_true(result.a.b.hasOwnProperty('c'), + 'Result should have own-properties overriding prototype.'); + assert_equals(result.a.b.c, 1, + 'Own property should match primary key generator value'); + assert_equals(Object.prototype.a.b.c, 'on proto', + 'Prototype should not be modified'); +}, 'Returning values to script should bypass prototype chain'); + +promise_test(async t => { + const db = await createDatabase(t, db => { + db.createObjectStore('store', {autoIncrement: true, keyPath: 'id'}); + }); + + let setter_called = false; + Object.defineProperty(Object.prototype, 'id', { + configurable: true, + set: value => { setter_called = true; }, + }); + t.add_cleanup(() => { delete Object.prototype['id']; }); + + const tx = db.transaction('store', 'readwrite', {durability: 'relaxed'}); + tx.objectStore('store').put({}); + const result = await promiseForRequest(t, tx.objectStore('store').get(1)); + + assert_false(setter_called, + 'Setter should not be called for key result.'); + assert_true(result.hasOwnProperty('id'), + 'Result should have own-property overriding prototype setter.'); + assert_equals(result.id, 1, + 'Own property should match primary key generator value'); +}, 'Returning values to script should bypass prototype setters'); diff --git a/tests/wpt/tests/accname/name/comp_name_from_content.html b/tests/wpt/tests/accname/name/comp_name_from_content.html index 2f6b3ab6b47..e03833e41c2 100644 --- a/tests/wpt/tests/accname/name/comp_name_from_content.html +++ b/tests/wpt/tests/accname/name/comp_name_from_content.html @@ -232,26 +232,6 @@ - -

heading with link referencing image using aria-labelledby, that in turn references text element via aria-labelledby

-

- - link - - - image -

- - -

heading with link referencing image using aria-labelledby, that in turn references itself and another element via aria-labelledby

-

- - link - - - image -

- diff --git a/tests/wpt/tests/accname/name/comp_name_from_content.tentative.html b/tests/wpt/tests/accname/name/comp_name_from_content.tentative.html new file mode 100644 index 00000000000..bcaf8db7471 --- /dev/null +++ b/tests/wpt/tests/accname/name/comp_name_from_content.tentative.html @@ -0,0 +1,44 @@ + + + + Name Comp: Name From Content (Tentative) + + + + + + + + + + + + + +

heading with link referencing image using aria-labelledby, that in turn references text element via aria-labelledby

+

+ + link + + + image +

+ + +

heading with link referencing image using aria-labelledby, that in turn references itself and another element via aria-labelledby

+

+ + link + + + image +

+ + + + diff --git a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-disabled-by-feature-policy.tentative.https.sub.html b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-disabled-by-feature-policy.tentative.https.sub.html index 8ca1819df8b..16a17b5158d 100644 --- a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-disabled-by-feature-policy.tentative.https.sub.html +++ b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-disabled-by-feature-policy.tentative.https.sub.html @@ -12,7 +12,7 @@ const same_origin_src = '/feature-policy/resources/feature-policy-clipboard-read.html'; const cross_origin_src = - 'https://{{domains[www]}}:{{ports[https][0]}}' + same_origin_src; + 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + same_origin_src; promise_test(async t => { await tryGrantReadPermission(); diff --git a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html index 367d033d0f6..2998e058b3d 100644 --- a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html +++ b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html @@ -12,7 +12,7 @@ const same_origin_src = '/feature-policy/resources/feature-policy-clipboard-read.html'; const cross_origin_src = - 'https://{{domains[www]}}:{{ports[https][0]}}' + same_origin_src; + 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + same_origin_src; // TODO(https://github.com/whatwg/html/issues/5493, https://crbug.com/1074482): // In Chrome and Firefox, Cross-origin focus requires user gesture. In Chrome diff --git a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-cross-origin-tentative.https.sub.html b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-cross-origin-tentative.https.sub.html index c371ea3b41c..88c8d845b26 100644 --- a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-cross-origin-tentative.https.sub.html +++ b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-cross-origin-tentative.https.sub.html @@ -12,7 +12,7 @@ const same_origin_src = '/feature-policy/resources/feature-policy-clipboard-read.html'; const cross_origin_src = - 'https://{{domains[www]}}:{{ports[https][0]}}' + same_origin_src; + 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + same_origin_src; // TODO(https://github.com/whatwg/html/issues/5493, https://crbug.com/1074482): // In Chrome and Firefox, Cross-origin focus requires user gesture. In Chrome diff --git a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy.tentative.https.sub.html b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy.tentative.https.sub.html index c21d6cf0f62..e392def5e90 100644 --- a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy.tentative.https.sub.html +++ b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy.tentative.https.sub.html @@ -12,7 +12,7 @@ const same_origin_src = '/feature-policy/resources/feature-policy-clipboard-read.html'; const cross_origin_src = - 'https://{{domains[www]}}:{{ports[https][0]}}' + same_origin_src; + 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + same_origin_src; promise_test(async t => { await tryGrantReadPermission(); diff --git a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html index 79dd6cf891c..e9df891d4bd 100644 --- a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html +++ b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html @@ -12,7 +12,7 @@ const same_origin_src = '/feature-policy/resources/feature-policy-clipboard-read.html'; const cross_origin_src = - 'https://{{domains[www]}}:{{ports[https][0]}}' + same_origin_src; + 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + same_origin_src; promise_test(async t => { await tryGrantReadPermission(); diff --git a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-disabled-by-feature-policy.tentative.https.sub.html b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-disabled-by-feature-policy.tentative.https.sub.html index b328debde29..297d074a7d7 100644 --- a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-disabled-by-feature-policy.tentative.https.sub.html +++ b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-disabled-by-feature-policy.tentative.https.sub.html @@ -12,7 +12,7 @@ const same_origin_src = '/feature-policy/resources/feature-policy-clipboard-write.html'; const cross_origin_src = - 'https://{{domains[www]}}:{{ports[https][0]}}' + same_origin_src; + 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + same_origin_src; promise_test(async t => { await tryGrantWritePermission(); diff --git a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html index e669c8fec49..45bba1b8d35 100644 --- a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html +++ b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html @@ -12,7 +12,7 @@ const same_origin_src = '/feature-policy/resources/feature-policy-clipboard-write.html'; const cross_origin_src = - 'https://{{domains[www]}}:{{ports[https][0]}}' + same_origin_src; + 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + same_origin_src; // TODO(https://github.com/whatwg/html/issues/5493, https://crbug.com/1074482): // In Chrome and Firefox, Cross-origin focus requires user gesture. In Chrome diff --git a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-cross-origin-tentative.https.sub.html b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-cross-origin-tentative.https.sub.html index 6e7029cc789..8f64fdbe02e 100644 --- a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-cross-origin-tentative.https.sub.html +++ b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-cross-origin-tentative.https.sub.html @@ -12,7 +12,7 @@ const same_origin_src = '/feature-policy/resources/feature-policy-clipboard-write.html'; const cross_origin_src = - 'https://{{domains[www]}}:{{ports[https][0]}}' + same_origin_src; + 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + same_origin_src; // TODO(https://github.com/whatwg/html/issues/5493, https://crbug.com/1074482): // In Chrome and Firefox, Cross-origin focus requires user gesture. In Chrome diff --git a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy.tentative.https.sub.html b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy.tentative.https.sub.html index cb908df65f2..701759b61c9 100644 --- a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy.tentative.https.sub.html +++ b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy.tentative.https.sub.html @@ -12,7 +12,7 @@ const same_origin_src = '/feature-policy/resources/feature-policy-clipboard-write.html'; const cross_origin_src = - 'https://{{domains[www]}}:{{ports[https][0]}}' + same_origin_src; + 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + same_origin_src; promise_test(async t => { await tryGrantWritePermission(); diff --git a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html index 532c72545c7..b976a17a7cb 100644 --- a/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html +++ b/tests/wpt/tests/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html @@ -12,7 +12,7 @@ const same_origin_src = '/feature-policy/resources/feature-policy-clipboard-write.html'; const cross_origin_src = - 'https://{{domains[www]}}:{{ports[https][0]}}' + same_origin_src; + 'https://{{hosts[alt][]}}:{{ports[https][0]}}' + same_origin_src; promise_test(async t => { await tryGrantWritePermission(); diff --git a/tests/wpt/tests/content-security-policy/generic/304-response-should-update-csp.sub.html b/tests/wpt/tests/content-security-policy/generic/304-response-should-update-csp.sub.html index b16eadaedc0..a882dc28914 100644 --- a/tests/wpt/tests/content-security-policy/generic/304-response-should-update-csp.sub.html +++ b/tests/wpt/tests/content-security-policy/generic/304-response-should-update-csp.sub.html @@ -28,7 +28,7 @@ window.onmessage = function(e) { if (e.source == i1.contentWindow) { if (e.data == "abc_executed") { t1.done(); return; } - if (e.data == "script-src 'nonce-abc' 'sha256-IIB78ZS1RMMrAWpsLg/RrDbVPhI14rKm3sFOeKPYulw=';") { t2.done(); return; } + if (e.data == "script-src 'nonce-abc' 'sha256-IIB78ZS1RMMrAWpsLg/RrDbVPhI14rKm3sFOeKPYulw='") { t2.done(); return; } t1.step(function() { assert_unreached("Unexpected message received"); }); t2.step(function() { assert_unreached("Unexpected message received"); }); @@ -36,7 +36,7 @@ if (e.source == i2.contentWindow) { if (e.data == "def_executed") { t3.done(); return; } - if (e.data == "script-src 'nonce-def' 'sha256-IIB78ZS1RMMrAWpsLg/RrDbVPhI14rKm3sFOeKPYulw=';") { t4.done(); return; } + if (e.data == "script-src 'nonce-def' 'sha256-IIB78ZS1RMMrAWpsLg/RrDbVPhI14rKm3sFOeKPYulw='") { t4.done(); return; } t3.step(function() { assert_unreached("Unexpected message received"); }); t4.step(function() { assert_unreached("Unexpected message received"); }); diff --git a/tests/wpt/tests/content-security-policy/generic/support/304-response.py b/tests/wpt/tests/content-security-policy/generic/support/304-response.py index f9756555f79..b8d346e448a 100644 --- a/tests/wpt/tests/content-security-policy/generic/support/304-response.py +++ b/tests/wpt/tests/content-security-policy/generic/support/304-response.py @@ -4,13 +4,13 @@ def main(request, response): # with the 304 response response.status = 304 headers = [(b"Content-Type", b"text/html"), - (b"Content-Security-Policy", b"script-src 'nonce-def' 'sha256-IIB78ZS1RMMrAWpsLg/RrDbVPhI14rKm3sFOeKPYulw=';"), + (b"Content-Security-Policy", b"script-src 'nonce-def' 'sha256-IIB78ZS1RMMrAWpsLg/RrDbVPhI14rKm3sFOeKPYulw='"), (b"Cache-Control", b"private, max-age=0, must-revalidate"), (b"ETag", b"123456")] return headers, u"" else: headers = [(b"Content-Type", b"text/html"), - (b"Content-Security-Policy", b"script-src 'nonce-abc' 'sha256-IIB78ZS1RMMrAWpsLg/RrDbVPhI14rKm3sFOeKPYulw=';"), + (b"Content-Security-Policy", b"script-src 'nonce-abc' 'sha256-IIB78ZS1RMMrAWpsLg/RrDbVPhI14rKm3sFOeKPYulw='"), (b"Cache-Control", b"private, max-age=0, must-revalidate"), (b"Etag", b"123456")] return headers, u''' diff --git a/tests/wpt/tests/credential-management/non-fully-active.https.html b/tests/wpt/tests/credential-management/non-fully-active.https.html new file mode 100644 index 00000000000..8101599cedb --- /dev/null +++ b/tests/wpt/tests/credential-management/non-fully-active.https.html @@ -0,0 +1,69 @@ + + +Credential Management API Test: non-fully active document + + + + + + + + + diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-name-multicol-002.html b/tests/wpt/tests/css/css-anchor-position/anchor-name-multicol-002.html index 73b7b566206..4f84f173984 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-name-multicol-002.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-name-multicol-002.html @@ -38,10 +38,11 @@ position: absolute; background: lime; opacity: .5; - left: anchor(--a1 left); - top: anchor(--a1 top); - width: anchor-size(--a1 width); - height: anchor-size(--a1 height); + position-anchor: --a1; + left: anchor(left); + top: anchor(top); + width: anchor-size(width); + height: anchor-size(height); } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-position-circular.html b/tests/wpt/tests/css/css-anchor-position/anchor-position-circular.html index 85fca57421c..a0147ecc528 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-position-circular.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-position-circular.html @@ -16,8 +16,8 @@ div { #anchored1 { position: absolute; position-anchor: --a1; - left: anchor(--a1 left); - top: anchor(--a1 bottom); + left: anchor(left); + top: anchor(bottom); background: orange; anchor-name: --a2; } @@ -25,8 +25,8 @@ div { #anchored2 { position: absolute; position-anchor: --a2; - left: anchor(--a2 left); - top: anchor(--a2 bottom); + left: anchor(left); + top: anchor(bottom); background: green; anchor-name: --a1; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-position-multicol-colspan-001.html b/tests/wpt/tests/css/css-anchor-position/anchor-position-multicol-colspan-001.html index f90ee5c3a26..2938500ca49 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-position-multicol-colspan-001.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-position-multicol-colspan-001.html @@ -36,10 +36,11 @@ } .target { position: absolute; - left: anchor(--a1 left); - top: anchor(--a1 top); - width: anchor-size(--a1 width); - height: anchor-size(--a1 height); + position-anchor: --a1; + left: anchor(left); + top: anchor(top); + width: anchor-size(width); + height: anchor-size(height); background: lime; opacity: .3; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-001.html b/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-001.html index a8513bb74ca..f40cc0dccf3 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-001.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-001.html @@ -16,8 +16,8 @@ } #target { - top: anchor(--a top); - left: anchor(--a right); + top: anchor(top); + left: anchor(right); width: 100px; height: 100px; background: lime; diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-002.html b/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-002.html index 9ce0b8e5f9f..11885251ec4 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-002.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-002.html @@ -16,8 +16,8 @@ } #target { - top: anchor(--a top); - left: anchor(--a right); + top: anchor(top); + left: anchor(right); width: 100px; height: 100px; background: lime; diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-003.html b/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-003.html index 3bc815af0ca..eb2d2b3fbbc 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-003.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-003.html @@ -16,8 +16,8 @@ } #target { - top: anchor(--a top); - left: anchor(--a right); + top: anchor(top); + left: anchor(right); width: 100px; height: 100px; background: lime; diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-004.html b/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-004.html index ad0a7b8b32f..5fa1c33b12e 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-004.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-004.html @@ -16,8 +16,8 @@ } #target { - top: anchor(--a top); - left: anchor(--a right); + top: anchor(top); + left: anchor(right); width: 100px; height: 100px; background: lime; diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-005.html b/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-005.html index 51aa482aee5..418178e5418 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-005.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-005.html @@ -17,8 +17,8 @@ #target { position: fixed; - top: anchor(--a bottom, 200px); - left: anchor(--a left, 300px); + top: anchor(bottom, 200px); + left: anchor(left, 300px); width: 100px; height: 100px; background: lime; diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-006.html b/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-006.html index a3b9e63c06b..c235eccc160 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-006.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-position-top-layer-006.html @@ -17,8 +17,8 @@ #target { position: fixed; - top: anchor(--a bottom, 200px); - left: anchor(--a left, 300px); + top: anchor(bottom, 200px); + left: anchor(left, 300px); width: 100px; height: 100px; background: lime; diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-001.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-001.html index b9dfc56e2ef..d0b42cd6202 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-001.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-001.html @@ -38,16 +38,16 @@ body { #inner-anchored { color: green; position: absolute; - left: anchor(--anchor left); - bottom: anchor(--anchor top); + left: anchor(left); + bottom: anchor(top); position-anchor: --anchor; } #outer-anchored { color: yellow; position: absolute; - left: anchor(--anchor left); - top: anchor(--anchor bottom); + left: anchor(left); + top: anchor(bottom); position-anchor: --anchor; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-002.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-002.html index 2c51e6a1a3a..49a38c0e69e 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-002.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-002.html @@ -43,8 +43,8 @@ body { position: absolute; width: 50px; height: 50px; - top: anchor(--a1 top); - left: anchor(--a1 right); + top: anchor(top); + left: anchor(right); position-anchor: --a1; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-003.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-003.html index 6c0dd08355c..4f5b0dbba55 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-003.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-003.html @@ -45,8 +45,8 @@ body { #target { position: absolute; - left: anchor(--a left); - bottom: anchor(--a top); + left: anchor(left); + bottom: anchor(top); position-anchor: --a; width: 50px; height: 50px; diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-004.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-004.html index c0e0afb23f1..e21507acb64 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-004.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-004.html @@ -33,8 +33,8 @@ body { .target { position: absolute; position-anchor: --a; - top: anchor(--a bottom); - left: anchor(--a left); + top: anchor(bottom); + left: anchor(left); color: lime; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-005.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-005.html index f8f26b719f0..bab19249ced 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-005.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-005.html @@ -32,7 +32,7 @@ body { position: fixed; width: 100px; height: 100px; - bottom: anchor(--a top); + bottom: anchor(top); position-anchor: --a; background: lime; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-001.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-001.html index 3a86da5f709..d853ad39a39 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-001.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-001.html @@ -26,8 +26,8 @@ div { #anchored1 { position: absolute; position-anchor: --a1; - left: anchor(--a1 left); - top: anchor(--a1 bottom); + left: anchor(left); + top: anchor(bottom); background: green; anchor-name: --a2; } @@ -35,8 +35,8 @@ div { #anchored2 { position: absolute; position-anchor: --a2; - left: anchor(--a2 left); - top: anchor(--a2 bottom); + left: anchor(left); + top: anchor(bottom); background: lime; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-002.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-002.html index 38dadba5c83..148dedf9488 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-002.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-002.html @@ -32,8 +32,8 @@ div { #anchored1 { position: absolute; position-anchor: --a1; - left: anchor(--a1 left); - top: anchor(--a1 bottom); + left: anchor(left); + top: anchor(bottom); background: green; anchor-name: --a2; } @@ -41,8 +41,8 @@ div { #anchored2 { position: absolute; position-anchor: --a2; - left: anchor(--a2 left); - top: anchor(--a2 bottom); + left: anchor(left); + top: anchor(bottom); background: lime; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-003.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-003.html index 6352ebbfb68..5f4c0ff3006 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-003.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-003.html @@ -32,8 +32,8 @@ div { #anchored1 { position: absolute; position-anchor: --a1; - left: anchor(--a1 left); - top: anchor(--a1 bottom); + left: anchor(left); + top: anchor(bottom); background: green; anchor-name: --a2; z-index: 1; @@ -42,8 +42,8 @@ div { #anchored2 { position: absolute; position-anchor: --a2; - left: anchor(--a2 left); - top: anchor(--a2 bottom); + left: anchor(left); + top: anchor(bottom); background: lime; z-index: 1; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-004.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-004.html index b31519f5803..454abf63b1b 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-004.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-004.html @@ -38,16 +38,16 @@ div { #anchored1 { position: absolute; position-anchor: --a1; - left: anchor(--a1 left); - top: anchor(--a1 bottom); + left: anchor(left); + top: anchor(bottom); background: green; } #anchored2 { position: absolute; position-anchor: --a2; - left: anchor(--a2 left); - top: anchor(--a2 bottom); + left: anchor(left); + top: anchor(bottom); background: lime; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-fallback.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-fallback.html index 221df77b063..ab2090e0048 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-fallback.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-chained-fallback.html @@ -31,21 +31,21 @@ div { background: green; position-try-options: --fallback; anchor-name: --a2; - left: anchor(--a1 left); - bottom: anchor(--a1 top); + left: anchor(left); + bottom: anchor(top); } #anchored2 { position: absolute; position-anchor: --a2; - left: anchor(--a2 left); - top: anchor(--a2 bottom); + left: anchor(left); + top: anchor(bottom); background: lime; } @position-try --fallback { - left: anchor(--a1 right); - top: anchor(--a1 top); + left: anchor(right); + top: anchor(top); bottom: auto; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-001-crash.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-001-crash.html index 4dd9bad60ea..e8ecde3a3e3 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-001-crash.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-001-crash.html @@ -24,8 +24,8 @@ #anchored { position: absolute; position-anchor: --a; - left: anchor(--a left); - bottom: anchor(--a top); + left: anchor(left); + bottom: anchor(top); width: 100px; height: 100px; background: orange; diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-002-crash.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-002-crash.html index 80dabbb6661..33003464743 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-002-crash.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-002-crash.html @@ -21,8 +21,8 @@ #target { position: fixed; - top: anchor(--a bottom); - left: anchor(--a left); + top: anchor(bottom); + left: anchor(left); position-anchor: --a; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-003-crash.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-003-crash.html index f46d902ffee..ea15a9e2fcd 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-003-crash.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-003-crash.html @@ -21,8 +21,8 @@ #target { position: fixed; - top: anchor(--a bottom); - left: anchor(--a left); + top: anchor(bottom); + left: anchor(left); position-anchor: --a; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-004-crash.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-004-crash.html index ee5ad2f41ae..97e66bea267 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-004-crash.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-004-crash.html @@ -21,8 +21,8 @@ #target { position: fixed; - top: anchor(--a bottom); - left: anchor(--a left); + top: anchor(bottom); + left: anchor(left); position-anchor: --a; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-005-crash.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-005-crash.html index c5e44a79e79..0c6bf68e60c 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-005-crash.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-005-crash.html @@ -21,8 +21,8 @@ #target { position: fixed; - top: anchor(--a bottom); - left: anchor(--a left); + top: anchor(bottom); + left: anchor(left); position-anchor: --a; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-006.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-006.html index 49c6dc780c7..8a53ae24e5b 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-006.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-composited-scrolling-006.html @@ -28,7 +28,7 @@ body { height: 100px; background: red; left: 0; - bottom: anchor(--a top); + bottom: anchor(top); position-anchor: --a; } #overlap { diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-fixedpos-002.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-fixedpos-002.html index 1a05d8b93a1..970fb45af0c 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-fixedpos-002.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-fixedpos-002.html @@ -24,8 +24,8 @@ div { #anchored { position: fixed; position-anchor: --a1; - left: anchor(--a1 right); - top: anchor(--a1 top); + left: anchor(right); + top: anchor(top); background: green; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-fixedpos.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-fixedpos.html index 7923ed789de..09ad897b3f9 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-fixedpos.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-fixedpos.html @@ -23,8 +23,8 @@ div { #anchored { position: fixed; position-anchor: --a1; - left: anchor(--a1 right); - top: anchor(--a1 top); + left: anchor(right); + top: anchor(top); background: green; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-js-expose.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-js-expose.html index 3b3f1a06086..968ce5ab683 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-js-expose.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-js-expose.html @@ -31,8 +31,8 @@ } #anchored { position: absolute; - left: anchor(--anchor left); - bottom: anchor(--anchor top); + left: anchor(left); + bottom: anchor(top); width: 100px; height: 100px; position-anchor: --anchor; diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-nested.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-nested.html index 291fe0d7103..ad39224ae41 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-nested.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-nested.html @@ -40,17 +40,17 @@ body { position: absolute; width: 50px; height: 50px; - left: anchor(--anchor left); + left: anchor(left); position-anchor: --anchor; } .above { - bottom: anchor(--anchor top); + bottom: anchor(top); background-color: red; } .below { - top: anchor(--anchor bottom); + top: anchor(bottom); background-color: yellow; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-overflow-hidden.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-overflow-hidden.html index b57e39956bb..d26e48dc67b 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-overflow-hidden.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-overflow-hidden.html @@ -36,16 +36,16 @@ body { #inner-anchored { color: green; position: absolute; - left: anchor(--anchor left); - bottom: anchor(--anchor top); + left: anchor(left); + bottom: anchor(top); position-anchor: --anchor; } #outer-anchored { color: yellow; position: absolute; - left: anchor(--anchor left); - top: anchor(--anchor bottom); + left: anchor(left); + top: anchor(bottom); position-anchor: --anchor; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-001.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-001.html index 3130018e73d..e314e9634d9 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-001.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-001.html @@ -39,22 +39,22 @@ position-try-options: --f1, --f2; width: 100px; height: 100px; /* Above the anchor */ - left: anchor(--a left); - bottom: anchor(--a top); + left: anchor(left); + bottom: anchor(top); } @position-try --f1 { /* Left of the anchor */ - right: anchor(--a left); - top: anchor(--a top); + right: anchor(left); + top: anchor(top); bottom: auto; left: auto; } @position-try --f2 { /* Right of the anchor */ - left: anchor(--a right); - top: anchor(--a top); + left: anchor(right); + top: anchor(top); bottom: auto; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-002.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-002.html index 52bbcd62fc1..4e281177eb7 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-002.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-002.html @@ -32,14 +32,14 @@ body { height: 100px; background: green; position-anchor: --a; - top: anchor(--a top); - left: anchor(--a right); + top: anchor(top); + left: anchor(right); position-try-options: --pf; } @position-try --pf { left: auto; - right: anchor(--a left); + right: anchor(left); } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-003.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-003.html index b89a574d768..d35d2ac2699 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-003.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-003.html @@ -35,7 +35,7 @@ #anchored { position: absolute; - top: anchor(--a bottom); + top: anchor(bottom); width: 100px; height: 100px; background: green; @@ -45,7 +45,7 @@ @position-try --pf { top: auto; - bottom: anchor(--a top); + bottom: anchor(top); } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-004.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-004.html index bf0bee972de..cc61a0443c8 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-004.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-004.html @@ -36,19 +36,19 @@ body { position-anchor: --a; position-try-options: --pf1, --pf2; /* Top of the anchor */ - bottom: anchor(--a top); - left: anchor(--a left); + bottom: anchor(top); + left: anchor(left); } @position-try --pf1 { /* Bottom of the anchor */ - top: anchor(--a bottom); + top: anchor(bottom); bottom: auto; } @position-try --pf2 { /* Left of the anchor */ - top: anchor(--a top); - right: anchor(--a left); + top: anchor(top); + right: anchor(left); bottom: auto; left: auto; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-005.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-005.html index 197a9e4f79c..995010afd4b 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-005.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-005.html @@ -33,14 +33,14 @@ body { height: 100px; background: green; position-anchor: --a; - top: anchor(--a top); - left: anchor(--a right); + top: anchor(top); + left: anchor(right); position-try-options: --pf; } @position-try --pf { left: auto; - right: anchor(--a left); + right: anchor(left); } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-006.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-006.html index 132c45c89c7..632b5762c0e 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-006.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-006.html @@ -30,24 +30,24 @@ body { background: green; position-anchor: --a; position-try: --pf1, --pf2, --pf3; - inset-block-start: anchor(--a end); - inset-inline-start: anchor(--a end); + inset-block-start: anchor(end); + inset-inline-start: anchor(end); } @position-try --pf1 { inset: auto; - inset-block-end: anchor(--a start); - inset-inline-start: anchor(--a end); + inset-block-end: anchor(start); + inset-inline-start: anchor(end); } @position-try --pf2 { inset: auto; - inset-block-start: anchor(--a end); - inset-inline-end: anchor(--a start); + inset-block-start: anchor(end); + inset-inline-end: anchor(start); } @position-try --pf3 { inset: auto; - inset-block-end: anchor(--a start); - inset-inline-end: anchor(--a start); + inset-block-end: anchor(start); + inset-inline-end: anchor(start); } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-007.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-007.html index a02bd35a669..8ac54db0633 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-007.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-007.html @@ -34,24 +34,24 @@ html { background: green; position-anchor: --a; position-try-options: --pf1, --pf2, --pf3; - inset-block-start: anchor(--a end); - inset-inline-start: anchor(--a end); + inset-block-start: anchor(end); + inset-inline-start: anchor(end); } @position-try --pf1 { inset: auto; - inset-block-end: anchor(--a start); - inset-inline-start: anchor(--a end); + inset-block-end: anchor(start); + inset-inline-start: anchor(end); } @position-try --pf2 { inset: auto; - inset-block-start: anchor(--a end); - inset-inline-end: anchor(--a start); + inset-block-start: anchor(end); + inset-inline-end: anchor(start); } @position-try --pf3 { inset: auto; - inset-block-end: anchor(--a start); - inset-inline-end: anchor(--a start); + inset-block-end: anchor(start); + inset-inline-end: anchor(start); } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-008.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-008.html index 2deddd587ef..d95d531a0c3 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-008.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-008.html @@ -35,24 +35,24 @@ html { background: green; position-anchor: --a; position-try-options: --pf1, --pf2, --pf3; - inset-block-start: anchor(--a end); - inset-inline-start: anchor(--a end); + inset-block-start: anchor(end); + inset-inline-start: anchor(end); } @position-try --pf1 { inset: auto; - inset-block-end: anchor(--a start); - inset-inline-start: anchor(--a end); + inset-block-end: anchor(start); + inset-inline-start: anchor(end); } @position-try --pf2 { inset: auto; - inset-block-start: anchor(--a end); - inset-inline-end: anchor(--a start); + inset-block-start: anchor(end); + inset-inline-end: anchor(start); } @position-try --pf3 { inset: auto; - inset-block-end: anchor(--a start); - inset-inline-end: anchor(--a start); + inset-block-end: anchor(start); + inset-inline-end: anchor(start); } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-009.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-009.html index 0d7d6b077fc..94b2c64ecc4 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-009.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-009.html @@ -34,24 +34,24 @@ html { background: green; position-anchor: --a; position-try-options: --pf1, --pf2, --pf3; - inset-block-start: anchor(--a end); - inset-inline-start: anchor(--a end); + inset-block-start: anchor(end); + inset-inline-start: anchor(end); } @position-try --pf1 { inset: auto; - inset-block-end: anchor(--a start); - inset-inline-start: anchor(--a end); + inset-block-end: anchor(start); + inset-inline-start: anchor(end); } @position-try --pf2 { inset: auto; - inset-block-start: anchor(--a end); - inset-inline-end: anchor(--a start); + inset-block-start: anchor(end); + inset-inline-end: anchor(start); } @position-try --pf3 { inset: auto; - inset-block-end: anchor(--a start); - inset-inline-end: anchor(--a start); + inset-block-end: anchor(start); + inset-inline-end: anchor(start); } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-010.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-010.html index 21f32ad068e..eab81f0340b 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-010.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-010.html @@ -35,24 +35,24 @@ html { background: green; position-anchor: --a; position-try-options: --pf1, --pf2, --pf3; - inset-block-start: anchor(--a end); - inset-inline-start: anchor(--a end); + inset-block-start: anchor(end); + inset-inline-start: anchor(end); } @position-try --pf1 { inset: auto; - inset-block-end: anchor(--a start); - inset-inline-start: anchor(--a end); + inset-block-end: anchor(start); + inset-inline-start: anchor(end); } @position-try --pf2 { inset: auto; - inset-block-start: anchor(--a end); - inset-inline-end: anchor(--a start); + inset-block-start: anchor(end); + inset-inline-end: anchor(start); } @position-try --pf3 { inset: auto; - inset-block-end: anchor(--a start); - inset-inline-end: anchor(--a start); + inset-block-end: anchor(start); + inset-inline-end: anchor(start); } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-011.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-011.html index 5de84610105..d13b5485d0f 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-011.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-011.html @@ -47,24 +47,24 @@ background: green; position-anchor: --a; position-try-options: --pf1, --pf2, --pf3; - bottom: anchor(--a top); - left: anchor(--a right); + bottom: anchor(top); + left: anchor(right); } @position-try --pf1 { inset: auto; - top: anchor(--a bottom); - left: anchor(--a right); + top: anchor(bottom); + left: anchor(right); } @position-try --pf2 { inset: auto; - bottom: anchor(--a top); - right: anchor(--a left); + bottom: anchor(top); + right: anchor(left); } @position-try --pf3 { inset: auto; - top: anchor(--a bottom); - right: anchor(--a left); + top: anchor(bottom); + right: anchor(left); } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-012.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-012.html index 7c0b381999d..5e3bf50a6e7 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-012.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-012.html @@ -24,7 +24,7 @@ #anchored { position: absolute; - top: anchor(--a bottom); + top: anchor(bottom); width: 100px; height: 100px; background: green; @@ -34,7 +34,7 @@ @position-try --pf { top: auto; - bottom: anchor(--a top); + bottom: anchor(top); } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-001.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-001.html index a6c3b057253..9ce92592901 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-001.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-001.html @@ -28,8 +28,8 @@ div { #anchored { position: absolute; position-anchor: --a1; - left: anchor(--a1 left); - top: anchor(--a1 bottom); + left: anchor(left); + top: anchor(bottom); background: green; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-002.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-002.html index e2d91fe4dd6..f3e517c4312 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-002.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-002.html @@ -29,8 +29,8 @@ div { #anchored { position: absolute; position-anchor: --a1; - left: anchor(--a1 left); - top: anchor(--a1 bottom); + left: anchor(left); + top: anchor(bottom); background: green; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-003.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-003.html index b40f5cc8d51..ac5e1c3c692 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-003.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-003.html @@ -28,8 +28,8 @@ div { #anchored { position: absolute; position-anchor: --a1; - left: anchor(--a1 left); - top: anchor(--a1 bottom); + left: anchor(left); + top: anchor(bottom); background: green; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-004.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-004.html index 30325ce1e0f..ab96639dab0 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-004.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-to-sticky-004.html @@ -31,8 +31,8 @@ div { #anchored { position: absolute; position-anchor: --a1; - left: anchor(--a1 left); - top: anchor(--a1 bottom); + left: anchor(left); + top: anchor(bottom); background: green; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-001.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-001.html index aa49fbcc6db..3ff32ba7395 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-001.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-001.html @@ -39,16 +39,16 @@ body { #inner-anchored { color: green; position: absolute; - left: anchor(--anchor left); - bottom: anchor(--anchor top); + left: anchor(left); + bottom: anchor(top); position-anchor: --anchor; } #outer-anchored { color: yellow; position: absolute; - left: anchor(--anchor left); - top: anchor(--anchor bottom); + left: anchor(left); + top: anchor(bottom); position-anchor: --anchor; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-003.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-003.html index 2e1532badfa..e41736dbf71 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-003.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-003.html @@ -35,16 +35,16 @@ body { #inner-anchored { color: green; position: absolute; - left: anchor(--anchor left); - bottom: anchor(--anchor top); + left: anchor(left); + bottom: anchor(top); position-anchor: --anchor; } #outer-anchored { color: yellow; position: absolute; - left: anchor(--anchor left); - top: anchor(--anchor bottom); + left: anchor(left); + top: anchor(bottom); position-anchor: --anchor; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-004.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-004.html index 87138fb2d92..651b262d14f 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-004.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-004.html @@ -47,16 +47,16 @@ body { #inner-anchored { color: green; position: absolute; - left: anchor(--anchor left); - bottom: anchor(--anchor top); + left: anchor(left); + bottom: anchor(top); position-anchor: --anchor; } #outer-anchored { color: yellow; position: absolute; - left: anchor(--anchor left); - top: anchor(--anchor bottom); + left: anchor(left); + top: anchor(bottom); position-anchor: --anchor; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-005.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-005.html index 37874bba552..9c32bda6fcc 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-005.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-005.html @@ -22,7 +22,7 @@ width: 100px; height: 100px; background-color: green; - top: anchor(--a top); + top: anchor(top); left: 0; position-anchor: --a; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-006.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-006.html index 81defee7cf4..d896d9ca537 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-006.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-006.html @@ -22,7 +22,7 @@ width: 100px; height: 100px; background-color: green; - top: anchor(--a top); + top: anchor(top); left: 0; position-anchor: --a; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-007.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-007.html index 33050348c4d..01d568fff8d 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-007.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-update-007.html @@ -35,16 +35,16 @@ body { #inner-anchored { color: green; position: absolute; - left: anchor(--anchor left); - bottom: anchor(--anchor top); + left: anchor(left); + bottom: anchor(top); position-anchor: --anchor; } #outer-anchored { color: yellow; position: fixed; - left: anchor(--anchor left); - top: anchor(--anchor bottom); + left: anchor(left); + top: anchor(bottom); position-anchor: --anchor; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-vlr.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-vlr.html index 76186f9cad7..dd6d94b23e1 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-vlr.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-vlr.html @@ -48,16 +48,16 @@ body { #inner-anchored { color: green; position: absolute; - top: anchor(--anchor top); - left: anchor(--anchor right); + top: anchor(top); + left: anchor(right); position-anchor: --anchor; } #outer-anchored { color: yellow; position: absolute; - top: anchor(--anchor top); - right: anchor(--anchor left); + top: anchor(top); + right: anchor(left); position-anchor: --anchor; } diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-vrl.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-vrl.html index 13ea8b37abd..a1ee7dd6206 100644 --- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-vrl.html +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-vrl.html @@ -48,16 +48,16 @@ body { #inner-anchored { color: green; position: absolute; - top: anchor(--anchor top); - left: anchor(--anchor right); + top: anchor(top); + left: anchor(right); position-anchor: --anchor; } #outer-anchored { color: yellow; position: absolute; - top: anchor(--anchor top); - right: anchor(--anchor left); + top: anchor(top); + right: anchor(left); position-anchor: --anchor; } diff --git a/tests/wpt/tests/css/css-anchor-position/position-try-grid-001.html b/tests/wpt/tests/css/css-anchor-position/position-try-grid-001.html index 87a30e26eca..74888f25486 100644 --- a/tests/wpt/tests/css/css-anchor-position/position-try-grid-001.html +++ b/tests/wpt/tests/css/css-anchor-position/position-try-grid-001.html @@ -39,21 +39,21 @@ background: lime; opacity: .2; /* Position to the left of the anchor. */ - right: anchor(--a1 left); - top: anchor(--a1 top); - } + position-anchor: --a1; + right: anchor(left); + top: anchor(top); } @position-try --f1 { inset: auto; - left: anchor(--a1 right); - top: anchor(--a1 top); + left: anchor(right); + top: anchor(top); width: 250px; } @position-try --f2 { /* Position to the right of the anchor. This entry should succeed. */ inset: auto; - left: anchor(--a1 right); - top: anchor(--a1 top); + left: anchor(right); + top: anchor(top); } @position-try --f3 { /* Zero-sized, the last entry wins if none succeeded. */ diff --git a/tests/wpt/tests/css/css-borders/reference/border-radius-side-shorthands-ref.html b/tests/wpt/tests/css/css-borders/reference/border-radius-side-shorthands-ref.html new file mode 100644 index 00000000000..428a1c8bf79 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/border-radius-side-shorthands-ref.html @@ -0,0 +1,48 @@ + + +CSS Reftest Reference + + + + +

Test passes if there are four green squares with rounded corners and no red. + +

+
+
+
diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-bottom-001-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-bottom-001-ref.html new file mode 100644 index 00000000000..b66d20e03eb --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-bottom-001-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has beveled bottom-right and bottom-left corners and rounded top-left and top-right corners. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-bottom-left-001-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-bottom-left-001-ref.html new file mode 100644 index 00000000000..9cb42c2d637 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-bottom-left-001-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has a beveled bottom-left corner and the others are rounded. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-bottom-right-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-bottom-right-ref.html new file mode 100644 index 00000000000..bf05cdb6c1f --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-bottom-right-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has a beveled bottom-right corner and the others are rounded. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-left-001-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-left-001-ref.html new file mode 100644 index 00000000000..c9b74047907 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-left-001-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has beveled top-left and bottom-left corners and rounded top-right and bottom-right corners. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-ref.html new file mode 100644 index 00000000000..6080f68c654 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has four beveled corners. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-right-001-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-right-001-ref.html new file mode 100644 index 00000000000..0fb9b128368 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-right-001-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has beveled top-right and bottom-right corners and rounded top-left and bottom-left corners. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-001-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-001-ref.html new file mode 100644 index 00000000000..d16076c29e1 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-001-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has beveled top-left and top-right corners and rounded bottom-right and bottom-left corners. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-left-bottom-right-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-left-bottom-right-ref.html new file mode 100644 index 00000000000..1588d40f4c5 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-left-bottom-right-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has beveled top-left and bottom-right corners and rounded top-right and bottom-left corners. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-left-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-left-ref.html new file mode 100644 index 00000000000..d461b770809 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-left-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has a beveled top-left corner and the others are rounded. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-right-001-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-right-001-ref.html new file mode 100644 index 00000000000..9047db1de03 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-right-001-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has a beveled top-right corner and the others are rounded. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-right-bottom-left-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-right-bottom-left-ref.html new file mode 100644 index 00000000000..0cda23ed45d --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-angle-top-right-bottom-left-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has beveled top-right and bottom-left corners and rounded top-left and bottom-right corners. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-round-bottom-left-001-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-round-bottom-left-001-ref.html new file mode 100644 index 00000000000..eff799bb96a --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-round-bottom-left-001-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has a rounded bottom-left corner and the others are beveled. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-round-bottom-right-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-round-bottom-right-ref.html new file mode 100644 index 00000000000..3e60f0058f6 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-round-bottom-right-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has a rounded bottom-right corner and the others are beveled. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-round-top-left-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-round-top-left-ref.html new file mode 100644 index 00000000000..864f1fca7ad --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-round-top-left-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has a rounded top-left corner and the others are beveled. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/reference/corner-shape-round-top-right-001-ref.html b/tests/wpt/tests/css/css-borders/reference/corner-shape-round-top-right-001-ref.html new file mode 100644 index 00000000000..56caa3dac0a --- /dev/null +++ b/tests/wpt/tests/css/css-borders/reference/corner-shape-round-top-right-001-ref.html @@ -0,0 +1,8 @@ + + +CSS Reftest Reference + + +

Test passes if the square has a rounded top-right corner and the others are beveled. + +

Image download support must be enabled diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-angle-all.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-all.svg new file mode 100644 index 00000000000..4463dc02624 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-all.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-angle-bottom-left.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-bottom-left.svg new file mode 100644 index 00000000000..f6ffa30bbab --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-bottom-left.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-angle-bottom-right.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-bottom-right.svg new file mode 100644 index 00000000000..65ccb694f3e --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-bottom-right.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-angle-bottom.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-bottom.svg new file mode 100644 index 00000000000..a1b46822f99 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-bottom.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-angle-left.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-left.svg new file mode 100644 index 00000000000..5cb22750b4d --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-left.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-angle-right.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-right.svg new file mode 100644 index 00000000000..4e7fe54a373 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-right.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top-left-bottom-right.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top-left-bottom-right.svg new file mode 100644 index 00000000000..7581bde26d7 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top-left-bottom-right.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top-left.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top-left.svg new file mode 100644 index 00000000000..793e0dae889 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top-left.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top-right-bottom-left.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top-right-bottom-left.svg new file mode 100644 index 00000000000..285ba108762 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top-right-bottom-left.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top-right.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top-right.svg new file mode 100644 index 00000000000..12c5f5fe858 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top-right.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top.svg new file mode 100644 index 00000000000..1b460436605 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-angle-top.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-round-bottom-left.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-round-bottom-left.svg new file mode 100644 index 00000000000..9947b39748a --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-round-bottom-left.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-round-bottom-right.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-round-bottom-right.svg new file mode 100644 index 00000000000..b01202b8be4 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-round-bottom-right.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-round-top-left.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-round-top-left.svg new file mode 100644 index 00000000000..3ec5f63d707 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-round-top-left.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/support/corner-shape-round-top-right.svg b/tests/wpt/tests/css/css-borders/support/corner-shape-round-top-right.svg new file mode 100644 index 00000000000..ffadca194e2 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/support/corner-shape-round-top-right.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/tests/wpt/tests/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-001.html b/tests/wpt/tests/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-001.html new file mode 100644 index 00000000000..f85e2883058 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-001.html @@ -0,0 +1,85 @@ + + +CSS Borders and Box Decorations 4 Test: Physical 'border-*-radius' shorthands set the two radii of one side. + + + + + + + + +

Test passes if there are four green squares with rounded corners and no red. + +

+
+
+
+
+
+
+
diff --git a/tests/wpt/tests/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-002.html b/tests/wpt/tests/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-002.html new file mode 100644 index 00000000000..4a716041c4f --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/border-radius-side-shorthands/border-radius-side-shorthands-002.html @@ -0,0 +1,84 @@ + + +CSS Borders and Box Decorations 4 Test: Logical 'border-*-radius' shorthands set the two radii of one side. + + + + + + + + +

Test passes if there are four green squares with rounded corners and no red. + +

+
+
+
+
+
+
+
diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-001.html new file mode 100644 index 00000000000..7ba0794c5a8 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle' + + + + + + + + +

Test passes if the square has four beveled corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-002.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-002.html new file mode 100644 index 00000000000..8c111cb6bd0 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-002.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle angle' + + + + + + + + +

Test passes if the square has four beveled corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-003.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-003.html new file mode 100644 index 00000000000..fa9f3ff6483 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-003.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle angle angle' + + + + + + + + +

Test passes if the square has four beveled corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-004.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-004.html new file mode 100644 index 00000000000..ee9d7d3b892 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-004.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle angle angle angle' + + + + + + + + +

Test passes if the square has four beveled corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-001.html new file mode 100644 index 00000000000..1ffb03dd1a8 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: round round angle angle' + + + + + + + + +

Test passes if the square has beveled bottom-right and bottom-left corners and rounded top-left and top-right corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-left-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-left-001.html new file mode 100644 index 00000000000..6125dc2c4d5 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-left-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: round round round angle' + + + + + + + + +

Test passes if the square has a beveled bottom-left corner and the others are rounded. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-001.html new file mode 100644 index 00000000000..6e55000fd4e --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: round round angle' + + + + + + + + +

Test passes if the square has a beveled bottom-right corner and the others are rounded. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-002.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-002.html new file mode 100644 index 00000000000..147752da234 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-bottom-right-002.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: round round angle round' + + + + + + + + +

Test passes if the square has a beveled bottom-right corner and the others are rounded. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-left-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-left-001.html new file mode 100644 index 00000000000..75f280175b0 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-left-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle round round angle' + + + + + + + + +

Test passes if the square has beveled top-left and bottom-left corners and rounded top-right and bottom-right corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-right-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-right-001.html new file mode 100644 index 00000000000..2f6ca76697c --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-right-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: round angle angle round' + + + + + + + + +

Test passes if the square has beveled top-right and bottom-right corners and rounded top-left and bottom-left corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-001.html new file mode 100644 index 00000000000..dd822663102 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle angle round round' + + + + + + + + +

Test passes if the square has beveled top-left and top-right corners and rounded bottom-right and bottom-left corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-001.html new file mode 100644 index 00000000000..6f8c5ddb93b --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle round round' + + + + + + + + +

Test passes if the square has a beveled top-left corner and the others are rounded. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-002.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-002.html new file mode 100644 index 00000000000..34e2b685196 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-002.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle round round round' + + + + + + + + +

Test passes if the square has a beveled top-left corner and the others are rounded. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-001.html new file mode 100644 index 00000000000..fefd25ca751 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle round' + + + + + + + + +

Test passes if the square has beveled top-left and bottom-right corners and rounded top-right and bottom-left corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-002.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-002.html new file mode 100644 index 00000000000..c850f8d9b62 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-002.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle round angle' + + + + + + + + +

Test passes if the square has beveled top-left and bottom-right corners and rounded top-right and bottom-left corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-003.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-003.html new file mode 100644 index 00000000000..73bed5ebdad --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-left-bottom-right-003.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle round angle round' + + + + + + + + +

Test passes if the square has beveled top-left and bottom-right corners and rounded top-right and bottom-left corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-001.html new file mode 100644 index 00000000000..9081efe556d --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: round angle round round' + + + + + + + + +

Test passes if the square has a beveled top-right corner and the others are rounded. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-001.html new file mode 100644 index 00000000000..190d2e15d97 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: round angle' + + + + + + + + +

Test passes if the square has beveled top-right and bottom-left corners and rounded top-left and bottom-right corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-002.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-002.html new file mode 100644 index 00000000000..51e5bd13a88 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-002.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: round angle round' + + + + + + + + +

Test passes if the square has beveled top-right and bottom-left corners and rounded top-left and bottom-right corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-003.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-003.html new file mode 100644 index 00000000000..a2fc196249b --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-angle-top-right-bottom-left-003.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: round angle round angle' + + + + + + + + +

Test passes if the square has beveled top-right and bottom-left corners and rounded top-left and bottom-right corners. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-left-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-left-001.html new file mode 100644 index 00000000000..33c982a057f --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-left-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle angle angle round' + + + + + + + + +

Test passes if the square has a rounded bottom-left corner and the others are beveled. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-001.html new file mode 100644 index 00000000000..720565d4442 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle angle round' + + + + + + + + +

Test passes if the square has a rounded bottom-right corner and the others are beveled. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-002.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-002.html new file mode 100644 index 00000000000..cc96662bc3b --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-bottom-right-002.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle angle round angle' + + + + + + + + +

Test passes if the square has a rounded bottom-right corner and the others are beveled. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-001.html new file mode 100644 index 00000000000..6e5c58bd4c3 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: round angle angle' + + + + + + + + +

Test passes if the square has a rounded top-left corner and the others are beveled. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-002.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-002.html new file mode 100644 index 00000000000..11fe4be8fd0 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-top-left-002.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: round angle angle angle' + + + + + + + + +

Test passes if the square has a rounded top-left corner and the others are beveled. + +

diff --git a/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-top-right-001.html b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-top-right-001.html new file mode 100644 index 00000000000..6115c934a48 --- /dev/null +++ b/tests/wpt/tests/css/css-borders/tentative/corner-shape/corner-shape-round-top-right-001.html @@ -0,0 +1,22 @@ + + +CSS Borders and Box Decorations 4 Test: 'corner-shape: angle round angle angle' + + + + + + + + +

Test passes if the square has a rounded top-right corner and the others are beveled. + +

diff --git a/tests/wpt/tests/css/css-cascade/at-scope-parsing.html b/tests/wpt/tests/css/css-cascade/at-scope-parsing.html index 8390738dd8a..e984c1dcc29 100644 --- a/tests/wpt/tests/css/css-cascade/at-scope-parsing.html +++ b/tests/wpt/tests/css/css-cascade/at-scope-parsing.html @@ -42,9 +42,9 @@ test_valid('@scope to (.a)'); test_valid('@scope (.a) to (&)'); test_valid('@scope (.a) to (& > &)'); - test_valid('@scope (.a) to (> .b)', '@scope (.a) to (:scope > .b)'); - test_valid('@scope (.a) to (+ .b)', '@scope (.a) to (:scope + .b)'); - test_valid('@scope (.a) to (~ .b)', '@scope (.a) to (:scope ~ .b)'); + test_valid('@scope (.a) to (> .b)'); + test_valid('@scope (.a) to (+ .b)'); + test_valid('@scope (.a) to (~ .b)'); test_valid('@scope ()', '@scope'); test_valid('@scope to ()', '@scope'); test_valid('@scope () to ()', '@scope'); diff --git a/tests/wpt/tests/css/css-cascade/at-scope-relative-syntax.html b/tests/wpt/tests/css/css-cascade/at-scope-relative-syntax.html index 274d9afbebe..8b0e41ab13e 100644 --- a/tests/wpt/tests/css/css-cascade/at-scope-relative-syntax.html +++ b/tests/wpt/tests/css/css-cascade/at-scope-relative-syntax.html @@ -2,6 +2,7 @@ @scope and Nesting: Parsing inner style rules with relative selector syntax +
@@ -60,9 +61,9 @@ for (const method of Object.keys(create_method)) { test_inner(['@scope' , '.nest'], method, '> .foo', '& > .foo'); - test_inner(['.nest', '@scope'], method, '> .foo', ':scope > .foo'); + test_inner(['.nest', '@scope'], method, '> .foo'); test_inner(['@scope' , '.nest', '@media screen'], method, '> .foo', '& > .foo'); - test_inner(['.nest', '@scope', '@media screen'], method, '> .foo', ':scope > .foo'); + test_inner(['.nest', '@scope', '@media screen'], method, '> .foo'); } diff --git a/tests/wpt/tests/css/css-cascade/scope-evaluation.html b/tests/wpt/tests/css/css-cascade/scope-evaluation.html index c6ea13c862d..a70d2a59b7f 100644 --- a/tests/wpt/tests/css/css-cascade/scope-evaluation.html +++ b/tests/wpt/tests/css/css-cascade/scope-evaluation.html @@ -554,7 +554,7 @@ test_scope(document.currentScript, () => {
- +
diff --git a/tests/wpt/tests/css/css-cascade/scope-implicit-external.html b/tests/wpt/tests/css/css-cascade/scope-implicit-external.html index d1ac738b778..aee0b23856d 100644 --- a/tests/wpt/tests/css/css-cascade/scope-implicit-external.html +++ b/tests/wpt/tests/css/css-cascade/scope-implicit-external.html @@ -7,24 +7,53 @@ -
-
- -
-
-
+
+
+
+ + + + diff --git a/tests/wpt/tests/css/css-cascade/scope-proximity.html b/tests/wpt/tests/css/css-cascade/scope-proximity.html index c133a71e9a8..0d62aa303aa 100644 --- a/tests/wpt/tests/css/css-cascade/scope-proximity.html +++ b/tests/wpt/tests/css/css-cascade/scope-proximity.html @@ -121,3 +121,21 @@ test_scope(document.currentScript, () => { assert_equals(getComputedStyle(item).borderColor, 'rgb(0, 128, 0)'); }, 'Specificity wins over proximity'); + + + diff --git a/tests/wpt/tests/css/css-cascade/scope-shadow-sharing-ref.html b/tests/wpt/tests/css/css-cascade/scope-shadow-sharing-ref.html new file mode 100644 index 00000000000..4ade124bcd8 --- /dev/null +++ b/tests/wpt/tests/css/css-cascade/scope-shadow-sharing-ref.html @@ -0,0 +1,21 @@ + +@scope - Shadow DOM with shared style data + +
+
+
+
diff --git a/tests/wpt/tests/css/css-cascade/scope-shadow-sharing.html b/tests/wpt/tests/css/css-cascade/scope-shadow-sharing.html new file mode 100644 index 00000000000..e078721e0f5 --- /dev/null +++ b/tests/wpt/tests/css/css-cascade/scope-shadow-sharing.html @@ -0,0 +1,52 @@ + + +@scope - Shadow DOM with shared style data + + +
+
+
+
+ + + diff --git a/tests/wpt/tests/css/css-cascade/scope-specificity.html b/tests/wpt/tests/css/css-cascade/scope-specificity.html index 0f48c605a85..fa103ff3742 100644 --- a/tests/wpt/tests/css/css-cascade/scope-specificity.html +++ b/tests/wpt/tests/css/css-cascade/scope-specificity.html @@ -1,11 +1,12 @@ -@scope - specificty +@scope - specificity
+
@@ -36,8 +37,13 @@ function format_scoped_rule(scoped_selector, declarations) { // Verify that the specificity of 'scoped_selector' is the same // as the specificity of 'ref_selector'. Both selectors must select // an element within #main. -function test_scope_specificity(scoped_selector, ref_selector) { - test(() => { +function test_scope_specificity(scoped_selector, ref_selector, style) { + if (style === undefined) { + style = document.getElementById("style"); + } + test(t => { + t.add_cleanup(() => { style.textContent = ''; }); + let element = main.querySelector(ref_selector); assert_not_equals(element, null); @@ -62,16 +68,25 @@ function test_scope_specificity(scoped_selector, ref_selector) { // cause the unscoped rule to win instead. style.textContent = `div${ref_rule} ${scoped_rule}`; assert_equals(getComputedStyle(element).zIndex, '2', 'unscoped + scoped'); - }, format_scoped_rule(scoped_selector, '')); + }, format_scoped_rule(scoped_selector, '') + ' and ' + ref_selector); } +// Selectors within @scope implicitly have `:scope ` +// added, but no specificity associated with it is added. +// See https://github.com/w3c/csswg-drafts/issues/10196 test_scope_specificity(['@scope (#main)', '.b'], '.b'); 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'); 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 uses `:scope`, which adds specificity +test_scope_specificity(['@scope', '& .b'], ':scope .b', styleImplicit); +// Using relative selector syntax does not add specificity +test_scope_specificity(['@scope (#main)', '> .a'], ':where(#main) > .a'); diff --git a/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-state-changed.html b/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-state-changed.html index f771907091f..0333c052e4a 100644 --- a/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-state-changed.html +++ b/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-state-changed.html @@ -11,6 +11,7 @@ + @@ -59,7 +60,7 @@ promise_test(t => new Promise(async (resolve, reject) => { }; attrtest.oncontentvisibilityautostatechange = listener; - t.add_cleanup(() => { attrtest.oncontentvisibilityautostatechange = () => {} }); + t.add_cleanup(() => { attrtest.oncontentvisibilityautostatechange = null }); attrtest.classList.add("auto"); }), "ContentVisibilityAutoStateChange fires when relevant element gains `content-visibility:auto` (oncontentvisibilityautostatechange syntax)"); @@ -77,12 +78,9 @@ promise_test(t => new Promise(async (resolve, reject) => { lower.classList.add("auto"); }), "ContentVisibilityAutoStateChange fires when not relevant element gains `content-visibility:auto`"); -async_test(t => { - requestAnimationFrame(() => requestAnimationFrame(() => { - t.step(() => assert_true(contentattrfired, "contentattrfired")); - t.done(); - })); - +promise_test(async t => { + await waitForAtLeastOneFrame(); + assert_true(contentattrfired, "contentattrfired"); }, "ContentVisibilityAutoStateChange content attribute test"); promise_test(t => new Promise(async (resolve, reject) => { diff --git a/tests/wpt/tests/css/css-text/parsing/webkit-text-stroke-computed.html b/tests/wpt/tests/css/css-fill-stroke/webkit-text-stroke-computed.html similarity index 100% rename from tests/wpt/tests/css/css-text/parsing/webkit-text-stroke-computed.html rename to tests/wpt/tests/css/css-fill-stroke/webkit-text-stroke-computed.html diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-block-in-inline-start-001-ref.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-block-in-inline-start-001-ref.html new file mode 100644 index 00000000000..dd288036917 --- /dev/null +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-block-in-inline-start-001-ref.html @@ -0,0 +1,27 @@ + + + +
+
+ +
+ A
+ A +
+
+ A +
+
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-block-in-inline-start-001.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-block-in-inline-start-001.html new file mode 100644 index 00000000000..9d14a08bc2a --- /dev/null +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-block-in-inline-start-001.html @@ -0,0 +1,29 @@ + + + + + + +
+
+ +
+ A
+ A +
+
+ A +
+
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-block-in-inline-start-002.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-block-in-inline-start-002.html new file mode 100644 index 00000000000..67bfa343781 --- /dev/null +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-block-in-inline-start-002.html @@ -0,0 +1,29 @@ + + + + + + +
+
+ A + +
+ A
+ A +
+
+
+
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-end-empty-line-001-ref.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-end-empty-line-001-ref.html new file mode 100644 index 00000000000..5c0dd61f7a4 --- /dev/null +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-end-empty-line-001-ref.html @@ -0,0 +1,24 @@ + + + +
+ A
+ +
+
+
+ A
+ B
+ +
+
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-end-empty-line-001.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-end-empty-line-001.html new file mode 100644 index 00000000000..30061b208d6 --- /dev/null +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-end-empty-line-001.html @@ -0,0 +1,29 @@ + + + + + + +
+ A
+ +
+
+
+ A
+ B
+ +
+
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-float-clear-br-002-ref.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-float-clear-br-002-ref.html new file mode 100644 index 00000000000..d4275a8df5f --- /dev/null +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-float-clear-br-002-ref.html @@ -0,0 +1,25 @@ + + + +
+
+ A +
+
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-float-clear-br-002.html b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-float-clear-br-002.html new file mode 100644 index 00000000000..5798525e476 --- /dev/null +++ b/tests/wpt/tests/css/css-inline/text-box-trim/text-box-trim-float-clear-br-002.html @@ -0,0 +1,32 @@ + +Test if the zero clearance is honored for `text-box-trim` + + + + + +
+
+ A +
+
+
diff --git a/tests/wpt/tests/css/css-masking/mask-image/mask-mode-luminance-with-mask-size-ref.html b/tests/wpt/tests/css/css-masking/mask-image/mask-mode-luminance-with-mask-size-ref.html new file mode 100644 index 00000000000..6c78328b941 --- /dev/null +++ b/tests/wpt/tests/css/css-masking/mask-image/mask-mode-luminance-with-mask-size-ref.html @@ -0,0 +1,30 @@ + + + + + + +
+
+ + + diff --git a/tests/wpt/tests/css/css-masking/mask-image/mask-mode-luminance-with-mask-size.html b/tests/wpt/tests/css/css-masking/mask-image/mask-mode-luminance-with-mask-size.html new file mode 100644 index 00000000000..c618981585a --- /dev/null +++ b/tests/wpt/tests/css/css-masking/mask-image/mask-mode-luminance-with-mask-size.html @@ -0,0 +1,32 @@ + + + + + CSS Masking: 'mask-mode: luminance' with 'mask-size' + + + + + + + +
+ + + diff --git a/tests/wpt/tests/css/css-overflow/WEB_FEATURES.yml b/tests/wpt/tests/css/css-overflow/WEB_FEATURES.yml index c10a9f36af5..7d0688929ab 100644 --- a/tests/wpt/tests/css/css-overflow/WEB_FEATURES.yml +++ b/tests/wpt/tests/css/css-overflow/WEB_FEATURES.yml @@ -1,4 +1,7 @@ features: +- name: scrollbar-gutter + files: + - scrollbar-gutter-* - name: overflow-shorthand files: # This is all overflow-* except overflow-auto-scrollbar-gutter-intrinsic-*, diff --git a/tests/wpt/tests/css/css-overflow/parsing/WEB_FEATURES.yml b/tests/wpt/tests/css/css-overflow/parsing/WEB_FEATURES.yml new file mode 100644 index 00000000000..23f8c445d55 --- /dev/null +++ b/tests/wpt/tests/css/css-overflow/parsing/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: scrollbar-gutter + files: + - scrollbar-gutter-* diff --git a/tests/wpt/tests/css/css-page/page-margin-auto-and-non-zero-print-ref.html b/tests/wpt/tests/css/css-page/page-margin-auto-and-non-zero-print-ref.html new file mode 100644 index 00000000000..5f9be531886 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-margin-auto-and-non-zero-print-ref.html @@ -0,0 +1,41 @@ + + + +
+
center / middle
+
+
+
center / top
+
+
+
center / bottom
+
+
+
top / left
+
+
+
top / right
+
+
+
bottom / right
+
diff --git a/tests/wpt/tests/css/css-page/page-margin-auto-and-non-zero-print.html b/tests/wpt/tests/css/css-page/page-margin-auto-and-non-zero-print.html new file mode 100644 index 00000000000..6287c2a1032 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-margin-auto-and-non-zero-print.html @@ -0,0 +1,52 @@ + + + + + +
+ center / middle +
+
+ center / top +
+
+ center / bottom +
+
+ top / left +
+
+ top / right +
+
+ bottom / right +
diff --git a/tests/wpt/tests/css/css-properties-values-api/at-property-animation.html b/tests/wpt/tests/css/css-properties-values-api/at-property-animation.html index f7a8e169784..44361a0566b 100644 --- a/tests/wpt/tests/css/css-properties-values-api/at-property-animation.html +++ b/tests/wpt/tests/css/css-properties-values-api/at-property-animation.html @@ -449,13 +449,24 @@ test_with_at_property({ animation: test 100s -50s linear paused; } `, (style) => { - assert_equals(getComputedStyle(div).getPropertyValue(name), 'rgb(150, 150, 150)'); + // See https://github.com/w3c/csswg-drafts/issues/10371 for the two + // possibilities. + assert_in_array(getComputedStyle(div).getPropertyValue(name), [ + 'color-mix(in srgb, currentcolor, rgb(200, 200, 200))', + 'rgb(150, 150, 150)', + ]); outer.style.color = 'rgb(50, 50, 50)'; - assert_equals(getComputedStyle(div).getPropertyValue(name), 'rgb(125, 125, 125)'); + assert_in_array(getComputedStyle(div).getPropertyValue(name), [ + 'color-mix(in srgb, currentcolor, rgb(200, 200, 200))', + 'rgb(125, 125, 125)', + ]); outer.style.color = 'rgb(150, 150, 150)'; - assert_equals(getComputedStyle(div).getPropertyValue(name), 'rgb(175, 175, 175)'); + assert_in_array(getComputedStyle(div).getPropertyValue(name), [ + 'color-mix(in srgb, currentcolor, rgb(200, 200, 200))', + 'rgb(175, 175, 175)', + ]); outer.style.removeProperty("color"); }); @@ -475,13 +486,22 @@ test_with_at_property({ animation.currentTime = 500; animation.pause(); - assert_equals(getComputedStyle(div).getPropertyValue(name), 'rgb(150, 150, 150)'); + assert_in_array(getComputedStyle(div).getPropertyValue(name), [ + 'color-mix(in srgb, currentcolor, rgb(200, 200, 200))', + 'rgb(150, 150, 150)', + ]); outer.style.color = 'rgb(50, 50, 50)'; - assert_equals(getComputedStyle(div).getPropertyValue(name), 'rgb(125, 125, 125)'); + assert_in_array(getComputedStyle(div).getPropertyValue(name), [ + 'color-mix(in srgb, currentcolor, rgb(200, 200, 200))', + 'rgb(125, 125, 125)', + ]); outer.style.color = 'rgb(150, 150, 150)'; - assert_equals(getComputedStyle(div).getPropertyValue(name), 'rgb(175, 175, 175)'); + assert_in_array(getComputedStyle(div).getPropertyValue(name), [ + 'color-mix(in srgb, currentcolor, rgb(200, 200, 200))', + 'rgb(175, 175, 175)', + ]); outer.style.removeProperty("color"); }); diff --git a/tests/wpt/tests/css/css-properties-values-api/crashtests/transition-to-none-crash-001.html b/tests/wpt/tests/css/css-properties-values-api/crashtests/transition-to-none-crash-001.html new file mode 100644 index 00000000000..b7eaca3f0b1 --- /dev/null +++ b/tests/wpt/tests/css/css-properties-values-api/crashtests/transition-to-none-crash-001.html @@ -0,0 +1,27 @@ + + +
+ diff --git a/tests/wpt/tests/css/css-properties-values-api/crashtests/transition-to-none-crash-002.html b/tests/wpt/tests/css/css-properties-values-api/crashtests/transition-to-none-crash-002.html new file mode 100644 index 00000000000..45548f809a3 --- /dev/null +++ b/tests/wpt/tests/css/css-properties-values-api/crashtests/transition-to-none-crash-002.html @@ -0,0 +1,21 @@ + + + +
+ diff --git a/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-001-ref.html b/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-001-ref.html new file mode 100644 index 00000000000..651e943b154 --- /dev/null +++ b/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-001-ref.html @@ -0,0 +1,9 @@ + + +
diff --git a/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-001.html b/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-001.html new file mode 100644 index 00000000000..d694908cdd1 --- /dev/null +++ b/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-001.html @@ -0,0 +1,18 @@ + + + + +
diff --git a/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-002.html b/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-002.html new file mode 100644 index 00000000000..041697695e3 --- /dev/null +++ b/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-002.html @@ -0,0 +1,19 @@ + + + + +
diff --git a/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-003-ref.html b/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-003-ref.html new file mode 100644 index 00000000000..e030fdf37c6 --- /dev/null +++ b/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-003-ref.html @@ -0,0 +1,10 @@ + + +
diff --git a/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-003.html b/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-003.html new file mode 100644 index 00000000000..66092edf41d --- /dev/null +++ b/tests/wpt/tests/css/css-properties-values-api/registered-property-computation-color-003.html @@ -0,0 +1,18 @@ + + + + +
diff --git a/tests/wpt/tests/css/css-properties-values-api/var-reference-registered-properties-002.html b/tests/wpt/tests/css/css-properties-values-api/var-reference-registered-properties-002.html new file mode 100644 index 00000000000..9a6c78fc45b --- /dev/null +++ b/tests/wpt/tests/css/css-properties-values-api/var-reference-registered-properties-002.html @@ -0,0 +1,28 @@ + + + + + +
+ diff --git a/tests/wpt/tests/css/css-pseudo/first-letter-width-2-ref.html b/tests/wpt/tests/css/css-pseudo/first-letter-width-2-ref.html new file mode 100644 index 00000000000..67fe00ca790 --- /dev/null +++ b/tests/wpt/tests/css/css-pseudo/first-letter-width-2-ref.html @@ -0,0 +1,23 @@ + + + + + initial-letter width test + + + +

There should be no red

+ Test. + + diff --git a/tests/wpt/tests/css/css-pseudo/first-letter-width-2.html b/tests/wpt/tests/css/css-pseudo/first-letter-width-2.html new file mode 100644 index 00000000000..e7d01afe472 --- /dev/null +++ b/tests/wpt/tests/css/css-pseudo/first-letter-width-2.html @@ -0,0 +1,49 @@ + + + + + initial-letter width test + + + + + + + + +

There should be no red

+
+ Test + Test. +
+ + diff --git a/tests/wpt/tests/css/css-ruby/break-within-bases/no-break-opportunity-at-end-ref.html b/tests/wpt/tests/css/css-ruby/break-within-bases/no-break-opportunity-at-end-ref.html new file mode 100644 index 00000000000..f69f8d9456f --- /dev/null +++ b/tests/wpt/tests/css/css-ruby/break-within-bases/no-break-opportunity-at-end-ref.html @@ -0,0 +1,13 @@ + + + + + +
+ここは優先通行ゆうせんつうこう
たい。 +
+ diff --git a/tests/wpt/tests/css/css-ruby/break-within-bases/no-break-opportunity-at-end.html b/tests/wpt/tests/css/css-ruby/break-within-bases/no-break-opportunity-at-end.html new file mode 100644 index 00000000000..83a05b3dce4 --- /dev/null +++ b/tests/wpt/tests/css/css-ruby/break-within-bases/no-break-opportunity-at-end.html @@ -0,0 +1,19 @@ + + + + + + + + + +
+ここは優先通行帯ゆうせんつうこうたい。 +
+ diff --git a/tests/wpt/tests/css/css-scroll-snap/snap-fling-in-large-area.html b/tests/wpt/tests/css/css-scroll-snap/snap-fling-in-large-area.html new file mode 100644 index 00000000000..4797ddbd9a2 --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap/snap-fling-in-large-area.html @@ -0,0 +1,58 @@ + + + + Fling within a large target is not interrupted by scroll snap + + + + + + + + + + +
+
+
+ + + diff --git a/tests/wpt/tests/css/css-text/line-breaking/line-breaking-030.html b/tests/wpt/tests/css/css-text/line-breaking/line-breaking-030.html new file mode 100644 index 00000000000..9cf0b3d5c41 --- /dev/null +++ b/tests/wpt/tests/css/css-text/line-breaking/line-breaking-030.html @@ -0,0 +1,43 @@ + + + +CSS Text — line breaking at element boundary with atomic inlines + + + + + + + +

Test passes is there is a green rectangle and no red. + +

+ +
X
+
+ diff --git a/tests/wpt/tests/css/css-text/line-breaking/line-breaking-031.html b/tests/wpt/tests/css/css-text/line-breaking/line-breaking-031.html new file mode 100644 index 00000000000..c8e34574165 --- /dev/null +++ b/tests/wpt/tests/css/css-text/line-breaking/line-breaking-031.html @@ -0,0 +1,43 @@ + + + +CSS Text — line breaking at element boundary with atomic inlines + + + + + + + +

Test passes is there is a green rectangle and no red. + +

+ X +
X
+
+ diff --git a/tests/wpt/tests/css/css-text/line-breaking/line-breaking-032.html b/tests/wpt/tests/css/css-text/line-breaking/line-breaking-032.html new file mode 100644 index 00000000000..2c79f5955f4 --- /dev/null +++ b/tests/wpt/tests/css/css-text/line-breaking/line-breaking-032.html @@ -0,0 +1,43 @@ + + + +CSS Text — line breaking at element boundary with atomic inlines + + + + + + + +

Test passes is there is a green rectangle and no red. + +

+ X +
X
+
+ diff --git a/tests/wpt/tests/css/css-text/line-breaking/reference/line-breaking-030-ref.html b/tests/wpt/tests/css/css-text/line-breaking/reference/line-breaking-030-ref.html new file mode 100644 index 00000000000..628fff26e33 --- /dev/null +++ b/tests/wpt/tests/css/css-text/line-breaking/reference/line-breaking-030-ref.html @@ -0,0 +1,31 @@ + + + +Test reference + + + +

Test passes is there is a green rectangle and no red. + +

+ + +
+ diff --git a/tests/wpt/tests/css/css-text/parsing/text-spacing-trim-computed.html b/tests/wpt/tests/css/css-text/parsing/text-spacing-trim-computed.html index 163a740103c..e76d8564fe5 100644 --- a/tests/wpt/tests/css/css-text/parsing/text-spacing-trim-computed.html +++ b/tests/wpt/tests/css/css-text/parsing/text-spacing-trim-computed.html @@ -14,7 +14,7 @@ test_computed_value("text-spacing-trim", "auto"); test_computed_value("text-spacing-trim", "normal"); test_computed_value("text-spacing-trim", "space-all"); -test_computed_value("text-spacing-trim", "trim-auto"); +test_computed_value("text-spacing-trim", "trim-both"); test_computed_value("text-spacing-trim", "trim-all"); test_computed_value("text-spacing-trim", "trim-start"); test_computed_value("text-spacing-trim", "space-first"); diff --git a/tests/wpt/tests/css/css-text/parsing/text-spacing-trim-invalid.html b/tests/wpt/tests/css/css-text/parsing/text-spacing-trim-invalid.html index 9f835352b28..ca10d4ea13d 100644 --- a/tests/wpt/tests/css/css-text/parsing/text-spacing-trim-invalid.html +++ b/tests/wpt/tests/css/css-text/parsing/text-spacing-trim-invalid.html @@ -16,6 +16,7 @@ test_invalid_value("text-spacing-trim", "normal space-first"); test_invalid_value("text-spacing-trim", "auto space-all"); test_invalid_value("text-spacing-trim", "auto space-first"); test_invalid_value("text-spacing-trim", "allow-end"); +test_invalid_value("text-spacing-trim", "trim-auto"); test_invalid_value("text-spacing-trim", "allow-end space-first"); test_invalid_value("text-spacing-trim", "space-first allow-end"); diff --git a/tests/wpt/tests/css/css-text/parsing/text-spacing-trim-valid.html b/tests/wpt/tests/css/css-text/parsing/text-spacing-trim-valid.html index a83a099480d..9bd0ff071f6 100644 --- a/tests/wpt/tests/css/css-text/parsing/text-spacing-trim-valid.html +++ b/tests/wpt/tests/css/css-text/parsing/text-spacing-trim-valid.html @@ -13,7 +13,7 @@ test_valid_value("text-spacing-trim", "normal"); test_valid_value("text-spacing-trim", "auto"); test_valid_value("text-spacing-trim", "space-all"); -test_valid_value("text-spacing-trim", "trim-auto"); +test_valid_value("text-spacing-trim", "trim-both"); test_valid_value("text-spacing-trim", "trim-all"); test_valid_value("text-spacing-trim", "trim-start"); test_valid_value("text-spacing-trim", "space-first"); diff --git a/tests/wpt/tests/css/css-text/white-space/reference/text-wrap-balance-004-a-ref.html b/tests/wpt/tests/css/css-text/white-space/reference/text-wrap-balance-004-a-ref.html new file mode 100644 index 00000000000..96ed5f2fe53 --- /dev/null +++ b/tests/wpt/tests/css/css-text/white-space/reference/text-wrap-balance-004-a-ref.html @@ -0,0 +1,39 @@ + + + +CSS Test reference + + + +

Test passes if the box with a blue frame is identical either the orange or magenta one. + +

1 2 3 4 5 6 7 8… +
+ +
1 2 3 4 5 6 7 8… +
+ +
1 2 3
4 5 6
7 8 9
diff --git a/tests/wpt/tests/css/css-text/white-space/reference/text-wrap-balance-004-b-ref.html b/tests/wpt/tests/css/css-text/white-space/reference/text-wrap-balance-004-b-ref.html new file mode 100644 index 00000000000..d1171917c86 --- /dev/null +++ b/tests/wpt/tests/css/css-text/white-space/reference/text-wrap-balance-004-b-ref.html @@ -0,0 +1,38 @@ + + + +CSS Test reference + + + +

Test passes if the box with a blue frame is identical either the orange or magenta one. + +

1 2 3
4 5 6
7 8 9
+ +
1 2 3 4 5 6 7 8… +
+ +
1 2 3
4 5 6
7 8 9
diff --git a/tests/wpt/tests/css/css-text/white-space/text-wrap-balance-005.html b/tests/wpt/tests/css/css-text/white-space/text-wrap-balance-005.html new file mode 100644 index 00000000000..cf5789cd5ba --- /dev/null +++ b/tests/wpt/tests/css/css-text/white-space/text-wrap-balance-005.html @@ -0,0 +1,54 @@ + + + +CSS test: balancing and forced breaks + + + + + + + +

Test passes if the box with a blue frame is identical either the orange or magenta one. + +

1 2 3 4 5 6 7 8 9 +
+ +
1 2 3 4 5 6 7 8… +
+ +
1 2 3
4 5 6
7 8 9
diff --git a/tests/wpt/tests/css/css-transforms/transform-with-sign-function.html b/tests/wpt/tests/css/css-transforms/transform-with-sign-function.html new file mode 100644 index 00000000000..b6e179d390b --- /dev/null +++ b/tests/wpt/tests/css/css-transforms/transform-with-sign-function.html @@ -0,0 +1,25 @@ + + + + + + + +
+ diff --git a/tests/wpt/tests/css/cssom/adoptedstylesheets-modify-array-and-sheet.html b/tests/wpt/tests/css/cssom/adoptedstylesheets-modify-array-and-sheet.html new file mode 100644 index 00000000000..dab1da3737f --- /dev/null +++ b/tests/wpt/tests/css/cssom/adoptedstylesheets-modify-array-and-sheet.html @@ -0,0 +1,28 @@ + +adoptedStyleSheet - Add and remove the same sheet with modifications + + + +
This text should be green
+ diff --git a/tests/wpt/tests/css/selectors/WEB_FEATURES.yml b/tests/wpt/tests/css/selectors/WEB_FEATURES.yml index 2449bf4808f..a674f92e29c 100644 --- a/tests/wpt/tests/css/selectors/WEB_FEATURES.yml +++ b/tests/wpt/tests/css/selectors/WEB_FEATURES.yml @@ -8,6 +8,9 @@ features: - name: read-write-pseudos files: - selector-read-write-* +- name: modal + files: + - modal-pseudo-class.html - name: user-pseudos files: - user-invalid.html diff --git a/tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml b/tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml index 5e6a6d0d5c0..1f80a7755b3 100644 --- a/tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml +++ b/tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml @@ -4,6 +4,9 @@ features: - has-* - "*-in-has.*" - "*-in-has-*" +- name: modal + files: + - modal-pseudo-class-in-has.html - name: user-pseudos files: - user-valid-user-invalid.html diff --git a/tests/wpt/tests/digital-credentials/META.yml b/tests/wpt/tests/digital-credentials/META.yml new file mode 100644 index 00000000000..8a7db924976 --- /dev/null +++ b/tests/wpt/tests/digital-credentials/META.yml @@ -0,0 +1,4 @@ +spec: https://github.com/wicg/digital-credentials +suggested_reviewers: + - marcoscaceres + - samuelgoto diff --git a/tests/wpt/tests/credential-management/digital-identity.https.html b/tests/wpt/tests/digital-credentials/digital-credentials.tentative.https.html similarity index 72% rename from tests/wpt/tests/credential-management/digital-identity.https.html rename to tests/wpt/tests/digital-credentials/digital-credentials.tentative.https.html index cc279735bd7..30e24e5450a 100644 --- a/tests/wpt/tests/credential-management/digital-identity.https.html +++ b/tests/wpt/tests/digital-credentials/digital-credentials.tentative.https.html @@ -26,6 +26,26 @@ async function createIframeAndWaitForMessage(test, iframeUrl) { return message.data; } +// Builds a valid navigator.identity.get() request where IdentityRequestProvider#request is an object. +function buildValidNavigatorIdentityRequestWithRequestObject() { + return { + digital: { + providers: [{ + protocol: "urn:openid.net:oid4vp", + request: { + // Based on https://github.com/openid/OpenID4VP/issues/125 + client_id: "client.example.org", + client_id_scheme: "web-origin", + nonce: "n-0S6_WzA2Mj", + presentation_definition: { + // Presentation Exchange request, omitted for brevity + } + }, + }], + }, + }; +} + // Requires browser to have mode where OS-presented digital-identity-prompt is // bypassed in favour of returning "fake_test_token" directly. promise_test(async t=>{ @@ -60,6 +80,23 @@ promise_test(async t => { await promise_rejects_js(t, TypeError, requestIdentityWithActivation(test_driver, request)); }, "navigator.identity.get() API fails if there is more than one provider."); +promise_test(async t => { + const request = buildValidNavigatorIdentityRequestWithRequestObject(); + let credential = await requestIdentityWithActivation(test_driver, request); + assert_equals("urn:openid.net:oid4vp", credential.protocol); + assert_equals("fake_test_token", credential.data); +}, "navigator.identity.get() API succeeds when IdentityRequestProvider#request is an object instead of stringified JSON object"); + +promise_test(async t => { + const request = buildValidNavigatorIdentityRequestWithRequestObject(); + const largeList = []; + for (let i = 0; i < 1000000; ++i) { + largeList.push("Value " + i); + } + request.digital.providers[0].request.random = largeList; + await promise_rejects_js(t, TypeError, requestIdentityWithActivation(test_driver, request)); +}, "navigator.identity.get() API fails when IdentityRequestProvider#request object is too big"); + promise_test(async t=> { let abortController = new AbortController(); let request = buildValidNavigatorIdentityRequest(); diff --git a/tests/wpt/tests/digital-credentials/non-fully-active.https.html b/tests/wpt/tests/digital-credentials/non-fully-active.https.html new file mode 100644 index 00000000000..dac4cecb78c --- /dev/null +++ b/tests/wpt/tests/digital-credentials/non-fully-active.https.html @@ -0,0 +1,69 @@ + + +Digital Credentials Test: non-fully active document + + + + + + + + + diff --git a/tests/wpt/tests/credential-management/support/digital-identity-helper.js b/tests/wpt/tests/digital-credentials/support/digital-identity-helper.js similarity index 100% rename from tests/wpt/tests/credential-management/support/digital-identity-helper.js rename to tests/wpt/tests/digital-credentials/support/digital-identity-helper.js diff --git a/tests/wpt/tests/credential-management/support/digital-identity-iframe.html b/tests/wpt/tests/digital-credentials/support/digital-identity-iframe.html similarity index 100% rename from tests/wpt/tests/credential-management/support/digital-identity-iframe.html rename to tests/wpt/tests/digital-credentials/support/digital-identity-iframe.html diff --git a/tests/wpt/tests/dom/events/scrolling/scroll_support.js b/tests/wpt/tests/dom/events/scrolling/scroll_support.js index e536b7d7488..a708364df07 100644 --- a/tests/wpt/tests/dom/events/scrolling/scroll_support.js +++ b/tests/wpt/tests/dom/events/scrolling/scroll_support.js @@ -220,7 +220,7 @@ function touchScrollInTarget(pixels_to_scroll, target, direction, pause_time_in_ // Trigger fling by doing pointerUp right after pointerMoves. function touchFlingInTarget(pixels_to_scroll, target, direction) { - touchScrollInTarget(pixels_to_scroll, target, direction, 0 /* pause_time */); + return touchScrollInTarget(pixels_to_scroll, target, direction, 0 /* pause_time */); } function mouseActionsInTarget(target, origin, delta, pause_time_in_ms = 100) { diff --git a/tests/wpt/tests/dom/events/scrolling/scrollend-event-fires-to-iframe-window.html b/tests/wpt/tests/dom/events/scrolling/scrollend-event-fires-to-iframe-window.html index 4e531580870..9cd3b421fe9 100644 --- a/tests/wpt/tests/dom/events/scrolling/scrollend-event-fires-to-iframe-window.html +++ b/tests/wpt/tests/dom/events/scrolling/scrollend-event-fires-to-iframe-window.html @@ -11,17 +11,6 @@ - - -

2d.text.measure.advances-not-defined

-

Testing that TextMetrics.advances is not defined

- - -A -

Actual output:

-

FAIL (fallback content)

- -
    - - diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances-not-defined.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances-not-defined.html deleted file mode 100644 index 4bddaf0b2e0..00000000000 --- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances-not-defined.html +++ /dev/null @@ -1,22 +0,0 @@ - - -OffscreenCanvas test: 2d.text.measure.advances-not-defined - - - - -

    2d.text.measure.advances-not-defined

    -

    Testing that TextMetrics.advances is not defined

    - - - diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances-not-defined.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances-not-defined.worker.js deleted file mode 100644 index f0b587dea27..00000000000 --- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances-not-defined.worker.js +++ /dev/null @@ -1,16 +0,0 @@ -// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -// OffscreenCanvas test in a worker:2d.text.measure.advances-not-defined -// Description:Testing that TextMetrics.advances is not defined -// Note: - -importScripts("/resources/testharness.js"); -importScripts("/html/canvas/resources/canvas-tests.js"); - -promise_test(async t => { - var canvas = new OffscreenCanvas(100, 50); - var ctx = canvas.getContext('2d'); - - ctx.font = '50px CanvasTest'; - _assert(!("advances" in ctx.measureText('Hello')), "!(\"advances\" in ctx.measureText('Hello'))"); -}, "Testing that TextMetrics.advances is not defined"); -done(); diff --git a/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml b/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml index 4aa1a55f8e2..22ec2f66b5b 100644 --- a/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml +++ b/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml @@ -994,16 +994,6 @@ @assert ctx.measureText("").width === 0; variants: *load-font-variant-definition -- name: 2d.text.measure.advances-not-defined - desc: Testing that TextMetrics.advances is not defined - test_type: promise - fonts: - - CanvasTest - code: | - {{ load_font }} - ctx.font = '50px CanvasTest'; - @assert !("advances" in ctx.measureText('Hello')); - - name: 2d.text.measure.actualBoundingBox desc: Testing actualBoundingBox test_type: promise diff --git a/tests/wpt/tests/html/rendering/widgets/button-layout/block-in-inline-ref.html b/tests/wpt/tests/html/rendering/widgets/button-layout/block-in-inline-ref.html new file mode 100644 index 00000000000..57a06d7d836 --- /dev/null +++ b/tests/wpt/tests/html/rendering/widgets/button-layout/block-in-inline-ref.html @@ -0,0 +1,4 @@ + + diff --git a/tests/wpt/tests/html/rendering/widgets/button-layout/block-in-inline.html b/tests/wpt/tests/html/rendering/widgets/button-layout/block-in-inline.html new file mode 100644 index 00000000000..6fbde753b53 --- /dev/null +++ b/tests/wpt/tests/html/rendering/widgets/button-layout/block-in-inline.html @@ -0,0 +1,8 @@ + + + + diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..a1ff481467e --- /dev/null +++ b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: loading-lazy + files: + - iframe-loading-lazy* diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-img-element/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/embedded-content/the-img-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..28d0ead2dbc --- /dev/null +++ b/tests/wpt/tests/html/semantics/embedded-content/the-img-element/WEB_FEATURES.yml @@ -0,0 +1,9 @@ +features: +- name: loading-lazy + files: + - "*loading-lazy*" + - image-loading-subpixel-clip.html + - move-element-and-scroll.html + - relevant-mutations-lazy.html + - remove-element-and-scroll.html + - scrolling-below-viewport-image-lazy-loading-in-iframe.html diff --git a/tests/wpt/tests/html/semantics/forms/the-input-element/click-user-gesture.html b/tests/wpt/tests/html/semantics/forms/the-input-element/click-user-gesture.html new file mode 100644 index 00000000000..c6fe7345f20 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-input-element/click-user-gesture.html @@ -0,0 +1,37 @@ + +Test click() user gesture for pickers + + + + + + + diff --git a/tests/wpt/tests/html/semantics/forms/the-input-element/show-picker-disabled-readonly.html b/tests/wpt/tests/html/semantics/forms/the-input-element/show-picker-disabled-readonly.html index 8fdffc158f4..a5aae659038 100644 --- a/tests/wpt/tests/html/semantics/forms/the-input-element/show-picker-disabled-readonly.html +++ b/tests/wpt/tests/html/semantics/forms/the-input-element/show-picker-disabled-readonly.html @@ -22,21 +22,27 @@ const noReadonlySupport = ['button', 'checkbox', 'color', 'file', 'hidden', 'image', 'radio', 'range', 'reset', 'submit']; for (const inputType of inputTypes) { if (!noReadonlySupport.includes(inputType)) { - test(() => { + promise_test(async () => { const input = document.createElement("input"); input.setAttribute("type", inputType); input.setAttribute("readonly", ""); + await test_driver.bless('show picker'); assert_throws_dom('InvalidStateError', () => { input.showPicker(); }); + + assert_true(navigator.userActivation.isActive, 'User activation is not consumed for readonly showPicker() call'); }, `input[type=${inputType}] showPicker() throws when readonly`); } else { - test(() => { + promise_test(async () => { const input = document.createElement("input"); input.setAttribute("type", inputType); input.setAttribute("readonly", ""); - // Missing user gesture activation throws. - assert_throws_dom('NotAllowedError', () => { input.showPicker(); }); + await test_driver.bless('show picker'); + input.showPicker(); + input.blur(); + + assert_false(navigator.userActivation.isActive, 'User activation is consumed for non-readonly showPicker() call'); }, `input[type=${inputType}] showPicker() doesn't throw when readonly`); } } diff --git a/tests/wpt/tests/html/semantics/forms/the-input-element/show-picker-user-gesture.html b/tests/wpt/tests/html/semantics/forms/the-input-element/show-picker-user-gesture.html index 6b94b4f0f00..8113a2f32cd 100644 --- a/tests/wpt/tests/html/semantics/forms/the-input-element/show-picker-user-gesture.html +++ b/tests/wpt/tests/html/semantics/forms/the-input-element/show-picker-user-gesture.html @@ -28,4 +28,17 @@ for (const inputType of inputTypes) { input.blur(); }, `input[type=${inputType}] showPicker() does not throw when user activation is active`); } + +for (const inputType of inputTypes) { + promise_test(async () => { + const input = document.createElement('input'); + input.setAttribute('type', inputType); + + await test_driver.bless('show picker'); + input.showPicker(); + input.blur(); + + assert_false(navigator.userActivation.isActive); + }, `input[type=${inputType}] showPicker() consumes user activation`); +} diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.html similarity index 100% rename from tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-cross-origin-iframe.html diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-disabled.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-disabled.html similarity index 100% rename from tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-disabled.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-disabled.html diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-multiple.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-multiple.html similarity index 100% rename from tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-multiple.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-multiple.html diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-size.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-size.html similarity index 100% rename from tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-size.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-size.html diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-user-gesture.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-user-gesture.html similarity index 62% rename from tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-user-gesture.tentative.html rename to tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-user-gesture.html index e917fe2a612..7a9d88cb1c3 100644 --- a/tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-user-gesture.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/show-picker-user-gesture.html @@ -5,20 +5,27 @@ - - \ No newline at end of file + + assert_false(navigator.userActivation.isActive, + 'User activation should be consumed after calling showPicker().'); + + assert_throws_dom('NotAllowedError', () => select.showPicker(), + 'select.showPicker() should throw when there is no user activation.'); + }, `select showPicker() does not throw when user activation is active.`); + diff --git a/tests/wpt/tests/html/semantics/popovers/popover-anchor-display-ref.html b/tests/wpt/tests/html/semantics/popovers/popover-anchor-display-ref.html index ee965a1d59d..646cf5c2663 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-anchor-display-ref.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-anchor-display-ref.html @@ -3,18 +3,36 @@

    There should be a green box attached to the right side of each orange box.

    -
    -
    -
    -
    -
    +
    +
    +
    +
    +
    +
    +
    +
    + +

    There should NOT be any red boxes next to the orange ones. (Red ones down below are ok.)

    +
    +
    +
    +
    diff --git a/tests/wpt/tests/html/semantics/popovers/popover-anchor-display.tentative.html b/tests/wpt/tests/html/semantics/popovers/popover-anchor-display.tentative.html index 21de8fd58e6..1475c7de728 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-anchor-display.tentative.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-anchor-display.tentative.html @@ -9,45 +9,79 @@

    There should be a green box attached to the right side of each orange box.

    - -
    -
    -
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    + X +
    +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +
    - -
    -
    -
    -
    +

    There should NOT be any red boxes next to the orange ones. (Red ones down below are ok.)

    - -
    -
    -
    -
    +
    + +
    +
    +
    +
    - -
    - X -
    -
    - - -
    -
    -
    + +
    +
    +
    +
    diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/README.md b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/README.md deleted file mode 100644 index ac5c91c9a2e..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/README.md +++ /dev/null @@ -1,7 +0,0 @@ -The tests in this directory is intended for Chromium's DeferAllScript -experiment https://crbug.com/1339112, containing scenarios that would be -affected by DeferAllScript, to monitor the behavior on Chromium and other -browsers. - -The same set of expectations (when async/defer scripts are evaluated) should -already be covered somewhere in WPT. diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/async-script-2.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/async-script-2.html deleted file mode 100644 index f7377d847ad..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/async-script-2.html +++ /dev/null @@ -1,40 +0,0 @@ - -Async Script Execution Order - - - - - - - - - - - - - -
    End
    - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/async-script.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/async-script.html deleted file mode 100644 index 90f657679f9..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/async-script.html +++ /dev/null @@ -1,22 +0,0 @@ - -Async Script Execution Order - - - - - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/defer-script-xml.xhtml b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/defer-script-xml.xhtml deleted file mode 100644 index 9d02ff39f51..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/defer-script-xml.xhtml +++ /dev/null @@ -1,40 +0,0 @@ - - - - Defer Script Execution Order - - - - - -
    - - - - - - - - -
    End
    - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/defer-script.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/defer-script.html deleted file mode 100644 index 62c3a74014f..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/defer-script.html +++ /dev/null @@ -1,37 +0,0 @@ - -Defer Script Execution Order - - - - - - - - - - - - - - - -
    End
    - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/document-write.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/document-write.html deleted file mode 100644 index 63e251bae5c..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/document-write.html +++ /dev/null @@ -1,67 +0,0 @@ - -DeferAllScript: document.write() - - - - - - - - - - - - - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/async-script-1.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/async-script-1.js deleted file mode 100644 index 267f324aa65..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/async-script-1.js +++ /dev/null @@ -1 +0,0 @@ -logScript("Async1"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/defer-script-1.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/defer-script-1.js deleted file mode 100644 index 1a0524f4fbd..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/defer-script-1.js +++ /dev/null @@ -1 +0,0 @@ -logScript("Defer1"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/defer-script-2.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/defer-script-2.js deleted file mode 100644 index d644e37f182..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/defer-script-2.js +++ /dev/null @@ -1 +0,0 @@ -logScript("Defer2"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-open-write-close.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-open-write-close.js deleted file mode 100644 index 80703d5c0ef..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-open-write-close.js +++ /dev/null @@ -1,3 +0,0 @@ -document.open(); -document.write(``); -document.close(); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-open-write.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-open-write.js deleted file mode 100644 index 178c374df69..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-open-write.js +++ /dev/null @@ -1,2 +0,0 @@ -document.open(); -document.write(``); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write-close.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write-close.js deleted file mode 100644 index 7cdde0d78ff..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write-close.js +++ /dev/null @@ -1,2 +0,0 @@ -document.write(``); -document.close(); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write-iframe.sub.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write-iframe.sub.html deleted file mode 100644 index e3022e3bf1f..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write-iframe.sub.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - -
    End
    - - diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write.js deleted file mode 100644 index 413a9bc6210..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/document-write.js +++ /dev/null @@ -1 +0,0 @@ -document.write(``); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/helper.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/helper.js deleted file mode 100644 index 89c6d1e8282..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/helper.js +++ /dev/null @@ -1,17 +0,0 @@ -window.result = []; -function log(msg) { - window.result.push(msg); -} -function checkIfReachedBodyEnd() { - const endelement = document.getElementById("bodyend"); - // `
    End
    ` is needed at the end of HTML. - if (endelement && endelement.textContent === "End") { - log("EndOfBody"); - endelement.textContent = "Detected"; - } -} -function logScript(msg) { - checkIfReachedBodyEnd(); - log(msg); -} -document.addEventListener("DOMContentLoaded", function() { logScript("DOMContentLoaded"); }); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/sync-script-1.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/sync-script-1.js deleted file mode 100644 index 726b56346e8..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/sync-script-1.js +++ /dev/null @@ -1 +0,0 @@ -logScript("Sync1"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/sync-script-2.js b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/sync-script-2.js deleted file mode 100644 index ba2edfbf270..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/resources/sync-script-2.js +++ /dev/null @@ -1 +0,0 @@ -logScript("Sync2"); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/support/async-script.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/support/async-script.html deleted file mode 100644 index d513bafe4f6..00000000000 --- a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/defer-script/support/async-script.html +++ /dev/null @@ -1,44 +0,0 @@ - -Child Async Script Execution Order - - - - - - - - - - - - - -
    End
    - - - diff --git a/tests/wpt/tests/input-events/input-events-arrow-key-on-number-input-delete-document.html b/tests/wpt/tests/input-events/input-events-arrow-key-on-number-input-delete-document.html new file mode 100644 index 00000000000..20dad0da40a --- /dev/null +++ b/tests/wpt/tests/input-events/input-events-arrow-key-on-number-input-delete-document.html @@ -0,0 +1,37 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/input-events/input-events-arrow-key-on-number-input-prevent-default.html b/tests/wpt/tests/input-events/input-events-arrow-key-on-number-input-prevent-default.html new file mode 100644 index 00000000000..cc3984fe64d --- /dev/null +++ b/tests/wpt/tests/input-events/input-events-arrow-key-on-number-input-prevent-default.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/input-events/input-events-arrow-key-on-number-input.html b/tests/wpt/tests/input-events/input-events-arrow-key-on-number-input.html new file mode 100644 index 00000000000..75c594c2cbe --- /dev/null +++ b/tests/wpt/tests/input-events/input-events-arrow-key-on-number-input.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/input-events/input-events-spin-button-click-on-number-input-delete-document.html b/tests/wpt/tests/input-events/input-events-spin-button-click-on-number-input-delete-document.html new file mode 100644 index 00000000000..1b179952ca4 --- /dev/null +++ b/tests/wpt/tests/input-events/input-events-spin-button-click-on-number-input-delete-document.html @@ -0,0 +1,40 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/input-events/input-events-spin-button-click-on-number-input-prevent-default.html b/tests/wpt/tests/input-events/input-events-spin-button-click-on-number-input-prevent-default.html new file mode 100644 index 00000000000..558000940c9 --- /dev/null +++ b/tests/wpt/tests/input-events/input-events-spin-button-click-on-number-input-prevent-default.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/input-events/input-events-spin-button-click-on-number-input.html b/tests/wpt/tests/input-events/input-events-spin-button-click-on-number-input.html new file mode 100644 index 00000000000..e86be1798e4 --- /dev/null +++ b/tests/wpt/tests/input-events/input-events-spin-button-click-on-number-input.html @@ -0,0 +1,34 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/permissions-policy/permissions-policy-frame-policy-timing-iframe-camera.https.sub.html b/tests/wpt/tests/permissions-policy/permissions-policy-frame-policy-timing-iframe-camera.https.sub.html index 995ac2134e7..0eaafcd5946 100644 --- a/tests/wpt/tests/permissions-policy/permissions-policy-frame-policy-timing-iframe-camera.https.sub.html +++ b/tests/wpt/tests/permissions-policy/permissions-policy-frame-policy-timing-iframe-camera.https.sub.html @@ -1,15 +1,14 @@ diff --git a/tests/wpt/tests/permissions-policy/permissions-policy-frame-policy-timing.https.sub.html b/tests/wpt/tests/permissions-policy/permissions-policy-frame-policy-timing.https.sub.html index bea9673d620..f3b3c9cbf88 100644 --- a/tests/wpt/tests/permissions-policy/permissions-policy-frame-policy-timing.https.sub.html +++ b/tests/wpt/tests/permissions-policy/permissions-policy-frame-policy-timing.https.sub.html @@ -8,10 +8,9 @@ let lastCallbackId = 0; const callbacks = {}; - function postMessageToFrame(frame, cb) { - var id = ++lastCallbackId; + function postMessageToFrame(frame, cb, id) { callbacks[id] = cb; - frame.contentWindow.postMessage({id:id}, '*'); + frame.contentWindow.postMessage('test', '*'); step_timeout(() => { if (id in callbacks) { callbacks[id]('timeout'); @@ -40,14 +39,16 @@ iframe_post_nav_callback, result_handler, test_name) { async_test((t) => { + var id = ++lastCallbackId; const iframe = document.createElement('iframe'); document.body.appendChild(iframe); - iframe_pre_nav_callback(iframe); - iframe.onload = t.step_func(() => { + callbacks[id] = t.step_func((result) => { + assert_equals(result, 'ready'); iframe_post_nav_callback(iframe); - postMessageToFrame(iframe, t.step_func_done(result_handler)); + postMessageToFrame(iframe, t.step_func_done(result_handler), id); }); - iframe.src = url; + iframe_pre_nav_callback(iframe); + iframe.src = url + '?id=' + id; }, test_name); } diff --git a/tests/wpt/tests/pointerevents/pointerevent_predicted_coalesced_targets-manual.html b/tests/wpt/tests/pointerevents/pointerevent_predicted_coalesced_targets-manual.html new file mode 100644 index 00000000000..b46f7436473 --- /dev/null +++ b/tests/wpt/tests/pointerevents/pointerevent_predicted_coalesced_targets-manual.html @@ -0,0 +1,63 @@ + + + +Manual test for the target of predicted and coalesced events + + + +
    + Move the pointer fast over this area. +
    + + diff --git a/tests/wpt/tests/resources/chromium/webxr-test.js b/tests/wpt/tests/resources/chromium/webxr-test.js index aba3447982b..a0713e03cce 100644 --- a/tests/wpt/tests/resources/chromium/webxr-test.js +++ b/tests/wpt/tests/resources/chromium/webxr-test.js @@ -1312,27 +1312,34 @@ class MockRuntime { return; } + let newDepthData; + // If we don't have a current depth data, we'll return null // (i.e. no data is not a valid data, so it cannot be "StillValid"). if (this.depthSensingData_ == null) { - frameData.depthData = null; - return; + newDepthData = null; + } else if(!this.depthSensingDataDirty_) { + newDepthData = { dataStillValid: {}}; + } else { + newDepthData = { + updatedDepthData: { + timeDelta: frameData.timeDelta, + normTextureFromNormView: this.depthSensingData_.normDepthBufferFromNormView, + rawValueToMeters: this.depthSensingData_.rawValueToMeters, + size: { width: this.depthSensingData_.width, height: this.depthSensingData_.height }, + pixelData: { bytes: this.depthSensingData_.depthData } + } + }; } - if(!this.depthSensingDataDirty_) { - frameData.depthData = { dataStillValid: {}}; - return; + for (let i = 0; i < this.primaryViews_.length; i++) { + this.primaryViews_[i].depthData = newDepthData; } - - frameData.depthData = { - updatedDepthData: { - timeDelta: frameData.timeDelta, - normTextureFromNormView: this.depthSensingData_.normDepthBufferFromNormView, - rawValueToMeters: this.depthSensingData_.rawValueToMeters, - size: { width: this.depthSensingData_.width, height: this.depthSensingData_.height }, - pixelData: { bytes: this.depthSensingData_.depthData } + if (this.enabledFeatures_.includes(xrSessionMojom.XRSessionFeature.SECONDARY_VIEWS)) { + for (let i = 0; i < this.secondaryViews_.length; i++) { + this.secondaryViews_[i].depthData = newDepthData; } - }; + } this.depthSensingDataDirty_ = false; } diff --git a/tests/wpt/tests/resources/testharness.js b/tests/wpt/tests/resources/testharness.js index c5c375e1720..61cd1851115 100644 --- a/tests/wpt/tests/resources/testharness.js +++ b/tests/wpt/tests/resources/testharness.js @@ -857,7 +857,7 @@ promise = promiseOrConstructor; description = descriptionOrPromise; assert(maybeDescription === undefined, - "Too many args pased to no-constructor version of promise_rejects_dom"); + "Too many args passed to no-constructor version of promise_rejects_dom, or accidentally explicitly passed undefined"); } return bring_promise_to_current_realm(promise) .then(test.unreached_func("Should have rejected: " + description)) @@ -2174,7 +2174,7 @@ func = funcOrConstructor; description = descriptionOrFunc; assert(maybeDescription === undefined, - "Too many args pased to no-constructor version of assert_throws_dom"); + "Too many args passed to no-constructor version of assert_throws_dom, or accidentally explicitly passed undefined"); } assert_throws_dom_impl(type, func, description, "assert_throws_dom", constructor) } diff --git a/tests/wpt/tests/service-workers/service-worker/resources/shadowrealm-promise-rejection-test-worker.js b/tests/wpt/tests/service-workers/service-worker/resources/shadowrealm-promise-rejection-test-worker.js new file mode 100644 index 00000000000..5c9737a67aa --- /dev/null +++ b/tests/wpt/tests/service-workers/service-worker/resources/shadowrealm-promise-rejection-test-worker.js @@ -0,0 +1,11 @@ +var realm = new ShadowRealm(); + +// Promise rejection from ShadowRealm should be handled within service +// worker thread. +realm.evaluate('Promise.reject("foo"); () => {}'); + +// Nested ShadowRealms are also possible. +realm.evaluate(` +const innerRealm = new ShadowRealm(); +innerRealm.evaluate('Promise.reject("foo"); () => {}'); +`); diff --git a/tests/wpt/tests/service-workers/service-worker/shadowrealm-promise-rejection.https.html b/tests/wpt/tests/service-workers/service-worker/shadowrealm-promise-rejection.https.html new file mode 100644 index 00000000000..3fa2331b7f9 --- /dev/null +++ b/tests/wpt/tests/service-workers/service-worker/shadowrealm-promise-rejection.https.html @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/tests/wpt/tests/shadow-dom/Document-caretPositionFromPoint.tentative.html b/tests/wpt/tests/shadow-dom/Document-caretPositionFromPoint.tentative.html index f3053ee7115..b01bc0ae6ed 100644 --- a/tests/wpt/tests/shadow-dom/Document-caretPositionFromPoint.tentative.html +++ b/tests/wpt/tests/shadow-dom/Document-caretPositionFromPoint.tentative.html @@ -22,7 +22,7 @@ test(() => { // Get x and y coordinate at `he|llo, world`. const x = rect.left + characterWidth * characterIndex; const y = rect.top + rect.height / 2; - const caretPosition = document.caretPositionFromPoint(x, y); + const caretPosition = document.caretPositionFromPoint(x, y, {}); assert_true(caretPosition instanceof CaretPosition); assert_true(caretPosition.offsetNode instanceof Text); assert_equals(typeof(caretPosition.offset), "number"); @@ -68,7 +68,7 @@ test(() => { // Get x and y coordinate at `he|llo, world`. const x = rect.left + characterWidth * characterIndex; const y = rect.top + rect.height / 2; - const caretPosition = document.caretPositionFromPoint(x, y, shadowRoot); + const caretPosition = document.caretPositionFromPoint(x, y, {shadowRoots: [shadowRoot]}); assert_true(caretPosition instanceof CaretPosition); assert_true(caretPosition.offsetNode instanceof Text); assert_equals(typeof(caretPosition.offset), "number"); @@ -92,7 +92,7 @@ test(() => { // Get x and y coordinate at `ab|cd`. const x = rect.left + characterWidth * characterIndex; const y = rect.top + rect.height / 2; - const caretPosition = document.caretPositionFromPoint(x, y, shadowRoot); + const caretPosition = document.caretPositionFromPoint(x, y, {shadowRoots: [shadowRoot]}); assert_true(caretPosition instanceof CaretPosition); assert_true(caretPosition.offsetNode instanceof Text); assert_equals(typeof(caretPosition.offset), "number"); @@ -113,7 +113,7 @@ test(() => { // Get x and y coordinate at left-most location inside input element. const x = rect.left + 1; const y = rect.top + rect.height / 2; - const caretPosition = document.caretPositionFromPoint(x, y, shadowRoot); + const caretPosition = document.caretPositionFromPoint(x, y, {shadowRoots: [shadowRoot]}); assert_true(caretPosition instanceof CaretPosition); assert_true(caretPosition.offsetNode instanceof Node); assert_equals(typeof(caretPosition.offset), "number"); @@ -134,7 +134,7 @@ test(() => { // Get x and y coordinate at left-most location inside input element. const x = rect.left + 1; const y = rect.top + rect.height / 2; - const caretPosition = document.caretPositionFromPoint(x, y); + const caretPosition = document.caretPositionFromPoint(x, y, {shadowRoots: []}); assert_true(caretPosition instanceof CaretPosition); assert_true(caretPosition.offsetNode instanceof Node); assert_equals(typeof(caretPosition.offset), "number"); @@ -215,7 +215,7 @@ test(() => { // Get x and y coordinate at `so|me text`. const x = rect.left + characterWidth * characterIndex; const y = rect.top + rect.height / 2; - const caretPosition = document.caretPositionFromPoint(x, y, innerShadowRoot); + const caretPosition = document.caretPositionFromPoint(x, y, {shadowRoots: [innerShadowRoot]}); assert_true(caretPosition instanceof CaretPosition); assert_true(caretPosition.offsetNode instanceof Text); assert_equals(typeof(caretPosition.offset), "number"); @@ -244,7 +244,7 @@ test(() => { // Get x and y coordinate at `so|me text`. const x = rect.left + characterWidth * characterIndex; const y = rect.top + rect.height / 2; - const caretPosition = document.caretPositionFromPoint(x, y, outerShadowRoot); + const caretPosition = document.caretPositionFromPoint(x, y, {shadowRoots: [outerShadowRoot]}); assert_true(caretPosition instanceof CaretPosition); assert_true(caretPosition.offsetNode instanceof Node); assert_equals(typeof(caretPosition.offset), "number"); @@ -274,7 +274,7 @@ test(() => { // Get x and y coordinate at `so|me text`. const x = rect.left + characterWidth * characterIndex; const y = rect.top + rect.height / 2; - const caretPosition = document.caretPositionFromPoint(x, y, outerShadowRoot, innerShadowRoot); + const caretPosition = document.caretPositionFromPoint(x, y, {shadowRoots: [innerShadowRoot, outerShadowRoot]}); assert_true(caretPosition instanceof CaretPosition); assert_true(caretPosition.offsetNode instanceof Text); assert_equals(typeof(caretPosition.offset), "number"); diff --git a/tests/wpt/tests/shadow-dom/selection-direction.tentative.html b/tests/wpt/tests/shadow-dom/selection-direction.tentative.html index b5b3f6044c7..6ec9b1934f9 100644 --- a/tests/wpt/tests/shadow-dom/selection-direction.tentative.html +++ b/tests/wpt/tests/shadow-dom/selection-direction.tentative.html @@ -100,6 +100,24 @@ promise_test(async () => { assert_equals(sel.focusOffset, 1); assert_equals(sel.direction, 'none'); }, 'direction returns "none" when there is a triple click selection(directionless)'); + +promise_test(async () => { + container.innerHTML = 'hello, world'; + const click = new test_driver.Actions() + .pointerMove(0, 0, container.firstChild) + .pointerDown() + .pointerUp() + .send(); + await click; + + const sel = getSelection(); + assert_equals(sel.anchorNode, container.firstChild); + assert_equals(sel.anchorOffset, 0); + assert_equals(sel.focusNode, container.firstChild); + assert_equals(sel.focusOffset, 0); + assert_true(sel.isCollapsed); + assert_equals(sel.direction, 'none'); +}, 'direction returns "none" when the selection is collapsed'); diff --git a/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-carry-over-to-prerender-page.html b/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-carry-over-to-prerender-page.html new file mode 100644 index 00000000000..39df79c8476 --- /dev/null +++ b/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-carry-over-to-prerender-page.html @@ -0,0 +1,23 @@ + + + + + + diff --git a/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-isolated-while-prerendering.html b/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-isolated-while-prerendering.html new file mode 100644 index 00000000000..46170393deb --- /dev/null +++ b/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-isolated-while-prerendering.html @@ -0,0 +1,44 @@ + + + + + + diff --git a/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-no-leak-to-initiator-page.html b/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-no-leak-to-initiator-page.html new file mode 100644 index 00000000000..6c0ee4c4adb --- /dev/null +++ b/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-no-leak-to-initiator-page.html @@ -0,0 +1,38 @@ + + + + + + diff --git a/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-swap-after-activate.html b/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-swap-after-activate.html new file mode 100644 index 00000000000..c5e44372149 --- /dev/null +++ b/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-swap-after-activate.html @@ -0,0 +1,79 @@ + + + + + + diff --git a/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-utils.js b/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-utils.js new file mode 100644 index 00000000000..06688e3bd4c --- /dev/null +++ b/tests/wpt/tests/speculation-rules/prerender/resources/session-storage-utils.js @@ -0,0 +1,72 @@ +function getSessionStorageKeys() { + let keys = []; + let txt = ''; + for (let i = 0; i < sessionStorage.length; ++i) { + keys.push(sessionStorage.key(i)); + } + keys.sort(); + keys.forEach((key) => { + if (txt.length) { + txt += ', '; + } + txt += key; + }); + return txt; +} + +function getNextMessage(channel) { + return new Promise(resolve => { + channel.addEventListener('message', e => { + resolve(e.data); + }, {once: true}); + }); +} + +// session_storage_test() is a utility function for running session storage +// related tests that open a initiator page using window.open(). +function session_storage_test(testPath, uid) { + promise_test(async t => { + const testChannel = new PrerenderChannel('test-channel', uid); + t.add_cleanup(() => { + testChannel.close(); + }); + const gotMessage = getNextMessage(testChannel); + const url = 'resources/' + testPath + '?uid=' + uid; + window.open(url, '_blank', 'noopener'); + assert_equals(await gotMessage, 'Done'); + }, testPath); +} + +// RunSessionStorageTest() is a utility function for running session storage +// related tests that requires coordinated code execution on both the initiator +// page and the prerendering page. The passed |func| function will be called +// with the following arguments: +// - isPrerendering: Whether the |func| is called in the prerendering page. +// - url: The URL of the prerendering page. |func| should call +// startPrerendering(url) when |isPrerendering| is false to start the +// prerendering. +// - channel: A PrerenderChannel which can be used to coordinate the code +// execution on the initiator page and the prerendering page. +// - done: A function that should be called when the test completes +// successfully. +async function RunSessionStorageTest(func, uid) { + const url = new URL(document.URL); + url.searchParams.set('prerendering', ''); + const params = new URLSearchParams(location.search); + // The main test page loads the initiator page, then the initiator page will + // prerender itself with the `prerendering` parameter. + const isPrerendering = params.has('prerendering'); + const prerenderChannel = new PrerenderChannel('prerender-channel', uid); + const testChannel = new PrerenderChannel('test-channel', uid); + window.addEventListener('pagehide', () => { + prerenderChannel.close(); + testChannel.close(); + }); + try { + await func(isPrerendering, url.toString(), prerenderChannel, () => { + testChannel.postMessage('Done'); + }) + } catch (e) { + testChannel.postMessage(e.toString()); + } +} diff --git a/tests/wpt/tests/speculation-rules/prerender/session-storage.tentative.html b/tests/wpt/tests/speculation-rules/prerender/session-storage.tentative.html new file mode 100644 index 00000000000..92d73285cce --- /dev/null +++ b/tests/wpt/tests/speculation-rules/prerender/session-storage.tentative.html @@ -0,0 +1,30 @@ + + +Same-origin prerendering can access sessionStorage + + + + + + + + + diff --git a/tests/wpt/tests/svg/painting/reftests/green-100x100.svg b/tests/wpt/tests/svg/painting/reftests/green-100x100.svg new file mode 100644 index 00000000000..120941444a4 --- /dev/null +++ b/tests/wpt/tests/svg/painting/reftests/green-100x100.svg @@ -0,0 +1,3 @@ + + + diff --git a/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-001.html b/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-001.html new file mode 100644 index 00000000000..a9870ac8bb2 --- /dev/null +++ b/tests/wpt/tests/svg/painting/reftests/non-scaling-stroke-001.html @@ -0,0 +1,30 @@ + + +non-scaling-stroke with scaling + + + + + + + + + diff --git a/tests/wpt/tests/svg/struct/reftests/support/non-svg-root-resource.xml b/tests/wpt/tests/svg/struct/reftests/support/non-svg-root-resource.xml new file mode 100644 index 00000000000..6012063ea5b --- /dev/null +++ b/tests/wpt/tests/svg/struct/reftests/support/non-svg-root-resource.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/wpt/tests/svg/struct/reftests/support/sprites-stacked.svg b/tests/wpt/tests/svg/struct/reftests/support/sprites-stacked.svg new file mode 100644 index 00000000000..bebe1bd9198 --- /dev/null +++ b/tests/wpt/tests/svg/struct/reftests/support/sprites-stacked.svg @@ -0,0 +1,10 @@ + + + + + + diff --git a/tests/wpt/tests/svg/struct/reftests/support/sprites-target.svg b/tests/wpt/tests/svg/struct/reftests/support/sprites-target.svg new file mode 100644 index 00000000000..1eb11bfbfb4 --- /dev/null +++ b/tests/wpt/tests/svg/struct/reftests/support/sprites-target.svg @@ -0,0 +1,8 @@ + + + + diff --git a/tests/wpt/tests/svg/struct/reftests/use-external-resource-no-svg-root.html b/tests/wpt/tests/svg/struct/reftests/use-external-resource-no-svg-root.html new file mode 100644 index 00000000000..444dbe843f1 --- /dev/null +++ b/tests/wpt/tests/svg/struct/reftests/use-external-resource-no-svg-root.html @@ -0,0 +1,8 @@ + +Reference to a <symbol> not in an SVG fragment in a resource document without an SVG root element + + + + + + diff --git a/tests/wpt/tests/svg/struct/reftests/use-external-resource-target-pseudo-001.html b/tests/wpt/tests/svg/struct/reftests/use-external-resource-target-pseudo-001.html new file mode 100644 index 00000000000..153aedba026 --- /dev/null +++ b/tests/wpt/tests/svg/struct/reftests/use-external-resource-target-pseudo-001.html @@ -0,0 +1,9 @@ + +<use> referencing an external document resource with :target pseudo class + + + + + + + diff --git a/tests/wpt/tests/svg/struct/reftests/use-external-resource-target-pseudo-002.html b/tests/wpt/tests/svg/struct/reftests/use-external-resource-target-pseudo-002.html new file mode 100644 index 00000000000..0a483aff54d --- /dev/null +++ b/tests/wpt/tests/svg/struct/reftests/use-external-resource-target-pseudo-002.html @@ -0,0 +1,9 @@ + +<use> referencing an external document resource with :target pseudo class + + + + + + + diff --git a/tests/wpt/tests/svg/struct/reftests/use-referencing-non-svg-fragment-element.html b/tests/wpt/tests/svg/struct/reftests/use-referencing-non-svg-fragment-element.html new file mode 100644 index 00000000000..2bf828c3bab --- /dev/null +++ b/tests/wpt/tests/svg/struct/reftests/use-referencing-non-svg-fragment-element.html @@ -0,0 +1,13 @@ + +<use> referencing an SVG element outside an SVG fragment + + + + + + + + + diff --git a/tests/wpt/tests/svg/text/reftests/lengthAdjust-large-font-vertical.svg b/tests/wpt/tests/svg/text/reftests/lengthAdjust-large-font-vertical.svg new file mode 100644 index 00000000000..5127081bf69 --- /dev/null +++ b/tests/wpt/tests/svg/text/reftests/lengthAdjust-large-font-vertical.svg @@ -0,0 +1,19 @@ + + + + lengthAdjust="spacingAndGlyphs" should render properly + + + + + + + + + XXXXXXX + + diff --git a/tests/wpt/tests/svg/text/reftests/lengthAdjust-large-font.svg b/tests/wpt/tests/svg/text/reftests/lengthAdjust-large-font.svg new file mode 100644 index 00000000000..7a204fe8a79 --- /dev/null +++ b/tests/wpt/tests/svg/text/reftests/lengthAdjust-large-font.svg @@ -0,0 +1,19 @@ + + + + lengthAdjust="spacingAndGlyphs" should render properly + + + + + + + + + XXXXXXX + + diff --git a/tests/wpt/tests/tools/webdriver/webdriver/bidi/client.py b/tests/wpt/tests/tools/webdriver/webdriver/bidi/client.py index 045bc048c4b..ee3ef1ea95d 100644 --- a/tests/wpt/tests/tools/webdriver/webdriver/bidi/client.py +++ b/tests/wpt/tests/tools/webdriver/webdriver/bidi/client.py @@ -211,9 +211,9 @@ class BidiSession: async def end(self) -> None: """Close websocket connection.""" - assert self.transport is not None - await self.transport.end() - self.transport = None + if self.transport is not None: + await self.transport.end() + self.transport = None def add_event_listener( self, diff --git a/tests/wpt/tests/trusted-types/Document-write-exception-order.xhtml b/tests/wpt/tests/trusted-types/Document-write-exception-order.xhtml new file mode 100644 index 00000000000..db7c0631243 --- /dev/null +++ b/tests/wpt/tests/trusted-types/Document-write-exception-order.xhtml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.html b/tests/wpt/tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.html index 228887d0423..e4fec3a8a70 100644 --- a/tests/wpt/tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.html +++ b/tests/wpt/tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.html @@ -40,6 +40,24 @@ container.firstChild.remove(); }, "insertAdjacentHTML with html assigned via policy (successful HTML transformation)."); + test(t => { + let p = createHTML_policy(window, 1); + var d = document.createElement('div'); + container.appendChild(d); + + assert_throws_dom("SyntaxError", _ => { + d.insertAdjacentHTML('invalid', p.createHTML("

    Fail

    ")); + }); + + assert_equals(d.previousSibling, null); + assert_equals(d.firstChild, null); + assert_equals(d.lastChild, null); + assert_equals(d.nextSibling, null); + + while (container.firstChild) + container.firstChild.remove(); + }, "insertAdjacentHTML(TrustedHTML) throws SyntaxError DOMException when position invalid."); + // String assignments throw. test(t => { var d = document.createElement('div'); @@ -67,6 +85,23 @@ container.firstChild.remove(); }, "`insertAdjacentHTML(string)` throws."); + test(t => { + var d = document.createElement('div'); + container.appendChild(d); + + assert_throws_js(TypeError, _ => { + d.insertAdjacentHTML('invalid', "

    Fail

    "); + }); + + assert_equals(d.previousSibling, null); + assert_equals(d.firstChild, null); + assert_equals(d.lastChild, null); + assert_equals(d.nextSibling, null); + + while (container.firstChild) + container.firstChild.remove(); + }, "`insertAdjacentHTML(string)` still throws TypeError when position invalid."); + // Null assignment throws. test(t => { var d = document.createElement('div'); diff --git a/tests/wpt/tests/trusted-types/block-string-assignment-to-Element-outerHTML.html b/tests/wpt/tests/trusted-types/block-string-assignment-to-Element-outerHTML.html index 9b6cf72cb40..acf5a42622c 100644 --- a/tests/wpt/tests/trusted-types/block-string-assignment-to-Element-outerHTML.html +++ b/tests/wpt/tests/trusted-types/block-string-assignment-to-Element-outerHTML.html @@ -26,6 +26,13 @@ container.firstChild.remove(); }, "outerHTML with html assigned via policy (successful HTML transformation)."); + test(t => { + let p = createHTML_policy(window, 1); + assert_throws_dom("NoModificationAllowedError", _ => { + document.documentElement.outerHTML = p.createHTML('

    Content

    '); + }); + }, "`outerHTML = TrustedHTML` throws NoModificationAllowedError when parent is a document."); + // String assignments throw. test(t => { var d = document.createElement('div'); @@ -38,6 +45,12 @@ container.firstChild.remove(); }, "`outerHTML = string` throws."); + test(t => { + assert_throws_js(TypeError, _ => { + document.documentElement.outerHTML = '

    Content

    '; + }); + }, "`outerHTML = string` throws TypeError even when parent is a document."); + // Null assignment throws. test(t => { var d = document.createElement('div'); diff --git a/tests/wpt/tests/trusted-types/eval-csp-tt-default-policy-mutate.html b/tests/wpt/tests/trusted-types/eval-csp-tt-default-policy-mutate.html new file mode 100644 index 00000000000..f7909a32a6e --- /dev/null +++ b/tests/wpt/tests/trusted-types/eval-csp-tt-default-policy-mutate.html @@ -0,0 +1,24 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/tests/trusted-types/eval-csp-tt-default-policy.html b/tests/wpt/tests/trusted-types/eval-csp-tt-default-policy.html index ab9b98df64e..4ca9c562f50 100644 --- a/tests/wpt/tests/trusted-types/eval-csp-tt-default-policy.html +++ b/tests/wpt/tests/trusted-types/eval-csp-tt-default-policy.html @@ -8,7 +8,7 @@ diff --git a/tests/wpt/tests/trusted-types/eval-with-permissive-csp.html b/tests/wpt/tests/trusted-types/eval-with-permissive-csp.html index fb0776852e7..b3dc3520176 100644 --- a/tests/wpt/tests/trusted-types/eval-with-permissive-csp.html +++ b/tests/wpt/tests/trusted-types/eval-with-permissive-csp.html @@ -51,20 +51,20 @@ assert_equals(s, "Hello a cat string"); }, "new Function with TrustedScript and permissive CSP works."); - trustedTypes.createPolicy("default", { createScript: createScriptJS }, true); + trustedTypes.createPolicy("default", { createScript: (s) => s }); test(t => { - let s = eval('"Hello transformed untrusted string"'); - assert_equals(s, "Hello a cat untrusted string"); - }, "eval with default policy and permissive CSP still obeys default policy."); + let s = eval('1+1'); + assert_equals(s, 2); + }, "eval with plain string with Trusted Types and permissive CSP works with default policy."); test(t => { - let s = eval?.('"Hello transformed untrusted string"'); - assert_equals(s, "Hello a cat untrusted string"); - }, "indirect eval with default policy and permissive CSP still obeys default policy."); + let s = eval?.('1+1'); + assert_equals(s, 2); + }, "indirect eval with plain string with Trusted Types and permissive CSP works with default policy."); test(t => { - let s = new Function('return "Hello transformed untrusted string"')(); - assert_equals(s, "Hello a cat untrusted string"); - }, "new Function with default policy and permissive CSP still obeys default policy."); + let s = new Function('return 1+1')(); + assert_equals(s, 2); + }, "new Function with plain string default policy and permissive CSP works with default policy."); diff --git a/tests/wpt/tests/trusted-types/support/WorkerGlobalScope-eval.https.js b/tests/wpt/tests/trusted-types/support/WorkerGlobalScope-eval.https.js index 06313752087..95ac1ff844b 100644 --- a/tests/wpt/tests/trusted-types/support/WorkerGlobalScope-eval.https.js +++ b/tests/wpt/tests/trusted-types/support/WorkerGlobalScope-eval.https.js @@ -39,10 +39,15 @@ trustedTypes.createPolicy("default", { createScript: x => x.replace("2", "5") }); test(t => { - assert_equals(eval("2"), 5); + assert_equals(eval("4"), 4); }, "eval(string) with default policy in " + worker_type); test(t => { - assert_equals(eval?.("2"), 5); + assert_equals(eval?.("4"), 4); }, "indirect eval(string) with default policy in " + worker_type); - +test(t => { + assert_throws_js(EvalError, _ => eval("2")); +}, "eval(string) with default policy mutation in " + worker_type); +test(t => { + assert_throws_js(EvalError, _ => eval?.("2")); +}, "indirect eval(string) with default policy mutation in " + worker_type); done(); diff --git a/tests/wpt/tests/wai-aria/role/roles.tentative.html b/tests/wpt/tests/wai-aria/role/roles.tentative.html new file mode 100644 index 00000000000..a889c9934ff --- /dev/null +++ b/tests/wpt/tests/wai-aria/role/roles.tentative.html @@ -0,0 +1,31 @@ + + + + New Core ARIA Role Verification Tests + + + + + + + + + +

    Tests new ARIA role definitions. See comments for more info.

    + + + + diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/context_created/context_created.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/context_created/context_created.py index 35692a96845..5172b25d997 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/context_created/context_created.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/context_created/context_created.py @@ -96,6 +96,10 @@ async def test_evaluate_window_open_with_url(bidi_session, subscribe_events, wai async def test_event_emitted_before_create_returns( bidi_session, subscribe_events, type_hint ): + # Subscribe before assigning the listener, as subscription emits the events + # for already existing contexts. + await subscribe_events([CONTEXT_CREATED_EVENT]) + events = [] async def on_event(method, data): @@ -103,7 +107,6 @@ async def test_event_emitted_before_create_returns( remove_listener = bidi_session.add_event_listener(CONTEXT_CREATED_EVENT, on_event) - await subscribe_events([CONTEXT_CREATED_EVENT]) context = await bidi_session.browsing_context.create(type_hint=type_hint) # If the browsingContext.contextCreated event was emitted after the @@ -124,13 +127,16 @@ async def test_event_emitted_before_create_returns( async def test_navigate_creates_iframes(bidi_session, subscribe_events, top_context, test_page_multiple_frames): + # Subscribe before assigning the listener, as subscription emits the events + # for already existing contexts. + await subscribe_events([CONTEXT_CREATED_EVENT]) + events = [] async def on_event(method, data): events.append(data) remove_listener = bidi_session.add_event_listener(CONTEXT_CREATED_EVENT, on_event) - await subscribe_events([CONTEXT_CREATED_EVENT]) await bidi_session.browsing_context.navigate( context=top_context["context"], url=test_page_multiple_frames, wait="complete" @@ -172,13 +178,16 @@ async def test_navigate_creates_iframes(bidi_session, subscribe_events, top_cont async def test_navigate_creates_nested_iframes(bidi_session, subscribe_events, top_context, test_page_nested_frames): + # Subscribe before assigning the listener, as subscription emits the events + # for already existing contexts. + await subscribe_events([CONTEXT_CREATED_EVENT]) + events = [] async def on_event(method, data): events.append(data) remove_listener = bidi_session.add_event_listener(CONTEXT_CREATED_EVENT, on_event) - await subscribe_events([CONTEXT_CREATED_EVENT]) await bidi_session.browsing_context.navigate( context=top_context["context"], url=test_page_nested_frames, wait="complete" @@ -264,6 +273,10 @@ async def test_new_user_context( create_user_context, type_hint, ): + # Subscribe before assigning the listener, as subscription emits the events + # for already existing contexts. + await subscribe_events([CONTEXT_CREATED_EVENT]) + events = [] async def on_event(method, data): @@ -271,8 +284,6 @@ async def test_new_user_context( remove_listener = bidi_session.add_event_listener(CONTEXT_CREATED_EVENT, on_event) - await subscribe_events([CONTEXT_CREATED_EVENT]) - user_context = await create_user_context() assert len(events) == 0 diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/conftest.py b/tests/wpt/tests/webdriver/tests/bidi/network/conftest.py index 424fa8b5c75..97f392b0818 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/network/conftest.py +++ b/tests/wpt/tests/webdriver/tests/bidi/network/conftest.py @@ -66,6 +66,7 @@ async def setup_blocked_request( password="password", realm="test", navigate=False, + **kwargs, ): await setup_network_test(events=[f"network.{phase}"]) @@ -99,7 +100,7 @@ async def setup_blocked_request( ) ) else: - asyncio.ensure_future(fetch(blocked_url, context=context)) + asyncio.ensure_future(fetch(blocked_url, context=context, **kwargs)) event = await wait_for_future_safe(network_event) request = event["request"]["request"] diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/body.py b/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/body.py new file mode 100644 index 00000000000..da7cff78a50 --- /dev/null +++ b/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/body.py @@ -0,0 +1,37 @@ +import pytest + +from webdriver.bidi.modules.network import NetworkStringValue + +from ... import recursive_compare +from .. import assert_response_event, RESPONSE_COMPLETED_EVENT + +pytestmark = pytest.mark.asyncio + + +@pytest.mark.parametrize( + "request_post_data, modified_post_data, expected_size", + [ + ["{'a': 1}", "", 0], + [None, "{'a': 123}", 10], + ["{'a': 1}", "{'a': 12345678}", 15], + ], +) +async def test_request_body( + bidi_session, + setup_blocked_request, + subscribe_events, + wait_for_event, + request_post_data, + modified_post_data, + expected_size, +): + request = await setup_blocked_request( + "beforeRequestSent", method="POST", post_data=request_post_data + ) + await subscribe_events(events=[RESPONSE_COMPLETED_EVENT]) + + on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) + body = NetworkStringValue(modified_post_data) + await bidi_session.network.continue_request(request=request, body=body) + response_event = await on_response_completed + assert response_event["request"]["bodySize"] == expected_size diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/cookies.py b/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/cookies.py new file mode 100644 index 00000000000..eb79529ab1c --- /dev/null +++ b/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/cookies.py @@ -0,0 +1,104 @@ +import pytest + +from webdriver.bidi.modules.network import CookieHeader, Header, NetworkStringValue +from webdriver.bidi.modules.script import ContextTarget + +from ... import recursive_compare +from .. import assert_response_event, RESPONSE_COMPLETED_EVENT + +pytestmark = pytest.mark.asyncio + + +@pytest.mark.parametrize( + "document_cookies, modified_cookies", + [ + [{"a": "1"}, {}], + [{}, {"b": "2"}], + [{"a": "1", "b": "2"}, {"c": "3", "d": "4"}], + [{"a": "1"}, {"a": "not-1"}], + ], +) +async def test_modify_cookies( + setup_blocked_request, + subscribe_events, + wait_for_event, + bidi_session, + top_context, + document_cookies, + modified_cookies, +): + expression = "" + for name, value in document_cookies.items(): + expression += f"document.cookie = '{name}={value}';" + + await bidi_session.script.evaluate( + expression=expression, + target=ContextTarget(top_context["context"]), + await_promise=False, + ) + + request = await setup_blocked_request("beforeRequestSent") + await subscribe_events(events=[RESPONSE_COMPLETED_EVENT]) + + cookies = [] + for name, value in modified_cookies.items(): + cookies.append(CookieHeader(name=name, value=NetworkStringValue(value))) + + on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) + await bidi_session.network.continue_request(request=request, cookies=cookies) + response_event = await on_response_completed + + event_cookies = response_event["request"]["cookies"] + assert len(event_cookies) == len(cookies) + for cookie in cookies: + event_cookie = next( + filter(lambda c: c["name"] == cookie["name"], event_cookies), None + ) + recursive_compare(cookie, event_cookie) + + await bidi_session.storage.delete_cookies() + + +async def test_override_header_cookie( + setup_blocked_request, + subscribe_events, + wait_for_event, + bidi_session, +): + request = await setup_blocked_request( + "beforeRequestSent", headers={"Cookie": "a=1"} + ) + await subscribe_events(events=[RESPONSE_COMPLETED_EVENT]) + + cookie = CookieHeader(name="b", value=NetworkStringValue("2")) + on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) + await bidi_session.network.continue_request(request=request, cookies=[cookie]) + response_event = await on_response_completed + + event_cookies = response_event["request"]["cookies"] + recursive_compare([cookie], event_cookies) + + await bidi_session.storage.delete_cookies() + + +async def test_override_modified_header_cookies( + setup_blocked_request, + subscribe_events, + wait_for_event, + bidi_session, +): + request = await setup_blocked_request("beforeRequestSent") + await subscribe_events(events=[RESPONSE_COMPLETED_EVENT]) + + header = Header(name="Cookie", value=NetworkStringValue("a=1")) + cookie = CookieHeader(name="b", value=NetworkStringValue("2")) + on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) + await bidi_session.network.continue_request( + request=request, headers=[header], cookies=[cookie] + ) + response_event = await on_response_completed + + event_cookies = response_event["request"]["cookies"] + recursive_compare([cookie], event_cookies) + + await bidi_session.storage.delete_cookies() diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/headers.py b/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/headers.py new file mode 100644 index 00000000000..11106c77208 --- /dev/null +++ b/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/headers.py @@ -0,0 +1,60 @@ +import pytest + +from webdriver.bidi.modules.network import Header, NetworkStringValue +from webdriver.bidi.modules.script import ContextTarget + +from .. import assert_response_event, RESPONSE_COMPLETED_EVENT + +pytestmark = pytest.mark.asyncio + + +@pytest.mark.parametrize( + "request_headers, modified_headers", + [ + [{"a": "1"}, {}], + [{}, {"b": "2"}], + [{"a": "1", "b": "2"}, {"c": "3", "d": "4"}], + [{"a": "1"}, {"a": "not-1"}], + ], +) +async def test_modify_headers( + setup_blocked_request, + subscribe_events, + wait_for_event, + bidi_session, + request_headers, + modified_headers, +): + request = await setup_blocked_request("beforeRequestSent", headers=request_headers) + await subscribe_events(events=[RESPONSE_COMPLETED_EVENT]) + + headers = [] + for name, value in modified_headers.items(): + headers.append(Header(name=name, value=NetworkStringValue(value))) + + on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) + await bidi_session.network.continue_request(request=request, headers=headers) + response_event = await on_response_completed + assert_response_event(response_event, expected_request={"headers": headers}) + + +async def test_override_cookies( + setup_blocked_request, + subscribe_events, + wait_for_event, + bidi_session, + top_context, +): + await bidi_session.script.evaluate( + expression="document.cookie = 'foo=bar';", + target=ContextTarget(top_context["context"]), + await_promise=False, + ) + + request = await setup_blocked_request("beforeRequestSent") + await subscribe_events(events=[RESPONSE_COMPLETED_EVENT]) + + on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) + await bidi_session.network.continue_request(request=request, headers=[]) + response_event = await on_response_completed + assert len(response_event["request"]["cookies"]) == 0 diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/invalid.py b/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/invalid.py index d7cfa629c08..9a1a3166f8b 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/invalid.py +++ b/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/invalid.py @@ -192,6 +192,19 @@ async def test_params_headers_header_name_invalid_type( ) +@pytest.mark.parametrize("value", ["", "\u0000", "\"", "{","\u0080"]) +async def test_params_headers_header_name_invalid_value( + setup_blocked_request, bidi_session, value +): + request = await setup_blocked_request("beforeRequestSent") + + with pytest.raises(error.InvalidArgumentException): + await bidi_session.network.continue_request( + request=request, + headers=[create_header(overrides={"name": value})], + ) + + @pytest.mark.parametrize("value", [None, False, 42, "foo", []]) async def test_params_headers_header_value_invalid_type( setup_blocked_request, bidi_session, value @@ -257,6 +270,19 @@ async def test_params_headers_header_value_value_invalid_type( ) +@pytest.mark.parametrize("value", [" a", "a ", "\ta", "a\t", "a\nb", "a\0b"]) +async def test_params_headers_header_value_value_invalid_value( + setup_blocked_request, bidi_session, value +): + request = await setup_blocked_request("beforeRequestSent") + + with pytest.raises(error.InvalidArgumentException): + await bidi_session.network.continue_request( + request=request, + headers=[create_header(value_overrides={"value": value})], + ) + + @pytest.mark.parametrize("value", [False, 42, {}, []]) async def test_params_method_invalid_type(setup_blocked_request, bidi_session, value): request = await setup_blocked_request("beforeRequestSent") @@ -265,6 +291,14 @@ async def test_params_method_invalid_type(setup_blocked_request, bidi_session, v await bidi_session.network.continue_request(request=request, method=value) +@pytest.mark.parametrize("value", ["", "\u0000", "\"", "{","\u0080"]) +async def test_params_method_invalid_value(setup_blocked_request, bidi_session, value): + request = await setup_blocked_request("beforeRequestSent") + + with pytest.raises(error.InvalidArgumentException): + await bidi_session.network.continue_request(request=request, method=value) + + @pytest.mark.parametrize("value", [None, False, 42, {}, []]) async def test_params_request_invalid_type(bidi_session, value): with pytest.raises(error.InvalidArgumentException): diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/method.py b/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/method.py new file mode 100644 index 00000000000..ed342913adb --- /dev/null +++ b/tests/wpt/tests/webdriver/tests/bidi/network/continue_request/method.py @@ -0,0 +1,37 @@ +import pytest + +from webdriver.bidi.modules.script import ContextTarget + +from ... import recursive_compare +from .. import assert_response_event, RESPONSE_COMPLETED_EVENT + +pytestmark = pytest.mark.asyncio + +METHODS = [ + "DELETE", + "GET", + "HEAD", + "OPTIONS", + "PATCH", + "POST", + "PUT", +] + + +@pytest.mark.parametrize("request_method", METHODS) +@pytest.mark.parametrize("updated_method", METHODS) +async def test_request_method( + setup_blocked_request, + subscribe_events, + wait_for_event, + bidi_session, + request_method, + updated_method, +): + request = await setup_blocked_request("beforeRequestSent", method=request_method) + await subscribe_events(events=[RESPONSE_COMPLETED_EVENT]) + + on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT) + await bidi_session.network.continue_request(request=request, method=updated_method) + response_event = await on_response_completed + assert_response_event(response_event, expected_request={"method": updated_method}) diff --git a/tests/wpt/tests/webnn/resources/utils.js b/tests/wpt/tests/webnn/resources/utils.js index 0d3443b3dc9..eba8b10182d 100644 --- a/tests/wpt/tests/webnn/resources/utils.js +++ b/tests/wpt/tests/webnn/resources/utils.js @@ -1819,4 +1819,197 @@ const testDispatchWebNNBuffer = (testName) => { ml_context, dispatch_1_outputs['output2'], new Float32Array(sizeOfShape(shape)).fill(8)); }, `${testName} / outputs_as_inputs`); + + promise_test(async () => { + // MLBuffer was unsupported for the deviceType. + if (!isMLBufferSupported(ml_context)) { + return; + } + + // Construct a simple graph: OUTPUT = LHS - RHS. + const builder = new MLGraphBuilder(ml_context); + const operandType = {dataType: 'float32', dimensions: shape}; + const lhsOperand = builder.input('lhs', operandType); + const rhsOperand = builder.input('rhs', operandType); + const graph = + await builder.build({'output': builder.sub(lhsOperand, rhsOperand)}); + + const lhsBuffer = ml_context.createBuffer({size: inputs['lhs'].size}); + const rhsBuffer = ml_context.createBuffer({size: inputs['rhs'].size}); + + const dispatchOutputs = { + 'output': ml_context.createBuffer({size: outputs['output1'].size}) + }; + + // Initialize inputs + ml_context.writeBuffer( + lhsBuffer, new TypedArrayDict['float32'](sizeOfShape(shape)).fill(5.0)); + ml_context.writeBuffer( + rhsBuffer, new TypedArrayDict['float32'](sizeOfShape(shape)).fill(3.0)); + + // Output = LHS - RHS = 5 - 3 = 2 + ml_context.dispatch( + graph, { + 'lhs': lhsBuffer, + 'rhs': rhsBuffer, + }, + dispatchOutputs); + + await assert_buffer_data_equals( + ml_context, dispatchOutputs['output'], + new Float32Array(sizeOfShape(shape)).fill(2)); + + // Output = RHS - LHS = 3 - 5 = -2 + ml_context.dispatch( + graph, { + 'lhs': rhsBuffer, + 'rhs': lhsBuffer, + }, + dispatchOutputs); + + await assert_buffer_data_equals( + ml_context, dispatchOutputs['output'], + new Float32Array(sizeOfShape(shape)).fill(-2)); + }, `${testName} / same name diff input buffers`); + + promise_test(async () => { + // MLBuffer was unsupported for the deviceType. + if (!isMLBufferSupported(ml_context)) { + return; + } + + const dispatchInputs = { + 'lhs': ml_context.createBuffer({size: inputs['lhs'].size}), + 'rhs': ml_context.createBuffer({size: inputs['rhs'].size}), + }; + + const outputBuffer1 = + ml_context.createBuffer({size: outputs['output1'].size}); + const outputBuffer2 = + ml_context.createBuffer({size: outputs['output2'].size}); + + // Initialize inputs + const inputData1 = + new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0); + ml_context.writeBuffer(dispatchInputs['lhs'], inputData1); + ml_context.writeBuffer(dispatchInputs['rhs'], inputData1); + + // Output = LHS + RHS = 1 + 1 = 2 + ml_context.dispatch(ml_graph, dispatchInputs, { + 'output1': outputBuffer1, + 'output2': outputBuffer2, + }); + + // Output = LHS + RHS = 2 + 2 = 4 + const inputData2 = + new TypedArrayDict['float32'](sizeOfShape(shape)).fill(2.0); + ml_context.writeBuffer(dispatchInputs['lhs'], inputData2); + ml_context.writeBuffer(dispatchInputs['rhs'], inputData2); + + ml_context.dispatch(ml_graph, dispatchInputs, { + 'output1': outputBuffer1, + 'output2': ml_context.createBuffer({size: outputs['output2'].size}), + }); + + // Ensure the last dispatch() did not modify the original second output + // buffer. + await assert_buffer_data_equals( + ml_context, outputBuffer2, + new Float32Array(sizeOfShape(shape)).fill(2)); + }, `${testName} / same name diff outputs buffers`); + + promise_test(async () => { + // MLBuffer was unsupported for the deviceType. + if (!isMLBufferSupported(ml_context)) { + return; + } + + const dispatchInputs = { + 'lhs': ml_context.createBuffer({size: inputs['lhs'].size}), + 'rhs': ml_context.createBuffer({size: inputs['rhs'].size}), + }; + + const dispatchOutputs = { + 'output1': ml_context.createBuffer({size: outputs['output1'].size}), + 'output2': ml_context.createBuffer({size: outputs['output2'].size}), + }; + + // Initialize inputs + const inputData = + new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0); + ml_context.writeBuffer(dispatchInputs['lhs'], inputData); + ml_context.writeBuffer(dispatchInputs['rhs'], inputData); + + // Output = LHS + RHS = 1 + 1 = 2 + ml_context.dispatch(ml_graph, dispatchInputs, dispatchOutputs); + + // Check destroyed input buffers cannot be re-used in subsequent dispatches. + dispatchInputs['lhs'].destroy(); + dispatchInputs['lhs'] = ml_context.createBuffer({size: inputs['lhs'].size}); + + const newInputData = + new TypedArrayDict['float32'](sizeOfShape(shape)).fill(2.0); + ml_context.writeBuffer(dispatchInputs['lhs'], newInputData); + + // Output = LHS + RHS = 2 + 1 = 3 + ml_context.dispatch(ml_graph, dispatchInputs, dispatchOutputs); + + await assert_buffer_data_equals( + ml_context, dispatchOutputs['output1'], + new Float32Array(sizeOfShape(shape)).fill(3)); + + dispatchInputs['rhs'].destroy(); + dispatchInputs['rhs'] = ml_context.createBuffer({size: inputs['rhs'].size}); + ml_context.writeBuffer(dispatchInputs['rhs'], newInputData); + + // Output = LHS + RHS = 2 + 2 = 4 + ml_context.dispatch(ml_graph, dispatchInputs, dispatchOutputs); + + await assert_buffer_data_equals( + ml_context, dispatchOutputs['output1'], + new Float32Array(sizeOfShape(shape)).fill(4)); + }, `${testName} / same name diff inputs buffers destroy`); + + promise_test(async () => { + // MLBuffer was unsupported for the deviceType. + if (!isMLBufferSupported(ml_context)) { + return; + } + + const dispatchInputs = { + 'lhs': ml_context.createBuffer({size: inputs['lhs'].size}), + 'rhs': ml_context.createBuffer({size: inputs['rhs'].size}), + }; + + const dispatchOutputs = { + 'output1': ml_context.createBuffer({size: outputs['output1'].size}), + 'output2': ml_context.createBuffer({size: outputs['output2'].size}), + }; + + // Initialize inputs + const inputData = + new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0); + ml_context.writeBuffer(dispatchInputs['lhs'], inputData); + ml_context.writeBuffer(dispatchInputs['rhs'], inputData); + + // Output = LHS + RHS = 1 + 1 = 2 + ml_context.dispatch(ml_graph, dispatchInputs, dispatchOutputs); + + // Check destroyed output buffers cannot be re-used in subsequent + // dispatches. + dispatchOutputs['output1'].destroy(); + dispatchOutputs['output1'] = + ml_context.createBuffer({size: outputs['output1'].size}); + + const newInputData = + new TypedArrayDict['float32'](sizeOfShape(shape)).fill(2.0); + ml_context.writeBuffer(dispatchInputs['lhs'], newInputData); + + // Output = LHS + RHS = 2 + 1 = 3 + ml_context.dispatch(ml_graph, dispatchInputs, dispatchOutputs); + + await assert_buffer_data_equals( + ml_context, dispatchOutputs['output1'], + new Float32Array(sizeOfShape(shape)).fill(3)); + }, `${testName} / same name diff outputs buffers destroy`); }; diff --git a/tests/wpt/tests/webnn/resources/utils_validation.js b/tests/wpt/tests/webnn/resources/utils_validation.js index 35e634530d7..7ef52497a9a 100644 --- a/tests/wpt/tests/webnn/resources/utils_validation.js +++ b/tests/wpt/tests/webnn/resources/utils_validation.js @@ -306,7 +306,8 @@ function validateOptionsAxes(operationName) { } }, `[${subOperationName}] TypeError is expected if any of options.axes elements is not an unsigned long interger`); - // DataError is expected if any of options.axes elements is greater or equal to the size of input + // TypeError is expected if any of options.axes elements is greater or equal + // to the size of input promise_test(async t => { for (let dataType of allWebNNOperandDataTypes) { for (let dimensions of allWebNNDimensionsArray) { @@ -314,18 +315,18 @@ function validateOptionsAxes(operationName) { if (rank >= 1) { const input = builder.input(`input${++inputIndex}`, {dataType, dimensions}); - assert_throws_dom( - 'DataError', + assert_throws_js( + TypeError, () => builder[subOperationName](input, {axes: [rank]})); - assert_throws_dom( - 'DataError', + assert_throws_js( + TypeError, () => builder[subOperationName](input, {axes: [rank + 1]})); } } } - }, `[${subOperationName}] DataError is expected if any of options.axes elements is greater or equal to the size of input`); + }, `[${subOperationName}] TypeError is expected if any of options.axes elements is greater or equal to the size of input`); - // DataError is expected if two or more values are same in the axes sequence + // TypeError is expected if two or more values are same in the axes sequence promise_test(async t => { for (let dataType of allWebNNOperandDataTypes) { for (let dimensions of allWebNNDimensionsArray) { @@ -336,13 +337,13 @@ function validateOptionsAxes(operationName) { const axesArrayContainSameValues = getAxesArrayContainSameValues(dimensions); for (let axes of axesArrayContainSameValues) { - assert_throws_dom( - 'DataError', () => builder[subOperationName](input, {axes})); + assert_throws_js( + TypeError, () => builder[subOperationName](input, {axes})); } } } } - }, `[${subOperationName}] DataError is expected if two or more values are same in the axes sequence`); + }, `[${subOperationName}] TypeError is expected if two or more values are same in the axes sequence`); } } diff --git a/tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js b/tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js index 6e8d5583064..42d9adb57fe 100644 --- a/tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js @@ -9,7 +9,117 @@ const kArgMinMaxOperators = [ 'argMax', ]; +const tests = [ + { + name: '[argMin/Max] Test with default options.', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + output: {dataType: 'float32', dimensions: []} + }, + { + name: '[argMin/Max] Test with axes=[].', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + options: { + axes: [], + }, + output: {dataType: 'float32', dimensions: [1, 2, 3, 4]} + }, + { + name: '[argMin/Max] Test scalar input with empty axes.', + input: {dataType: 'float32', dimensions: []}, + options: { + axes: [], + }, + output: {dataType: 'float32', dimensions: []} + }, + { + name: '[argMin/Max] Test with axes=[1].', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + options: { + axes: [1], + }, + output: {dataType: 'float32', dimensions: [1, 3, 4]} + }, + { + name: '[argMin/Max] Test with axes=[1, 3] and keepDimensions=true.', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + options: { + axes: [1, 3], + keepDimensions: true, + }, + output: {dataType: 'float32', dimensions: [1, 1, 3, 1]} + }, + { + name: '[argMin/Max] Test with axes=[1, 3] and keepDimensions=false.', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + options: { + axes: [1, 3], + keepDimensions: false, + }, + output: {dataType: 'float32', dimensions: [1, 3]} + }, + { + name: '[argMin/Max] Test with axes=[1] and selectLastIndex=true.', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + options: { + axes: [1], + selectLastIndex: true, + }, + output: {dataType: 'float32', dimensions: [1, 3, 4]} + }, + { + name: '[argMin/Max] Test with axes=[1] and selectLastIndex=false.', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + options: { + axes: [1], + selectLastIndex: false, + }, + output: {dataType: 'float32', dimensions: [1, 3, 4]} + }, + { + name: + '[argMin/Max] Throw if the value in axes is greater than or equal to input rank.', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + options: { + axes: [4], + }, + }, + { + name: + '[argMin/Max] Throw if two or more values are same in the axes sequence.', + input: {dataType: 'float32', dimensions: [1, 2, 3, 4]}, + options: { + axes: [1, 1], + }, + }, + { + name: '[argMin/Max] Throw if input is a scalar and axes is non-empty.', + input: {dataType: 'float32', dimensions: []}, + options: { + axes: [1], + }, + }, +]; + +function runTests(operatorName, tests) { + tests.forEach(test => { + promise_test(async t => { + const input = builder.input( + 'input', + {dataType: test.input.dataType, dimensions: test.input.dimensions}); + + if (test.output) { + const output = builder[operatorName](input, test.options); + assert_equals(output.dataType(), 'int64'); + assert_array_equals(output.shape(), test.output.dimensions); + } else { + assert_throws_js( + TypeError, () => builder[operatorName](input, test.options)); + } + }, test.name.replace('[argMin/Max]', `[${operatorName}]`)); + }); +} + kArgMinMaxOperators.forEach((operatorName) => { - validateOptionsAxes(operatorName); validateInputFromAnotherBuilder(operatorName); + runTests(operatorName, tests); }); diff --git a/tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js b/tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js index cafd9f9cd50..a1c79000d20 100644 --- a/tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js +++ b/tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js @@ -18,187 +18,6 @@ const kExample1DTensorDescriptor = { dimensions: [kExampleInputDescriptor.dimensions[/* axis */ 1]] }; -promise_test(async t => { - for (let dataType of allWebNNOperandDataTypes) { - const input = builder.input(`input${++inputIndex}`, {dataType, dimensions: dimensions2D}); - const validAxisArray = getAxisArray(dimensions2D); - const invalidAxisArray = generateOutOfRangeValuesArray(unsignedLongType); - for (let axis of validAxisArray) { - let size = dimensions2D[axis]; - const mean = builder.input(`mean${++meanIndex}`, {dataType, dimensions: [size]}); - const variance = builder.input(`variance${++varianceIndex}`, {dataType, dimensions: [size]}); - for (let invalidAxis of invalidAxisArray) { - assert_throws_js(TypeError, () => builder.batchNormalization(input, mean, variance, {axis: invalidAxis})); - } - } - } -}, "[batchNormalization] TypeError is expected if options.axis is outside the 'unsigned long' value range"); - -promise_test(async t => { - for (let dataType of allWebNNOperandDataTypes) { - const input = builder.input(`input${++inputIndex}`, {dataType, dimensions: dimensions2D}); - const validAxisArray = getAxisArray(dimensions2D); - for (let axis of validAxisArray) { - let size = dimensions2D[axis]; - const mean = builder.input(`mean${++meanIndex}`, {dataType, dimensions: [size]}); - const variance = builder.input(`variance${++varianceIndex}`, {dataType, dimensions: [size]}); - assert_throws_dom('DataError', () => builder.batchNormalization(input, mean, variance, {axis: getRank(dimensions2D)})); - } - } -}, "[batchNormalization] DataError is expected if options.axis is 'unsigned long' and it's not in the range 0 to the rank of input, exclusive"); - -promise_test(async t => { - for (let dataType of allWebNNOperandDataTypes) { - const input = builder.input(`input${++inputIndex}`, {dataType, dimensions: dimensions2D}); - const validAxisArray = getAxisArray(dimensions2D); - for (let axis of validAxisArray) { - let size = dimensions2D[axis]; - const mean = builder.input(`mean${++meanIndex}`, {dataType, dimensions: [size]}); - const variance = builder.input(`variance${++varianceIndex}`, {dataType, dimensions: [size]}); - for (let axis of notUnsignedLongAxisArray) { - assert_false(typeof axis === 'number' && Number.isInteger(axis), "[batchNormalization] options.axis should be of 'unsigned long'"); - assert_throws_js(TypeError, () => builder.batchNormalization(input, mean, variance, {axis})); - } - } - } -}, '[batchNormalization] TypeError is expected if options.axis is not an unsigned long interger'); - -promise_test(async t => { - for (let dataType of allWebNNOperandDataTypes) { - const input = builder.input(`input${++inputIndex}`, {dataType, dimensions: dimensions2D}); - const validAxisArray = getAxisArray(dimensions2D); - for (let axis of validAxisArray) { - const variance = builder.input(`variance${++varianceIndex}`, {dataType, dimensions: [dimensions2D[axis]]}); - for (let dimensions of allWebNNDimensionsArray) { - if (dimensions.length !== 1) { - // set mean not be 1D tensor - const mean = builder.input(`mean${++meanIndex}`, {dataType, dimensions}); - assert_throws_dom('DataError', () => builder.batchNormalization(input, mean, variance)); - } - } - } - } -}, "[batchNormalization] DataError is expected if the size of mean.dimensions is not 1"); - -promise_test(async t => { - for (let dataType of allWebNNOperandDataTypes) { - const input = builder.input(`input${++inputIndex}`, {dataType, dimensions: dimensions2D}); - const validAxisArray = getAxisArray(dimensions2D); - for (let axis of validAxisArray) { - let size = dimensions2D[axis]; - const variance = builder.input(`variance${++varianceIndex}`, {dataType, dimensions: [size]}); - for (let offset of adjustOffsetsArray) { - const adjustedSize = size + offset; - const mean = builder.input(`mean${++meanIndex}`, {dataType, dimensions: [adjustedSize]}); - assert_throws_dom('DataError', () => builder.batchNormalization(input, mean, variance, {axis})); - } - } - } -}, "[batchNormalization] DataError is expected if mean.dimensions[0] is not equal to input.dimensions[options.axis]"); - -promise_test(async t => { - for (let dataType of allWebNNOperandDataTypes) { - const input = builder.input(`input${++inputIndex}`, {dataType, dimensions: dimensions2D}); - const validAxisArray = getAxisArray(dimensions2D); - for (let axis of validAxisArray) { - const mean = builder.input(`mean${++meanIndex}`, {dataType, dimensions: [dimensions2D[axis]]}); - for (let dimensions of allWebNNDimensionsArray) { - if (dimensions.length !== 1) { - // set variance not be 1D tensor - const variance = builder.input(`variance${++varianceIndex}`, {dataType, dimensions}); - assert_throws_dom('DataError', () => builder.batchNormalization(input, mean, variance)); - } - } - } - } -}, "[batchNormalization] DataError is expected if the size of variance.dimensions is not 1"); - -promise_test(async t => { - for (let dataType of allWebNNOperandDataTypes) { - const input = builder.input(`input${++inputIndex}`, {dataType, dimensions: dimensions2D}); - const validAxisArray = getAxisArray(dimensions2D); - for (let axis of validAxisArray) { - let size = dimensions2D[axis]; - const mean = builder.input(`mean${++meanIndex}`, {dataType, dimensions: [size]}); - for (let offset of adjustOffsetsArray) { - const adjustedSize = size + offset; - const variance = builder.input(`variance${++varianceIndex}`, {dataType, dimensions: [adjustedSize]}); - assert_throws_dom('DataError', () => builder.batchNormalization(input, mean, variance, {axis})); - } - } - } -}, "[batchNormalization] DataError is expected if variance.dimensions[0] is not equal to input.dimensions[options.axis]"); - -promise_test(async t => { - for (let dataType of allWebNNOperandDataTypes) { - const input = builder.input(`input${++inputIndex}`, {dataType, dimensions: dimensions2D}); - const validAxisArray = getAxisArray(dimensions2D); - for (let axis of validAxisArray) { - const mean = builder.input(`mean${++meanIndex}`, {dataType, dimensions: [dimensions2D[axis]]}); - const variance = builder.input(`variance${++varianceIndex}`, {dataType, dimensions: [dimensions2D[axis]]}); - for (let dimensions of allWebNNDimensionsArray) { - if (dimensions.length !== 1) { - // set scale not be 1D tensor - const scale = builder.input('scale', {dataType, dimensions}); - assert_throws_dom('DataError', () => builder.batchNormalization(input, mean, variance, {axis, scale})); - } - } - } - } -}, "[batchNormalization] DataError is expected if the size of scale.dimensions is not 1"); - -promise_test(async t => { - for (let dataType of allWebNNOperandDataTypes) { - const input = builder.input(`input${++inputIndex}`, {dataType, dimensions: dimensions2D}); - const validAxisArray = getAxisArray(dimensions2D); - for (let axis of validAxisArray) { - let size = dimensions2D[axis]; - const mean = builder.input(`mean${++meanIndex}`, {dataType, dimensions: [size]}); - const variance = builder.input(`variance${++varianceIndex}`, {dataType, dimensions: [size]}); - for (let offset of adjustOffsetsArray) { - const adjustedSize = size + offset; - const scale = builder.input('scale', {dataType, dimensions: [adjustedSize]}); - assert_throws_dom('DataError', () => builder.batchNormalization(input, mean, variance, {axis, scale})); - } - } - } -}, "[batchNormalization] DataError is expected if scale.dimensions[0] is not equal to input.dimensions[options.axis]"); - -promise_test(async t => { - for (let dataType of allWebNNOperandDataTypes) { - const input = builder.input(`input${++inputIndex}`, {dataType, dimensions: dimensions2D}); - const validAxisArray = getAxisArray(dimensions2D); - for (let axis of validAxisArray) { - const mean = builder.input(`mean${++meanIndex}`, {dataType, dimensions: [dimensions2D[axis]]}); - const variance = builder.input(`variance${++varianceIndex}`, {dataType, dimensions: [dimensions2D[axis]]}); - for (let dimensions of allWebNNDimensionsArray) { - if (dimensions.length !== 1) { - // set bias not be 1D tensor - const bias = builder.input('bias', {dataType, dimensions}); - assert_throws_dom('DataError', () => builder.batchNormalization(input, mean, variance, {axis, bias})); - } - } - } - } -}, "[batchNormalization] DataError is expected if the size of bias.dimensions is not 1"); - -promise_test(async t => { - for (let dataType of allWebNNOperandDataTypes) { - const input = builder.input(`input${++inputIndex}`, {dataType, dimensions: dimensions2D}); - const validAxisArray = getAxisArray(dimensions2D); - for (let axis of validAxisArray) { - let size = dimensions2D[axis]; - const mean = builder.input(`mean${++meanIndex}`, {dataType, dimensions: [size]}); - const variance = builder.input(`variance${++varianceIndex}`, {dataType, dimensions: [size]}); - for (let offset of adjustOffsetsArray) { - const adjustedSize = size + offset; - const bias = builder.input('bias', {dataType, dimensions: [adjustedSize]}); - assert_throws_dom('DataError', () => builder.batchNormalization(input, mean, variance, {axis, bias})); - } - } - } -}, "[batchNormalization] DataError is expected if bias.dimensions[0] is not equal to input.dimensions[options.axis]"); - multi_builder_test(async (t, builder, otherBuilder) => { const inputFromOtherBuilder = otherBuilder.input('input', kExampleInputDescriptor); @@ -268,3 +87,188 @@ multi_builder_test(async (t, builder, otherBuilder) => { TypeError, () => builder.batchNormalization(input, mean, variance, options)); }, '[batchNormalization] throw if activation option is from another builder'); + +const tests = [ + { + name: '[batchNormalization] Test with default options.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float32', dimensions: [2]}, + variance: {dataType: 'float32', dimensions: [2]}, + output: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + }, + { + name: '[batchNormalization] Test with axis = 2 and epsilon = 0.0001.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float32', dimensions: [5]}, + variance: {dataType: 'float32', dimensions: [5]}, + options: { + axis: 2, + epsilon: 1e-4, // 1e-5 is the default value of epsilon. + }, + output: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + }, + { + name: + '[batchNormalization] Throw if the input data type is not one of floating point types.', + input: {dataType: 'int32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'int32', dimensions: [2]}, + variance: {dataType: 'int32', dimensions: [2]}, + }, + { + name: + '[batchNormalization] Throw if the mean data type is not the same as the input data type.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float16', dimensions: [2]}, + variance: {dataType: 'float32', dimensions: [2]}, + }, + { + name: '[batchNormalization] Throw if the mean operand is not a 1-D tensor.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float32', dimensions: [1, 2]}, + variance: {dataType: 'float32', dimensions: [2]}, + }, + { + name: + '[batchNormalization] Throw if the size of mean operand is not equal to the size of the input dimension denoted by axis.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float32', dimensions: [3]}, + variance: {dataType: 'float32', dimensions: [2]}, + options: { + axis: 1, + }, + }, + { + name: + '[batchNormalization] Throw if the variance data type is not the same as the input data type.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float32', dimensions: [2]}, + variance: {dataType: 'float16', dimensions: [2]}, + }, + { + name: + '[batchNormalization] Throw if the variance operand is not a 1-D tensor.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float32', dimensions: [2]}, + variance: {dataType: 'float32', dimensions: [2, 2]}, + }, + { + name: + '[batchNormalization] Throw if the size of variance operand is not equal to the size of the input dimension denoted by axis.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float32', dimensions: [5]}, + variance: {dataType: 'float32', dimensions: [2]}, + options: { + axis: 2, + }, + }, + { + name: + '[batchNormalization] Throw if the scale data type is not the same as the input data type.', + input: {dataType: 'float16', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float16', dimensions: [2]}, + variance: {dataType: 'float16', dimensions: [2]}, + options: { + scale: {dataType: 'float32', dimensions: [2]}, + }, + }, + { + name: + '[batchNormalization] Throw if the scale operand is not a 1-D tensor.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float32', dimensions: [2]}, + variance: {dataType: 'float32', dimensions: [2]}, + options: { + scale: {dataType: 'float32', dimensions: [2, 1]}, + }, + }, + { + name: + '[batchNormalization] Throw if the size of scale operand is not equal to the size of the input dimension denoted by axis.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float32', dimensions: [5]}, + variance: {dataType: 'float32', dimensions: [5]}, + options: { + axis: 2, + scale: {dataType: 'float32', dimensions: [2]}, + }, + }, + { + name: + '[batchNormalization] Throw if the bias data type is not the same as the input data type.', + input: {dataType: 'float16', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float16', dimensions: [2]}, + variance: {dataType: 'float16', dimensions: [2]}, + options: { + bias: {dataType: 'float32', dimensions: [2]}, + }, + }, + { + name: '[batchNormalization] Throw if the bias operand is not a 1-D tensor.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float32', dimensions: [2]}, + variance: {dataType: 'float32', dimensions: [2]}, + options: { + bias: {dataType: 'float32', dimensions: [2, 1]}, + }, + }, + { + name: + '[batchNormalization] Throw if the size of bias operand is not equal to the size of the input dimension denoted by axis.', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float32', dimensions: [5]}, + variance: {dataType: 'float32', dimensions: [5]}, + options: { + axis: 2, + bias: {dataType: 'float32', dimensions: [2]}, + }, + }, + { + name: + '[batchNormalization] Throw if the value of axis is not in the range of [0,N-1].', + input: {dataType: 'float32', dimensions: [1, 2, 5, 5]}, + mean: {dataType: 'float32', dimensions: [5]}, + variance: {dataType: 'float32', dimensions: [5]}, + options: { + axis: 4, + }, + }, +]; + +tests.forEach( + test => promise_test(async t => { + const input = builder.input( + 'input', + {dataType: test.input.dataType, dimensions: test.input.dimensions}); + const mean = builder.input( + 'mean', + {dataType: test.mean.dataType, dimensions: test.mean.dimensions}); + const variance = builder.input('variance', { + dataType: test.variance.dataType, + dimensions: test.variance.dimensions + }); + + if (test.options && test.options.bias) { + test.options.bias = builder.input('bias', { + dataType: test.options.bias.dataType, + dimensions: test.options.bias.dimensions + }); + } + if (test.options && test.options.scale) { + test.options.scale = builder.input('scale', { + dataType: test.options.scale.dataType, + dimensions: test.options.scale.dimensions + }); + } + + if (test.output) { + const output = + builder.batchNormalization(input, mean, variance, test.options); + assert_equals(output.dataType(), test.output.dataType); + assert_array_equals(output.shape(), test.output.dimensions); + } else { + assert_throws_js( + TypeError, + () => builder.batchNormalization( + input, mean, variance, test.options)); + } + }, test.name)); diff --git a/tests/wpt/tests/webrtc/RTCPeerConnection-addTcpIceCandidate.html b/tests/wpt/tests/webrtc/RTCPeerConnection-addTcpIceCandidate.html index 1e7fc3ba957..ca7a682708f 100644 --- a/tests/wpt/tests/webrtc/RTCPeerConnection-addTcpIceCandidate.html +++ b/tests/wpt/tests/webrtc/RTCPeerConnection-addTcpIceCandidate.html @@ -1,5 +1,6 @@ Test RTCPeerConnection.prototype.addIceCandidate with TCP candidates + @@ -27,42 +28,105 @@ a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=ssrc:1001 cname:some `; -const candidate_8001 = 'a=candidate:2983561038 1 tcp 1518214911 127.0.0.1 8001 typ host tcptype passive generation 0 ufrag 655Y network-id 1 network-cost 10'; +// DRY: copied from fetch/api/request/request-bad-port.any.js +const BLOCKED_PORTS_LIST = [ + 1, // tcpmux + 7, // echo + 9, // discard + 11, // systat + 13, // daytime + 15, // netstat + 17, // qotd + 19, // chargen + 20, // ftp-data + 21, // ftp + 22, // ssh + 23, // telnet + 25, // smtp + 37, // time + 42, // name + 43, // nicname + 53, // domain + 69, // tftp + 77, // priv-rjs + 79, // finger + 87, // ttylink + 95, // supdup + 101, // hostriame + 102, // iso-tsap + 103, // gppitnp + 104, // acr-nema + 109, // pop2 + 110, // pop3 + 111, // sunrpc + 113, // auth + 115, // sftp + 117, // uucp-path + 119, // nntp + 123, // ntp + 135, // loc-srv / epmap + 137, // netbios-ns + 139, // netbios-ssn + 143, // imap2 + 161, // snmp + 179, // bgp + 389, // ldap + 427, // afp (alternate) + 465, // smtp (alternate) + 512, // print / exec + 513, // login + 514, // shell + 515, // printer + 526, // tempo + 530, // courier + 531, // chat + 532, // netnews + 540, // uucp + 548, // afp + 554, // rtsp + 556, // remotefs + 563, // nntp+ssl + 587, // smtp (outgoing) + 601, // syslog-conn + 636, // ldap+ssl + 989, // ftps-data + 990, // ftps + 993, // ldap+ssl + 995, // pop3+ssl + 1719, // h323gatestat + 1720, // h323hostcall + 1723, // pptp + 2049, // nfs + 3659, // apple-sasl + 4045, // lockd + 5060, // sip + 5061, // sips + 6000, // x11 + 6566, // sane-port + 6665, // irc (alternate) + 6666, // irc (alternate) + 6667, // irc (default) + 6668, // irc (alternate) + 6669, // irc (alternate) + 6697, // irc+tls + 10080, // amanda +]; -const candidate_2049 = 'a=candidate:2983561038 1 tcp 1518214911 127.0.0.1 2049 typ host tcptype passive generation 0 ufrag 655Y network-id 1 network-cost 10'; -const candidate_37 = 'a=candidate:2983561038 1 tcp 1518214911 127.0.0.1 37 typ host tcptype passive generation 0 ufrag 655Y network-id 1 network-cost 10'; +function candidateForPort(port) { + return `a=candidate:2983561038 1 tcp 1518214911 127.0.0.1 ${port} typ host tcptype passive generation 0 ufrag 655Y network-id 1 network-cost 10`; +} promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - await pc.setRemoteDescription({type: 'offer', sdp: sdp + candidate_8001 + '\n'}) + await pc.setRemoteDescription({type: 'offer', sdp: sdp + candidateForPort(8001) + '\n'}) const answer = await pc.createAnswer(); await pc.setLocalDescription(answer); await waitForConnectionStateChangeWithTimeout(t, pc, ['failed', 'disconnected'], 1000); }, 'TCP candidate aimed at port 8001 accepted'); -promise_test(async t => { - const pc = new RTCPeerConnection(); - t.add_cleanup(() => pc.close()); - await pc.setRemoteDescription({type: 'offer', sdp: sdp + candidate_2049 + '\n'}) - const answer = await pc.createAnswer(); - await pc.setLocalDescription(answer); - pc.onicestatechange = t.unreached_func(); - await new Promise(resolve => t.step_timeout(resolve, 500)); -}, 'TCP candidate aimed at port 2049 ignored'); - -promise_test(async t => { - const pc = new RTCPeerConnection(); - t.add_cleanup(() => pc.close()); - await pc.setRemoteDescription({type: 'offer', sdp: sdp + candidate_37 + '\n'}) - const answer = await pc.createAnswer(); - await pc.setLocalDescription(answer); - pc.onicestatechange = t.unreached_func(); - await new Promise(resolve => t.step_timeout(resolve, 500)); -}, 'TCP candidate aimed at port 37 ignored'); - promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); @@ -70,13 +134,26 @@ promise_test(async t => { const answer = await pc.createAnswer(); await pc.setLocalDescription(answer); await pc.addIceCandidate(new RTCIceCandidate({ - candidate: candidate_8001, + candidate: candidateForPort(8001), sdpMid: 'audio1' })); await waitForConnectionStateChangeWithTimeout( t, pc, ['failed', 'disconnected'], 1000); }, 'TCP addIceCandidate aimed at port 8001 accepted'); +for (const port of BLOCKED_PORTS_LIST) { + promise_test(async t => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + await pc.setRemoteDescription({type: 'offer', sdp: sdp + candidateForPort(port) + '\n'}) + const answer = await pc.createAnswer(); + + await pc.setLocalDescription(answer); + pc.oniceconnectionstatechange = t.unreached_func(); + await new Promise(resolve => t.step_timeout(resolve, 500)); + }, `TCP candidate aimed at Fetch bad port ${port} ignored`); +} + promise_test(async t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); @@ -84,12 +161,11 @@ promise_test(async t => { const answer = await pc.createAnswer(); await pc.setLocalDescription(answer); await pc.addIceCandidate(new RTCIceCandidate({ - candidate: candidate_2049, + candidate: candidateForPort(2049), sdpMid: 'audio1' })); - pc.onicestatechange = t.unreached_func(); + pc.oniceconnectionstatechange = t.unreached_func(); await new Promise(resolve => t.step_timeout(resolve, 500)); -}, 'TCP addIceCandidate aimed at port 2049 ignored'); - +}, `TCP addIceCandidate aimed at Fetch bad port 2049 ignored`); diff --git a/tests/wpt/tests/webrtc/RTCRtpTransceiver-setCodecPreferences.html b/tests/wpt/tests/webrtc/RTCRtpTransceiver-setCodecPreferences.html index 8142132a8c3..b3129b49869 100644 --- a/tests/wpt/tests/webrtc/RTCRtpTransceiver-setCodecPreferences.html +++ b/tests/wpt/tests/webrtc/RTCRtpTransceiver-setCodecPreferences.html @@ -305,4 +305,16 @@ }, `setCodecPreferences() filters on receiver and prefers receiver order`); +["audio", "video"].forEach(kind => promise_test(async (t) => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const [codec] = RTCRtpReceiver.getCapabilities(kind).codecs; + codec.mimeType = codec.mimeType.toUpperCase(); + const transceiver = pc.addTransceiver(kind); + transceiver.setCodecPreferences([codec]); + + codec.mimeType = codec.mimeType.toLowerCase(); + transceiver.setCodecPreferences([codec]); + }, `setCodecPreferences should accept ${kind} codecs regardless of mimeType case`)); +