Auto merge of #26427 - servo-wpt-sync:wpt_update_05-05-2020, r=jdm

Sync WPT with upstream (05-05-2020)

Automated downstream sync of changes from upstream as of 05-05-2020.
[no-wpt-sync]
r? @servo-wpt-sync
This commit is contained in:
bors-servo 2020-05-05 11:05:22 -04:00 committed by GitHub
commit a237e41b89
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
119 changed files with 2700 additions and 284 deletions

View file

@ -4,7 +4,7 @@
expected: TIMEOUT expected: TIMEOUT
[Opening a blob URL in a new window immediately before revoking it works.] [Opening a blob URL in a new window immediately before revoking it works.]
expected: FAIL expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in an iframe.] [Fetching a blob URL immediately before revoking it works in an iframe.]
expected: FAIL expected: FAIL

View file

@ -14,6 +14,9 @@
[Object.prototype.toString applied after nulling the prototype] [Object.prototype.toString applied after nulling the prototype]
expected: FAIL expected: FAIL
[Object.prototype.toString applied to a null-prototype instance]
expected: FAIL
[class-string-iterator-prototype-object.any.worker.html] [class-string-iterator-prototype-object.any.worker.html]
[Object.prototype.toString] [Object.prototype.toString]
@ -31,3 +34,6 @@
[Object.prototype.toString applied after nulling the prototype] [Object.prototype.toString applied after nulling the prototype]
expected: FAIL expected: FAIL
[Object.prototype.toString applied to a null-prototype instance]
expected: FAIL

View file

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

View file

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

View file

@ -1,2 +1,2 @@
[mix-blend-mode-animation.html] [mix-blend-mode-animation.html]
expected: FAIL expected: TIMEOUT

View file

@ -23,3 +23,15 @@
[e.style['text-decoration-thickness'\] = "-10px" should set the property value] [e.style['text-decoration-thickness'\] = "-10px" should set the property value]
expected: FAIL expected: FAIL
[e.style['text-decoration-thickness'\] = "calc(100% - 40em)" should set the property value]
expected: FAIL
[e.style['text-decoration-thickness'\] = "10%" should set the property value]
expected: FAIL
[e.style['text-decoration-thickness'\] = "-27%" should set the property value]
expected: FAIL
[e.style['text-decoration-thickness'\] = "calc(40% - 20px)" should set the property value]
expected: FAIL

View file

@ -2,3 +2,6 @@
[Hit test intersecting scaled box] [Hit test intersecting scaled box]
expected: FAIL expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -0,0 +1,22 @@
[Document-getAnimations.tentative.html]
[CSS Transitions targetting (pseudo-)elements should have correct order after sorting]
expected: FAIL
[getAnimations for CSS Transitions]
expected: FAIL
[Transitions are not returned after they have finished]
expected: FAIL
[CSS Transitions targetting (pseudo-)elements should have correct order after sorting (::marker)]
expected: FAIL
[getAnimations for non-animated content]
expected: FAIL
[getAnimations for CSS Transitions sort by property name]
expected: FAIL
[getAnimations for CSS Transitions sort by transition generation]
expected: FAIL

View file

@ -0,0 +1,28 @@
[css-variable-change-style-001.html]
[Test changing 'color' value to become a css variable]
expected: FAIL
[Test declaration changes on 'color' as variable]
expected: FAIL
[Avoid masking differences on 'color' due to declaration changes]
expected: FAIL
[Test declaration changes on 'white-space' as variable]
expected: FAIL
[Test declaration changes on 'background-color' as variable]
expected: FAIL
[Test changing 'white-space' value to become a css variable]
expected: FAIL
[Test changing 'background-color' value to become a css variable]
expected: FAIL
[Avoid masking differences on 'background-color' due to declaration changes]
expected: FAIL
[Avoid masking differences on 'white-space' due to declaration changes]
expected: FAIL

View file

@ -0,0 +1,10 @@
[css-variable-change-style-002.html]
[Declaration changes on 'color' propagate to all variable references]
expected: FAIL
[Declaration changes on 'background-color' propagate to all variable references]
expected: FAIL
[Declaration changes on 'white-space' propagate to all variable references]
expected: FAIL

View file

@ -8,6 +8,3 @@
[throws if handleEvent is thruthy and not callable] [throws if handleEvent is thruthy and not callable]
expected: FAIL expected: FAIL
[looks up handleEvent method on every event dispatch]
expected: FAIL

View file

@ -318,24 +318,21 @@
[<iframe>: separate response Content-Type: text/html */*] [<iframe>: separate response Content-Type: text/html */*]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" text/plain] [<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*] [<iframe>: combined response Content-Type: text/html */*]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*] [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain] [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL expected: FAIL

View file

@ -56,3 +56,6 @@
[separate text/javascript x/x] [separate text/javascript x/x]
expected: FAIL expected: FAIL
[separate text/javascript ]
expected: FAIL

View file

@ -11,9 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] [X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff] [X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
expected: FAIL
[Content-Type-Options%3A%20nosniff]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

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

View file

@ -0,0 +1,2 @@
[drawImage-with-src-rect.tentative.html]
expected: FAIL

View file

@ -1,16 +1,20 @@
[supported-elements.html] [supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus] [Contenteditable element should support autofocus]
expected: FAIL expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped] [Host element with delegatesFocus including no focusable descendants should be skipped]
expected: FAIL expected: NOTRUN
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: FAIL expected: TIMEOUT
[Area element should support autofocus] [Area element should support autofocus]
expected: FAIL expected: NOTRUN
[Host element with delegatesFocus should support autofocus] [Host element with delegatesFocus should support autofocus]
expected: FAIL expected: NOTRUN
[Non-HTMLElement should not support autofocus]
expected: NOTRUN

View file

@ -1,5 +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: TIMEOUT expected: FAIL

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_escaping-3.html] [iframe_sandbox_popups_escaping-3.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,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html] [iframe_sandbox_popups_nonescaping-1.html]
expected: TIMEOUT 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: NOTRUN expected: NOTRUN

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-2.html] [iframe_sandbox_popups_nonescaping-2.html]
expected: TIMEOUT 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: NOTRUN expected: NOTRUN

View file

@ -1,5 +1,4 @@
[iframe_sandbox_popups_nonescaping-3.html] [iframe_sandbox_popups_nonescaping-3.html]
expected: TIMEOUT
[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: NOTRUN expected: FAIL

View file

@ -0,0 +1,2 @@
[image-compositing-change.html]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[historical.window.html]
[invalid event is only supported for form controls]
expected: FAIL

View file

@ -0,0 +1,34 @@
[k-rate-dynamics-compressor-connections.html]
[X release: refNode = new DynamicsCompressorNode(context) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
expected: FAIL
[X attack: refNode = new DynamicsCompressorNode(context) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
expected: FAIL
[Executing "release"]
expected: FAIL
[X ratio: refNode = new DynamicsCompressorNode(context) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
expected: FAIL
[Executing "threshold"]
expected: FAIL
[# AUDIT TASK RUNNER FINISHED: 5 out of 5 tasks were failed.]
expected: FAIL
[Executing "ratio"]
expected: FAIL
[Executing "knee"]
expected: FAIL
[Executing "attack"]
expected: FAIL
[X knee: refNode = new DynamicsCompressorNode(context) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
expected: FAIL
[X threshold: refNode = new DynamicsCompressorNode(context) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
expected: FAIL

View file

@ -1,7 +1,8 @@
[shared-worker-in-data-url-context.window.html] [shared-worker-in-data-url-context.window.html]
expected: TIMEOUT
[Create a shared worker in a data url frame] [Create a shared worker in a data url frame]
expected: FAIL expected: FAIL
[Create a data url shared worker in a data url frame] [Create a data url shared worker in a data url frame]
expected: FAIL expected: TIMEOUT

View file

@ -7,7 +7,7 @@
expected: FAIL expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.] [Opening a blob URL in a new window immediately before revoking it works.]
expected: FAIL expected: TIMEOUT
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.] [Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: TIMEOUT expected: TIMEOUT

View file

@ -10250,6 +10250,20 @@
] ]
}, },
"css-pseudo": { "css-pseudo": {
"grammar-error-002-manual.html": [
"3cec3df0adb41f5a7345458dee3090175f85f285",
[
null,
{}
]
],
"grammar-error-003-manual.html": [
"876a7d5565dc08740bc63964828964136ab8bc62",
[
null,
{}
]
],
"selection-text-shadow-006-manual.html": [ "selection-text-shadow-006-manual.html": [
"57c9ad67d17bd7a3a37acd86bef43989c45d9480", "57c9ad67d17bd7a3a37acd86bef43989c45d9480",
[ [
@ -158838,6 +158852,45 @@
{} {}
] ]
], ],
"cascade-highlight-001.html": [
"b7d294c6b9762a09f32baae84d4d1665178b667a",
[
null,
[
[
"/css/css-pseudo/cascade-highlight-001-ref.html",
"=="
]
],
{}
]
],
"cascade-highlight-002.html": [
"cf13f1c533c36e71ef68077746030fb9c611a1dd",
[
null,
[
[
"/css/css-pseudo/cascade-highlight-001-ref.html",
"=="
]
],
{}
]
],
"cascade-highlight-004.html": [
"d1b614fe949530f58a4786871027822f416abd5e",
[
null,
[
[
"/css/css-pseudo/cascade-highlight-004-ref.html",
"=="
]
],
{}
]
],
"first-letter-001.html": [ "first-letter-001.html": [
"afe1f9b60391b5fb8ca0b222345b869c899208a1", "afe1f9b60391b5fb8ca0b222345b869c899208a1",
[ [
@ -159176,6 +159229,32 @@
{} {}
] ]
], ],
"highlight-z-index-001.html": [
"f81d25ceb9d2e4199ad80f827bd27b34013701fc",
[
null,
[
[
"/css/css-pseudo/highlight-z-index-001-ref.html",
"=="
]
],
{}
]
],
"highlight-z-index-002.html": [
"692984d863232270b31ca38fca8cc16252d196c9",
[
null,
[
[
"/css/css-pseudo/highlight-z-index-002-ref.html",
"=="
]
],
{}
]
],
"marker-and-other-pseudo-elements.html": [ "marker-and-other-pseudo-elements.html": [
"f393db58fe8a9acd9e52494c4cea56b18c636535", "f393db58fe8a9acd9e52494c4cea56b18c636535",
[ [
@ -228251,6 +228330,35 @@
], ],
{} {}
] ]
],
"drawImage-with-src-rect.tentative.html": [
"260f96e5cac13e800762ce55db08e36838f85abc",
[
null,
[
[
"/html/canvas/element/drawing-images-to-the-canvas/image-orientation/reference/drawImage-with-src-rect-ref.html",
"=="
]
],
{
"fuzzy": [
[
null,
[
[
30,
30
],
[
100,
100
]
]
]
]
}
]
] ]
} }
}, },
@ -232033,6 +232141,19 @@
{} {}
] ]
], ],
"image-compositing-change.html": [
"592720a82a266c72a507a8651a0dd85ab428663a",
[
null,
[
[
"/html/semantics/embedded-content/the-img-element/image-compositing-change-ref.html",
"=="
]
],
{}
]
],
"image-loading-lazy-slow-aspect-ratio.html": [ "image-loading-lazy-slow-aspect-ratio.html": [
"2d302970cab98fa13cd5653c025003286efb7b29", "2d302970cab98fa13cd5653c025003286efb7b29",
[ [
@ -299144,6 +299265,14 @@
"ae3222595453ec46cf48810cb2f276126897bac6", "ae3222595453ec46cf48810cb2f276126897bac6",
[] []
], ],
"cascade-highlight-001-ref.html": [
"aaebc77ca997db470355161f4e4813624e18adcc",
[]
],
"cascade-highlight-004-ref.html": [
"7cca053e681993aa71f14738c76d4f66d8e235ad",
[]
],
"first-letter-001-ref.html": [ "first-letter-001-ref.html": [
"f5af1227aa2e90fe0782c320060c5e448a529420", "f5af1227aa2e90fe0782c320060c5e448a529420",
[] []
@ -299228,6 +299357,14 @@
"ecdb308f2f426af4f2763fabb30f7244f42fcf62", "ecdb308f2f426af4f2763fabb30f7244f42fcf62",
[] []
], ],
"highlight-z-index-001-ref.html": [
"0e9f9c252b2244f7ba0a33aaccf9cf0c12420e4c",
[]
],
"highlight-z-index-002-ref.html": [
"652c8d9d924402da341a019af190513db21771fd",
[]
],
"marker-and-other-pseudo-elements-ref.html": [ "marker-and-other-pseudo-elements-ref.html": [
"796acbf75980cd62d30ade419359bda8c666b12e", "796acbf75980cd62d30ade419359bda8c666b12e",
[] []
@ -315285,7 +315422,7 @@
[] []
], ],
"testharness-api.md": [ "testharness-api.md": [
"bb855b1723890c809539294159bb815ea1356f25", "8160ca298ed3dcac1fbb2f9c3153e27260d758c1",
[] []
], ],
"testharness-tutorial.md": [ "testharness-tutorial.md": [
@ -321437,6 +321574,10 @@
"drawImage-from-element-swap-width-height-ref.html": [ "drawImage-from-element-swap-width-height-ref.html": [
"21f0f88b881d748c8a22986caf2f78b770c80c76", "21f0f88b881d748c8a22986caf2f78b770c80c76",
[] []
],
"drawImage-with-src-rect-ref.html": [
"d59dd2d9fd77a83ec02f87edd1aca2b7d1717604",
[]
] ]
} }
} }
@ -328592,6 +328733,10 @@
"2fb0255609adc25a3394ae3edbd75ce4a43cb06d", "2fb0255609adc25a3394ae3edbd75ce4a43cb06d",
[] []
], ],
"image-compositing-change-ref.html": [
"ea80d8b545ff978775ebcff54b3083520bed8334",
[]
],
"image-loading-lazy-slow-aspect-ratio-ref.html": [ "image-loading-lazy-slow-aspect-ratio-ref.html": [
"6de01a9b3bbf19567555af2524f8950abdfb2d81", "6de01a9b3bbf19567555af2524f8950abdfb2d81",
[] []
@ -328627,6 +328772,10 @@
] ]
}, },
"resources": { "resources": {
"blue-10.png": [
"62949e08d87dfcdc0987eaef67692c7a1c16aa50",
[]
],
"cat.jpg": [ "cat.jpg": [
"a4f14f54d60e592f3ca8b44360931898602ba6fe", "a4f14f54d60e592f3ca8b44360931898602ba6fe",
[] []
@ -332548,6 +332697,10 @@
"ee7988c551f6429eea2b929af083ad30cbd5c73d", "ee7988c551f6429eea2b929af083ad30cbd5c73d",
[] []
], ],
"test-adapter.js": [
"7a3d2c20b831824e609ee4326ef15a93d868b334",
[]
],
"util.js": [ "util.js": [
"2ef971ddb79166bbf8c6593c4d57ca3a5feca83b", "2ef971ddb79166bbf8c6593c4d57ca3a5feca83b",
[] []
@ -332595,7 +332748,7 @@
] ]
}, },
"lint.ignore": [ "lint.ignore": [
"5f793cb6f3ec885017eeaf4cd7b4074d93e4d605", "acdeddbff3935e919bc582bdbdb1af1d6693f26d",
[] []
], ],
"loading": { "loading": {
@ -334491,13 +334644,33 @@
"ea3f6b335c7620acf59f546fd48484bf624ccb38", "ea3f6b335c7620acf59f546fd48484bf624ccb38",
[] []
], ],
"parent-yes-child1-no-child2-yes-children-different.sub.https.html.headers": [
"ea3f6b335c7620acf59f546fd48484bf624ccb38",
[]
],
"parent-yes-child1-no-child2-yes-children-same.sub.https.html.headers": [
"ea3f6b335c7620acf59f546fd48484bf624ccb38",
[]
],
"parent-yes-child1-yes-child2-no-children-same.sub.https.html.headers": [
"ea3f6b335c7620acf59f546fd48484bf624ccb38",
[]
],
"parent-yes-child1-yes-child2-yes-children-different.sub.https.html.headers": [
"ea3f6b335c7620acf59f546fd48484bf624ccb38",
[]
],
"parent-yes-child1-yes-child2-yes-children-same.sub.https.html.headers": [
"ea3f6b335c7620acf59f546fd48484bf624ccb38",
[]
],
"resources": { "resources": {
"helpers.mjs": [ "helpers.mjs": [
"e088ffb4e9034216c356366fcc25b18cbe60406a", "fcef1b7e74f4d99995405d2602cc5e08a3fbddb6",
[] []
], ],
"send-origin-isolation-header.py": [ "send-origin-isolation-header.py": [
"8654b087dfa0a859c5f29886e0208eb8f5c4af15", "1a39740f64f83d5e7d7a3f0fc39eb1a01fdc714a",
[] []
] ]
} }
@ -337864,7 +338037,7 @@
[] []
], ],
"testharness.js": [ "testharness.js": [
"68d3cc70c465befab5c43c62e0f2d31674129190", "360ed5d845b000deb8e3d58649a188eb9a861731",
[] []
], ],
"testharness.js.headers": [ "testharness.js.headers": [
@ -348115,7 +348288,7 @@
[] []
], ],
"firefox.py": [ "firefox.py": [
"f60185eb25f2e3140562dde5d96624f7081e4571", "09e2764ce37ebf0c3fd5fece2e8ef37f654101fd",
[] []
], ],
"firefox_android.py": [ "firefox_android.py": [
@ -348817,6 +348990,10 @@
"8d0f25058d49205155b84d1619f06a3a7d14cf5a", "8d0f25058d49205155b84d1619f06a3a7d14cf5a",
[] []
], ],
"test_request.py": [
"869d3d4604409411984cb49fcd40eb7e971b3c52",
[]
],
"test_stash.py": [ "test_stash.py": [
"31af1558b0cc5c046843e0e96569db42c467cf22", "31af1558b0cc5c046843e0e96569db42c467cf22",
[] []
@ -348852,7 +349029,7 @@
[] []
], ],
"request.py": [ "request.py": [
"a80bc0c8300acfcf766512b89ecfee338bac2295", "89d52a9817edb0f609c3d4c1c9453dde1a149643",
[] []
], ],
"response.py": [ "response.py": [
@ -366432,7 +366609,7 @@
] ]
], ],
"class-string-iterator-prototype-object.any.js": [ "class-string-iterator-prototype-object.any.js": [
"2185ae0bb7bac6aec4d69c9cbf364eb4754427bd", "f878eb7b35b0834accbfd24ddc7d0557334e094f",
[ [
"WebIDL/ecmascript-binding/class-string-iterator-prototype-object.any.html", "WebIDL/ecmascript-binding/class-string-iterator-prototype-object.any.html",
{} {}
@ -367210,7 +367387,7 @@
] ]
], ],
"idlharness.https.any.js": [ "idlharness.https.any.js": [
"f9744c8f944fcefe5a6a21e9a7644cf88644c173", "61f517fdc7980a8b1666f6a19003cea4f3a29b34",
[ [
"background-fetch/idlharness.https.any.html", "background-fetch/idlharness.https.any.html",
{ {
@ -367226,8 +367403,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
], ],
[ [
@ -367245,8 +367427,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
], ],
[ [
@ -367264,8 +367451,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
], ],
[ [
@ -367283,8 +367475,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
] ]
], ],
@ -368986,7 +369183,7 @@
] ]
], ],
"idlharness.tentative.https.window.js": [ "idlharness.tentative.https.window.js": [
"f4e6d9586966b160811b5da0006a99d9abcb8a9f", "a632060e20aefd43a2c6b976e891062ad0c2f7b5",
[ [
"bluetooth/idl/idlharness.tentative.https.window.html", "bluetooth/idl/idlharness.tentative.https.window.html",
{ {
@ -368998,8 +369195,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
] ]
] ]
@ -388202,10 +388404,12 @@
}, },
"css-paint-api": { "css-paint-api": {
"idlharness.html": [ "idlharness.html": [
"aad04a17cc4c660084fa196cb85da5d88b8560d4", "5532779d29f46de9382bb9340c6c522adfe89e4e",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
] ]
}, },
@ -388925,6 +389129,13 @@
{} {}
] ]
], ],
"registered-property-change-style-001.html": [
"320b44d82e437218564f544208815048aef5c864",
[
null,
{}
]
],
"registered-property-computation.html": [ "registered-property-computation.html": [
"f03b257246e520bd93055203a5cb27188babc8ca", "f03b257246e520bd93055203a5cb27188babc8ca",
[ [
@ -394593,14 +394804,14 @@
] ]
], ],
"text-decoration-thickness-invalid.html": [ "text-decoration-thickness-invalid.html": [
"656fa3bba2aee70381eb1c0e82e963f9f4bea502", "7934862a1760b4b0e966d62174ccf79d045f8991",
[ [
null, null,
{} {}
] ]
], ],
"text-decoration-thickness-valid.html": [ "text-decoration-thickness-valid.html": [
"d05c892674844691ec23bcad1bf4dbd8ab53981c", "aa279bc7e8717cce29a61cf80d967d7ba1936ee2",
[ [
null, null,
{} {}
@ -395163,7 +395374,7 @@
] ]
], ],
"Document-getAnimations.tentative.html": [ "Document-getAnimations.tentative.html": [
"cd97acfd5ec76c7585d5356c86b3832bb0b7bd37", "a8986d0bdbd35789dc95c090135e19116fd9c45b",
[ [
null, null,
{} {}
@ -397777,7 +397988,7 @@
] ]
], ],
"text-decoration-thickness.html": [ "text-decoration-thickness.html": [
"903ca8603fb882e19c0ecfc6760a64495e6361dd", "dfd923ae7ba27c38893c50bad5b72e5a927bbefa",
[ [
null, null,
{} {}
@ -398898,6 +399109,20 @@
] ]
}, },
"css-variables": { "css-variables": {
"css-variable-change-style-001.html": [
"798c7727a695c70b8cfcb5588a061de29ef3a3f1",
[
null,
{}
]
],
"css-variable-change-style-002.html": [
"9057136ddae5640ec2fc13fb3627729f0f7e5c10",
[
null,
{}
]
],
"test_variable_legal_values.html": [ "test_variable_legal_values.html": [
"1d86c0834ccb1da7965edf56f9a4aefc0a041421", "1d86c0834ccb1da7965edf56f9a4aefc0a041421",
[ [
@ -420436,7 +420661,7 @@
] ]
], ],
"idlharness.window.js": [ "idlharness.window.js": [
"33bbe3c14ffe28d961cc4c71c0b367028ff8d2df", "724da3c80179e0aa1cf3875125fd02e2df23905e",
[ [
"feature-policy/idlharness.window.html", "feature-policy/idlharness.window.html",
{ {
@ -420448,8 +420673,13 @@
[ [
"script", "script",
"/resources/idlharness.js" "/resources/idlharness.js"
],
[
"timeout",
"long"
] ]
] ],
"timeout": "long"
} }
] ]
], ],
@ -453536,6 +453766,20 @@
{} {}
] ]
], ],
"historical.window.js": [
"fcc47d90f668437ea072495e8cd41a37c58a1ad7",
[
"html/semantics/forms/form-submission-0/historical.window.html",
{
"script_metadata": [
[
"script",
"./resources/targetted-form.js"
]
]
}
]
],
"implicit-submission.optional.html": [ "implicit-submission.optional.html": [
"109d3b901a53537e9ae2fb17f84d25d4a764b2e2", "109d3b901a53537e9ae2fb17f84d25d4a764b2e2",
[ [
@ -462805,34 +463049,6 @@
{} {}
] ]
], ],
"precondition-in-promise.html": [
"b2a32facad07150258cae3af857c841eb6e2cfae",
[
null,
{}
]
],
"precondition-in-setup.html": [
"071f140afb6a4b3244dc6793c2ff304d80df4891",
[
null,
{}
]
],
"precondition-without-setup.html": [
"12188dbdaeb516c8f67cedf78b0989720c81fdac",
[
null,
{}
]
],
"precondition.html": [
"2e6ddc1d02cc77d4068c1bb2997780f6a03d579d",
[
null,
{}
]
],
"timeout.html": [ "timeout.html": [
"29ff348a9af645ff59d860e91af9534e64a606c5", "29ff348a9af645ff59d860e91af9534e64a606c5",
[ [
@ -464495,7 +464711,7 @@
] ]
], ],
"simple-block-movement.html": [ "simple-block-movement.html": [
"0f9257e27ce5d553d8176f084e537e47b331416e", "533f85a68e68949a52772792b915b04696340a4e",
[ [
null, null,
{} {}
@ -470658,6 +470874,27 @@
{} {}
] ]
], ],
"parent-no-child1-no-child2-yes-children-different.sub.https.html": [
"3c879391a4571398a4254a15906411d5e844c596",
[
null,
{}
]
],
"parent-no-child1-no-child2-yes-children-same.sub.https.html": [
"5d9161a852f71695922b49015257846150b6408b",
[
null,
{}
]
],
"parent-no-child1-yes-child2-no-children-same.sub.https.html": [
"d289c8821aebf767c485967b5455b1e5badb3f1a",
[
null,
{}
]
],
"parent-yes-child-no-same.sub.https.html": [ "parent-yes-child-no-same.sub.https.html": [
"a1b9e4e3f5a230e8e49d3552d338d48f029d07cd", "a1b9e4e3f5a230e8e49d3552d338d48f029d07cd",
[ [
@ -470685,6 +470922,41 @@
null, null,
{} {}
] ]
],
"parent-yes-child1-no-child2-yes-children-different.sub.https.html": [
"6b09b36a586b5cc6c8f306f47afce99709359252",
[
null,
{}
]
],
"parent-yes-child1-no-child2-yes-children-same.sub.https.html": [
"b3616a604b9c4e1288e1da8ddce3e9b3a224ba6c",
[
null,
{}
]
],
"parent-yes-child1-yes-child2-no-children-same.sub.https.html": [
"7e351aaf14a008d9788e3fcfd481ca19138be2f0",
[
null,
{}
]
],
"parent-yes-child1-yes-child2-yes-children-different.sub.https.html": [
"f7c7ea81459999fc05a25f335fdfb409a05e0fa9",
[
null,
{}
]
],
"parent-yes-child1-yes-child2-yes-children-same.sub.https.html": [
"ca5528e5096081e1789167ca306d1c97d7ae3214",
[
null,
{}
]
] ]
}, },
"origin-policy": { "origin-policy": {
@ -489060,7 +489332,7 @@
] ]
], ],
"slots-imperative-api-slotchange.tentative.html": [ "slots-imperative-api-slotchange.tentative.html": [
"a2f951a9ff60c020cb9e8be1cc7e4069eab75c78", "1f4ef1531a2b678e016b170244ec47422ff49481",
[ [
null, null,
{} {}
@ -501776,7 +502048,7 @@
] ]
], ],
"urlsearchparams-constructor.any.js": [ "urlsearchparams-constructor.any.js": [
"f7989f70ea0071bc7180e0a23f10aef55335734e", "8d855a4fd4d01cb34732a7e3b3ef2da5f639a82b",
[ [
"url/urlsearchparams-constructor.any.html", "url/urlsearchparams-constructor.any.html",
{} {}
@ -505180,7 +505452,7 @@
] ]
], ],
"commitStyles.html": [ "commitStyles.html": [
"19461844b7c68b42d98135eb3c8bdac0814bba60", "f16412fbcf70ba5ef9cb49f8e0647e98de23a596",
[ [
null, null,
{} {}
@ -507394,6 +507666,13 @@
{} {}
] ]
], ],
"k-rate-dynamics-compressor-connections.html": [
"c1755cd1559474a464024a2b0344c5dd1d95e803",
[
null,
{}
]
],
"k-rate-gain.html": [ "k-rate-gain.html": [
"887d9f78db8a79b0aae96b9cdf818cde7b33aa6c", "887d9f78db8a79b0aae96b9cdf818cde7b33aa6c",
[ [
@ -509779,7 +510058,7 @@
] ]
], ],
"RTCDataChannel-close.html": [ "RTCDataChannel-close.html": [
"a417d66d9aaeda3cf551a981aac05a0732d183e2", "b8feea332ad71ff046ceb4b4590ca2becd2919a6",
[ [
null, null,
{ {

View file

@ -14,6 +14,9 @@
[Object.prototype.toString applied after nulling the prototype] [Object.prototype.toString applied after nulling the prototype]
expected: FAIL expected: FAIL
[Object.prototype.toString applied to a null-prototype instance]
expected: FAIL
[class-string-iterator-prototype-object.any.worker.html] [class-string-iterator-prototype-object.any.worker.html]
[Object.prototype.toString] [Object.prototype.toString]
@ -31,3 +34,6 @@
[Object.prototype.toString applied after nulling the prototype] [Object.prototype.toString applied after nulling the prototype]
expected: FAIL expected: FAIL
[Object.prototype.toString applied to a null-prototype instance]
expected: FAIL

View file

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

View file

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

View file

@ -1,2 +1,2 @@
[mix-blend-mode-animation.html] [mix-blend-mode-animation.html]
expected: FAIL expected: TIMEOUT

View file

@ -23,3 +23,15 @@
[e.style['text-decoration-thickness'\] = "-10px" should set the property value] [e.style['text-decoration-thickness'\] = "-10px" should set the property value]
expected: FAIL expected: FAIL
[e.style['text-decoration-thickness'\] = "calc(100% - 40em)" should set the property value]
expected: FAIL
[e.style['text-decoration-thickness'\] = "10%" should set the property value]
expected: FAIL
[e.style['text-decoration-thickness'\] = "-27%" should set the property value]
expected: FAIL
[e.style['text-decoration-thickness'\] = "calc(40% - 20px)" should set the property value]
expected: FAIL

View file

@ -2,3 +2,6 @@
[Hit test intersecting scaled box] [Hit test intersecting scaled box]
expected: FAIL expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -14,3 +14,9 @@
[CSS Transitions targetting (pseudo-)elements should have correct order after sorting (::marker)] [CSS Transitions targetting (pseudo-)elements should have correct order after sorting (::marker)]
expected: FAIL expected: FAIL
[getAnimations for CSS Transitions sort by property name]
expected: FAIL
[getAnimations for CSS Transitions sort by transition generation]
expected: FAIL

View file

@ -0,0 +1,28 @@
[css-variable-change-style-001.html]
[Test changing 'color' value to become a css variable]
expected: FAIL
[Test declaration changes on 'color' as variable]
expected: FAIL
[Avoid masking differences on 'color' due to declaration changes]
expected: FAIL
[Test declaration changes on 'white-space' as variable]
expected: FAIL
[Test declaration changes on 'background-color' as variable]
expected: FAIL
[Test changing 'white-space' value to become a css variable]
expected: FAIL
[Test changing 'background-color' value to become a css variable]
expected: FAIL
[Avoid masking differences on 'background-color' due to declaration changes]
expected: FAIL
[Avoid masking differences on 'white-space' due to declaration changes]
expected: FAIL

View file

@ -0,0 +1,10 @@
[css-variable-change-style-002.html]
[Declaration changes on 'color' propagate to all variable references]
expected: FAIL
[Declaration changes on 'background-color' propagate to all variable references]
expected: FAIL
[Declaration changes on 'white-space' propagate to all variable references]
expected: FAIL

View file

@ -8,6 +8,3 @@
[throws if handleEvent is thruthy and not callable] [throws if handleEvent is thruthy and not callable]
expected: FAIL expected: FAIL
[looks up handleEvent method on every event dispatch]
expected: FAIL

View file

@ -318,24 +318,21 @@
[<iframe>: separate response Content-Type: text/html */*] [<iframe>: separate response Content-Type: text/html */*]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" text/plain] [<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*] [<iframe>: combined response Content-Type: text/html */*]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*] [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain] [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL expected: FAIL

View file

@ -56,3 +56,6 @@
[separate text/javascript x/x] [separate text/javascript x/x]
expected: FAIL expected: FAIL
[separate text/javascript ]
expected: FAIL

View file

@ -11,9 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] [X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff] [X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
expected: FAIL
[Content-Type-Options%3A%20nosniff]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

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

View file

@ -0,0 +1,2 @@
[drawImage-with-src-rect.tentative.html]
expected: FAIL

View file

@ -1,16 +1,20 @@
[supported-elements.html] [supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus] [Contenteditable element should support autofocus]
expected: FAIL expected: FAIL
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: FAIL expected: TIMEOUT
[Host element with delegatesFocus including no focusable descendants should be skipped] [Host element with delegatesFocus including no focusable descendants should be skipped]
expected: FAIL expected: NOTRUN
[Area element should support autofocus] [Area element should support autofocus]
expected: FAIL expected: NOTRUN
[Host element with delegatesFocus should support autofocus] [Host element with delegatesFocus should support autofocus]
expected: FAIL expected: NOTRUN
[Non-HTMLElement should not support autofocus]
expected: NOTRUN

View file

@ -1,5 +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: TIMEOUT expected: FAIL

View file

@ -1,5 +1,6 @@
[iframe_sandbox_popups_escaping-3.html] [iframe_sandbox_popups_escaping-3.html]
type: testharness type: testharness
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,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-1.html] [iframe_sandbox_popups_nonescaping-1.html]
type: testharness type: testharness
expected: TIMEOUT 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: NOTRUN expected: NOTRUN

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-2.html] [iframe_sandbox_popups_nonescaping-2.html]
type: testharness type: testharness
expected: TIMEOUT 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: NOTRUN expected: NOTRUN

View file

@ -1,6 +1,5 @@
[iframe_sandbox_popups_nonescaping-3.html] [iframe_sandbox_popups_nonescaping-3.html]
type: testharness type: testharness
expected: TIMEOUT
[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: NOTRUN expected: FAIL

View file

@ -0,0 +1,2 @@
[image-compositing-change.html]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[historical.window.html]
[invalid event is only supported for form controls]
expected: FAIL

View file

@ -0,0 +1,34 @@
[k-rate-dynamics-compressor-connections.html]
[X release: refNode = new DynamicsCompressorNode(context) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
expected: FAIL
[X attack: refNode = new DynamicsCompressorNode(context) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
expected: FAIL
[Executing "release"]
expected: FAIL
[X ratio: refNode = new DynamicsCompressorNode(context) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
expected: FAIL
[Executing "threshold"]
expected: FAIL
[# AUDIT TASK RUNNER FINISHED: 5 out of 5 tasks were failed.]
expected: FAIL
[Executing "ratio"]
expected: FAIL
[Executing "knee"]
expected: FAIL
[Executing "attack"]
expected: FAIL
[X knee: refNode = new DynamicsCompressorNode(context) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
expected: FAIL
[X threshold: refNode = new DynamicsCompressorNode(context) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
expected: FAIL

View file

@ -1,7 +1,8 @@
[shared-worker-in-data-url-context.window.html] [shared-worker-in-data-url-context.window.html]
expected: TIMEOUT
[Create a shared worker in a data url frame] [Create a shared worker in a data url frame]
expected: FAIL expected: FAIL
[Create a data url shared worker in a data url frame] [Create a data url shared worker in a data url frame]
expected: FAIL expected: TIMEOUT

View file

@ -10988,7 +10988,7 @@
[] []
], ],
"interfaces.js": [ "interfaces.js": [
"1b841f053a231bf78d29ffe68e59455363c61502", "f62df6b9c75332a2918b18ec70acfc5d7a795ac0",
[] []
], ],
"nested_asap_script.js": [ "nested_asap_script.js": [

View file

@ -59,7 +59,7 @@ function test_interfaces(interfaceNamesInGlobalScope) {
var sources = [ var sources = [
ecmaGlobals, ecmaGlobals,
interfaceNamesInGlobalScope, interfaceNamesInGlobalScope,
["AssertionError", "EventWatcher", "PreconditionFailedError"], ["AssertionError", "EventWatcher", "OptionalFeatureUnsupportedError"],
]; ];
var interfaceMap = {}; var interfaceMap = {};

View file

@ -31,6 +31,14 @@ test(t => {
// was no @@toStringTag, it would fall back to a magic class string. This tests that the bug is // was no @@toStringTag, it would fall back to a magic class string. This tests that the bug is
// fixed. // fixed.
test(() => {
const iterator = (new URLSearchParams()).keys();
assert_equals(Object.prototype.toString.call(iterator), "[object URLSearchParams Iterator]");
Object.setPrototypeOf(iterator, null);
assert_equals(Object.prototype.toString.call(iterator), "[object Object]");
}, "Object.prototype.toString applied to a null-prototype instance");
test(t => { test(t => {
const proto = Object.getPrototypeOf(iteratorProto); const proto = Object.getPrototypeOf(iteratorProto);
t.add_cleanup(() => { t.add_cleanup(() => {
@ -39,7 +47,7 @@ test(t => {
Object.setPrototypeOf(iteratorProto, null); Object.setPrototypeOf(iteratorProto, null);
assert_equals(Object.prototype.toString.call(iteratorProto), "[object Object]"); assert_equals(Object.prototype.toString.call(iteratorProto), "[object URLSearchParams Iterator]");
}, "Object.prototype.toString applied after nulling the prototype"); }, "Object.prototype.toString applied after nulling the prototype");
// This test must be last. // This test must be last.

View file

@ -1,6 +1,7 @@
// META: global=window,worker // META: global=window,worker
// META: script=/resources/WebIDLParser.js // META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js // META: script=/resources/idlharness.js
// META: timeout=long
'use strict'; 'use strict';

View file

@ -1,5 +1,6 @@
// META: script=/resources/WebIDLParser.js // META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js // META: script=/resources/idlharness.js
// META: timeout=long
'use strict'; 'use strict';

View file

@ -1,5 +1,6 @@
<!doctype html> <!doctype html>
<title>CSS Painting API IDL tests</title> <title>CSS Painting API IDL tests</title>
<meta name="timeout" content="long">
<link rel="help" href="https://drafts.css-houdini.org/css-paint-api/"> <link rel="help" href="https://drafts.css-houdini.org/css-paint-api/">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>

View file

@ -0,0 +1,50 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Variables Test: Style changes on registered properties using variables</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="http://www.w3.org/TR/css-variables-1/#using-variables">
<meta name="assert" content="A change in the custom property declaration must be propagated to all the descendants">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="outer">
<div id="inbetween">
<div id="inner"></div>
</div>
</div>
<script>
"use strict";
test( function () {
outer.style.cssText = '';
inbetween.style.cssText = '';
inner.style.cssText = 'color: var(--color1)';
let initialValue = getComputedStyle(inner).getPropertyValue('color');
assert_equals(initialValue, "rgb(0, 0, 0)", "Initial value");
inbetween.style.cssText = 'color: green';
let inheritedValue = getComputedStyle(inner).getPropertyValue('color');
assert_equals(inheritedValue, "rgb(0, 128, 0)", "Inherited value");
CSS.registerProperty({name: '--color1', syntax: '<color>', initialValue: 'red', inherits: true});
let actualValue = getComputedStyle(inner).getPropertyValue('color');
assert_equals(actualValue, "rgb(255, 0, 0)", "Resolved value");
}, "New registered property declaration");
test( function () {
outer.style.cssText = '';
inbetween.style.cssText = '';
inner.style.cssText = 'color: var(--color2)';
let initialValue = getComputedStyle(inner).getPropertyValue('color');
assert_equals(initialValue, "rgb(0, 0, 0)", "Initial value");
outer.style.cssText = '--color2: blue';
inbetween.style.cssText = 'color: green';
let resolvedValue = getComputedStyle(inner).getPropertyValue('color');
assert_equals(resolvedValue, "rgb(0, 0, 255)", "Resolved value");
outer.style.cssText = '';
CSS.registerProperty({name: '--color2', syntax: '<color>', initialValue: 'red', inherits: true});
let actualValue = getComputedStyle(inner).getPropertyValue('color');
assert_equals(actualValue, "rgb(255, 0, 0)", "Resolved value");
}, "Registered property overrides a previous declaration ");
</script>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Reftest Reference</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<style>
div
{
background-color: green;
color: yellow;
display: inline;
font-size: 300%;
}
</style>
<p>Test passes if background color of "Text sample" is green and <strong>not red</strong>.
<div>Text sample</div>

View file

@ -0,0 +1,67 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Pseudo-Elements Test: higher specificity of selectors (Example 11)</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-cascade">
<link rel="match" href="cascade-highlight-001-ref.html">
<!--
Example 11 is
https://www.w3.org/TR/css-pseudo-4/#example-c35bf49a
-->
<meta content="" name="flags">
<meta name="assert" content="This test is an adaptation (or modified version) of Example 11 (#example-c35bf49a). The 'div &gt; span::selection' selector has an higher specificity than the 'span::selection' selector.">
<style>
div
{
font-size: 300%;
}
div::selection
{
background-color: green;
color: yellow;
}
div > span::selection
/*
count the number of element names and pseudo-elements in the selector (= d)
a=0 b=0 c=0 d=3 -> specificity = 0,0,0,3
*/
{
background-color: green;
}
span::selection
/*
count the number of element names and pseudo-elements in the selector (= d)
a=0 b=0 c=0 d=2 -> specificity = 0,0,0,2
*/
{
background-color: red;
color: yellow;
}
</style>
<script>
function startTest()
{
var targetRange = document.createRange();
/* We first create an empty range */
targetRange.selectNodeContents(document.getElementById("test"));
/* Then we set the range boundaries to the children of div#test */
window.getSelection().addRange(targetRange);
/* Finally, we now select such range of content */
}
</script>
<body onload="startTest();">
<p>Test passes if background color of "Text sample" is green and <strong>not red</strong>.
<div id="test">Text <span>sample</span></div>

View file

@ -0,0 +1,54 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Pseudo-Elements Test: tag selector missing (Example 12)</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-cascade">
<link rel="match" href="cascade-highlight-001-ref.html">
<!--
Example 12 is
https://www.w3.org/TR/css-pseudo-4/#example-97480f68
-->
<meta content="" name="flags">
<meta name="assert" content="This test is an adaptation (or modified version) of Example 12 (#example-97480f68). In this test, &ltspan&gt; element's ::selection matches the ::selection { background-color: green; } rule and not the div#test::selection rule because '*' is implied when a tag selector is missing.">
<style>
div
{
font-size: 300%;
}
::selection
{
background-color: green;
color: yellow;
}
div#test::selection
{
background-color: red;
color: black;
}
</style>
<script>
function startTest()
{
var targetRange = document.createRange();
/* We first create an empty range */
targetRange.selectNodeContents(document.getElementById("test"));
/* Then we set the range boundaries to the children of div#test */
window.getSelection().addRange(targetRange);
/* Finally, we now select such range of content */
}
</script>
<body onload="startTest();">
<p>Test passes if background color of "Text sample" is green and <strong>not red</strong>.
<div id="test"><span>Text sample</span></div>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Reftest Reference</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<style>
div
{
background-color: yellow;
color: green;
display: inline;
font-size: 300%;
}
</style>
<p>Test passes if "Text sample" is green and if its background color is yellow.
<div>Text sample</div>

View file

@ -0,0 +1,52 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Pseudo-Elements Test: inheritance of selection highlight colors from its parent element</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-cascade">
<link rel="match" href="cascade-highlight-004-ref.html">
<meta content="" name="flags">
<meta name="assert" content="In this test, 'color' and 'background-color' have not been given a value for the span element. Since its parent element has an highlight pseudo-element, then these values should be inherited. Therefore the span element should be green on a yellow background and should not use the OS default selection highlight color values.">
<!--
When any supported property is not given a value by the
cascade, its value is determined by inheritance from the
corresponding highlight pseudo-element of its originating
element's parent element (regardless of whether that property
is an inherited property).
https://www.w3.org/TR/css-pseudo-4/#highlight-cascade
-->
<style>
div
{
font-size: 300%;
}
div::selection
{
background-color: yellow;
color: green;
}
</style>
<script>
function startTest()
{
var targetRange = document.createRange();
/* We first create an empty range */
targetRange.selectNodeContents(document.getElementById("test"));
/* Then we set the range boundaries to the children of div#test */
window.getSelection().addRange(targetRange);
/* Finally, we now select such range of content */
}
</script>
<body onload="startTest();">
<p>Test passes if "Text sample" is green and if its background color is yellow.
<div id="test"><span>Text sample</span></div>

View file

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>CSS Pseudo-Elements Test: highlighting of grammar error</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
<meta content="" name="flags">
<style>
input
{
font-size: 300%;
}
input::grammar-error
{
color: maroon;
text-decoration: underline dotted red;
}
</style>
<p>PREREQUISITE: User agent needs to have an enabled and capable grammar error module. If it does not, then this test does not apply to such user agent.
<p>Test passes if each glyph of "thing" is maroon and if "thing" is underlined with a red dotted line.
<div><input type="text" value="Many thing can happen"></div>

View file

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>CSS Pseudo-Elements Test: highlighting of grammar error</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
<meta content="" name="flags">
<style>
textarea
{
font-size: 300%;
}
textarea::grammar-error
{
color: maroon;
text-decoration: underline dotted red;
}
</style>
<p>PREREQUISITE: User agent needs to have an enabled and capable grammar error module. If it does not, then this test does not apply to such user agent.
<p>Test passes if each glyph of "thing" is maroon and if "thing" is underlined with a red dotted line.
<div><textarea cols="20" rows="2">Many thing can happen</textarea></div>

View file

@ -0,0 +1,24 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Reftest Reference</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<style>
div
{
background-color: yellow;
color: green;
display: inline-block;
font-size: 48px;
line-height: 1.25; /* computes to 60px */
position: relative;
top: 1.25em;
}
</style>
<p>Test passes if "Text sample" is green and if its background color is yellow.
<div>Test sample</div>

View file

@ -0,0 +1,55 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Pseudo-Elements Test: highlight pseudo-element drawn below positioned element</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-painting">
<link rel="match" href="highlight-z-index-001-ref.html">
<meta content="" name="flags">
<meta name="assert" content="This test checks that the ::selection pseudo-element must be drawn below a relatively positioned element. In this test, such relatively positioned element is a preceding sibling element.">
<style>
div
{
font-size: 48px;
line-height: 1.25; /* computes to 60px */
}
div#rel-positioned-sibling
{
background-color: yellow;
color: green;
display: inline-block;
position: relative;
top: 1.25em;
}
div#test::selection
{
background-color: red;
color: yellow;
}
</style>
<script>
function startTest()
{
var targetRange = document.createRange();
/* We first create an empty range */
targetRange.selectNodeContents(document.getElementById("test"));
/* Then we set the range boundaries to the children of div#test */
window.getSelection().addRange(targetRange);
/* Finally, we now select such range of content */
}
</script>
<body onload="startTest();">
<p>Test passes if "Text sample" is green and if its background color is yellow.
<div id="rel-positioned-sibling">Test sample</div>
<div id="test">Test sample</div>

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Reftest Reference</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<style>
div
{
background-color: yellow;
color: green;
display: inline-block;
font-size: 48px;
line-height: 1.25; /* computes to 60px */
}
</style>
<p>Test passes if "Text sample" is green and if its background color is yellow.
<div>Test sample</div>

View file

@ -0,0 +1,53 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Pseudo-Elements Test: highlight pseudo-element drawn below positioned element</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-painting">
<link rel="match" href="highlight-z-index-002-ref.html">
<meta content="" name="flags">
<meta name="assert" content="This test checks that the ::selection pseudo-element must be drawn below an absolutely positioned element. In this test, such absolutely positioned element is a preceding sibling element.">
<style>
div
{
font-size: 48px;
line-height: 1.25; /* computes to 60px */
}
div#abs-positioned-sibling
{
background-color: yellow;
color: green;
position: absolute;
}
div#test::selection
{
background-color: red;
color: yellow;
}
</style>
<script>
function startTest()
{
var targetRange = document.createRange();
/* We first create an empty range */
targetRange.selectNodeContents(document.getElementById("test"));
/* Then we set the range boundaries to the children of div#test */
window.getSelection().addRange(targetRange);
/* Finally, we now select such range of content */
}
</script>
<body onload="startTest();">
<p>Test passes if "Text sample" is green and if its background color is yellow.
<div id="abs-positioned-sibling">Test sample</div>
<div id="test">Test sample</div>

View file

@ -18,10 +18,6 @@ test_invalid_value("text-decoration-thickness", "60002020");
test_invalid_value("text-decoration-thickness", "!@#$%^&"); test_invalid_value("text-decoration-thickness", "!@#$%^&");
test_invalid_value("text-decoration-thickness", "10e2"); test_invalid_value("text-decoration-thickness", "10e2");
test_invalid_value("text-decoration-thickness", "from font"); test_invalid_value("text-decoration-thickness", "from font");
test_invalid_value("text-decoration-thickness", "10%");
test_invalid_value("text-decoration-thickness", "-27%");
test_invalid_value("text-decoration-thickness", "calc(40% - 20px)");
test_invalid_value("text-decoration-thickness", "calc(100% - 40em)");
</script> </script>
</body> </body>
</html> </html>

View file

@ -19,6 +19,10 @@ test_valid_value("text-decoration-thickness", "-49em");
test_valid_value("text-decoration-thickness", "53px"); test_valid_value("text-decoration-thickness", "53px");
test_valid_value("text-decoration-thickness", "calc(40em - 10px)"); test_valid_value("text-decoration-thickness", "calc(40em - 10px)");
test_valid_value("text-decoration-thickness", "calc(-50em + 13px)"); test_valid_value("text-decoration-thickness", "calc(-50em + 13px)");
test_valid_value("text-decoration-thickness", "10%");
test_valid_value("text-decoration-thickness", "-27%");
test_valid_value("text-decoration-thickness", "calc(40% - 20px)");
test_valid_value("text-decoration-thickness", "calc(100% - 40em)");
</script> </script>
</body> </body>
</html> </html>

View file

@ -35,6 +35,56 @@ test(t => {
'getAnimations returns no running CSS Transitions'); 'getAnimations returns no running CSS Transitions');
}, 'getAnimations for CSS Transitions'); }, 'getAnimations for CSS Transitions');
test(t => {
const div = addDiv(t);
// Add a couple of transitions
div.style.top = '0px';
div.style.left = '0px';
getComputedStyle(div).transitionProperty;
div.style.transition = 'all 100s';
div.style.top = '100px';
div.style.left = '100px';
var animations = document.getAnimations();
assert_equals(animations.length, 2,
'getAnimations returns two running CSS Transitions');
assert_equals(animations[0].transitionProperty, 'left');
assert_equals(animations[1].transitionProperty, 'top');
}, 'getAnimations for CSS Transitions sort by property name');
promise_test(async t => {
const div = addDiv(t);
// Add a couple of transitions
div.style.top = '0px';
div.style.left = '0px';
getComputedStyle(div).transitionProperty;
div.style.transition = 'all 100s';
div.style.top = '100px';
div.style.left = '100px';
var animations = document.getAnimations();
assert_equals(animations.length, 2,
'getAnimations returns two running CSS Transitions');
assert_equals(animations[0].transitionProperty, 'left');
assert_equals(animations[1].transitionProperty, 'top');
await waitForAnimationFrames(2);
div.style.opacity = '1'
div.style.transition = 'all 100s';
div.style.opacity = '0'
animations = document.getAnimations();
assert_equals(animations.length, 3,
'getAnimations returns two running CSS Transitions');
assert_equals(animations[0].transitionProperty, 'left', '1');
assert_equals(animations[1].transitionProperty, 'top', '2');
assert_equals(animations[2].transitionProperty, 'opacity', '3');
}, 'getAnimations for CSS Transitions sort by transition generation');
function pseudoTest(description, testMarkerPseudos) { function pseudoTest(description, testMarkerPseudos) {
test(t => { test(t => {
// Create two divs with the following arrangement: // Create two divs with the following arrangement:

View file

@ -17,7 +17,9 @@ runPropertyTests('text-decoration-thickness', [
{ syntax: 'auto' }, { syntax: 'auto' },
{ {
syntax: '<length>', syntax: '<length>',
specified: assert_is_equal_with_range_handling },
{
syntax: '<percentage>',
}, },
]); ]);

View file

@ -0,0 +1,96 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Variables Test: Style changes on properties using variables</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="http://www.w3.org/TR/css-variables-1/#using-variables">
<meta name="assert" content="A change in the custom property declaration must be propagated to all the descendants">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
.inner {
color: var(--x);
background-color: var(--x);
white-space: var(--x);
}
</style>
<div id="outer">
<div id="inbetween">
<div id="inner"></div>
</div>
</div>
<script>
"use strict";
let colorValues = [
{ Id: "case1", outer: "red", inbetween: "", expected: "rgb(255, 0, 0)" },
{ Id: "case2", outer: "red", inbetween: "blue", expected: "rgb(0, 0, 255)" },
{ Id: "case3", outer: "green", inbetween: "blue", expected: "rgb(0, 0, 255)" },
{ Id: "case4", outer: "green", inbetween: "", expected: "rgb(0, 128, 0)" },
{ Id: "case5", outer: "green", inbetween: "red", expected: "rgb(255, 0, 0)" },
{ Id: "case6", outer: "" , inbetween: "red", expected: "rgb(255, 0, 0)" },
{ Id: "case7", outer: "blue" , inbetween: "" , expected: "rgb(0, 0, 255)" },
];
let whiteSpaceValues = [
{ Id: "case1", outer: "pre", inbetween: "", expected: "pre" },
{ Id: "case2", outer: "pre-wrap", inbetween: "", expected: "pre-wrap" },
{ Id: "case3", outer: "pre-wrap", inbetween: "nowrap", expected: "nowrap" },
{ Id: "case3", outer: "pre-wrap", inbetween: "", expected: "pre-wrap" },
{ Id: "case4", outer: "pre-line", inbetween: "normal", expected: "normal" },
{ Id: "case5", outer: "pre-line", inbetween: "", expected: "pre-line" },
{ Id: "case6", outer: "", inbetween: "pre-wrap", expected: "pre-wrap" },
{ Id: "case7", outer: "", inbetween: "", expected: "normal" },
];
let testcases = [
{ property: "color", values: colorValues, },
{ property: "background-color", values: colorValues, },
{ property: "white-space", values: whiteSpaceValues },
];
function initializeStyles() {
outer.style.cssText = "";
inbetween.style.cssText = "";
inner.style.cssText = "";
}
testcases.forEach(function (testcase) {
test( function () {
initializeStyles();
inner.style.cssText = testcase.property + ': var(--x)';
testcase.values.forEach(function (value) {
outer.style.cssText = "--x:" + value.outer;
inbetween.style.cssText = "--x:" + value.inbetween;
let computedStyle = getComputedStyle(inner);
let actualValue = computedStyle.getPropertyValue(testcase.property);
assert_equals(actualValue, value.expected, value.Id);
});
}, "Test declaration changes on '" + testcase.property + "' as variable");
test( function () {
initializeStyles();
inbetween.style.cssText = testcase.property + ': inherit';
inner.style.cssText = testcase.property + ': inherit';
testcase.values.forEach(function (value) {
outer.style.cssText = "--x:" + value.outer + "; " + testcase.property + ": " + value.outer;
let actualValue = getComputedStyle(inner).getPropertyValue(testcase.property);
let expectedValue = getComputedStyle(outer).getPropertyValue(testcase.property);
assert_equals(actualValue, expectedValue, value.Id);
});
}, "Avoid masking differences on '" + testcase.property + "' due to declaration changes");
test( function () {
initializeStyles();
inbetween.style.cssText = testcase.property + ': inherit';
inner.style.cssText = testcase.property + ': inherit';
let value1 = testcase.values[0];
let value2 = testcase.values[3];
outer.style.cssText = "--x:" + value2.outer + "; " + testcase.property + ": " + value1.outer;
let actualValue = getComputedStyle(inner).getPropertyValue(testcase.property);
assert_equals(actualValue, value1.expected, value1.Id);
inner.style.cssText = testcase.property + ': var(--x)';
actualValue = getComputedStyle(inner).getPropertyValue(testcase.property);
assert_equals(actualValue, value2.expected, value2.Id);
}, "Test changing '" + testcase.property + "' value to become a css variable");
});
</script>

View file

@ -0,0 +1,56 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Variables Test: Style changes on properties using variables</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="http://www.w3.org/TR/css-variables-1/#using-variables">
<meta name="assert" content="A change in the custom property declaration must be propagated to all the descendants">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
.test1 > div > div { color: var(--x); }
.test2 > div > div { background-color: var(--x); }
.test3 > div > div { white-space: var(--x); }
</style>
<div id="outer">
<div>
<div id="inner1"></div>
</div>
<div>
<div id="inner2"></div>
</div>
<div>
<div id="inner3"></div>
</div>
</div>
<script>
"use strict";
let colorValues = [
{ Id: "case1", value: "red", expected: "rgb(255, 0, 0)" },
{ Id: "case2", value: "green", expected: "rgb(0, 128, 0)" },
];
let whiteSpaceValues = [
{ Id: "case1", value: "pre-wrap", expected: "pre-wrap" },
{ Id: "case2", value: "nowrap", expected: "nowrap" },
];
let testcases = [
{ property: "color", className: "test1", values: colorValues, },
{ property: "background-color", className: "test2", values: colorValues, },
{ property: "white-space", className: "test3", values: whiteSpaceValues},
];
testcases.forEach(function (testcase) {
test( function () {
outer.className = testcase.className;
testcase.values.forEach(function (entry) {
document.body.style.cssText = "--x: " + entry.value;
let actualValue = getComputedStyle(inner1).getPropertyValue(testcase.property);
assert_equals(actualValue, entry.expected, entry.Id + "-1");
actualValue = getComputedStyle(inner2).getPropertyValue(testcase.property);
assert_equals(actualValue, entry.expected, entry.Id + "-2");
actualValue = getComputedStyle(inner3).getPropertyValue(testcase.property);
assert_equals(actualValue, entry.expected, entry.Id + "-3");
});
}, "Declaration changes on '" + testcase.property + "' propagate to all variable references");
});
</script>

View file

@ -332,8 +332,8 @@ async_test((t) => {
A failing `assert_implements_optional` call is reported as a status of A failing `assert_implements_optional` call is reported as a status of
`PRECONDITION_FAILED` for the subtest. This unusual status code is a legacy `PRECONDITION_FAILED` for the subtest. This unusual status code is a legacy
leftover from the deprecated `assert_precondition`; see the [RFC that renamed leftover; see the [RFC that introduced
it](https://github.com/web-platform-tests/rfcs/pull/48). `assert_implements_optional`](https://github.com/web-platform-tests/rfcs/pull/48).
`assert_implements_optional` can also be used during test setup. For example: `assert_implements_optional` can also be used during test setup. For example:
@ -904,9 +904,6 @@ asserts that one `assert_func(actual, expected_array_N, extra_arg1, ..., extra_a
allows multiple behaviours. Test authors should not use this method simply to hide allows multiple behaviours. Test authors should not use this method simply to hide
UA bugs. UA bugs.
### **DEPRECATED** `assert_precondition(condition, description)`
Use `assert_implements` or `assert_implements_optional` instead.
## Utility functions ## ## Utility functions ##
### **DEPRECATED** `on_event(object, event, callback)` ### **DEPRECATED** `on_event(object, event, callback)`

View file

@ -1,5 +1,6 @@
// META: script=/resources/WebIDLParser.js // META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js // META: script=/resources/idlharness.js
// META: timeout=long
"use strict"; "use strict";

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>drawImage with image orientation: from-image and a sub-image source rect</title>
<link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
<link rel="match" href="reference/drawImage-with-src-rect-ref.html">
<meta name=fuzzy content="30;100">
<script>
window.onload = () => {
const img = document.getElementById('img-element');
const can = document.getElementById('bitmap-canvas');
can.height = img.height;
can.width = img.width;
can.getContext('2d').drawImage(img, 40, 20, 50, 25, 0, 0, can.width, can.height);
};
</script>
</head>
<body>
<img id="img-element" src="../../../css/css-images/image-orientation/support/exif-orientation-3-lr.jpg">
<canvas id="bitmap-canvas"></canvas>
</body>
</html>

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>reference for drawImage with image orientation: from-image and a sub-image source rect</title>
<link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
<script>
window.onload = () => {
const img = document.getElementById('img-element');
const can = document.getElementById('bitmap-canvas');
can.height = img.height;
can.width = img.width;
can.getContext('2d').drawImage(img, 40, 20, 50, 25, 0, 0, can.width, can.height);
};
</script>
</head>
<body>
<img id="img-element" src="../../../../css/css-images/image-orientation/support/exif-orientation-3-lr-pre-rotated.jpg">
<canvas id="bitmap-canvas"></canvas>
</body>
</html>

View file

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html>
<style>
#change {
height:75px;
width:75px;
}
</style>
<img id="change" src="/images/green-16x16.png"></img>
<img src="/images/green-16x16.png"></img>

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<html class="reftest-wait">
<title>Composited images correctly re-raster when the image and bounds change</title>
<meta charset="utf-8">
<link rel="match" href="image-compositing-change-ref.html"/>
<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-img-element">
<style>
#change {
will-change:transform;
height:426px; width:426px;
}
</style>
<img id="change" src="image.png"></img>
<img id="original" src="../../../../images/green-16x16.png"></img>
<script>
window.onload = () => {
requestAnimationFrame(() => {
requestAnimationFrame(() => {
let image = document.querySelector('#change');
image.style.width = image.style.height = "75px";
image.src = original.src;
requestAnimationFrame(() => {
document.documentElement.classList.remove("reftest-wait");
});
});
});
}
</script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 B

View file

@ -0,0 +1,19 @@
// META: script=./resources/targetted-form.js
test(t => {
const form = populateForm('<input required><input type=submit>');
t.add_cleanup(() => {
form.previousElementSibling.remove();
form.remove();
});
const submitter = form.querySelector('input[type=submit]');
let invalid = form.querySelector('[required]');
let targets = [];
const listener = e => targets.push(e.target.localName);
form.addEventListener("invalid", t.step_func(listener));
form.oninvalid = t.step_func(listener);
invalid.addEventListener("invalid", t.step_func(listener));
invalid.oninvalid = t.step_func(listener);
submitter.click();
assert_array_equals(targets, ["input", "input"]);
}, "invalid event is only supported for form controls");

View file

@ -1,10 +0,0 @@
<!DOCTYPE html>
<meta charset=utf-8>
<title>Precondition in promise</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
new Promise(() => {
assert_precondition(false);
});
</script>

View file

@ -1,10 +0,0 @@
<!DOCTYPE html>
<meta charset=utf-8>
<title>Precondition in setup</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
setup(() => {
assert_precondition(false);
});
</script>

View file

@ -1,8 +0,0 @@
<!DOCTYPE html>
<meta charset=utf-8>
<title>Precondition without wrapping setup</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
assert_precondition(false);
</script>

View file

@ -1,31 +0,0 @@
<!DOCTYPE html>
<meta charset=utf-8>
<title>Preconditions in tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
test(() => {
assert_precondition(false, 'precondition 1');
}, 'test');
async_test((t) => {
assert_precondition(false, 'precondition 2');
t.done();
}, 'async_test immediate');
async_test((t) => {
t.step_timeout(() => {
assert_precondition(false, 'precondition 3');
t.done();
}, 100);
}, 'async_test after timeout');
promise_test(async () => {
assert_precondition(false, 'precondition 4');
}, 'promise_test immediate');
promise_test(async () => {
await Promise.resolve();
assert_precondition(false, 'precondition 5');
}, 'promise_test after await');
</script>

View file

@ -0,0 +1,5 @@
// Abstracts expectations for reuse in different test frameworks.
cls_expect = (watcher, expectation) => {
assert_equals(watcher.score, expectation.score);
};

View file

@ -2,13 +2,12 @@
<title>Layout Instability: simple block movement is detected</title> <title>Layout Instability: simple block movement is detected</title>
<link rel="help" href="https://wicg.github.io/layout-instability/" /> <link rel="help" href="https://wicg.github.io/layout-instability/" />
<style> <style>
#shifter { position: relative; width: 300px; height: 200px; }
#shifter { position: relative; width: 300px; height: 100px; }
</style> </style>
<div id="shifter"></div> <div id="shifter"></div>
<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="resources/test-adapter.js"></script>
<script src="resources/util.js"></script> <script src="resources/util.js"></script>
<script> <script>
@ -19,15 +18,15 @@ promise_test(async () => {
await waitForAnimationFrames(2); await waitForAnimationFrames(2);
// Modify the position of the div. // Modify the position of the div.
document.querySelector("#shifter").style = "top: 60px"; document.querySelector("#shifter").style = "top: 160px";
// An element of size (300 x 100) has shifted by 60px. // An element of size (300 x 200) has shifted by 160px.
const expectedScore = computeExpectedScore(300 * (100 + 60), 60); const expectedScore = computeExpectedScore(300 * (200 + 160), 160);
// Observer fires after the frame is painted. // Observer fires after the frame is painted.
assert_equals(watcher.score, 0); cls_expect(watcher, {score: 0});
await watcher.promise; await watcher.promise;
assert_equals(watcher.score, expectedScore); cls_expect(watcher, {score: expectedScore});
}, 'Simple block movement.'); }, 'Simple block movement.');
</script> </script>

View file

@ -756,10 +756,3 @@ TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-circul
TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-under-clip-path-crash.html TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-under-clip-path-crash.html
TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-under-defs-crash.html TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-under-defs-crash.html
TESTHARNESS-IN-OTHER-TYPE: svg/svg-in-svg/svg-in-svg-circular-filter-reference-crash.html TESTHARNESS-IN-OTHER-TYPE: svg/svg-in-svg/svg-in-svg-circular-filter-reference-crash.html
# TODO: Temporary inclusions while we deprecate assert_precondition
# https://github.com/web-platform-tests/wpt/issues/21971
ASSERT-PRECONDITION: infrastructure/expected-fail/precondition.html
ASSERT-PRECONDITION: infrastructure/expected-fail/precondition-in-setup.html
ASSERT-PRECONDITION: infrastructure/expected-fail/precondition-in-promise.html
ASSERT-PRECONDITION: resources/testharness.js

View file

@ -0,0 +1,77 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Parent is not isolated, subdomain child 1 is not isolated, different-subdomain child 2 is isolated</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script type="module">
import { insertIframe, sendWasmModule, setBothDocumentDomains,
sendWasmModuleBetween, accessDocumentBetween } from "./resources/helpers.mjs";
let frameWindow1, frameWindow2;
promise_setup(async () => {
// Order of loading should not matter, but we make it sequential to ensure the
// tests are deterministic.
frameWindow1 = await insertIframe("{{hosts[][www]}}");
frameWindow2 = await insertIframe("{{hosts[][www1]}}", "?1");
await setBothDocumentDomains(frameWindow1);
await setBothDocumentDomains(frameWindow2);
});
// Since everybody is different-origin, everyone's requests/non-requests get
// respected.
//
// So, the parent and child 1 end up in the site-keyed agent cluster, and child
// 2 ends up in its own origin-keyed agent cluster.
promise_test(async () => {
const whatHappened = await sendWasmModule(frameWindow1);
assert_equals(whatHappened, "WebAssembly.Module message received");
}, "Parent to child1: message event must occur");
promise_test(async () => {
// Must not throw
frameWindow1.document;
}, "Parent to child1: setting document.domain must give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModule(frameWindow2);
assert_equals(whatHappened, "messageerror");
}, "Parent to child2: messageerror event must occur");
promise_test(async () => {
assert_throws_dom("SecurityError", DOMException, () => {
frameWindow2.document;
});
}, "Parent to child2: setting document.domain must not give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModuleBetween(frameWindow1, 1);
assert_equals(whatHappened, "messageerror");
}, "child1 to child2: messageerror event must occur");
promise_test(async () => {
const whatHappened = await accessDocumentBetween(frameWindow1, 1);
assert_equals(whatHappened, "SecurityError");
}, "child1 to child2: setting document.domain must not give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModuleBetween(frameWindow2, 0);
assert_equals(whatHappened, "messageerror");
}, "child2 to child1: messageerror event must occur");
promise_test(async () => {
const whatHappened = await accessDocumentBetween(frameWindow2, 0);
assert_equals(whatHappened, "SecurityError");
}, "child2 to child1: setting document.domain must not give sync access");
</script>

View file

@ -0,0 +1,75 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Parent is not isolated, subdomain child 1 is not isolated, same-subdomain child 2 is isolated</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script type="module">
import { insertIframe, sendWasmModule, setBothDocumentDomains,
sendWasmModuleBetween, accessDocumentBetween } from "./resources/helpers.mjs";
let frameWindow1, frameWindow2;
promise_setup(async () => {
// Must be sequential, not parallel: frameWindow1 must load first.
frameWindow1 = await insertIframe("{{hosts[][www]}}");
frameWindow2 = await insertIframe("{{hosts[][www]}}", "?1");
await setBothDocumentDomains(frameWindow1);
await setBothDocumentDomains(frameWindow2);
});
// Since they're different-origin, the parent's isolation non-request is
// respected, as is frameWindow1's non-request. frameWindow2 requests isolation
// but is ignored, since frameWindow1 is in the same browsing context group.
//
// So, everyone ends up in the site-keyed agent cluster.
promise_test(async () => {
const whatHappened = await sendWasmModule(frameWindow1);
assert_equals(whatHappened, "WebAssembly.Module message received");
}, "Parent to child1: message event must occur");
promise_test(async () => {
// Must not throw
frameWindow1.document;
}, "Parent to child1: setting document.domain must give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModule(frameWindow2);
assert_equals(whatHappened, "WebAssembly.Module message received");
}, "Parent to child2: message event must occur");
promise_test(async () => {
// Must not throw
frameWindow2.document;
}, "Parent to child2: setting document.domain must give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModuleBetween(frameWindow1, 1);
assert_equals(whatHappened, "WebAssembly.Module message received");
}, "child1 to child2: message event must occur");
promise_test(async () => {
const whatHappened = await accessDocumentBetween(frameWindow1, 1);
assert_equals(whatHappened, "accessed document successfully");
}, "child1 to child2: setting document.domain must give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModuleBetween(frameWindow2, 0);
assert_equals(whatHappened, "WebAssembly.Module message received");
}, "child2 to child1: message event must occur");
promise_test(async () => {
const whatHappened = await accessDocumentBetween(frameWindow2, 0);
assert_equals(whatHappened, "accessed document successfully");
}, "child2 to child1: setting document.domain must give sync access");
</script>

View file

@ -0,0 +1,78 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Parent is not isolated, subdomain child 1 is isolated, same-subdomain child 2 is not isolated</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script type="module">
import { insertIframe, sendWasmModule, setBothDocumentDomains,
sendWasmModuleBetween, accessDocumentBetween } from "./resources/helpers.mjs";
let frameWindow1, frameWindow2;
promise_setup(async () => {
// Must be sequential, not parallel: frameWindow1 must load first.
frameWindow1 = await insertIframe("{{hosts[][www]}}", "?1");
frameWindow2 = await insertIframe("{{hosts[][www]}}");
await setBothDocumentDomains(frameWindow1);
await setBothDocumentDomains(frameWindow2);
});
// Since they're different-origin, the parent's isolation non-request is
// respected, as is frameWindow1's request. frameWindow2's non-request is
// ignored, since frameWindow1 is in the same browsing context group.
//
// So, the parent ends up in the site-keyed agent cluster, and both children end
// up in an origin-keyed agent cluster.
promise_test(async () => {
const whatHappened = await sendWasmModule(frameWindow1);
assert_equals(whatHappened, "messageerror");
}, "Parent to child1: messageerror event must occur");
promise_test(async () => {
assert_throws_dom("SecurityError", DOMException, () => {
frameWindow1.document;
});
}, "Parent to child1: setting document.domain must not give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModule(frameWindow2);
assert_equals(whatHappened, "messageerror");
}, "Parent to child2: messageerror event must occur");
promise_test(async () => {
assert_throws_dom("SecurityError", DOMException, () => {
frameWindow2.document;
});
}, "Parent to child2: setting document.domain must not give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModuleBetween(frameWindow1, 1);
assert_equals(whatHappened, "WebAssembly.Module message received");
}, "child1 to child2: message event must occur");
promise_test(async () => {
const whatHappened = await accessDocumentBetween(frameWindow1, 1);
assert_equals(whatHappened, "accessed document successfully");
}, "child1 to child2: setting document.domain must give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModuleBetween(frameWindow2, 0);
assert_equals(whatHappened, "WebAssembly.Module message received");
}, "child2 to child1: message event must occur");
promise_test(async () => {
const whatHappened = await accessDocumentBetween(frameWindow2, 0);
assert_equals(whatHappened, "accessed document successfully");
}, "child2 to child1: setting document.domain must give sync access");
</script>

View file

@ -0,0 +1,79 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Parent is isolated, subdomain child 1 is not isolated, different-subdomain child 2 is isolated</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script type="module">
import { insertIframe, sendWasmModule, setBothDocumentDomains,
sendWasmModuleBetween, accessDocumentBetween } from "./resources/helpers.mjs";
let frameWindow1, frameWindow2;
promise_setup(async () => {
// Order of loading should not matter, but we make it sequential to ensure the
// tests are deterministic.
frameWindow1 = await insertIframe("{{hosts[][www]}}");
frameWindow2 = await insertIframe("{{hosts[][www1]}}", "?1");
await setBothDocumentDomains(frameWindow1);
await setBothDocumentDomains(frameWindow2);
});
// Since everybody is different-origin, everyone's requests/non-requests get
// respected.
//
// So, the parent ends up in its origin-keyed agent cluster, child 1 ends up in
// the site-keyed agent cluster, and child 2 ends up in a different origin-keyed
// agent cluster.
promise_test(async () => {
const whatHappened = await sendWasmModule(frameWindow1);
assert_equals(whatHappened, "messageerror");
}, "Parent to child1: messageerror event must occur");
promise_test(async () => {
assert_throws_dom("SecurityError", DOMException, () => {
frameWindow1.document;
});
}, "Parent to child1: setting document.domain must not give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModule(frameWindow2);
assert_equals(whatHappened, "messageerror");
}, "Parent to child2: messageerror event must occur");
promise_test(async () => {
assert_throws_dom("SecurityError", DOMException, () => {
frameWindow2.document;
});
}, "Parent to child2: setting document.domain must not give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModuleBetween(frameWindow1, 1);
assert_equals(whatHappened, "messageerror");
}, "child1 to child2: messageerror event must occur");
promise_test(async () => {
const whatHappened = await accessDocumentBetween(frameWindow1, 1);
assert_equals(whatHappened, "SecurityError");
}, "child1 to child2: setting document.domain must not give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModuleBetween(frameWindow2, 0);
assert_equals(whatHappened, "messageerror");
}, "child2 to child1: messageerror event must occur");
promise_test(async () => {
const whatHappened = await accessDocumentBetween(frameWindow2, 0);
assert_equals(whatHappened, "SecurityError");
}, "child2 to child1: setting document.domain must not give sync access");
</script>

View file

@ -0,0 +1,78 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Parent is isolated, subdomain child 1 is not isolated, same-subdomain child 2 is isolated</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script type="module">
import { insertIframe, sendWasmModule, setBothDocumentDomains,
sendWasmModuleBetween, accessDocumentBetween } from "./resources/helpers.mjs";
let frameWindow1, frameWindow2;
promise_setup(async () => {
// Must be sequential, not parallel: frameWindow1 must load first.
frameWindow1 = await insertIframe("{{hosts[][www]}}");
frameWindow2 = await insertIframe("{{hosts[][www]}}", "?1");
await setBothDocumentDomains(frameWindow1);
await setBothDocumentDomains(frameWindow2);
});
// Since they're different-origin, the parent's isolation request is respected,
// as is frameWindow1's non-request. frameWindow2 requests isolation but is
// ignored, since frameWindow1 is in the same browsing context group.
//
// So, the parent ends up in the origin-keyed agent cluster, and both children
// ends up in the site-keyed one.
promise_test(async () => {
const whatHappened = await sendWasmModule(frameWindow1);
assert_equals(whatHappened, "messageerror");
}, "Parent to child1: messageerror event must occur");
promise_test(async () => {
assert_throws_dom("SecurityError", DOMException, () => {
frameWindow1.document;
});
}, "Parent to child1: setting document.domain must not give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModule(frameWindow2);
assert_equals(whatHappened, "messageerror");
}, "Parent to child2: messageerror event must occur");
promise_test(async () => {
assert_throws_dom("SecurityError", DOMException, () => {
frameWindow2.document;
});
}, "Parent to child2: setting document.domain must not give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModuleBetween(frameWindow1, 1);
assert_equals(whatHappened, "WebAssembly.Module message received");
}, "child1 to child2: message event must occur");
promise_test(async () => {
const whatHappened = await accessDocumentBetween(frameWindow1, 1);
assert_equals(whatHappened, "accessed document successfully");
}, "child1 to child2: setting document.domain must give sync access");
promise_test(async () => {
const whatHappened = await sendWasmModuleBetween(frameWindow2, 0);
assert_equals(whatHappened, "WebAssembly.Module message received");
}, "child2 to child1: message event must occur");
promise_test(async () => {
const whatHappened = await accessDocumentBetween(frameWindow2, 0);
assert_equals(whatHappened, "accessed document successfully");
}, "child2 to child1: setting document.domain must give sync access");
</script>

Some files were not shown because too many files have changed in this diff Show more