mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
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:
commit
a237e41b89
119 changed files with 2700 additions and 284 deletions
|
@ -4,7 +4,7 @@
|
|||
expected: TIMEOUT
|
||||
|
||||
[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.]
|
||||
expected: FAIL
|
||||
|
|
|
@ -14,6 +14,9 @@
|
|||
[Object.prototype.toString applied after nulling the prototype]
|
||||
expected: FAIL
|
||||
|
||||
[Object.prototype.toString applied to a null-prototype instance]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[class-string-iterator-prototype-object.any.worker.html]
|
||||
[Object.prototype.toString]
|
||||
|
@ -31,3 +34,6 @@
|
|||
[Object.prototype.toString applied after nulling the prototype]
|
||||
expected: FAIL
|
||||
|
||||
[Object.prototype.toString applied to a null-prototype instance]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
[mix-blend-mode-animation.html]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -23,3 +23,15 @@
|
|||
[e.style['text-decoration-thickness'\] = "-10px" should set the property value]
|
||||
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
|
||||
|
||||
|
|
|
@ -2,3 +2,6 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -8,6 +8,3 @@
|
|||
[throws if handleEvent is thruthy and not callable]
|
||||
expected: FAIL
|
||||
|
||||
[looks up handleEvent method on every event dispatch]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -318,24 +318,21 @@
|
|||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
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]
|
||||
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/plain */*]
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
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
|
||||
|
||||
|
|
|
@ -56,3 +56,6 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,9 +11,6 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
[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
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_4.html]
|
||||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[drawImage-with-src-rect.tentative.html]
|
||||
expected: FAIL
|
|
@ -1,16 +1,20 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Non-HTMLElement should not support autofocus]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[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]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[image-compositing-change.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,4 @@
|
|||
[historical.window.html]
|
||||
[invalid event is only supported for form controls]
|
||||
expected: FAIL
|
||||
|
|
@ -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
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
[shared-worker-in-data-url-context.window.html]
|
||||
expected: TIMEOUT
|
||||
[Create a shared worker in a data url frame]
|
||||
expected: FAIL
|
||||
|
||||
[Create a data url shared worker in a data url frame]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[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.]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -10250,6 +10250,20 @@
|
|||
]
|
||||
},
|
||||
"css-pseudo": {
|
||||
"grammar-error-002-manual.html": [
|
||||
"3cec3df0adb41f5a7345458dee3090175f85f285",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grammar-error-003-manual.html": [
|
||||
"876a7d5565dc08740bc63964828964136ab8bc62",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"selection-text-shadow-006-manual.html": [
|
||||
"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": [
|
||||
"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": [
|
||||
"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": [
|
||||
"2d302970cab98fa13cd5653c025003286efb7b29",
|
||||
[
|
||||
|
@ -299144,6 +299265,14 @@
|
|||
"ae3222595453ec46cf48810cb2f276126897bac6",
|
||||
[]
|
||||
],
|
||||
"cascade-highlight-001-ref.html": [
|
||||
"aaebc77ca997db470355161f4e4813624e18adcc",
|
||||
[]
|
||||
],
|
||||
"cascade-highlight-004-ref.html": [
|
||||
"7cca053e681993aa71f14738c76d4f66d8e235ad",
|
||||
[]
|
||||
],
|
||||
"first-letter-001-ref.html": [
|
||||
"f5af1227aa2e90fe0782c320060c5e448a529420",
|
||||
[]
|
||||
|
@ -299228,6 +299357,14 @@
|
|||
"ecdb308f2f426af4f2763fabb30f7244f42fcf62",
|
||||
[]
|
||||
],
|
||||
"highlight-z-index-001-ref.html": [
|
||||
"0e9f9c252b2244f7ba0a33aaccf9cf0c12420e4c",
|
||||
[]
|
||||
],
|
||||
"highlight-z-index-002-ref.html": [
|
||||
"652c8d9d924402da341a019af190513db21771fd",
|
||||
[]
|
||||
],
|
||||
"marker-and-other-pseudo-elements-ref.html": [
|
||||
"796acbf75980cd62d30ade419359bda8c666b12e",
|
||||
[]
|
||||
|
@ -315285,7 +315422,7 @@
|
|||
[]
|
||||
],
|
||||
"testharness-api.md": [
|
||||
"bb855b1723890c809539294159bb815ea1356f25",
|
||||
"8160ca298ed3dcac1fbb2f9c3153e27260d758c1",
|
||||
[]
|
||||
],
|
||||
"testharness-tutorial.md": [
|
||||
|
@ -321437,6 +321574,10 @@
|
|||
"drawImage-from-element-swap-width-height-ref.html": [
|
||||
"21f0f88b881d748c8a22986caf2f78b770c80c76",
|
||||
[]
|
||||
],
|
||||
"drawImage-with-src-rect-ref.html": [
|
||||
"d59dd2d9fd77a83ec02f87edd1aca2b7d1717604",
|
||||
[]
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -328592,6 +328733,10 @@
|
|||
"2fb0255609adc25a3394ae3edbd75ce4a43cb06d",
|
||||
[]
|
||||
],
|
||||
"image-compositing-change-ref.html": [
|
||||
"ea80d8b545ff978775ebcff54b3083520bed8334",
|
||||
[]
|
||||
],
|
||||
"image-loading-lazy-slow-aspect-ratio-ref.html": [
|
||||
"6de01a9b3bbf19567555af2524f8950abdfb2d81",
|
||||
[]
|
||||
|
@ -328627,6 +328772,10 @@
|
|||
]
|
||||
},
|
||||
"resources": {
|
||||
"blue-10.png": [
|
||||
"62949e08d87dfcdc0987eaef67692c7a1c16aa50",
|
||||
[]
|
||||
],
|
||||
"cat.jpg": [
|
||||
"a4f14f54d60e592f3ca8b44360931898602ba6fe",
|
||||
[]
|
||||
|
@ -332548,6 +332697,10 @@
|
|||
"ee7988c551f6429eea2b929af083ad30cbd5c73d",
|
||||
[]
|
||||
],
|
||||
"test-adapter.js": [
|
||||
"7a3d2c20b831824e609ee4326ef15a93d868b334",
|
||||
[]
|
||||
],
|
||||
"util.js": [
|
||||
"2ef971ddb79166bbf8c6593c4d57ca3a5feca83b",
|
||||
[]
|
||||
|
@ -332595,7 +332748,7 @@
|
|||
]
|
||||
},
|
||||
"lint.ignore": [
|
||||
"5f793cb6f3ec885017eeaf4cd7b4074d93e4d605",
|
||||
"acdeddbff3935e919bc582bdbdb1af1d6693f26d",
|
||||
[]
|
||||
],
|
||||
"loading": {
|
||||
|
@ -334491,13 +334644,33 @@
|
|||
"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": {
|
||||
"helpers.mjs": [
|
||||
"e088ffb4e9034216c356366fcc25b18cbe60406a",
|
||||
"fcef1b7e74f4d99995405d2602cc5e08a3fbddb6",
|
||||
[]
|
||||
],
|
||||
"send-origin-isolation-header.py": [
|
||||
"8654b087dfa0a859c5f29886e0208eb8f5c4af15",
|
||||
"1a39740f64f83d5e7d7a3f0fc39eb1a01fdc714a",
|
||||
[]
|
||||
]
|
||||
}
|
||||
|
@ -337864,7 +338037,7 @@
|
|||
[]
|
||||
],
|
||||
"testharness.js": [
|
||||
"68d3cc70c465befab5c43c62e0f2d31674129190",
|
||||
"360ed5d845b000deb8e3d58649a188eb9a861731",
|
||||
[]
|
||||
],
|
||||
"testharness.js.headers": [
|
||||
|
@ -348115,7 +348288,7 @@
|
|||
[]
|
||||
],
|
||||
"firefox.py": [
|
||||
"f60185eb25f2e3140562dde5d96624f7081e4571",
|
||||
"09e2764ce37ebf0c3fd5fece2e8ef37f654101fd",
|
||||
[]
|
||||
],
|
||||
"firefox_android.py": [
|
||||
|
@ -348817,6 +348990,10 @@
|
|||
"8d0f25058d49205155b84d1619f06a3a7d14cf5a",
|
||||
[]
|
||||
],
|
||||
"test_request.py": [
|
||||
"869d3d4604409411984cb49fcd40eb7e971b3c52",
|
||||
[]
|
||||
],
|
||||
"test_stash.py": [
|
||||
"31af1558b0cc5c046843e0e96569db42c467cf22",
|
||||
[]
|
||||
|
@ -348852,7 +349029,7 @@
|
|||
[]
|
||||
],
|
||||
"request.py": [
|
||||
"a80bc0c8300acfcf766512b89ecfee338bac2295",
|
||||
"89d52a9817edb0f609c3d4c1c9453dde1a149643",
|
||||
[]
|
||||
],
|
||||
"response.py": [
|
||||
|
@ -366432,7 +366609,7 @@
|
|||
]
|
||||
],
|
||||
"class-string-iterator-prototype-object.any.js": [
|
||||
"2185ae0bb7bac6aec4d69c9cbf364eb4754427bd",
|
||||
"f878eb7b35b0834accbfd24ddc7d0557334e094f",
|
||||
[
|
||||
"WebIDL/ecmascript-binding/class-string-iterator-prototype-object.any.html",
|
||||
{}
|
||||
|
@ -367210,7 +367387,7 @@
|
|||
]
|
||||
],
|
||||
"idlharness.https.any.js": [
|
||||
"f9744c8f944fcefe5a6a21e9a7644cf88644c173",
|
||||
"61f517fdc7980a8b1666f6a19003cea4f3a29b34",
|
||||
[
|
||||
"background-fetch/idlharness.https.any.html",
|
||||
{
|
||||
|
@ -367226,8 +367403,13 @@
|
|||
[
|
||||
"script",
|
||||
"/resources/idlharness.js"
|
||||
],
|
||||
[
|
||||
"timeout",
|
||||
"long"
|
||||
]
|
||||
]
|
||||
],
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
|
@ -367245,8 +367427,13 @@
|
|||
[
|
||||
"script",
|
||||
"/resources/idlharness.js"
|
||||
],
|
||||
[
|
||||
"timeout",
|
||||
"long"
|
||||
]
|
||||
]
|
||||
],
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
|
@ -367264,8 +367451,13 @@
|
|||
[
|
||||
"script",
|
||||
"/resources/idlharness.js"
|
||||
],
|
||||
[
|
||||
"timeout",
|
||||
"long"
|
||||
]
|
||||
]
|
||||
],
|
||||
"timeout": "long"
|
||||
}
|
||||
],
|
||||
[
|
||||
|
@ -367283,8 +367475,13 @@
|
|||
[
|
||||
"script",
|
||||
"/resources/idlharness.js"
|
||||
],
|
||||
[
|
||||
"timeout",
|
||||
"long"
|
||||
]
|
||||
]
|
||||
],
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
|
@ -368986,7 +369183,7 @@
|
|||
]
|
||||
],
|
||||
"idlharness.tentative.https.window.js": [
|
||||
"f4e6d9586966b160811b5da0006a99d9abcb8a9f",
|
||||
"a632060e20aefd43a2c6b976e891062ad0c2f7b5",
|
||||
[
|
||||
"bluetooth/idl/idlharness.tentative.https.window.html",
|
||||
{
|
||||
|
@ -368998,8 +369195,13 @@
|
|||
[
|
||||
"script",
|
||||
"/resources/idlharness.js"
|
||||
],
|
||||
[
|
||||
"timeout",
|
||||
"long"
|
||||
]
|
||||
]
|
||||
],
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
@ -388202,10 +388404,12 @@
|
|||
},
|
||||
"css-paint-api": {
|
||||
"idlharness.html": [
|
||||
"aad04a17cc4c660084fa196cb85da5d88b8560d4",
|
||||
"5532779d29f46de9382bb9340c6c522adfe89e4e",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
|
@ -388925,6 +389129,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"registered-property-change-style-001.html": [
|
||||
"320b44d82e437218564f544208815048aef5c864",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"registered-property-computation.html": [
|
||||
"f03b257246e520bd93055203a5cb27188babc8ca",
|
||||
[
|
||||
|
@ -394593,14 +394804,14 @@
|
|||
]
|
||||
],
|
||||
"text-decoration-thickness-invalid.html": [
|
||||
"656fa3bba2aee70381eb1c0e82e963f9f4bea502",
|
||||
"7934862a1760b4b0e966d62174ccf79d045f8991",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"text-decoration-thickness-valid.html": [
|
||||
"d05c892674844691ec23bcad1bf4dbd8ab53981c",
|
||||
"aa279bc7e8717cce29a61cf80d967d7ba1936ee2",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -395163,7 +395374,7 @@
|
|||
]
|
||||
],
|
||||
"Document-getAnimations.tentative.html": [
|
||||
"cd97acfd5ec76c7585d5356c86b3832bb0b7bd37",
|
||||
"a8986d0bdbd35789dc95c090135e19116fd9c45b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -397777,7 +397988,7 @@
|
|||
]
|
||||
],
|
||||
"text-decoration-thickness.html": [
|
||||
"903ca8603fb882e19c0ecfc6760a64495e6361dd",
|
||||
"dfd923ae7ba27c38893c50bad5b72e5a927bbefa",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -398898,6 +399109,20 @@
|
|||
]
|
||||
},
|
||||
"css-variables": {
|
||||
"css-variable-change-style-001.html": [
|
||||
"798c7727a695c70b8cfcb5588a061de29ef3a3f1",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css-variable-change-style-002.html": [
|
||||
"9057136ddae5640ec2fc13fb3627729f0f7e5c10",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"test_variable_legal_values.html": [
|
||||
"1d86c0834ccb1da7965edf56f9a4aefc0a041421",
|
||||
[
|
||||
|
@ -420436,7 +420661,7 @@
|
|||
]
|
||||
],
|
||||
"idlharness.window.js": [
|
||||
"33bbe3c14ffe28d961cc4c71c0b367028ff8d2df",
|
||||
"724da3c80179e0aa1cf3875125fd02e2df23905e",
|
||||
[
|
||||
"feature-policy/idlharness.window.html",
|
||||
{
|
||||
|
@ -420448,8 +420673,13 @@
|
|||
[
|
||||
"script",
|
||||
"/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": [
|
||||
"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": [
|
||||
"29ff348a9af645ff59d860e91af9534e64a606c5",
|
||||
[
|
||||
|
@ -464495,7 +464711,7 @@
|
|||
]
|
||||
],
|
||||
"simple-block-movement.html": [
|
||||
"0f9257e27ce5d553d8176f084e537e47b331416e",
|
||||
"533f85a68e68949a52772792b915b04696340a4e",
|
||||
[
|
||||
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": [
|
||||
"a1b9e4e3f5a230e8e49d3552d338d48f029d07cd",
|
||||
[
|
||||
|
@ -470685,6 +470922,41 @@
|
|||
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": {
|
||||
|
@ -489060,7 +489332,7 @@
|
|||
]
|
||||
],
|
||||
"slots-imperative-api-slotchange.tentative.html": [
|
||||
"a2f951a9ff60c020cb9e8be1cc7e4069eab75c78",
|
||||
"1f4ef1531a2b678e016b170244ec47422ff49481",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -501776,7 +502048,7 @@
|
|||
]
|
||||
],
|
||||
"urlsearchparams-constructor.any.js": [
|
||||
"f7989f70ea0071bc7180e0a23f10aef55335734e",
|
||||
"8d855a4fd4d01cb34732a7e3b3ef2da5f639a82b",
|
||||
[
|
||||
"url/urlsearchparams-constructor.any.html",
|
||||
{}
|
||||
|
@ -505180,7 +505452,7 @@
|
|||
]
|
||||
],
|
||||
"commitStyles.html": [
|
||||
"19461844b7c68b42d98135eb3c8bdac0814bba60",
|
||||
"f16412fbcf70ba5ef9cb49f8e0647e98de23a596",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -507394,6 +507666,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"k-rate-dynamics-compressor-connections.html": [
|
||||
"c1755cd1559474a464024a2b0344c5dd1d95e803",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"k-rate-gain.html": [
|
||||
"887d9f78db8a79b0aae96b9cdf818cde7b33aa6c",
|
||||
[
|
||||
|
@ -509779,7 +510058,7 @@
|
|||
]
|
||||
],
|
||||
"RTCDataChannel-close.html": [
|
||||
"a417d66d9aaeda3cf551a981aac05a0732d183e2",
|
||||
"b8feea332ad71ff046ceb4b4590ca2becd2919a6",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
|
|
@ -14,6 +14,9 @@
|
|||
[Object.prototype.toString applied after nulling the prototype]
|
||||
expected: FAIL
|
||||
|
||||
[Object.prototype.toString applied to a null-prototype instance]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[class-string-iterator-prototype-object.any.worker.html]
|
||||
[Object.prototype.toString]
|
||||
|
@ -31,3 +34,6 @@
|
|||
[Object.prototype.toString applied after nulling the prototype]
|
||||
expected: FAIL
|
||||
|
||||
[Object.prototype.toString applied to a null-prototype instance]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
[mix-blend-mode-animation.html]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -23,3 +23,15 @@
|
|||
[e.style['text-decoration-thickness'\] = "-10px" should set the property value]
|
||||
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
|
||||
|
||||
|
|
|
@ -2,3 +2,6 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -14,3 +14,9 @@
|
|||
[CSS Transitions targetting (pseudo-)elements should have correct order after sorting (::marker)]
|
||||
expected: FAIL
|
||||
|
||||
[getAnimations for CSS Transitions sort by property name]
|
||||
expected: FAIL
|
||||
|
||||
[getAnimations for CSS Transitions sort by transition generation]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -8,6 +8,3 @@
|
|||
[throws if handleEvent is thruthy and not callable]
|
||||
expected: FAIL
|
||||
|
||||
[looks up handleEvent method on every event dispatch]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -318,24 +318,21 @@
|
|||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
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]
|
||||
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/plain */*]
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
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
|
||||
|
||||
|
|
|
@ -56,3 +56,6 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,9 +11,6 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
[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
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_4.html]
|
||||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[drawImage-with-src-rect.tentative.html]
|
||||
expected: FAIL
|
|
@ -1,16 +1,20 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Non-HTMLElement should not support autofocus]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[image-compositing-change.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,4 @@
|
|||
[historical.window.html]
|
||||
[invalid event is only supported for form controls]
|
||||
expected: FAIL
|
||||
|
|
@ -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
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
[shared-worker-in-data-url-context.window.html]
|
||||
expected: TIMEOUT
|
||||
[Create a shared worker in a data url frame]
|
||||
expected: FAIL
|
||||
|
||||
[Create a data url shared worker in a data url frame]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -10988,7 +10988,7 @@
|
|||
[]
|
||||
],
|
||||
"interfaces.js": [
|
||||
"1b841f053a231bf78d29ffe68e59455363c61502",
|
||||
"f62df6b9c75332a2918b18ec70acfc5d7a795ac0",
|
||||
[]
|
||||
],
|
||||
"nested_asap_script.js": [
|
||||
|
|
|
@ -59,7 +59,7 @@ function test_interfaces(interfaceNamesInGlobalScope) {
|
|||
var sources = [
|
||||
ecmaGlobals,
|
||||
interfaceNamesInGlobalScope,
|
||||
["AssertionError", "EventWatcher", "PreconditionFailedError"],
|
||||
["AssertionError", "EventWatcher", "OptionalFeatureUnsupportedError"],
|
||||
];
|
||||
|
||||
var interfaceMap = {};
|
||||
|
|
|
@ -31,6 +31,14 @@ test(t => {
|
|||
// was no @@toStringTag, it would fall back to a magic class string. This tests that the bug is
|
||||
// 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 => {
|
||||
const proto = Object.getPrototypeOf(iteratorProto);
|
||||
t.add_cleanup(() => {
|
||||
|
@ -39,7 +47,7 @@ test(t => {
|
|||
|
||||
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");
|
||||
|
||||
// This test must be last.
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// META: global=window,worker
|
||||
// META: script=/resources/WebIDLParser.js
|
||||
// META: script=/resources/idlharness.js
|
||||
// META: timeout=long
|
||||
|
||||
'use strict';
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// META: script=/resources/WebIDLParser.js
|
||||
// META: script=/resources/idlharness.js
|
||||
// META: timeout=long
|
||||
|
||||
'use strict';
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<!doctype html>
|
||||
<title>CSS Painting API IDL tests</title>
|
||||
<meta name="timeout" content="long">
|
||||
<link rel="help" href="https://drafts.css-houdini.org/css-paint-api/">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
|
|
@ -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>
|
||||
|
|
@ -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>
|
|
@ -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 > 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>
|
|
@ -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, <span> 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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -18,10 +18,6 @@ test_invalid_value("text-decoration-thickness", "60002020");
|
|||
test_invalid_value("text-decoration-thickness", "!@#$%^&");
|
||||
test_invalid_value("text-decoration-thickness", "10e2");
|
||||
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>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -19,6 +19,10 @@ test_valid_value("text-decoration-thickness", "-49em");
|
|||
test_valid_value("text-decoration-thickness", "53px");
|
||||
test_valid_value("text-decoration-thickness", "calc(40em - 10px)");
|
||||
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>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -35,6 +35,56 @@ test(t => {
|
|||
'getAnimations returns no running 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) {
|
||||
test(t => {
|
||||
// Create two divs with the following arrangement:
|
||||
|
|
|
@ -17,7 +17,9 @@ runPropertyTests('text-decoration-thickness', [
|
|||
{ syntax: 'auto' },
|
||||
{
|
||||
syntax: '<length>',
|
||||
specified: assert_is_equal_with_range_handling
|
||||
},
|
||||
{
|
||||
syntax: '<percentage>',
|
||||
},
|
||||
]);
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -332,8 +332,8 @@ async_test((t) => {
|
|||
|
||||
A failing `assert_implements_optional` call is reported as a status of
|
||||
`PRECONDITION_FAILED` for the subtest. This unusual status code is a legacy
|
||||
leftover from the deprecated `assert_precondition`; see the [RFC that renamed
|
||||
it](https://github.com/web-platform-tests/rfcs/pull/48).
|
||||
leftover; see the [RFC that introduced
|
||||
`assert_implements_optional`](https://github.com/web-platform-tests/rfcs/pull/48).
|
||||
|
||||
`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
|
||||
UA bugs.
|
||||
|
||||
### **DEPRECATED** `assert_precondition(condition, description)`
|
||||
Use `assert_implements` or `assert_implements_optional` instead.
|
||||
|
||||
## Utility functions ##
|
||||
|
||||
### **DEPRECATED** `on_event(object, event, callback)`
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// META: script=/resources/WebIDLParser.js
|
||||
// META: script=/resources/idlharness.js
|
||||
// META: timeout=long
|
||||
|
||||
"use strict";
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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 |
|
@ -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");
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -0,0 +1,5 @@
|
|||
// Abstracts expectations for reuse in different test frameworks.
|
||||
|
||||
cls_expect = (watcher, expectation) => {
|
||||
assert_equals(watcher.score, expectation.score);
|
||||
};
|
|
@ -2,13 +2,12 @@
|
|||
<title>Layout Instability: simple block movement is detected</title>
|
||||
<link rel="help" href="https://wicg.github.io/layout-instability/" />
|
||||
<style>
|
||||
|
||||
#shifter { position: relative; width: 300px; height: 100px; }
|
||||
|
||||
#shifter { position: relative; width: 300px; height: 200px; }
|
||||
</style>
|
||||
<div id="shifter"></div>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/test-adapter.js"></script>
|
||||
<script src="resources/util.js"></script>
|
||||
<script>
|
||||
|
||||
|
@ -19,15 +18,15 @@ promise_test(async () => {
|
|||
await waitForAnimationFrames(2);
|
||||
|
||||
// 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.
|
||||
const expectedScore = computeExpectedScore(300 * (100 + 60), 60);
|
||||
// An element of size (300 x 200) has shifted by 160px.
|
||||
const expectedScore = computeExpectedScore(300 * (200 + 160), 160);
|
||||
|
||||
// Observer fires after the frame is painted.
|
||||
assert_equals(watcher.score, 0);
|
||||
cls_expect(watcher, {score: 0});
|
||||
await watcher.promise;
|
||||
assert_equals(watcher.score, expectedScore);
|
||||
cls_expect(watcher, {score: expectedScore});
|
||||
}, 'Simple block movement.');
|
||||
|
||||
</script>
|
||||
|
|
|
@ -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-defs-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
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -0,0 +1 @@
|
|||
Origin-Isolation: ?1
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue