Auto merge of #27170 - servo-wpt-sync:wpt_update_04-07-2020, r=servo-wpt-sync

Sync WPT with upstream (04-07-2020)

Automated downstream sync of changes from upstream as of 04-07-2020.
[no-wpt-sync]
r? @servo-wpt-sync
This commit is contained in:
bors-servo 2020-07-04 11:55:38 -04:00 committed by GitHub
commit 39e3beb35c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
85 changed files with 716 additions and 155 deletions

View file

@ -1,8 +0,0 @@
[url-charset.window.html]
expected: TIMEOUT
[Blob charset should override any auto-detected charset.]
expected: TIMEOUT
[Blob charset should override <meta charset>.]
expected: TIMEOUT

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

@ -1,4 +0,0 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

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

View file

@ -35,3 +35,9 @@
[Test @font-face matching for weight 399]
expected: FAIL
[Test @font-face matching for weight 500]
expected: FAIL
[Test @font-face matching for weight 250]
expected: FAIL

View file

@ -1,4 +0,0 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -0,0 +1,4 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -0,0 +1,2 @@
[mq-gamut-001.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[mq-gamut-002.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[mq-gamut-004.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[mq-negative-range-001.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[mq-range-001.html]
expected: FAIL

View file

@ -250,9 +250,6 @@
[ShadowRoot interface: attribute onslotchange]
expected: FAIL
[Window interface: attribute event]
expected: FAIL
[AbortController interface: new AbortController() must inherit property "abort()" with the proper type]
expected: FAIL
@ -628,3 +625,12 @@
[Element interface: operation before((Node or DOMString)...)]
expected: FAIL
[XPathNSResolver interface: document.createNSResolver(document.body) must inherit property "lookupNamespaceURI(DOMString?)" with the proper type]
expected: FAIL
[Stringification of document.createNSResolver(document.body)]
expected: FAIL
[XPathNSResolver interface: calling lookupNamespaceURI(DOMString?) on document.createNSResolver(document.body) with too few arguments must throw TypeError]
expected: FAIL

View file

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

View file

@ -53,9 +53,3 @@
[combined text/javascript ]
expected: FAIL
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript; charset=windows-1252 text/javascript]
expected: FAIL

View file

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

View file

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

View file

@ -1,2 +0,0 @@
[cross-origin-objects-on-new-window.html]
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
@ -10,7 +9,7 @@
expected: FAIL
[Area element should support autofocus]
expected: TIMEOUT
expected: FAIL
[Host element with delegatesFocus should support autofocus]
expected: FAIL

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-1.html]
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-3.html]
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html]
expected: CRASH
expected: TIMEOUT
[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: CRASH
expected: TIMEOUT
[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: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL

View file

@ -1,4 +0,0 @@
[form-double-submit.html]
[default submit action should supersede onclick submit()]
expected: FAIL

View file

@ -3,3 +3,6 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: FAIL

View file

@ -1,9 +1,10 @@
[promise-job-entry.html]
expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
expected: FAIL
expected: TIMEOUT
[Sanity check: this all works as expected with no promises involved]
expected: FAIL
@ -15,5 +16,5 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
expected: FAIL
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL

View file

@ -0,0 +1,5 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -0,0 +1,2 @@
[Worker-constructor.html]
expected: ERROR

View file

@ -1,4 +1,5 @@
[003.html]
expected: ERROR
[shared]
expected: FAIL

View file

@ -1,8 +0,0 @@
[url-charset.window.html]
expected: TIMEOUT
[Blob charset should override any auto-detected charset.]
expected: TIMEOUT
[Blob charset should override <meta charset>.]
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

@ -14826,13 +14826,6 @@
{}
]
],
"element-request-fullscreen-dialog-manual.html": [
"360ade0724d1c9a31e8088f8a9177f88d9d5e732",
[
null,
{}
]
],
"element-request-fullscreen-non-top-manual.html": [
"0764e9c8423a2f528dbfa12d4e57614d7128b4a0",
[
@ -24287,8 +24280,56 @@
}
}
]
],
"reftest_mismatch_page_margins-print.html": [
"62c925927e0d54709b2a1f5ac302edadc4651180",
[
null,
[
[
"/infrastructure/reftest/reftest_match-print-ref.html",
"!="
]
],
{}
]
]
}
},
"svg": {
"painting": {
"reftests": {
"mask-print.svg": [
"ea8e3d29b9c4e1dce623d265c1c1a2865c08d28a",
[
null,
[
[
"/svg/painting/reftests/mask-print-ref.svg",
"=="
]
],
{
"fuzzy": [
[
null,
[
[
1,
1
],
[
17280,
17280
]
]
]
]
}
]
]
}
}
}
},
"reftest": {
@ -211570,7 +211611,85 @@
]
],
"mq-case-insensitive-001.html": [
"dc4d8289953f190f3eadcb13c8cbd594a9f9407f",
"c851662343dcfcff5a0d39d37d849f9e0ff8c667",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"mq-deprecated-001.html": [
"0aa06666cd53d913eab8dbe6a95ab6f2b2c855f5",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"mq-gamut-001.html": [
"b0496192933dc4c2e0e4514da630b1828b7d3804",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"mq-gamut-002.html": [
"a63399ede1af3cd6a550c9a9f58ad67fa98970a8",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"mq-gamut-003.html": [
"29bde56e69e84613bd72913218477f331ca31106",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"mq-gamut-004.html": [
"fe285564701be15cf88f379d7747e6aae3291666",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"mq-gamut-005.html": [
"a1fe4d9e6e0c9b28a5103fc7f48b9955998dc6c3",
[
null,
[
@ -211634,6 +211753,32 @@
{}
]
],
"mq-negative-range-001.html": [
"eb1030a8dd4c5c2504e2af114c75a3e97332b2e1",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"mq-range-001.html": [
"f54917ada1cf1f625c7bbb2cf73aeb7305615f08",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"relative-units-001.html": [
"fac94d78edfba4031b7bad980f07ff9e73ddeb72",
[
@ -343623,7 +343768,7 @@
]
},
"idlharness.js": [
"fa24275648fcd266940940f1467e88ea4b5136ed",
"25c193b55e5b76fff6dc180268357a11a27abc08",
[]
],
"idlharness.js.headers": [
@ -343948,6 +344093,10 @@
"a1a641bd971e5a995e3965d27f3e2f8a8e834e7b",
[]
],
"should_have_interface_object.html": [
"f5bb7bf35a58c23cbaf76f1519ac2dfec5f3ad62",
[]
],
"test_primary_interface_of_undefined.html": [
"0031558ad42ce55e0cd6ee92ea9973788a9a8017",
[]
@ -347706,6 +347855,10 @@
"871003f3a2303404696d467a7cfaad729b811206",
[]
],
"mask-print-ref.svg": [
"5d58e49bc8e9b4f018a69ea4783eb90df83e14c7",
[]
],
"paint-context-001-ref.svg": [
"99bd8c44cb78a4b0340ad6456c7e58e4ca397257",
[]
@ -355152,7 +355305,7 @@
[]
],
"firefox.py": [
"8ffe82c662b8b1a2b28c32f967e933d23e9b053d",
"fc5abf8b93cd24ed3dd46c4384dd7c94facce232",
[]
],
"firefox_android.py": [
@ -381665,7 +381818,7 @@
]
],
"iframe-all-local-schemes.sub.html": [
"20a9cbdc9e086163000baafb9c74d4e9d32b071a",
"4b787e0c1888eae0e7c7e8dd75ad154f585af274",
[
null,
{}
@ -413366,7 +413519,7 @@
]
],
"idlharness.window.js": [
"24b56cf05ada3722c30a7a1427d1cbb324ec366a",
"ab965adbc4354b50cb6718349f50e1529bead040",
[
"dom/idlharness.window.html?exclude=Node",
{
@ -433960,6 +434113,15 @@
{}
]
],
"element-request-fullscreen-dialog.html": [
"08091ddc01fb62568f55e64a1f45336a29194e67",
[
null,
{
"testdriver": true
}
]
],
"element-request-fullscreen-not-allowed.html": [
"3170c184823d737eec149c4bdecc9c10321d26ea",
[

View file

@ -1,4 +0,0 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

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

View file

@ -35,3 +35,9 @@
[Test @font-face matching for weight 249]
expected: FAIL
[Test @font-face matching for weight 500]
expected: FAIL
[Test @font-face matching for weight 250]
expected: FAIL

View file

@ -1,4 +0,0 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -0,0 +1,4 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -0,0 +1,2 @@
[mq-gamut-001.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[mq-gamut-002.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[mq-gamut-004.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[mq-negative-range-001.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[mq-range-001.html]
expected: FAIL

View file

@ -749,5 +749,14 @@
[Document interface: xmlDoc must inherit property "replaceChildren((Node or DOMString)...)" with the proper type]
expected: FAIL
[XPathNSResolver interface: document.createNSResolver(document.body) must inherit property "lookupNamespaceURI(DOMString?)" with the proper type]
expected: FAIL
[Stringification of document.createNSResolver(document.body)]
expected: FAIL
[XPathNSResolver interface: calling lookupNamespaceURI(DOMString?) on document.createNSResolver(document.body) with too few arguments must throw TypeError]
expected: FAIL
[idlharness.window.html?include=Node]

View file

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

View file

@ -53,9 +53,3 @@
[combined text/javascript ]
expected: FAIL
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript; charset=windows-1252 text/javascript]
expected: FAIL

View file

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

View file

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

View file

@ -1,2 +0,0 @@
[cross-origin-objects-on-new-window.html]
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
@ -10,7 +9,7 @@
expected: FAIL
[Area element should support autofocus]
expected: TIMEOUT
expected: FAIL
[Host element with delegatesFocus should support autofocus]
expected: FAIL

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-1.html]
type: testharness
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
expected: CRASH
expected: TIMEOUT
[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: CRASH
expected: TIMEOUT
[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: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL

View file

@ -1,4 +0,0 @@
[form-double-submit.html]
[default submit action should supersede onclick submit()]
expected: FAIL

View file

@ -4,3 +4,6 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: FAIL

View file

@ -1,9 +1,10 @@
[promise-job-entry.html]
expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
expected: FAIL
expected: TIMEOUT
[Sanity check: this all works as expected with no promises involved]
expected: FAIL
@ -15,5 +16,5 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
expected: FAIL
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL

View file

@ -0,0 +1,5 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -0,0 +1,2 @@
[Worker-constructor.html]
expected: ERROR

View file

@ -1,5 +1,6 @@
[003.html]
type: testharness
expected: ERROR
[shared]
expected: FAIL

View file

@ -17,6 +17,16 @@
}));
}
function wait_for_error_from_window(opened_window, test) {
window.addEventListener('message', test.step_func(e => {
if (e.source != opened_window)
return;
assert_equals(e.data, "error");
opened_window.close();
test.done();
}));
}
async_test(t => {
var i = document.createElement('iframe');
document.body.appendChild(i);
@ -28,6 +38,29 @@
img.src = "{{location[server]}}/images/red-16x16.png";
}, "<iframe>'s about:blank inherits policy.");
async_test(t => {
var w = window.open("about:blank");
let then = t.step_func(() => {
then = () => {};
var img = w.document.createElement('img');
img.onerror = t.step_func_done(_ => w.close());
img.onload = t.unreached_func();
w.document.body.appendChild(img);
img.src = "{{location[server]}}/images/red-16x16.png";
});
// There are now interoperable way to wait for the initial about:blank
// document to load. Chrome loads it synchronously, hence we can't wait for
// w.onload. On the other side Firefox loads the initial empty document
// later and we can wait for the onload event.
w.onload = then;
setTimeout(then, 200);
// Navigations to about:blank happens synchronously. There is no need to
// wait for the document to load.
}, "window about:blank inherits policy.");
async_test(t => {
var i = document.createElement('iframe');
i.srcdoc = `
@ -58,6 +91,19 @@
document.body.appendChild(i);
}, "<iframe src='blob:...'>'s inherits policy.");
async_test(t => {
var b = new Blob(
[`
<img src='{{location[server]}}/images/red-16x16.png'
onload='window.opener.postMessage("load", "*");'
onerror='window.opener.postMessage("error", "*");'
>
`], {type:"text/html"});
let url = URL.createObjectURL(b);
var w = window.open(url);
wait_for_error_from_window(w, t);
}, "window url='blob:...' inherits policy.");
async_test(t => {
var i = document.createElement('iframe');
i.src = `data:text/html,<img src='{{location[server]}}/images/red-16x16.png'
@ -70,6 +116,9 @@
document.body.appendChild(i);
}, "<iframe src='data:...'>'s inherits policy.");
// Opening a window toward a data-url isn't allowed anymore. Hence, it can't
// be tested.
async_test(t => {
var i = document.createElement('iframe');
i.src = `javascript:"<img src='{{location[server]}}/images/red-16x16.png'
@ -82,6 +131,16 @@
document.body.appendChild(i);
}, "<iframe src='javascript:...'>'s inherits policy (static <img> is blocked)");
async_test(t => {
let url = `javascript:"<img src='{{location[server]}}/images/red-16x16.png'
onload='window.opener.postMessage(\\"load\\", \\"*\\");'
onerror='window.opener.postMessage(\\"error\\", \\"*\\");'
>"`;
let w = window.open(url);
wait_for_error_from_window(w, t);
}, "window url='javascript:...'>'s inherits policy (static <img> is blocked)");
// Same as the previous javascript-URL test, but instead of loading the <img>
// from the new document, this one is created from the initial empty document,
// while evaluating the javascript-url.

View file

@ -5,6 +5,8 @@
<title>Test: ASCII-case-insensitivity of media queries</title>
<link rel="author" title="Gerald Squelart" href="mailto:gerald@mozilla.com">
<link rel="help" href="http://www.w3.org/TR/CSS21/syndata.html#characters">
<link rel="help" href="https://drafts.csswg.org/mediaqueries-4/#mq-syntax">
<link rel="help" href="https://drafts.csswg.org/css-syntax/#rule-defs">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style type="text/css">

View file

@ -0,0 +1,32 @@
<!doctype html>
<title>Test: deprecated media types</title>
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
<link rel="help" href="https://drafts.csswg.org/mediaqueries-4/#media-types">
<link rel="help" href="https://drafts.csswg.org/mediaqueries-4/#ref-for-media-type%E2%91%A0%E2%91%A6">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="assert" content="deprecated media types must not match">
<meta name="flags" content="">
<style>
div {
width: 100px;
height: 100px;
background-color: green;
}
@media
tty,
tv,
projection,
handheld,
braille,
embossed,
aural,
speech
{
div { background-color: red; }
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.
<div></div>

View file

@ -0,0 +1,24 @@
<!doctype html>
<title>Test: srgb color gamut</title>
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
<link rel="help" href="https://www.w3.org/TR/mediaqueries-4/#color-gamut">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="assert" content="the srgb color-gamut is syntactically supported">
<meta name="flags" content="">
<style>
div {
width: 100px;
height: 100px;
background-color: red;
}
@media (color-gamut: srgb),
not (color-gamut: srgb)
{
div { background-color: green; }
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.
<div></div>

View file

@ -0,0 +1,25 @@
<!doctype html>
<title>Test: p3 color gamut</title>
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
<link rel="help" href="https://www.w3.org/TR/mediaqueries-4/#color-gamut">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/276">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="assert" content="the p3 color-gamut is syntactically supported">
<meta name="flags" content="">
<style>
div {
width: 100px;
height: 100px;
background-color: red;
}
@media (color-gamut: p3),
not (color-gamut: p3)
{
div { background-color: green; }
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.
<div></div>

View file

@ -0,0 +1,26 @@
<!doctype html>
<title>Test: p3 color gamut (old name)</title>
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
<link rel="help" href="https://www.w3.org/TR/mediaqueries-4/#color-gamut">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/4535">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/276">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="assert" content="the dci-p3 (old name for p3) color-gamut is not syntactically supported">
<meta name="flags" content="">
<style>
div {
width: 100px;
height: 100px;
background-color: green;
}
@media (color-gamut: dci-p3),
not (color-gamut: dci-p3)
{
div { background-color: red; }
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.
<div></div>

View file

@ -0,0 +1,25 @@
<!doctype html>
<title>Test: rec2020 color gamut</title>
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
<link rel="help" href="https://www.w3.org/TR/mediaqueries-4/#color-gamut">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/4535">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="assert" content="the rec2020 color-gamut is syntactically supported">
<meta name="flags" content="">
<style>
div {
width: 100px;
height: 100px;
background-color: red;
}
@media (color-gamut: rec2020),
not (color-gamut: rec2020)
{
div { background-color: green; }
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.
<div></div>

View file

@ -0,0 +1,25 @@
<!doctype html>
<title>Test: rec2020 color gamut(old name)</title>
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
<link rel="help" href="https://www.w3.org/TR/mediaqueries-4/#color-gamut">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/4535">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="assert" content="the rec-2020 (old name for rec2020) color-gamut is not syntactically supported">
<meta name="flags" content="">
<style>
div {
width: 100px;
height: 100px;
background-color: green;
}
@media (color-gamut: rec-2020),
not (color-gamut: rec-2020)
{
div { background-color: red; }
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.
<div></div>

View file

@ -0,0 +1,40 @@
<!doctype html>
<title>Test: false in the negative range</title>
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
<link rel="help" href="https://drafts.csswg.org/mediaqueries-4/#mq-syntax">
<link rel="help" href="https://www.w3.org/TR/mediaqueries-4/#false-in-the-negative-range">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/1454">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="assert" content="features that are 'false in the negative range' should still parse with negative values">
<meta name="flags" content="">
<style>
div {
width: 100px;
height: 100px;
background-color: red;
}
@media
(min-width: -100px)
and
(min-height: -100px)
and
(min-resolution: -1dpi)
and
(min-color: -10)
and
(min-color-index: -10)
and
(min-monochrome: -10)
and
(min-device-width: -100px)
and
(min-device-height: -100px)
{
div { background-color: green; }
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.
<div></div>

View file

@ -0,0 +1,27 @@
<!doctype html>
<title>Test: invalid range syntax</title>
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
<link rel="help" href="https://drafts.csswg.org/mediaqueries-4/#mq-syntax">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/2790">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="assert" content="range syntax without operator isn't valid syntax, unlike what some earlier iteration of the spec claimed">
<meta name="flags" content="">
<style>
div {
width: 100px;
height: 100px;
background-color: red;
}
/* if the syntax is accepted, whether (width 500px) is true or not doesn't matter,
as the second part of the "or" clause will be true,
but if the syntax is rejected, then the whole thing is ignored.
*/
@media (width 500px) or (min-width: 0) {
div { background-color: green; }
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.
<div></div>

View file

@ -44,8 +44,7 @@ idl_test(
DOMTokenList: ['document.body.classList'],
XPathEvaluator: ['new XPathEvaluator()'],
XPathExpression: ['document.createExpression("//*")'],
// Skipped due to https://github.com/web-platform-tests/wpt/issues/18827:
// XPathNSResolver: ['document.createNSResolver(document.body)'],
XPathNSResolver: ['document.createNSResolver(document.body)'],
XPathResult: ['document.evaluate("//*", document.body)'],
});
}

View file

@ -2,15 +2,17 @@
<title>Element#requestFullscreen() for dialog element</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../trusted-click.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<div id="log"></div>
<dialog></dialog>
<script>
async_test(t => {
var dialog = document.querySelector("dialog");
assert_true(dialog instanceof HTMLDialogElement);
trusted_request(t, dialog);
document.onfullscreenchange = t.unreached_func("fullscreenchange event");
document.onfullscreenerror = t.step_func_done();
test_driver.bless("Initiate fullscreen", () => dialog.requestFullscreen().catch(() => {}));
});
</script>

View file

@ -0,0 +1,13 @@
<title>print-reftest should respect @page margins</title>
<link rel=mismatch href=reftest_match-print-ref.html>
<style>
* {margin: 0; padding:0}
@page {margin: 0;}
div {page-break-after: always;}
</style>
<div>
page 1
</div>
<div>
page 2
</div>

View file

@ -1409,6 +1409,18 @@ IdlInterface.prototype.get_interface_object_owner = function()
return legacyNamespace ? self[legacyNamespace] : self;
};
IdlInterface.prototype.should_have_interface_object = function()
{
// "For every interface that is exposed in a given ECMAScript global
// environment and:
// * is a callback interface that has constants declared on it, or
// * is a non-callback interface that is not declared with the
// [NoInterfaceObject] extended attribute,
// a corresponding property MUST exist on the ECMAScript global object.
return this.is_callback() ? this.has_constants() : !this.has_extended_attribute("NoInterfaceObject");
};
IdlInterface.prototype.assert_interface_object_exists = function()
{
var owner = this.get_legacy_namespace() || "self";
@ -1416,8 +1428,9 @@ IdlInterface.prototype.assert_interface_object_exists = function()
};
IdlInterface.prototype.get_interface_object = function() {
if (this.has_extended_attribute("NoInterfaceObject")) {
throw new IdlHarnessError(this.name + " has no interface object due to NoInterfaceObject");
if (!this.should_have_interface_object()) {
var reason = this.is_callback() ? "lack of declared constants" : "declared [NoInterfaceObject] attribute";
throw new IdlHarnessError(this.name + " has no interface object due to " + reason);
}
return this.get_interface_object_owner()[this.name];
@ -1607,20 +1620,14 @@ IdlInterface.prototype.test_self = function()
{
// This function tests WebIDL as of 2015-01-13.
// "For every interface that is exposed in a given ECMAScript global
// environment and:
// * is a callback interface that has constants declared on it, or
// * is a non-callback interface that is not declared with the
// [NoInterfaceObject] extended attribute,
// a corresponding property MUST exist on the ECMAScript global object.
if (!this.should_have_interface_object()) {
return;
}
// The name of the property is the identifier of the interface, and its
// value is an object called the interface object.
// The property has the attributes { [[Writable]]: true,
// [[Enumerable]]: false, [[Configurable]]: true }."
if (this.is_callback() && !this.has_constants()) {
return;
}
// TODO: Should we test here that the property is actually writable
// etc., or trust getOwnPropertyDescriptor?
this.assert_interface_object_exists();
@ -1704,7 +1711,7 @@ IdlInterface.prototype.test_self = function()
}
}.bind(this), this.name + " interface: existence and properties of interface object");
if (!this.is_callback()) {
if (this.should_have_interface_object() && !this.is_callback()) {
subsetTestByKey(this.name, test, function() {
// This function tests WebIDL as of 2014-10-25.
// https://heycam.github.io/webidl/#es-interface-call
@ -1729,7 +1736,7 @@ IdlInterface.prototype.test_self = function()
}.bind(this), this.name + " interface object length");
}
if (!this.is_callback() || this.has_constants()) {
if (this.should_have_interface_object()) {
subsetTestByKey(this.name, test, function() {
// This function tests WebIDL as of 2015-11-17.
// https://heycam.github.io/webidl/#interface-object
@ -1926,7 +1933,7 @@ IdlInterface.prototype.test_self = function()
// This function tests WebIDL as of 2015-01-21.
// https://heycam.github.io/webidl/#interface-object
if (this.is_callback() && !this.has_constants()) {
if (!this.should_have_interface_object()) {
return;
}
@ -2050,7 +2057,7 @@ IdlInterface.prototype.test_self = function()
subsetTestByKey(this.name, test, function()
{
if (this.is_callback() && !this.has_constants()) {
if (!this.should_have_interface_object()) {
return;
}
@ -2085,7 +2092,7 @@ IdlInterface.prototype.test_self = function()
subsetTestByKey(this.name, test, function()
{
if (this.is_callback() && !this.has_constants()) {
if (!this.should_have_interface_object()) {
return;
}
@ -2326,8 +2333,8 @@ IdlInterface.prototype.test_member_attribute = function(member)
var a_test = subsetTestByKey(this.name, async_test, this.name + " interface: attribute " + member.name);
a_test.step(function()
{
if (this.is_callback() && !this.has_constants()) {
a_test.done()
if (!this.should_have_interface_object()) {
a_test.done();
return;
}
@ -2422,7 +2429,7 @@ IdlInterface.prototype.test_member_operation = function(member)
// This function tests WebIDL as of 2015-12-29.
// https://heycam.github.io/webidl/#es-operations
if (this.is_callback() && !this.has_constants()) {
if (!this.should_have_interface_object()) {
a_test.done();
return;
}
@ -2665,7 +2672,7 @@ IdlInterface.prototype.test_member_stringifier = function(member)
{
subsetTestByKey(this.name, test, function()
{
if (this.is_callback() && !this.has_constants()) {
if (!this.should_have_interface_object()) {
return;
}
@ -2859,7 +2866,7 @@ IdlInterface.prototype.test_primary_interface_of = function(desc, obj, exception
// interface object, or the object is from a different global environment
// (not instanceof Object). TODO: test in this case that its prototype at
// least looks correct, even if we can't test that it's actually correct.
if (!this.has_extended_attribute("NoInterfaceObject")
if (this.should_have_interface_object()
&& (typeof obj != expected_typeof || obj instanceof Object))
{
subsetTestByKey(this.name, test, function()

View file

@ -0,0 +1,30 @@
<!DOCTYPE HTML>
<title>IdlInterface.prototype.should_have_interface_object()</title>
<div id="log"></div>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/WebIDLParser.js"></script>
<script src="/resources/idlharness.js"></script>
<script src="../../../idl-helper.js"></script>
<script>
"use strict";
test(function() {
var i = interfaceFrom("callback interface A { const unsigned short B = 0; };");
assert_true(i.should_have_interface_object());
}, "callback interface with a constant");
test(function() {
var i = interfaceFrom("callback interface A { void b(); sequence<any> c(); };");
assert_false(i.should_have_interface_object());
}, "callback interface without a constant");
test(function() {
var i = interfaceFrom("[NoInterfaceObject] interface A { };");
assert_false(i.should_have_interface_object());
}, "non-callback interface with [NoInterfaceObject]");
test(function() {
var i = interfaceFrom("interface A { };");
assert_true(i.should_have_interface_object());
}, "non-callback interface without [NoInterfaceObject]");
</script>

View file

@ -0,0 +1,5 @@
<svg width="200" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect x="0" y="0" width="200" height="200" fill="green" />
<rect x="0" y="0" width="100" height="200" fill="red"/>
<rect x="90" y="0" width="20" height="200" fill="black" />
</svg>

After

Width:  |  Height:  |  Size: 304 B

View file

@ -0,0 +1,14 @@
<svg width="200" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:html="http://www.w3.org/1999/xhtml">
<html:meta name="fuzzy" content="1;17280" />
<html:link rel="match" href="mask-print-ref.svg" />
<defs>
<mask id="Mask">
<rect x="0" y="0" width="100" height="200" fill="white" />
</mask>
</defs>
<rect x="0" y="0" width="200" height="200" fill="green" />
<rect x="0" y="0" width="200" height="200" fill="red" mask="url(#Mask)" />
<rect x="90" y="0" width="20" height="200" fill="black" />
</svg>

After

Width:  |  Height:  |  Size: 563 B

View file

@ -368,7 +368,8 @@ class BrowserInstance(object):
def stop(self, force=False, skip_marionette=False):
"""Stop Firefox"""
if self.runner is not None and self.runner.is_running():
is_running = self.runner is not None and self.runner.is_running()
if is_running:
self.logger.debug("Stopping Firefox %s" % self.pid())
shutdown_methods = [(True, lambda: self.runner.wait(self.shutdown_timeout)),
(False, lambda: self.runner.stop(signal.SIGTERM)),
@ -387,8 +388,12 @@ class BrowserInstance(object):
except OSError:
# This can happen on Windows if the process is already dead
pass
elif self.runner:
# The browser was already stopped, which we assume was a crash
# TODO: Should we check the exit code here?
clean = False
if not skip_marionette:
self.output_handler.after_stop()
self.output_handler.after_stop(clean_shutdown=clean)
def pid(self):
if self.runner.process_handler is None:
@ -472,22 +477,26 @@ class OutputHandler(object):
self.__call__(line)
self.line_buffer = []
def after_stop(self):
def after_stop(self, clean_shutdown=True):
self.logger.info("PROCESS LEAKS %s" % self.instance.leak_report_file)
if self.lsan_handler:
self.lsan_handler.process()
if self.instance.leak_report_file is not None:
# We have to ignore missing leaks in the tab because it can happen that the
# content process crashed and in that case we don't want the test to fail.
# Ideally we would record which content process crashed and just skip those.
mozleak.process_leak_log(
self.instance.leak_report_file,
leak_thresholds=self.mozleak_thresholds,
ignore_missing_leaks=["tab", "gmplugin"],
log=self.logger,
stack_fixer=self.stack_fixer,
scope=self.group_metadata.get("scope"),
allowed=self.mozleak_allowed)
if not clean_shutdown:
# If we didn't get a clean shutdown there probably isn't a leak report file
self.logger.warning("Firefox didn't exit cleanly, not processing leak logs")
else:
# We have to ignore missing leaks in the tab because it can happen that the
# content process crashed and in that case we don't want the test to fail.
# Ideally we would record which content process crashed and just skip those.
mozleak.process_leak_log(
self.instance.leak_report_file,
leak_thresholds=self.mozleak_thresholds,
ignore_missing_leaks=["tab", "gmplugin"],
log=self.logger,
stack_fixer=self.stack_fixer,
scope=self.group_metadata.get("scope"),
allowed=self.mozleak_allowed)
def __call__(self, line):
"""Write a line of output from the firefox process to the log"""