Sync WPT with upstream (13-07-2025) (#38026)

Automated downstream sync of changes from upstream as of 13-07-2025
[no-wpt-sync]

Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
This commit is contained in:
Servo WPT Sync 2025-07-13 04:09:35 +02:00 committed by GitHub
parent d38ffb82b2
commit 973465a9b6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
54 changed files with 1978 additions and 338 deletions

View file

@ -14,6 +14,3 @@
[Opening a blob URL in a new window by clicking an <a> tag works immediately before revoking the URL.] [Opening a blob URL in a new window by clicking an <a> tag works immediately before revoking the URL.]
expected: TIMEOUT expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in <script> tags.]
expected: TIMEOUT

View file

@ -6448,6 +6448,13 @@
{} {}
] ]
], ],
"filter-primitive-crash.html": [
"8b40745c746cdbfb233dae03af35b687d8115689",
[
null,
{}
]
],
"multiple-references-id-crash-001.html": [ "multiple-references-id-crash-001.html": [
"9ee04e1015d3c9fc04e8fab240a15d59ae92892d", "9ee04e1015d3c9fc04e8fab240a15d59ae92892d",
[ [
@ -10325,6 +10332,13 @@
null, null,
{} {}
] ]
],
"firefox-bug-1966754.html": [
"4d2fd2b49fe1a12e1adf6d85757c4b7886b9047d",
[
null,
{}
]
] ]
}, },
"extensibility": { "extensibility": {
@ -126855,6 +126869,19 @@
{} {}
] ]
], ],
"position-area-percents-001.html": [
"df1f895e4e38a1b32894d546bf057d6cd88e4745",
[
null,
[
[
"/css/css-anchor-position/position-area-percents-001-ref.html",
"=="
]
],
{}
]
],
"position-area-scroll-adjust.html": [ "position-area-scroll-adjust.html": [
"128f23f95f02615f987380bb752a1cc383c604ce", "128f23f95f02615f987380bb752a1cc383c604ce",
[ [
@ -272350,6 +272377,19 @@
{} {}
] ]
], ],
"text-wrap-balance-line-clamp-005.html": [
"b7999903a7aac8152f32439db753c8752cd6c440",
[
null,
[
[
"/css/css-text/white-space/reference/text-wrap-balance-line-clamp-005-ref.html",
"=="
]
],
{}
]
],
"text-wrap-balance-overflow-001.html": [ "text-wrap-balance-overflow-001.html": [
"5f79832549bd6cb3ecfae01e6cf1320af864218c", "5f79832549bd6cb3ecfae01e6cf1320af864218c",
[ [
@ -360460,12 +360500,12 @@
], ],
"permission-icon": { "permission-icon": {
"icon-css-property-fill-reftest.html": [ "icon-css-property-fill-reftest.html": [
"130849e79ba0b572d453dbaf1e92764ae7d9acfe", "0fbd8625e9f919d930547a6b20ae9a8ad401e88d",
[ [
null, null,
[ [
[ [
"/html/semantics/permission-element/permission-icon/standard-location-permission-element-ref.html", "/html/semantics/permission-element/permission-icon/icon-css-property-fill-reftest-ref.html",
"!=" "!="
] ]
], ],
@ -420303,6 +420343,10 @@
"ecf54f1a9ac2d756cb78f4d2c0690c1ac8b65916", "ecf54f1a9ac2d756cb78f4d2c0690c1ac8b65916",
[] []
], ],
"position-area-percents-001-ref.html": [
"80ffe68a85b957999f05cae0949a723e11f28e3c",
[]
],
"position-area-scroll-adjust-ref.html": [ "position-area-scroll-adjust-ref.html": [
"5cd863500a7729a8acf0eaab5883ca58cfcfb935", "5cd863500a7729a8acf0eaab5883ca58cfcfb935",
[] []
@ -453553,6 +453597,10 @@
"06826aa8cf3f0b4d66749b246521f841d23f978f", "06826aa8cf3f0b4d66749b246521f841d23f978f",
[] []
], ],
"text-wrap-balance-line-clamp-005-ref.html": [
"56c9e2459bbb6a1f5c786e3648b44b50c67b413e",
[]
],
"text-wrap-balance-overflow-001-ref.html": [ "text-wrap-balance-overflow-001-ref.html": [
"64a1cf3d8d5f097b667bc3ae543afb9fdc4c8d04", "64a1cf3d8d5f097b667bc3ae543afb9fdc4c8d04",
[] []
@ -487435,6 +487483,10 @@
[] []
], ],
"permission-icon": { "permission-icon": {
"icon-css-property-fill-reftest-ref.html": [
"10f8e7982f2745c4c8b2ae37c93b56895dc5c015",
[]
],
"icon-css-property-height-bounded-reftest-ref.html": [ "icon-css-property-height-bounded-reftest-ref.html": [
"73ad9d5bac7abaa3acee7e0bbe6eb95e68e6b9bf", "73ad9d5bac7abaa3acee7e0bbe6eb95e68e6b9bf",
[] []
@ -489167,7 +489219,7 @@
], ],
"resources": { "resources": {
"invoker-utils.js": [ "invoker-utils.js": [
"f06d668632f3f0367b0d1437ab44bd6d8cb76401", "7e4cdf580d21abcd6865938d2bf58902e13a9c16",
[] []
] ]
} }
@ -523225,6 +523277,10 @@
"0c4f5ed519b0fd220a26cce71779039198bec18b", "0c4f5ed519b0fd220a26cce71779039198bec18b",
[] []
], ],
"non-UTF8.wasm": [
"9a15244ad51d5e7bdef8da2e83ebc0de38de8c5a",
[]
],
"resolve-export.wasm": [ "resolve-export.wasm": [
"d8fc92d022fbf4d1072da17bc8e0840054b51ddc", "d8fc92d022fbf4d1072da17bc8e0840054b51ddc",
[] []
@ -596198,6 +596254,27 @@
}, },
"css-gaps": { "css-gaps": {
"animation": { "animation": {
"column-rule-outset-interpolation.html": [
"9a026986ec5c998fa93d07f86c39a563e30ebbf3",
[
null,
{}
]
],
"gap-decorations-outset-neutral-keyframe-001.html": [
"3793b2351798ac5a5e84f0f7ca9394aefc99107f",
[
null,
{}
]
],
"gap-decorations-outset-neutral-keyframe-002.html": [
"993606fc560913c2404cabad07f85bee0e309d0b",
[
null,
{}
]
],
"gap-decorations-width-neutral-keyframe-001.html": [ "gap-decorations-width-neutral-keyframe-001.html": [
"9e6557774f9ee8b2a0c1dd6ac35b93005e18cfa0", "9e6557774f9ee8b2a0c1dd6ac35b93005e18cfa0",
[ [
@ -596212,6 +596289,13 @@
{} {}
] ]
], ],
"row-rule-outset-interpolation.html": [
"ad6d90793556dad70b0493567cb837c92c11c6d4",
[
null,
{}
]
],
"row-rule-width-interpolation.html": [ "row-rule-width-interpolation.html": [
"edb364fa4b8c23bfe5cbb21622ae5a5a26ce0e99", "edb364fa4b8c23bfe5cbb21622ae5a5a26ce0e99",
[ [
@ -602299,21 +602383,21 @@
"tentative": { "tentative": {
"parsing": { "parsing": {
"item-tolerance-computed.html": [ "item-tolerance-computed.html": [
"57f36c9f4a1a8ba728729ab2de1b0025cc81d47a", "2d5a9125b6edcc5020a95f5729b466a876369110",
[ [
null, null,
{} {}
] ]
], ],
"item-tolerance-invalid.html": [ "item-tolerance-invalid.html": [
"6cdd0bd270c3119492b883ca22eee445a45ec4d4", "ab8eb59af3cad51dca0b8b1a2f9aa96fb821f1e1",
[ [
null, null,
{} {}
] ]
], ],
"item-tolerance-valid.html": [ "item-tolerance-valid.html": [
"9dc6721541e79bb4b0d5c4b934c1650716f3cf6a", "820ef8a9436451a78c5a4aa22949ecab5a4a87d4",
[ [
null, null,
{} {}
@ -603682,6 +603766,13 @@
{} {}
] ]
], ],
"scroll-markers-computed.tentative.html": [
"edea9e48c9644d5719fd7b9d140b717d39850c77",
[
null,
{}
]
],
"scroll-markers-invalid.html": [ "scroll-markers-invalid.html": [
"5194d5ab72b2f1126fda82dfb2c3126bcf9c6ab5", "5194d5ab72b2f1126fda82dfb2c3126bcf9c6ab5",
[ [
@ -603689,6 +603780,13 @@
{} {}
] ]
], ],
"scroll-markers-invalid.tentative.html": [
"1c9ba6989e659412d34d1491a15c754689a224d4",
[
null,
{}
]
],
"scroll-markers-valid.html": [ "scroll-markers-valid.html": [
"760efc877288115388018f6d014fcca8d79863b3", "760efc877288115388018f6d014fcca8d79863b3",
[ [
@ -743789,6 +743887,17 @@
} }
] ]
], ],
"permission-icon": {
"icon-color-defaults-to-text-color.html": [
"a5f98cfe8aaf9e3243c5b63716e1eaedf898acc5",
[
null,
{
"testdriver": true
}
]
]
},
"type-supported-feature-detect.tentative.html": [ "type-supported-feature-detect.tentative.html": [
"fb06f57672e0cb1b176fc72d188ec531eb74edff", "fb06f57672e0cb1b176fc72d188ec531eb74edff",
[ [
@ -749102,7 +749211,7 @@
] ]
], ],
"interestfor-input-modalities.tentative.html": [ "interestfor-input-modalities.tentative.html": [
"990972adce6466e4b39cfe76323d4cbbc8a63a97", "58994dbec22ba777cda233e6e12441e417875538",
[ [
"html/semantics/the-button-element/interest-for/interestfor-input-modalities.tentative.html?method=focus", "html/semantics/the-button-element/interest-for/interestfor-input-modalities.tentative.html?method=focus",
{ {
@ -749146,26 +749255,8 @@
} }
] ]
], ],
"interestfor-partial-interest.tentative.html": [
"a38a0a762cfced382e216af88ce680ed6f4d4575",
[
null,
{
"testdriver": true
}
]
],
"interestfor-popover-focus.tentative.html": [
"d9b1bca5b106d5f422b351b9dec373df4f42327d",
[
null,
{
"testdriver": true
}
]
],
"interestfor-pseudo-classes.tentative.html": [ "interestfor-pseudo-classes.tentative.html": [
"2004aa2b3d9e8f3c024e6a6d51faf0c2bbe55180", "56344e35d1bc98273ab8988bb867f7ddcb8dbc95",
[ [
null, null,
{ {
@ -774689,7 +774780,7 @@
] ]
], ],
"navigation-id-worker-created-entries.html": [ "navigation-id-worker-created-entries.html": [
"96fc57be1d426c9c364fe20359dafebf60380fd8", "5c41ee8b86b530dcc06e26d1464e4204370344b9",
[ [
null, null,
{} {}
@ -843827,6 +843918,13 @@
{} {}
] ]
], ],
"reuse-wasm-loaded-as-classic-script.tentative.html": [
"e0a90fe732558f48b390aa06c21ca8932cbbbf86",
[
null,
{}
]
],
"script-src-allows-source-phase-wasm.tentative.html": [ "script-src-allows-source-phase-wasm.tentative.html": [
"b96fc756e5c0edbe8a5e0c8c63c075b0028059dc", "b96fc756e5c0edbe8a5e0c8c63c075b0028059dc",
[ [
@ -843855,6 +843953,13 @@
{} {}
] ]
], ],
"source-phase-import-non-UTF8.tentative.html": [
"217b900eec3429d61b9b756550232b4eb851a39b",
[
null,
{}
]
],
"source-phase-preload.tentative.html": [ "source-phase-preload.tentative.html": [
"90bfb484741af90ff5d37cbf59062b47c6a732b9", "90bfb484741af90ff5d37cbf59062b47c6a732b9",
[ [
@ -847921,7 +848026,7 @@
] ]
], ],
"k-rate-dynamics-compressor-connections.html": [ "k-rate-dynamics-compressor-connections.html": [
"c1755cd1559474a464024a2b0344c5dd1d95e803", "15db310e12adddf8c175b7ae0bcbb18ddd042066",
[ [
null, null,
{} {}
@ -938657,6 +938762,13 @@
] ]
], ],
"parallel_execution": { "parallel_execution": {
"browsing_context_print.py": [
"65bb73c254f20b83021aa58ac19ea4ed47178c5f",
[
null,
{}
]
],
"browsing_context_set_viewport.py": [ "browsing_context_set_viewport.py": [
"4625dad0d712af05c6f1495a73b97ac86278d5b9", "4625dad0d712af05c6f1495a73b97ac86278d5b9",
[ [

View file

@ -0,0 +1,3 @@
[frame-ancestors-path-ignored.window.html]
[A 'frame-ancestors' CSP directive with a URL that includes a path should be ignored.]
expected: FAIL

View file

@ -1,3 +0,0 @@
[layer-cssom-order-reverse.html]
[Delete layer invalidates @font-face]
expected: FAIL

View file

@ -0,0 +1,504 @@
[column-rule-outset-interpolation.html]
[CSS Transitions: property <column-rule-outset> from neutral to [15px\] at (-0.3) should be [2px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from neutral to [15px\] at (0) should be [5px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from neutral to [15px\] at (0.3) should be [8px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from neutral to [15px\] at (0.6) should be [11px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from neutral to [15px\] at (1) should be [15px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from neutral to [15px\] at (1.5) should be [20px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from neutral to [15px\] at (-0.3) should be [2px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from neutral to [15px\] at (0) should be [5px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from neutral to [15px\] at (0.3) should be [8px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from neutral to [15px\] at (0.6) should be [11px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from neutral to [15px\] at (1) should be [15px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from neutral to [15px\] at (1.5) should be [20px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from neutral to [15px\] at (-0.3) should be [2px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from neutral to [15px\] at (0) should be [5px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from neutral to [15px\] at (0.3) should be [8px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from neutral to [15px\] at (0.6) should be [11px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from neutral to [15px\] at (1) should be [15px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from neutral to [15px\] at (1.5) should be [20px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from neutral to [15px\] at (-0.3) should be [2px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from neutral to [15px\] at (0) should be [5px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from neutral to [15px\] at (0.3) should be [8px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from neutral to [15px\] at (0.6) should be [11px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from neutral to [15px\] at (1) should be [15px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from neutral to [15px\] at (1.5) should be [20px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [initial\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [initial\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [initial\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [initial\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [initial\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [initial\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [initial\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [initial\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [initial\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [initial\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [initial\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [initial\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [initial\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [initial\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [initial\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [initial\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [initial\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [initial\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [initial\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [initial\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [initial\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [initial\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [initial\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [initial\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [inherit\] to [10px\] at (-0.3) should be [23px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [inherit\] to [10px\] at (0) should be [20px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [inherit\] to [10px\] at (0.3) should be [17px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [inherit\] to [10px\] at (0.6) should be [14px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [inherit\] to [10px\] at (1) should be [10px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [inherit\] to [10px\] at (1.5) should be [5px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [inherit\] to [10px\] at (-0.3) should be [23px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [inherit\] to [10px\] at (0) should be [20px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [inherit\] to [10px\] at (0.3) should be [17px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [inherit\] to [10px\] at (0.6) should be [14px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [inherit\] to [10px\] at (1) should be [10px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [inherit\] to [10px\] at (1.5) should be [5px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [inherit\] to [10px\] at (-0.3) should be [23px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [inherit\] to [10px\] at (0) should be [20px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [inherit\] to [10px\] at (0.3) should be [17px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [inherit\] to [10px\] at (0.6) should be [14px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [inherit\] to [10px\] at (1) should be [10px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [inherit\] to [10px\] at (1.5) should be [5px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [inherit\] to [10px\] at (-0.3) should be [23px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [inherit\] to [10px\] at (0) should be [20px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [inherit\] to [10px\] at (0.3) should be [17px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [inherit\] to [10px\] at (0.6) should be [14px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [inherit\] to [10px\] at (1) should be [10px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [inherit\] to [10px\] at (1.5) should be [5px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [unset\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [unset\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [unset\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [unset\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [unset\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [unset\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [unset\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [unset\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [unset\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [unset\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [unset\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [unset\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [unset\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [unset\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [unset\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [unset\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [unset\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [unset\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [unset\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [unset\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [unset\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [unset\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [unset\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [unset\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [-5px\] to [5px\] at (-0.3) should be [-8px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [-5px\] to [5px\] at (0) should be [-5px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [-5px\] to [5px\] at (0.3) should be [-2px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [-5px\] to [5px\] at (0.6) should be [1px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [-5px\] to [5px\] at (1) should be [5px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [-5px\] to [5px\] at (1.5) should be [10px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [-5px\] to [5px\] at (-0.3) should be [-8px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [-5px\] to [5px\] at (0) should be [-5px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [-5px\] to [5px\] at (0.3) should be [-2px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [-5px\] to [5px\] at (0.6) should be [1px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [-5px\] to [5px\] at (1) should be [5px\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [-5px\] to [5px\] at (1.5) should be [10px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [-5px\] to [5px\] at (-0.3) should be [-8px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [-5px\] to [5px\] at (0) should be [-5px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [-5px\] to [5px\] at (0.3) should be [-2px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [-5px\] to [5px\] at (0.6) should be [1px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [-5px\] to [5px\] at (1) should be [5px\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [-5px\] to [5px\] at (1.5) should be [10px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [-5px\] to [5px\] at (-0.3) should be [-8px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [-5px\] to [5px\] at (0) should be [-5px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [-5px\] to [5px\] at (0.3) should be [-2px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [-5px\] to [5px\] at (0.6) should be [1px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [-5px\] to [5px\] at (1) should be [5px\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [-5px\] to [5px\] at (1.5) should be [10px\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [100%\] to [1px\] at (-0.3) should be [calc(130% - 0.3px)\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [100%\] to [1px\] at (0) should be [100%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [100%\] to [1px\] at (0.3) should be [calc(70% + 0.3px)\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [100%\] to [1px\] at (0.6) should be [calc(40% + 0.6px)\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [100%\] to [1px\] at (1) should be [calc(0% + 1px)\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [100%\] to [1px\] at (1.5) should be [calc(-50% + 1.5px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [100%\] to [1px\] at (-0.3) should be [calc(130% - 0.3px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [100%\] to [1px\] at (0) should be [100%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [100%\] to [1px\] at (0.3) should be [calc(70% + 0.3px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [100%\] to [1px\] at (0.6) should be [calc(40% + 0.6px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [100%\] to [1px\] at (1) should be [calc(0% + 1px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [100%\] to [1px\] at (1.5) should be [calc(-50% + 1.5px)\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [100%\] to [1px\] at (-0.3) should be [calc(130% - 0.3px)\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [100%\] to [1px\] at (0) should be [100%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [100%\] to [1px\] at (0.3) should be [calc(70% + 0.3px)\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [100%\] to [1px\] at (0.6) should be [calc(40% + 0.6px)\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [100%\] to [1px\] at (1) should be [calc(0% + 1px)\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [100%\] to [1px\] at (1.5) should be [calc(-50% + 1.5px)\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [100%\] to [1px\] at (-0.3) should be [calc(130% - 0.3px)\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [100%\] to [1px\] at (0) should be [100%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [100%\] to [1px\] at (0.3) should be [calc(70% + 0.3px)\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [100%\] to [1px\] at (0.6) should be [calc(40% + 0.6px)\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [100%\] to [1px\] at (1) should be [calc(0% + 1px)\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [100%\] to [1px\] at (1.5) should be [calc(-50% + 1.5px)\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [10px\] to [10%\] at (-0.3) should be [calc(-3% + 13px)\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [10px\] to [10%\] at (0) should be [calc(0% + 10px)\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [10px\] to [10%\] at (0.3) should be [calc(3% + 7px)\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [10px\] to [10%\] at (0.6) should be [calc(6% + 4px)\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [10px\] to [10%\] at (1) should be [10%\]]
expected: FAIL
[CSS Transitions: property <column-rule-outset> from [10px\] to [10%\] at (1.5) should be [calc(15% - 5px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [10px\] to [10%\] at (-0.3) should be [calc(-3% + 13px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [10px\] to [10%\] at (0) should be [calc(0% + 10px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [10px\] to [10%\] at (0.3) should be [calc(3% + 7px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [10px\] to [10%\] at (0.6) should be [calc(6% + 4px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [10px\] to [10%\] at (1) should be [10%\]]
expected: FAIL
[CSS Transitions with transition: all: property <column-rule-outset> from [10px\] to [10%\] at (1.5) should be [calc(15% - 5px)\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [10px\] to [10%\] at (-0.3) should be [calc(-3% + 13px)\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [10px\] to [10%\] at (0) should be [calc(0% + 10px)\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [10px\] to [10%\] at (0.3) should be [calc(3% + 7px)\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [10px\] to [10%\] at (0.6) should be [calc(6% + 4px)\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [10px\] to [10%\] at (1) should be [10%\]]
expected: FAIL
[CSS Animations: property <column-rule-outset> from [10px\] to [10%\] at (1.5) should be [calc(15% - 5px)\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [10px\] to [10%\] at (-0.3) should be [calc(-3% + 13px)\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [10px\] to [10%\] at (0) should be [calc(0% + 10px)\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [10px\] to [10%\] at (0.3) should be [calc(3% + 7px)\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [10px\] to [10%\] at (0.6) should be [calc(6% + 4px)\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [10px\] to [10%\] at (1) should be [10%\]]
expected: FAIL
[Web Animations: property <column-rule-outset> from [10px\] to [10%\] at (1.5) should be [calc(15% - 5px)\]]
expected: FAIL

View file

@ -0,0 +1,3 @@
[gap-decorations-outset-neutral-keyframe-001.html]
[gap decorations row-rule-outset value list supports neutral keyframe.]
expected: FAIL

View file

@ -0,0 +1,3 @@
[gap-decorations-outset-neutral-keyframe-002.html]
[gap decorations column-rule-outset value list supports neutral keyframe.]
expected: FAIL

View file

@ -0,0 +1,504 @@
[row-rule-outset-interpolation.html]
[CSS Transitions: property <row-rule-outset> from neutral to [15px\] at (-0.3) should be [2px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from neutral to [15px\] at (0) should be [5px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from neutral to [15px\] at (0.3) should be [8px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from neutral to [15px\] at (0.6) should be [11px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from neutral to [15px\] at (1) should be [15px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from neutral to [15px\] at (1.5) should be [20px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from neutral to [15px\] at (-0.3) should be [2px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from neutral to [15px\] at (0) should be [5px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from neutral to [15px\] at (0.3) should be [8px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from neutral to [15px\] at (0.6) should be [11px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from neutral to [15px\] at (1) should be [15px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from neutral to [15px\] at (1.5) should be [20px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from neutral to [15px\] at (-0.3) should be [2px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from neutral to [15px\] at (0) should be [5px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from neutral to [15px\] at (0.3) should be [8px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from neutral to [15px\] at (0.6) should be [11px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from neutral to [15px\] at (1) should be [15px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from neutral to [15px\] at (1.5) should be [20px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from neutral to [15px\] at (-0.3) should be [2px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from neutral to [15px\] at (0) should be [5px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from neutral to [15px\] at (0.3) should be [8px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from neutral to [15px\] at (0.6) should be [11px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from neutral to [15px\] at (1) should be [15px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from neutral to [15px\] at (1.5) should be [20px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [initial\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [initial\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [initial\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [initial\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [initial\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [initial\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [initial\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [initial\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [initial\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [initial\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [initial\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [initial\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [initial\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [initial\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [initial\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [initial\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [initial\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [initial\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [initial\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [initial\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [initial\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [initial\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [initial\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [initial\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [inherit\] to [10px\] at (-0.3) should be [23px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [inherit\] to [10px\] at (0) should be [20px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [inherit\] to [10px\] at (0.3) should be [17px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [inherit\] to [10px\] at (0.6) should be [14px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [inherit\] to [10px\] at (1) should be [10px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [inherit\] to [10px\] at (1.5) should be [5px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [inherit\] to [10px\] at (-0.3) should be [23px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [inherit\] to [10px\] at (0) should be [20px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [inherit\] to [10px\] at (0.3) should be [17px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [inherit\] to [10px\] at (0.6) should be [14px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [inherit\] to [10px\] at (1) should be [10px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [inherit\] to [10px\] at (1.5) should be [5px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [inherit\] to [10px\] at (-0.3) should be [23px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [inherit\] to [10px\] at (0) should be [20px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [inherit\] to [10px\] at (0.3) should be [17px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [inherit\] to [10px\] at (0.6) should be [14px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [inherit\] to [10px\] at (1) should be [10px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [inherit\] to [10px\] at (1.5) should be [5px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [inherit\] to [10px\] at (-0.3) should be [23px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [inherit\] to [10px\] at (0) should be [20px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [inherit\] to [10px\] at (0.3) should be [17px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [inherit\] to [10px\] at (0.6) should be [14px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [inherit\] to [10px\] at (1) should be [10px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [inherit\] to [10px\] at (1.5) should be [5px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [unset\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [unset\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [unset\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [unset\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [unset\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [unset\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [unset\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [unset\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [unset\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [unset\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [unset\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [unset\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [unset\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [unset\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [unset\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [unset\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [unset\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [unset\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [unset\] to [40%\] at (-0.3) should be [53%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [unset\] to [40%\] at (0) should be [50%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [unset\] to [40%\] at (0.3) should be [47%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [unset\] to [40%\] at (0.6) should be [44%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [unset\] to [40%\] at (1) should be [40%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [unset\] to [40%\] at (1.5) should be [35%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [-5px\] to [5px\] at (-0.3) should be [-8px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [-5px\] to [5px\] at (0) should be [-5px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [-5px\] to [5px\] at (0.3) should be [-2px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [-5px\] to [5px\] at (0.6) should be [1px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [-5px\] to [5px\] at (1) should be [5px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [-5px\] to [5px\] at (1.5) should be [10px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [-5px\] to [5px\] at (-0.3) should be [-8px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [-5px\] to [5px\] at (0) should be [-5px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [-5px\] to [5px\] at (0.3) should be [-2px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [-5px\] to [5px\] at (0.6) should be [1px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [-5px\] to [5px\] at (1) should be [5px\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [-5px\] to [5px\] at (1.5) should be [10px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [-5px\] to [5px\] at (-0.3) should be [-8px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [-5px\] to [5px\] at (0) should be [-5px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [-5px\] to [5px\] at (0.3) should be [-2px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [-5px\] to [5px\] at (0.6) should be [1px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [-5px\] to [5px\] at (1) should be [5px\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [-5px\] to [5px\] at (1.5) should be [10px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [-5px\] to [5px\] at (-0.3) should be [-8px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [-5px\] to [5px\] at (0) should be [-5px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [-5px\] to [5px\] at (0.3) should be [-2px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [-5px\] to [5px\] at (0.6) should be [1px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [-5px\] to [5px\] at (1) should be [5px\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [-5px\] to [5px\] at (1.5) should be [10px\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [100%\] to [1px\] at (-0.3) should be [calc(130% - 0.3px)\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [100%\] to [1px\] at (0) should be [100%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [100%\] to [1px\] at (0.3) should be [calc(70% + 0.3px)\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [100%\] to [1px\] at (0.6) should be [calc(40% + 0.6px)\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [100%\] to [1px\] at (1) should be [calc(0% + 1px)\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [100%\] to [1px\] at (1.5) should be [calc(-50% + 1.5px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [100%\] to [1px\] at (-0.3) should be [calc(130% - 0.3px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [100%\] to [1px\] at (0) should be [100%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [100%\] to [1px\] at (0.3) should be [calc(70% + 0.3px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [100%\] to [1px\] at (0.6) should be [calc(40% + 0.6px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [100%\] to [1px\] at (1) should be [calc(0% + 1px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [100%\] to [1px\] at (1.5) should be [calc(-50% + 1.5px)\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [100%\] to [1px\] at (-0.3) should be [calc(130% - 0.3px)\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [100%\] to [1px\] at (0) should be [100%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [100%\] to [1px\] at (0.3) should be [calc(70% + 0.3px)\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [100%\] to [1px\] at (0.6) should be [calc(40% + 0.6px)\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [100%\] to [1px\] at (1) should be [calc(0% + 1px)\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [100%\] to [1px\] at (1.5) should be [calc(-50% + 1.5px)\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [100%\] to [1px\] at (-0.3) should be [calc(130% - 0.3px)\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [100%\] to [1px\] at (0) should be [100%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [100%\] to [1px\] at (0.3) should be [calc(70% + 0.3px)\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [100%\] to [1px\] at (0.6) should be [calc(40% + 0.6px)\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [100%\] to [1px\] at (1) should be [calc(0% + 1px)\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [100%\] to [1px\] at (1.5) should be [calc(-50% + 1.5px)\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [10px\] to [10%\] at (-0.3) should be [calc(-3% + 13px)\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [10px\] to [10%\] at (0) should be [calc(0% + 10px)\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [10px\] to [10%\] at (0.3) should be [calc(3% + 7px)\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [10px\] to [10%\] at (0.6) should be [calc(6% + 4px)\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [10px\] to [10%\] at (1) should be [10%\]]
expected: FAIL
[CSS Transitions: property <row-rule-outset> from [10px\] to [10%\] at (1.5) should be [calc(15% - 5px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [10px\] to [10%\] at (-0.3) should be [calc(-3% + 13px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [10px\] to [10%\] at (0) should be [calc(0% + 10px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [10px\] to [10%\] at (0.3) should be [calc(3% + 7px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [10px\] to [10%\] at (0.6) should be [calc(6% + 4px)\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [10px\] to [10%\] at (1) should be [10%\]]
expected: FAIL
[CSS Transitions with transition: all: property <row-rule-outset> from [10px\] to [10%\] at (1.5) should be [calc(15% - 5px)\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [10px\] to [10%\] at (-0.3) should be [calc(-3% + 13px)\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [10px\] to [10%\] at (0) should be [calc(0% + 10px)\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [10px\] to [10%\] at (0.3) should be [calc(3% + 7px)\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [10px\] to [10%\] at (0.6) should be [calc(6% + 4px)\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [10px\] to [10%\] at (1) should be [10%\]]
expected: FAIL
[CSS Animations: property <row-rule-outset> from [10px\] to [10%\] at (1.5) should be [calc(15% - 5px)\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [10px\] to [10%\] at (-0.3) should be [calc(-3% + 13px)\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [10px\] to [10%\] at (0) should be [calc(0% + 10px)\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [10px\] to [10%\] at (0.3) should be [calc(3% + 7px)\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [10px\] to [10%\] at (0.6) should be [calc(6% + 4px)\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [10px\] to [10%\] at (1) should be [10%\]]
expected: FAIL
[Web Animations: property <row-rule-outset> from [10px\] to [10%\] at (1.5) should be [calc(15% - 5px)\]]
expected: FAIL

View file

@ -16,3 +16,6 @@
[Property item-tolerance value 'calc(0.5em + 10px)'] [Property item-tolerance value 'calc(0.5em + 10px)']
expected: FAIL expected: FAIL
[Property item-tolerance value 'infinite']
expected: FAIL

View file

@ -16,3 +16,9 @@
[e.style['item-tolerance'\] = "5vmin" should set the property value] [e.style['item-tolerance'\] = "5vmin" should set the property value]
expected: FAIL expected: FAIL
[e.style['item-tolerance'\] = "infinite" should set the property value]
expected: FAIL
[e.style['item-tolerance'\] = "initial" should set the property value]
expected: FAIL

View file

@ -0,0 +1,12 @@
[scroll-markers-computed.tentative.html]
[Property scroll-marker-group value 'before tabs']
expected: FAIL
[Property scroll-marker-group value 'before links']
expected: FAIL
[Property scroll-marker-group value 'after links']
expected: FAIL
[Property scroll-marker-group value 'after tabs']
expected: FAIL

View file

@ -0,0 +1,2 @@
[text-wrap-balance-line-clamp-005.html]
expected: FAIL

View file

@ -0,0 +1,3 @@
[009.html]
[Link with onclick form submit to javascript url with document.write and href navigation ]
expected: FAIL

View file

@ -1,3 +0,0 @@
[navigation-unload-same-origin.window.html]
[Same-origin navigation started from unload handler must be ignored]
expected: FAIL

View file

@ -1,2 +0,0 @@
[canvas.2d.disconnected.html]
expected: FAIL

View file

@ -13,7 +13,4 @@
expected: NOTRUN expected: NOTRUN
[Host element with delegatesFocus should support autofocus] [Host element with delegatesFocus should support autofocus]
expected: NOTRUN expected: FAIL
[Non-HTMLElement should not support autofocus]
expected: NOTRUN

View file

@ -1,3 +1,4 @@
[iframe_sandbox_popups_escaping-2.html] [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] [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL expected: FAIL

View file

@ -1,4 +1,4 @@
[iframe_sandbox_popups_nonescaping-3.html] [iframe_sandbox_popups_nonescaping-3.html]
expected: CRASH expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox] [Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL expected: NOTRUN

View file

@ -1,3 +1,6 @@
[navigation-id-worker-created-entries.html] [navigation-id-worker-created-entries.html]
[Navigation id of performance entries created by workers should be empty] [Navigation id of performance entries created by workers should be empty]
expected: FAIL expected: FAIL
[Navigation id of performance entries created by workers should be 0.]
expected: FAIL

View file

@ -56,9 +56,6 @@
[MIME-blocked-nosniff (script): main] [MIME-blocked-nosniff (script): main]
expected: FAIL expected: FAIL
[Decode-error (script): main]
expected: FAIL
[success (script): main] [success (script): main]
expected: FAIL expected: FAIL

View file

@ -1,5 +1,4 @@
[document-initiated.html] [document-initiated.html]
expected: TIMEOUT
[Ensure initiator Attribute matches with Document ResourceID] [Ensure initiator Attribute matches with Document ResourceID]
expected: TIMEOUT expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[reuse-wasm-loaded-as-classic-script.tentative.html]
expected: TIMEOUT
[Reuse Wasm loaded as classic script]
expected: TIMEOUT

View file

@ -0,0 +1,2 @@
[source-phase-import-non-UTF8.tentative.html]
expected: ERROR

View file

@ -32,3 +32,17 @@
[X threshold: refNode = new DynamicsCompressorNode(context) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".] [X threshold: refNode = new DynamicsCompressorNode(context) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
expected: FAIL expected: FAIL
[Verify k-rate 'attack' with input on DynamicsCompressorNode]
expected: FAIL
[Verify k-rate 'knee' with input on DynamicsCompressorNode]
expected: FAIL
[Verify k-rate 'ratio' with input on DynamicsCompressorNode]
expected: FAIL
[Verify k-rate 'release' with input on DynamicsCompressorNode]
expected: FAIL
[Verify k-rate 'threshold' with input on DynamicsCompressorNode]
expected: FAIL

View file

@ -1,4 +0,0 @@
[localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.html]
expected: TIMEOUT
[StorageKey: test 3P about:blank window opened from a 3P iframe]
expected: TIMEOUT

View file

@ -0,0 +1,57 @@
<!DOCTYPE html>
<title>Percentage inset/margin/padding in position-area</title>
<style>
.container {
width: 100px; height: 100px;
border: solid gray;
margin: 6px;
position: relative;
float: left;
}
.anchor {
position: absolute;
background: silver;
inset: 20px 20px 40px 20px;
}
.anchored {
border: solid blue 2px;
position: absolute;
place-self: stretch;
inset: 60px 0 0 20px; /* occupy the bottom center-right area */
background: content-box aqua;
}
/* insets (top / left margins here) compute against their own axis */
/* margins (bottom / right margins here) and padding compute against inline axis */
.horizontal { /* margin/padding computes against horizontal */
margin: 8px 4px 4px 16px;
padding: 8px;
}
.vertical { /* margin/padding computes against vertical */
margin: 8px 2px 2px 16px;
padding: 4px;
}
</style>
<div class=container>
<div class="anchor"></div>
<div class="anchored horizontal"></div>
</div>
<div class=container>
<div class="anchor"></div>
<div class="anchored horizontal"></div>
</div>
<div class=container>
<div class="anchor"></div>
<div class="anchored vertical"></div>
</div>
<div class=container>
<div class="anchor"></div>
<div class="anchored vertical"></div>
</div>

View file

@ -0,0 +1,56 @@
<!DOCTYPE html>
<title>Percentage inset/margin/padding in position-area</title>
<link rel="help" href="https://www.w3.org/TR/css-anchor-position/#position-area">
<link rel="match" href="position-area-percents-001-ref.html">
<link rel="author" name="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
<style>
.container {
width: 100px; height: 100px;
border: solid gray;
margin: 6px;
position: relative;
float: left;
}
.anchor {
position: absolute;
background: silver;
inset: 20px 20px 40px 20px;
/* Makes bottom center-right area 80px wide by 40px tall */
anchor-name: --foo;
}
.anchored {
border: solid blue 2px;
position: absolute;
position-anchor: --foo;
position-area: bottom span-right;
place-self: stretch;
inset: 20% 0 0 20%;
margin: 0 5% 5% 0;
padding: 10%;
background: content-box aqua;
}
</style>
<div class=container>
<div class="anchor"></div>
<div class="anchored"></div>
</div>
<div class=container>
<div class="anchor"></div>
<div class="anchored" style="writing-mode: vertical-rl"></div>
</div>
<div class=container style="writing-mode: vertical-rl">
<div class="anchor"></div>
<div class="anchored"></div>
</div>
<div class=container style="writing-mode: vertical-rl">
<div class="anchor"></div>
<div class="anchored" style="writing-mode: horizontal-tb"></div>
</div>

View file

@ -0,0 +1,122 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>column-rule-outset interpolation</title>
<link rel="author" title="Javier Contreras" href="mailto:javiercon@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#outset">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<style>
.parent {
row-rule-style: solid;
column-rule-outset: 20px;
}
.target {
display: flex;
row-gap: 10px;
row-rule: 10px solid black;
column-rule: 10px solid black;
column-rule-break: intersection;
column-rule-outset: 5px;
}
</style>
</head>
<body>
<script>
test_interpolation({
property: 'column-rule-outset',
from: neutralKeyframe,
to: '15px',
}, [
{ at: -0.3, expect: '2px' },
{ at: 0, expect: '5px' },
{ at: 0.3, expect: '8px' },
{ at: 0.6, expect: '11px' },
{ at: 1, expect: '15px' },
{ at: 1.5, expect: '20px' },
]);
test_interpolation({
property: 'column-rule-outset',
from: 'initial', // initial is 50%.
to: '40%',
}, [
{ at: -0.3, expect: '53%' },
{ at: 0, expect: '50%' },
{ at: 0.3, expect: '47%' },
{ at: 0.6, expect: '44%' },
{ at: 1, expect: '40%' },
{ at: 1.5, expect: '35%' },
]);
test_interpolation({
property: 'column-rule-outset',
from: 'inherit',
to: '10px',
}, [
{ at: -0.3, expect: '23px' },
{ at: 0, expect: '20px' },
{ at: 0.3, expect: '17px' },
{ at: 0.6, expect: '14px' },
{ at: 1, expect: '10px' },
{ at: 1.5, expect: '5px' },
]);
test_interpolation({
property: 'column-rule-outset',
from: 'unset',
to: '40%',
}, [
{ at: -0.3, expect: '53%' },
{ at: 0, expect: '50%' },
{ at: 0.3, expect: '47%' },
{ at: 0.6, expect: '44%' },
{ at: 1, expect: '40%' },
{ at: 1.5, expect: '35%' },
]);
test_interpolation({
property: 'column-rule-outset',
from: '-5px',
to: '5px'
}, [
{ at: -0.3, expect: '-8px' }, // column-rule-outset can be negative
{ at: 0, expect: '-5px' },
{ at: 0.3, expect: '-2px' },
{ at: 0.6, expect: '1px' },
{ at: 1, expect: '5px' },
{ at: 1.5, expect: '10px' },
]);
test_interpolation({
property: 'column-rule-outset',
from: '100%',
to: '1px',
}, [
{ at: -0.3, expect: 'calc(130% - 0.3px)' },
{ at: 0, expect: '100%' },
{ at: 0.3, expect: 'calc(70% + 0.3px)' },
{ at: 0.6, expect: 'calc(40% + 0.6px)' },
{ at: 1, expect: 'calc(0% + 1px)' },
{ at: 1.5, expect: 'calc(-50% + 1.5px)' },
]);
test_interpolation({
property: 'column-rule-outset',
from: '10px',
to: '10%',
}, [
{ at: -0.3, expect: 'calc(-3% + 13px)' },
{ at: 0, expect: 'calc(0% + 10px)' },
{ at: 0.3, expect: 'calc(3% + 7px)' },
{ at: 0.6, expect: 'calc(6% + 4px)' },
{ at: 1, expect: '10%' },
{ at: 1.5, expect: 'calc(15% - 5px)' },
]);
</script>
</body>
</html>

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>gap decorations row-rule-outset neutral keyframe</title>
<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#outset">
<meta name="assert" content="gap decorations row-rule-outset value list supports neutral keyframe.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
</head>
<body>
<div id="target"></div>
<script>
test(() => {
target.style.rowRuleStyle = 'solid';
target.style.rowRuleOutset = '1px';
var animation = target.animate([{}, {rowRuleOutset: '11px'}], 1000);
animation.pause();
animation.currentTime = 500;
assert_equals(getComputedStyle(target).rowRuleOutset, '6px');
}, 'gap decorations row-rule-outset value list supports neutral keyframe.');
</script>
</body>
</html>

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>gap decorations column-rule-outset neutral keyframe</title>
<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#outset">
<meta name="assert" content="gap decorations column-rule-outset value list supports neutral keyframe.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
</head>
<body>
<div id="target"></div>
<script>
test(() => {
target.style.columnRuleStyle = 'solid';
target.style.columnRuleOutset = '1px';
var animation = target.animate([{}, {columnRuleOutset: '11px'}], 1000);
animation.pause();
animation.currentTime = 500;
assert_equals(getComputedStyle(target).columnRuleOutset, '6px');
}, 'gap decorations column-rule-outset value list supports neutral keyframe.');
</script>
</body>
</html>

View file

@ -0,0 +1,122 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>row-rule-outset interpolation</title>
<link rel="author" title="Javier Contreras" href="mailto:javiercon@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#outset">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<style>
.parent {
row-rule-style: solid;
row-rule-outset: 20px;
}
.target {
display: flex;
row-gap: 10px;
row-rule: 10px solid black;
column-rule: 10px solid black;
row-rule-break: intersection;
row-rule-outset: 5px;
}
</style>
</head>
<body>
<script>
test_interpolation({
property: 'row-rule-outset',
from: neutralKeyframe,
to: '15px',
}, [
{ at: -0.3, expect: '2px' },
{ at: 0, expect: '5px' },
{ at: 0.3, expect: '8px' },
{ at: 0.6, expect: '11px' },
{ at: 1, expect: '15px' },
{ at: 1.5, expect: '20px' },
]);
test_interpolation({
property: 'row-rule-outset',
from: 'initial', // initial is 50%.
to: '40%',
}, [
{ at: -0.3, expect: '53%' },
{ at: 0, expect: '50%' },
{ at: 0.3, expect: '47%' },
{ at: 0.6, expect: '44%' },
{ at: 1, expect: '40%' },
{ at: 1.5, expect: '35%' },
]);
test_interpolation({
property: 'row-rule-outset',
from: 'inherit',
to: '10px',
}, [
{ at: -0.3, expect: '23px' },
{ at: 0, expect: '20px' },
{ at: 0.3, expect: '17px' },
{ at: 0.6, expect: '14px' },
{ at: 1, expect: '10px' },
{ at: 1.5, expect: '5px' },
]);
test_interpolation({
property: 'row-rule-outset',
from: 'unset',
to: '40%',
}, [
{ at: -0.3, expect: '53%' },
{ at: 0, expect: '50%' },
{ at: 0.3, expect: '47%' },
{ at: 0.6, expect: '44%' },
{ at: 1, expect: '40%' },
{ at: 1.5, expect: '35%' },
]);
test_interpolation({
property: 'row-rule-outset',
from: '-5px',
to: '5px'
}, [
{ at: -0.3, expect: '-8px' }, // row-rule-outset can be negative
{ at: 0, expect: '-5px' },
{ at: 0.3, expect: '-2px' },
{ at: 0.6, expect: '1px' },
{ at: 1, expect: '5px' },
{ at: 1.5, expect: '10px' },
]);
test_interpolation({
property: 'row-rule-outset',
from: '100%',
to: '1px',
}, [
{ at: -0.3, expect: 'calc(130% - 0.3px)' },
{ at: 0, expect: '100%' },
{ at: 0.3, expect: 'calc(70% + 0.3px)' },
{ at: 0.6, expect: 'calc(40% + 0.6px)' },
{ at: 1, expect: 'calc(0% + 1px)' },
{ at: 1.5, expect: 'calc(-50% + 1.5px)' },
]);
test_interpolation({
property: 'row-rule-outset',
from: '10px',
to: '10%',
}, [
{ at: -0.3, expect: 'calc(-3% + 13px)' },
{ at: 0, expect: 'calc(0% + 10px)' },
{ at: 0.3, expect: 'calc(3% + 7px)' },
{ at: 0.6, expect: 'calc(6% + 4px)' },
{ at: 1, expect: '10%' },
{ at: 1.5, expect: 'calc(15% - 5px)' },
]);
</script>
</body>
</html>

View file

@ -19,6 +19,7 @@
</style> </style>
<script> <script>
test_computed_value("item-tolerance", "normal"); test_computed_value("item-tolerance", "normal");
test_computed_value("item-tolerance", "infinite");
test_computed_value("item-tolerance", "10px"); test_computed_value("item-tolerance", "10px");
test_computed_value("item-tolerance", "20%"); test_computed_value("item-tolerance", "20%");

View file

@ -17,8 +17,15 @@ test_invalid_value("item-tolerance", "auto");
test_invalid_value("item-tolerance", "10"); test_invalid_value("item-tolerance", "10");
test_invalid_value("item-tolerance", "10px 20px"); test_invalid_value("item-tolerance", "10px 20px");
test_invalid_value("item-tolerance", "1fr");
test_invalid_value("item-tolerance", "-1px"); test_invalid_value("item-tolerance", "-1px");
test_invalid_value("item-tolerance", "-10%"); test_invalid_value("item-tolerance", "-10%");
test_invalid_value("item-tolerance", "normal 10px");
test_invalid_value("item-tolerance", "infinite 10px");
test_invalid_value("item-tolerance", "10px normal");
test_invalid_value("item-tolerance", "10px infinite");
test_invalid_value("item-tolerance", "normal infinite");
test_invalid_value("item-tolerance", "infinite normal");
</script> </script>
</body> </body>
</html> </html>

View file

@ -13,6 +13,8 @@
<body> <body>
<script> <script>
test_valid_value("item-tolerance", "normal"); test_valid_value("item-tolerance", "normal");
test_valid_value("item-tolerance", "infinite");
test_valid_value("item-tolerance", "initial");
test_valid_value("item-tolerance", "0", "0px"); test_valid_value("item-tolerance", "0", "0px");
test_valid_value("item-tolerance", "1px"); test_valid_value("item-tolerance", "1px");

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Overflow: scroll-marker-group with tabs/links mode computed values</title>
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/12122">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
<div id="target"></div>
<script>
test_computed_value('scroll-marker-group', 'before tabs');
test_computed_value('scroll-marker-group', 'before links');
test_computed_value('scroll-marker-group', 'after links');
test_computed_value('scroll-marker-group', 'after tabs');
</script>

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Overflow: parsing scroll-marker-group with modes invalid values</title>
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/12122">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
<div id="target"></div>
<script>
test_invalid_value('scroll-marker-group', 'before before');
test_invalid_value('scroll-marker-group', 'after before');
test_invalid_value('scroll-marker-group', 'after tab');
test_invalid_value('scroll-marker-group', 'after link');
test_invalid_value('scroll-marker-group', 'links after');
test_invalid_value('scroll-marker-group', 'tabs before');
test_invalid_value('scroll-marker-group', 'after, tabs');
test_invalid_value('scroll-marker-group', 'after, links');
</script>

View file

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html lang="en" >
<meta charset="utf-8">
<title>CSS Test reference</title>
<link rel='author' title='Andreu Botella' href='mailto:abotella@igalia.com'>
<style>
div {
border: solid;
font-family: monospace;
margin: 1ch;
width: 11.1ch;
white-space: nowrap;
}
.test {
border-color: blue;
}
.ref {
border-color: orange;
}
</style>
<p>Test passes if the box with a blue frame is identical to the orange one.
<div class=test>abc def<br>AB CD EF GH<br>IJ KL MN O…</div>
<div class=ref>abc def<br>AB CD EF GH<br>IJ KL MN O…</div>

View file

@ -0,0 +1,72 @@
<!DOCTYPE html>
<html lang="en" >
<meta charset="utf-8">
<title>CSS test: balancing and line-clamp</title>
<link rel='author' title='Andreu Botella' href='mailto:abotella@igalia.com'>
<link rel='help' href='https://drafts.csswg.org/css-overflow-4/#line-clamp'>
<link rel='help' href='https://drafts.csswg.org/css-text-4/#text-wrap-style'>
<meta name="assert" content="If the element is affected by line-clamp, the clamping effect is applied first, then the remaining lines are balanced. This also happens if the balanced paragraph is within the line-clamp container, not the line-clamp container itself.">
<link rel="match" href="reference/text-wrap-balance-line-clamp-005-ref.html">
<style>
body > div {
border: solid;
font-family: monospace;
margin: 1ch;
width: 11.1ch; /* .1ch to work around browser bugs */
}
.test {
border-color: blue;
line-clamp: 3;
/* This code is unnecessary in any browser that supports the unprefixed version of line-clamp,
but neither does it have any detrimental effect,
and it broadens the test to browsers that only support the prefixed version */
-webkit-line-clamp: 3;
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
}
.balanced {
text-wrap-style: balance;
}
.ref {
border-color: orange;
white-space: nowrap;
}
</style>
<p>Test passes if the box with a blue frame is identical to the orange one.
<div class=test>
abc def
<div class="balanced">
AB CD EF GH
IJ KL MN O
PQ RST
</div>
uvwxyz
</div>
<div class=ref>abc def<br>AB CD EF GH<br>IJ KL MN O…</div>
<!--
unbalanced layout without clamping:
|-----------|
|abc def |
|AB CD EF GH|
|IJ KL MN O |
|PQ RST |
|uvwxyz |
|-----------|
unbalanced layout after clamping:
|-----------|
|abc def |
|AB CD EF GH|
|IJ KL MN O…|
|-----------|
There is no way to balance the uppercase lines without changing the number of
lines.
-->

View file

@ -0,0 +1,17 @@
<!doctype html>
<title>
Having lots of filter primitives shouldn't crash.
</title>
<div style="filter:url(#test1)">test</div>
<svg
width="768"
height="768"
viewBox="0 0 768 768"
xmlns="http://www.w3.org/2000/svg">
<filter id="test1">
<feMorphology operator="dilate" radius="1" />
</filter>
</svg>
<script>
test1.innerHTML = test1.innerHTML.repeat(10000);
</script>

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<meta charset=utf-8>
<link rel="help" href="https://github.com/WICG/PEPC/blob/main/explainer.md#locking-the-pepc-style">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<body>
<style>
permission {
color: #ff0000;
}
</style>
<permission id="permission_element" type="camera"></permission>
<script>
promise_test(async() => {
let permission_element = document.getElementById("permission_element");
assert_equals(getComputedStyle(permission_element, "::permission-icon").fill, 'rgb(255, 0, 0)')
}, "Permission element icon's color should be same as the text color unless explicitly changed.")
</script>
</body>

View file

@ -0,0 +1,11 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>A standard permission element of type location, with blue text and icon color</title>
<style>
permission {
color: blue;
}
</style>
<permission id="geolocation" type="geolocation"></permission>

View file

@ -2,8 +2,11 @@
<title>The icon of the element should change if the fill color is changed</title> <title>The icon of the element should change if the fill color is changed</title>
<!-- TODO: Update the link to the permission icon spec --> <!-- TODO: Update the link to the permission icon spec -->
<link rel="help" href="https://github.com/WICG/PEPC/blob/main/explainer.md"> <link rel="help" href="https://github.com/WICG/PEPC/blob/main/explainer.md">
<link rel="mismatch" href="standard-location-permission-element-ref.html"> <link rel="mismatch" href="icon-css-property-fill-reftest-ref.html">
<style> <style>
permission {
color: blue;
}
::permission-icon { ::permission-icon {
fill: red; fill: red;
} }

View file

@ -75,9 +75,7 @@ method = urlParams.get('method');
reinsert(target); reinsert(target);
}); });
assert_false(el.matches(':has-interest'),'setup'); assert_false(el.matches(':has-interest'),'setup');
assert_false(el.matches(':has-partial-interest'),'setup');
assert_false(target.matches(':target-of-interest'),'setup'); assert_false(target.matches(':target-of-interest'),'setup');
assert_false(target.matches(':target-of-partial-interest'),'setup');
const signal = t.get_signal(); const signal = t.get_signal();
let interestCount = 0; let interestCount = 0;
let loseInterestCount = 0; let loseInterestCount = 0;

View file

@ -1,52 +0,0 @@
<!DOCTYPE html>
<meta charset="utf-8" />
<link rel="author" href="mailto:masonf@chromium.org">
<link rel="help" href="https://open-ui.org/components/interest-invokers.explainer/" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="resources/invoker-utils.js"></script>
<button id=invoker interestfor=target>Button</button>
<div id=target popover>Popover with <button id=contained>button</button></div>
<style>
[interestfor] {
interest-delay: 0s;
}
</style>
<script>
let expectInterest;
let expectPartial;
let eventCount = 0;
function checkInterest(e) {
const notStr = expectInterest ? "" : "not ";
const event = e instanceof Event ? `${e.type} event` : e;
assert_equals(invoker.matches(':has-interest'),expectInterest,`target should ${notStr}gain interest (${event})`);
assert_equals(invoker.matches(':has-partial-interest'),expectInterest&&expectPartial,`Interest should ${expectPartial ? "" : "not "}be partial (${event})`);
assert_equals(target.matches(':popover-open'),expectInterest,`popover should ${notStr}be open (${event})`);
++eventCount;
}
promise_test(async function (t) {
invoker.addEventListener('focus',checkInterest);
target.addEventListener('interest',(e) => {
checkInterest(e);
expectInterest = true;
expectPartial = true;
});
expectInterest = false;
expectPartial = false;
await focusOn(invoker);
assert_equals(eventCount,2,'focus and interest should both have fired');
assert_true(expectInterest,'the interest event should set this');
checkInterest('before hot key');
await sendShowInterestHotkey();
expectPartial = false;
checkInterest('after hot key');
},'Partial interest timing should not be observable');
</script>

View file

@ -1,46 +0,0 @@
<!DOCTYPE html>
<meta charset="utf-8" />
<link rel="author" href="mailto:masonf@chromium.org">
<link rel="help" href="https://open-ui.org/components/interest-invokers.explainer/" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="resources/invoker-utils.js"></script>
<script src="/html/semantics/popovers/resources/popover-utils.js"></script>
<button id=el interestfor=target>Button</button>
<div id=target popover>Popover with <button id=contained>button</button></div>
<button id=otherbutton>Other button</button>
<style>
[interestfor] {
interest-delay: 0s;
}
</style>
<script>
promise_test(async function (t) {
let interestCount = 0;
let loseInterestCount = 0;
target.addEventListener('interest',(e) => ++interestCount);
target.addEventListener('loseinterest',(e) => ++loseInterestCount);
assert_false(target.matches(':popover-open'));
await focusOn(el);
assert_equals(document.activeElement,el);
assert_true(target.matches(':popover-open'),'Focusing should trigger interest');
assert_equals(interestCount,1);
assert_equals(loseInterestCount,0);
await sendShowInterestHotkey();
assert_equals(document.activeElement,contained);
assert_true(target.matches(':popover-open'),'Moving focus into popover should not lose interest');
assert_equals(interestCount,1);
assert_equals(loseInterestCount,0);
await sendTab();
assert_equals(document.activeElement,otherbutton);
assert_false(target.matches(':popover-open'),'Moving focus out of popover and invoker should lose interest');
assert_equals(interestCount,1);
assert_equals(loseInterestCount,1);
},'It should be possible to move focus into target popover');
</script>

View file

@ -37,18 +37,12 @@
} }
</style> </style>
<script> <script>
function checkPseudos(invoker,target,expectHasPartialInterest,expectHasInterest,expectTargetHasPartialInterest,expectTargetHasInterest,msg) { function checkPseudos(invoker,target,expectHasInterest,expectTargetHasInterest,msg) {
msg = msg ?? 'Error'; msg = msg ?? 'Error';
assert_true(!expectHasPartialInterest || expectHasInterest,'Partial interest can\'t be true without full interest');
assert_true(!expectTargetHasPartialInterest || expectTargetHasInterest,'Partial interest can\'t be true without full interest (target)');
assert_equals(invoker.matches(':has-interest'),expectHasInterest,`${msg}: :has-interest mismatch`); assert_equals(invoker.matches(':has-interest'),expectHasInterest,`${msg}: :has-interest mismatch`);
assert_equals(invoker.matches(':has-partial-interest'),expectHasPartialInterest,`${msg}: :has-partial-interest mismatch`); assert_equals(target.matches(':target-of-interest'),expectTargetHasInterest,`${msg}: :target-of-interest mismatch`);
assert_equals(target.matches(':target-of-interest'),expectTargetHasInterest,`${msg}: :target-of-partial-interest mismatch`);
assert_equals(target.matches(':target-of-partial-interest'),expectTargetHasPartialInterest,`${msg}: :target-of-partial-interest mismatch`);
assert_false(invoker.matches(':target-of-interest'),'invoker should never match :target-of-interest'); assert_false(invoker.matches(':target-of-interest'),'invoker should never match :target-of-interest');
assert_false(invoker.matches(':target-of-partial-interest'),'invoker should never match :target-of-partial-interest');
assert_false(target.matches(':has-interest'),'target should never match :has-interest'); assert_false(target.matches(':has-interest'),'target should never match :has-interest');
assert_false(target.matches(':has-partial-interest'),'target should never match :has-partial-interest');
assert_equals(target.matches(':popover-open'),expectTargetHasInterest,'Popover should be open if target has interest'); assert_equals(target.matches(':popover-open'),expectTargetHasInterest,'Popover should be open if target has interest');
} }
// Note that add_cleanup does not wait for async functions. // Note that add_cleanup does not wait for async functions.
@ -65,16 +59,16 @@ promise_test(async (t) => {
let hasInterest = false; let hasInterest = false;
target.addEventListener('interest',() => (hasInterest=true)); target.addEventListener('interest',() => (hasInterest=true));
target.addEventListener('loseinterest',() => (hasInterest=false)); target.addEventListener('loseinterest',() => (hasInterest=false));
checkPseudos(invoker,target,false,false,false,false,'initial'); checkPseudos(invoker,target,false,false,'initial');
assert_false(hasInterest); assert_false(hasInterest);
await hoverOver(invoker); await hoverOver(invoker);
checkPseudos(invoker,target,false,true,false,true,'hovering invoker shows full interest (and not partial interest)'); checkPseudos(invoker,target,true,true,'hovering invoker shows full interest');
assert_true(hasInterest,'event was fired'); assert_true(hasInterest,'event was fired');
await hoverOver(target); await hoverOver(target);
checkPseudos(invoker,target,false,true,false,true,'hovering the target maintains interest'); checkPseudos(invoker,target,true,true,'hovering the target maintains interest');
assert_true(hasInterest,'loseinterest event was not yet fired'); assert_true(hasInterest,'loseinterest event was not yet fired');
await hoverOver(unrelated); await hoverOver(unrelated);
checkPseudos(invoker,target,false,false,false,false,'hovering unrelated loses interest'); checkPseudos(invoker,target,false,false,'hovering unrelated loses interest');
assert_false(hasInterest,'loseinterest event was fired'); assert_false(hasInterest,'loseinterest event was fired');
await do_cleanup(); await do_cleanup();
},'Basic pseudo class function, with mouse hover triggering'); },'Basic pseudo class function, with mouse hover triggering');
@ -83,115 +77,65 @@ promise_test(async (t) => {
let hasInterest = false; let hasInterest = false;
target.addEventListener('interest',() => (hasInterest=true)); target.addEventListener('interest',() => (hasInterest=true));
target.addEventListener('loseinterest',() => (hasInterest=false)); target.addEventListener('loseinterest',() => (hasInterest=false));
checkPseudos(invoker,target,false,false,false,false,'initial'); checkPseudos(invoker,target,false,false,'initial');
assert_false(hasInterest); assert_false(hasInterest);
await focusOn(invoker); await focusOn(invoker);
checkPseudos(invoker,target,true,true,true,true,'focusing invoker shows partial interest (and therefore also interest)'); checkPseudos(invoker,target,true,true,'focusing invoker shows interest');
assert_true(hasInterest,'event was fired'); assert_true(hasInterest,'event was fired');
// Partial interest does not affect programmatic focusability:
await focusOn(target_button);
checkPseudos(invoker,target,false,true,false,true,'focusing the target upgrades to full interest (no longer partial interest)');
assert_true(hasInterest,'loseinterest event was not yet fired');
await focusOn(invoker); await focusOn(invoker);
checkPseudos(invoker,target,false,true,false,true,'focusing back on invoker keeps full interest'); checkPseudos(invoker,target,true,true,'focusing back on invoker keeps full interest');
assert_true(hasInterest,'loseinterest event was not yet fired'); assert_true(hasInterest,'loseinterest event was not yet fired');
await focusOn(unrelated); await focusOn(unrelated);
checkPseudos(invoker,target,false,false,false,false,'focusing unrelated loses interest'); checkPseudos(invoker,target,false,false,'focusing unrelated loses interest');
assert_false(hasInterest,'loseinterest event was fired'); assert_false(hasInterest,'loseinterest event was fired');
await do_cleanup(); await do_cleanup();
},'Basic pseudo class function, with keyboard focus triggering'); },'Basic pseudo class function, with keyboard focus triggering');
promise_test(async (t) => { promise_test(async (t) => {
checkPseudos(invoker,target,false,false,false,false,'initial'); checkPseudos(invoker,target,false,false,'initial');
await focusOn(invoker); await focusOn(invoker);
checkPseudos(invoker,target,true,true,true,true,'focusing invoker shows partial interest'); checkPseudos(invoker,target,true,true,'invoker now has full interest');
assert_equals(document.activeElement,invoker);
// Tab once, which should skip over the button in the popover, to the button
// that comes after it.
await sendTab(); await sendTab();
assert_equals(document.activeElement,after,'focus should be on the button after the popover'); assert_equals(document.activeElement,target_button,'focus should now be able to move within the target');
checkPseudos(invoker,target,false,false,false,false,'interest was lost, due to blur of the invoker');
await do_cleanup();
},'Keyboard-triggered partial focus keeps contents from being keyboard focusable');
promise_test(async (t) => {
checkPseudos(invoker,target,false,false,false,false,'initial');
await focusOn(invoker);
checkPseudos(invoker,target,true,true,true,true,'focusing invoker shows partial interest');
invoker.setAttribute('style',`interest-delay: 10000s`);
await sendShowInterestHotkey();
checkPseudos(invoker,target,false,true,false,true,'invoker now has full interest');
assert_equals(document.activeElement,target_button,'focus moves to the target automatically');
await do_cleanup();
},'Show interest hotkey confers "full interest", without any delays');
promise_test(async (t) => {
checkPseudos(invoker,target,false,false,false,false,'initial');
await focusOn(invoker);
checkPseudos(invoker,target,true,true,true,true,'focusing invoker shows partial interest');
invoker.setAttribute('style',`interest-delay: 10000s`);
await hoverOver(target);
checkPseudos(invoker,target,false,true,false,true,'invoker now has full interest');
assert_equals(document.activeElement,invoker,'focus does not move in this case');
await do_cleanup();
},'Hovering the popover confers "full interest", without any delays');
promise_test(async (t) => {
checkPseudos(invoker,target,false,false,false,false,'initial');
await focusOn(invoker);
checkPseudos(invoker,target,true,true,true,true,'focusing invoker shows partial interest');
invoker.setAttribute('style',`interest-delay: 10000s`);
await hoverOver(invoker);
checkPseudos(invoker,target,false,true,false,true,'invoker now has full interest');
assert_equals(document.activeElement,invoker,'focus does not move in this case');
await do_cleanup();
},'Hovering the invoker confers "full interest", without any delays');
promise_test(async (t) => {
checkPseudos(invoker,target,false,false,false,false,'initial');
await focusOn(invoker);
await sendShowInterestHotkey();
checkPseudos(invoker,target,false,true,false,true,'invoker now has full interest');
await sendTab(); await sendTab();
assert_equals(document.activeElement,target_button_2,'focus should now be able to move within the target'); assert_equals(document.activeElement,target_button_2,'focus should be able to move within the target');
await sendShiftTab(); await sendShiftTab();
assert_equals(document.activeElement,target_button,'focus should now be able to move within the target (backwards)');
await sendShiftTab(); await sendShiftTab();
assert_equals(document.activeElement,invoker,'focus should go back to invoker'); assert_equals(document.activeElement,invoker,'focus should go back to invoker');
checkPseudos(invoker,target,false,true,false,true,'focusing back on invoker keeps full interest'); checkPseudos(invoker,target,true,true,'focusing back on invoker keeps full interest');
await focusOn(unrelated); await focusOn(unrelated);
checkPseudos(invoker,target,false,false,false,false,'focusing unrelated loses interest'); checkPseudos(invoker,target,false,false,'focusing unrelated loses interest');
await do_cleanup(); await do_cleanup();
},'With full interest, contents are keyboard focusable'); },'Contents of target popover are keyboard focusable');
promise_test(async (t) => { promise_test(async (t) => {
checkPseudos(invoker,target,false,false,false,false,'initial'); checkPseudos(invoker,target,false,false,'initial');
await focusOn(invoker); await focusOn(invoker);
checkPseudos(invoker,target,true,true,true,true,'focusing invoker shows partial interest'); checkPseudos(invoker,target,true,true,'focusing invoker shows interest');
invoker.setAttribute('style',`interest-delay: 10000s`); invoker.setAttribute('style',`interest-delay: 10000s`);
await sendLoseInterestHotkey(); await sendLoseInterestHotkey();
checkPseudos(invoker,target,false,false,false,false,'Hot key loses interest immediately (no delays)'); checkPseudos(invoker,target,false,false,'Hot key loses interest immediately (no delays)');
await do_cleanup(); await do_cleanup();
},`Lose interest hotkey works`); },`Lose interest hotkey works`);
promise_test(async (t) => { promise_test(async (t) => {
checkPseudos(invoker,target,false,false,false,false,'initial'); checkPseudos(invoker,target,false,false,'initial');
await focusOn(invoker); await focusOn(invoker);
checkPseudos(invoker,target,true,true,true,true,'focusing invoker shows partial interest'); checkPseudos(invoker,target,true,true,'focusing invoker shows interest');
invoker.setAttribute('style',`interest-delay: 10000s`); invoker.setAttribute('style',`interest-delay: 10000s`);
target.hidePopover(); target.hidePopover();
checkPseudos(invoker,target,false,false,false,false,'closing the popover loses interest'); checkPseudos(invoker,target,false,false,'closing the popover loses interest');
assert_equals(document.activeElement,invoker,'focus does not move'); assert_equals(document.activeElement,invoker,'focus does not move');
await do_cleanup(); await do_cleanup();
},'Closing the target popover loses interest, without any delays (keyboard activation)'); },'Closing the target popover loses interest, without any delays (keyboard activation)');
promise_test(async (t) => { promise_test(async (t) => {
checkPseudos(invoker,target,false,false,false,false,'initial'); checkPseudos(invoker,target,false,false,'initial');
await hoverOver(invoker); await hoverOver(invoker);
checkPseudos(invoker,target,false,true,false,true,'hovering invoker shows full interest (and not partial interest)'); checkPseudos(invoker,target,true,true,'hovering invoker shows full interest');
invoker.setAttribute('style',`interest-delay: 10000s`); invoker.setAttribute('style',`interest-delay: 10000s`);
target.hidePopover(); target.hidePopover();
checkPseudos(invoker,target,false,false,false,false,'closing the popover loses interest'); checkPseudos(invoker,target,false,false,'closing the popover loses interest');
await do_cleanup(); await do_cleanup();
},'Closing the target popover loses interest, without any delays (mouse activation)'); },'Closing the target popover loses interest, without any delays (mouse activation)');
@ -199,27 +143,23 @@ const invokerDelayMs = 100; // The CSS delay setting.
const hoverWaitTime = 200; // How long to wait to cover the delay for sure. const hoverWaitTime = 200; // How long to wait to cover the delay for sure.
promise_test(async (t) => { promise_test(async (t) => {
invoker.setAttribute('style',`interest-delay: ${invokerDelayMs}ms`); invoker.setAttribute('style',`interest-delay: ${invokerDelayMs}ms`);
checkPseudos(invoker,target,false,false,false,false,'initial'); checkPseudos(invoker,target,false,false,'initial');
const token1 = await mouseOverAndRecord(t,invoker); const token1 = await mouseOverAndRecord(t,invoker);
const immediate_result = invoker.matches(':has-interest') || const immediate_result = invoker.matches(':has-interest') ||
invoker.matches(':has-partial-interest') || target.matches(':target-of-interest');
target.matches(':target-of-interest') ||
target.matches(':target-of-partial-interest');
if (msSinceMouseOver(token1) < invokerDelayMs) { if (msSinceMouseOver(token1) < invokerDelayMs) {
assert_false(immediate_result,'No pseudos should match before the show delay elapses'); assert_false(immediate_result,'No pseudos should match before the show delay elapses');
} }
await waitForHoverTime(hoverWaitTime); await waitForHoverTime(hoverWaitTime);
checkPseudos(invoker,target,false,true,false,true,'full interest pseudos (but not partial interest) should match after hover delay'); checkPseudos(invoker,target,true,true,'pseudos should match after hover delay');
const token2 = await mouseOverAndRecord(t,unrelated); const token2 = await mouseOverAndRecord(t,unrelated);
const immediate_result2 = invoker.matches(':has-interest') && const immediate_result2 = invoker.matches(':has-interest') &&
!invoker.matches(':has-partial-interest') && target.matches(':target-of-interest');
target.matches(':target-of-interest') &&
!target.matches(':target-of-partial-interest');
if (msSinceMouseOver(token2) < invokerDelayMs) { if (msSinceMouseOver(token2) < invokerDelayMs) {
assert_true(immediate_result2,'all pseudos should still represent full interest before the hide delay elapses'); assert_true(immediate_result2,'all pseudos should still match before the hide delay elapses');
} }
await waitForHoverTime(hoverWaitTime); await waitForHoverTime(hoverWaitTime);
checkPseudos(invoker,target,false,false,false,false,'no pseudos should match after de-hover delay'); checkPseudos(invoker,target,false,false,'no pseudos should match after de-hover delay');
await do_cleanup(); await do_cleanup();
},'The pseudo classes only match after delays, once interest is shown'); },'The pseudo classes only match after delays, once interest is shown');
</script> </script>

View file

@ -135,14 +135,3 @@ async function sendLoseInterestHotkey() {
.send(); .send();
await waitForRender(); await waitForRender();
} }
async function sendShowInterestHotkey() {
const kAlt = "\uE00A";
const kArrowUp = '\uE013';
await new test_driver.Actions()
.keyDown(kAlt)
.keyDown(kArrowUp)
.keyUp(kArrowUp)
.keyUp(kAlt)
.send();
await waitForRender();
}

View file

@ -18,9 +18,8 @@
worker.postMessage(''); worker.postMessage('');
}); });
assert_equals(navigationId.length, 0, assert_equals(navigationId, 0, '0 indicates the absence of a navigation id.');
'Navigation id of performance entries created by a worker should be empty.'); }, 'Navigation id of performance entries created by workers should be 0.');
}, 'Navigation id of performance entries created by workers should be empty');
</script> </script>
</body> </body>

View file

@ -0,0 +1,10 @@
<!doctype html>
<body>
<svg>
<filter id="crash" x="0" y="0" width="400px" height="400px">
<feColorMatrix in="SourceGraphic" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0"></feColorMatrix>
<feGaussianBlur stdDeviation="4"></feGaussianBlur>
</filter>
<rect width="100" height="100" filter="url(#crash)"/>
</svg>
</body>

Binary file not shown.

View file

@ -0,0 +1,32 @@
<!doctype html>
<title>Reuse Wasm loaded as classic script</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
'use strict';
setup({allow_uncaught_exception: true});
promise_test(t => {
return new Promise((resolve, reject) => {
window.addEventListener('test_finished', resolve);
});
});
</script>
<!-- This should throw, but browsers should be able to handle the subsequent
module import properly.
This test is for Chromium https://crbug.com/425682456 while other browsers
should also pass the test. The crossorigin attribute is added to make
Chromium's Blink MemoryCache to use the same underlying Resource for the
classic script here and as the Wasm module below. -->
<script crossorigin src="./resources/exported-names.wasm"></script>
<script type=module>
import source exportedNamesSource from "./resources/exported-names.wasm";
assert_true(exportedNamesSource instanceof WebAssembly.Module);
assert_array_equals(WebAssembly.Module.exports(exportedNamesSource).map(({ name }) => name).sort(),
["func", "glob", "mem", "tab"]);
window.dispatchEvent(new Event('test_finished'));
</script>

View file

@ -0,0 +1,18 @@
<!doctype html>
<title>Import a Wasm module that cannot be encoded in UTF-8</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script type=module>
setup({ single_test: true });
// Tests that the browser can properly handle Wasm binaries that cannot be
// encoded as UTF-8 strings.
import source nonUtf8 from "./resources/non-UTF8.wasm";
assert_true(nonUtf8 instanceof WebAssembly.Module);
assert_array_equals(WebAssembly.Module.exports(nonUtf8).map(({ name }) => name), ["f"]);
done();
</script>

View file

@ -1,33 +1,23 @@
<!doctype html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>k-rate AudioParams with inputs for DynamicsCompressorNode</title> <title>k-rate AudioParams with inputs for DynamicsCompressorNode</title>
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/webaudio/resources/audit.js"></script>
<script src="/webaudio/resources/audit-util.js"></script>
</head> </head>
<body> <body>
<script> <script>
let audit = Audit.createTaskRunner(); // Fairly arbitrary sampleRate and somewhat duration
// Fairly abitrary sampleRate and somewhat duration
const sampleRate = 48000; const sampleRate = 48000;
const testDuration = 0.25; const testDuration = 0.25;
['attack', 'knee', 'ratio', 'release', 'threshold'].forEach(param => { ['attack', 'knee', 'ratio', 'release', 'threshold'].forEach(paramName => {
audit.define( promise_test(async () => {
{label: param, description: `Dynamics compressor ${param}`}, await doTest({prefix: paramName, paramName: paramName});
async (task, should) => { }, `Verify k-rate '${paramName}' with input on DynamicsCompressorNode`);
await doTest(should, {prefix: task.label, paramName: param});
task.done();
});
}); });
audit.run(); async function doTest(options) {
async function doTest(should, options) {
// Test k-rate automation of DynamicsCompressorNode with connected // Test k-rate automation of DynamicsCompressorNode with connected
// input. // input.
// //
@ -47,98 +37,67 @@
// prefix - prefix to use for the messages. // prefix - prefix to use for the messages.
// paramName - Name of the AudioParam to be tested // paramName - Name of the AudioParam to be tested
let {prefix, paramName} = options; const {prefix, paramName} = options;
let context = new OfflineAudioContext({ const context = new OfflineAudioContext({
numberOfChannels: 2, numberOfChannels: 2,
sampleRate: sampleRate, sampleRate: sampleRate,
length: testDuration * sampleRate length: testDuration * sampleRate
}); });
let merger = new ChannelMergerNode( const merger = new ChannelMergerNode(
context, {numberOfInputs: context.destination.channelCount}); context, {numberOfInputs: context.destination.channelCount});
merger.connect(context.destination); merger.connect(context.destination);
// Use an oscillator for the source. Pretty arbitrary parameters. // Use an oscillator for the source. Pretty arbitrary parameters.
let src = const src = new OscillatorNode(context, {
new OscillatorNode(context, {type: 'sawtooth', frequency: 440}); type: 'sawtooth',
frequency: 440
});
// Create the reference and test nodes. // Create the reference and test nodes.
let refNode; let refNode = new DynamicsCompressorNode(context);
let tstNode;
should( const tstOptions = {};
() => refNode = new DynamicsCompressorNode(context),
`${prefix}: refNode = new DynamicsCompressorNode(context)`)
.notThrow();
let tstOptions = {};
tstOptions[paramName] = refNode[paramName].minValue; tstOptions[paramName] = refNode[paramName].minValue;
should(
() => tstNode = new DynamicsCompressorNode(context, tstOptions),
`${prefix}: tstNode = new DynamicsCompressorNode(context, ${
JSON.stringify(tstOptions)})`)
.notThrow();
let tstNode = new DynamicsCompressorNode(context, tstOptions);
// Automate the AudioParam of the reference node with a linear ramp // Automate the AudioParam of the reference node with a linear ramp
should( refNode[paramName].setValueAtTime(refNode[paramName].minValue, 0);
() => refNode[paramName].setValueAtTime( refNode[paramName].linearRampToValueAtTime(
refNode[paramName].minValue, 0), refNode[paramName].maxValue, testDuration);
`${prefix}: refNode[${paramName}].setValueAtTime(refNode[${
paramName}].minValue, 0)`)
.notThrow();
should( // Create the input node and automate it so that its output, when added
() => refNode[paramName].linearRampToValueAtTime( // to the intrinsic value of the AudioParam, matches the automation
refNode[paramName].maxValue, testDuration), // on the reference node.
`${prefix}: refNode[${paramName}].linearRampToValueAtTime(refNode[${ //
paramName}].minValue, ${testDuration})`) // We need to do it this way because the ratio AudioParam has a nominal
.notThrow(); // range of [1, 20], so we can't just set the value to 0.
let mod = new ConstantSourceNode(context, {offset: 0});
const endValue =
// Create the input node and automate it so that it's output when added
// to the intrinsic value of the AudioParam we get the same values as
// the automations on the ference node. We need to do it this way
// because the ratio AudioParam has a nominal range of [1, 20] so we
// can't just set the value to 0, which is what we'd normally do.
let mod;
should(
() => mod = new ConstantSourceNode(context, {offset: 0}),
`${prefix}: mod = new ConstantSourceNode(context, {offset: 0})`)
.notThrow();
let endValue =
refNode[paramName].maxValue - refNode[paramName].minValue; refNode[paramName].maxValue - refNode[paramName].minValue;
should(
() => mod.offset.setValueAtTime(0, 0),
`${prefix}: mod.offset.setValueAtTime(0, 0)`)
.notThrow();
should(
() => mod.offset.linearRampToValueAtTime(endValue, testDuration),
`${prefix}: mod.offset.linearRampToValueAtTime(${endValue}, ${
testDuration})`)
.notThrow();
// Connect up everything. mod.offset.setValueAtTime(0, 0);
should( mod.offset.linearRampToValueAtTime(endValue, testDuration);
() => mod.connect(tstNode[paramName]), mod.connect(tstNode[paramName]);
`${prefix}: mod.connect(tstNode[${paramName}])`)
.notThrow();
src.connect(refNode).connect(merger, 0, 0); src.connect(refNode).connect(merger, 0, 0);
src.connect(tstNode).connect(merger, 0, 1); src.connect(tstNode).connect(merger, 0, 1);
// Go!
src.start(); src.start();
mod.start(); mod.start();
const buffer = await context.startRendering(); const buffer = await context.startRendering();
let expected = buffer.getChannelData(0); const expected = buffer.getChannelData(0);
let actual = buffer.getChannelData(1); const actual = buffer.getChannelData(1);
// The expected and actual results must be EXACTLY the same. for (let i = 0; i < expected.length; ++i) {
should(actual, `k-rate ${paramName} AudioParam with input`) assert_equals(
.beCloseToArray(expected, {absoluteThreshold: 0}); actual[i], expected[i],
`${prefix}: Sample[${i}] must match exactly`);
}
} }
</script> </script>
</body> </body>

View file

@ -0,0 +1,33 @@
import pytest
import webdriver.bidi.error as error
pytestmark = pytest.mark.asyncio
async def test_when_browsingcontext_recreated(
bidi_session, wait_for_future_safe, inline
):
new_tab = await bidi_session.browsing_context.create(type_hint="tab")
page = inline("<div>foo</div>")
await bidi_session.browsing_context.navigate(
context=new_tab["context"], url=page, wait="complete"
)
printed_future = await bidi_session.send_command(
"browsingContext.print",
{
"context": new_tab["context"],
},
)
await bidi_session.browsing_context.close(context=new_tab["context"])
# Closing the browsing context for printing may leave the print-preview
# window open. Make sure that creating a new tab doesnt reference this
# window, which could cause failures.
await bidi_session.browsing_context.create(type_hint="tab")
with pytest.raises(error.UnknownErrorException):
await wait_for_future_safe(printed_future)