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

Sync WPT with upstream (05-05-2020)

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

View file

@ -4,7 +4,7 @@
expected: TIMEOUT
[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

View file

@ -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

View file

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

View file

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

View file

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

View file

@ -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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -318,24 +318,21 @@
[<iframe>: separate response Content-Type: text/html */*]
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

View file

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

View file

@ -11,9 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
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

View file

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

View file

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

View file

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

View file

@ -1,16 +1,20 @@
[supported-elements.html]
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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,8 @@
[shared-worker-in-data-url-context.window.html]
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

View file

@ -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

View file

@ -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,
{

View file

@ -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

View file

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

View file

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

View file

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

View file

@ -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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -318,24 +318,21 @@
[<iframe>: separate response Content-Type: text/html */*]
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

View file

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

View file

@ -11,9 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
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

View file

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

View file

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

View file

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

View file

@ -1,16 +1,20 @@
[supported-elements.html]
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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,8 @@
[shared-worker-in-data-url-context.window.html]
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

View file

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

View file

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

View file

@ -31,6 +31,14 @@ test(t => {
// was no @@toStringTag, it would fall back to a magic class string. This tests that the bug is
// 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.

View file

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

View file

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

View file

@ -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>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -18,10 +18,6 @@ test_invalid_value("text-decoration-thickness", "60002020");
test_invalid_value("text-decoration-thickness", "!@#$%^&");
test_invalid_value("text-decoration-thickness", "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>

View file

@ -19,6 +19,10 @@ test_valid_value("text-decoration-thickness", "-49em");
test_valid_value("text-decoration-thickness", "53px");
test_valid_value("text-decoration-thickness", "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>

View file

@ -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:

View file

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

View file

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

View file

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

View file

@ -332,8 +332,8 @@ async_test((t) => {
A failing `assert_implements_optional` call is reported as a status of
`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)`

View file

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

View file

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

View file

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

View file

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

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 B

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -2,13 +2,12 @@
<title>Layout Instability: simple block movement is detected</title>
<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>

View file

@ -756,10 +756,3 @@ TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-circul
TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-under-clip-path-crash.html
TESTHARNESS-IN-OTHER-TYPE: svg/extensibility/foreignObject/foreign-object-under-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

View file

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

View file

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

View file

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

View file

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

View file

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

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