mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
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:
commit
39e3beb35c
85 changed files with 716 additions and 155 deletions
|
@ -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
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Fetching a blob URL immediately before revoking it works in an iframe.]
|
[Fetching a blob URL immediately before revoking it works in an iframe.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[hit-test-floats-002.html]
|
|
||||||
[Hit test float]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[hit-test-floats-003.html]
|
|
||||||
[Miss float below something else]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -35,3 +35,9 @@
|
||||||
[Test @font-face matching for weight 399]
|
[Test @font-face matching for weight 399]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test @font-face matching for weight 500]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test @font-face matching for weight 250]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[CaretPosition-001.html]
|
|
||||||
[Element at (400, 100)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[elementFromPoint-001.html]
|
||||||
|
[CSSOM View - 5 - extensions to the Document interface]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[mq-gamut-001.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[mq-gamut-002.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[mq-gamut-004.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[mq-negative-range-001.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[mq-range-001.html]
|
||||||
|
expected: FAIL
|
|
@ -250,9 +250,6 @@
|
||||||
[ShadowRoot interface: attribute onslotchange]
|
[ShadowRoot interface: attribute onslotchange]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Window interface: attribute event]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[AbortController interface: new AbortController() must inherit property "abort()" with the proper type]
|
[AbortController interface: new AbortController() must inherit property "abort()" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -628,3 +625,12 @@
|
||||||
[Element interface: operation before((Node or DOMString)...)]
|
[Element interface: operation before((Node or DOMString)...)]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
||||||
|
|
|
@ -318,12 +318,6 @@
|
||||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||||
expected: FAIL
|
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 */*]
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -333,6 +327,12 @@
|
||||||
[<iframe>: combined response Content-Type: */* text/html]
|
[<iframe>: combined response Content-Type: */* text/html]
|
||||||
expected: FAIL
|
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
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -53,9 +53,3 @@
|
||||||
[combined text/javascript ]
|
[combined text/javascript ]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[separate text/javascript x/x]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[separate text/javascript; charset=windows-1252 text/javascript]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_2.html]
|
||||||
|
[Multiple history traversals, last would be aborted]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_5.html]
|
||||||
|
[Multiple history traversals, last would be aborted]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[cross-origin-objects-on-new-window.html]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -1,5 +1,4 @@
|
||||||
[supported-elements.html]
|
[supported-elements.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[Contenteditable element should support autofocus]
|
[Contenteditable element should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -10,7 +9,7 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Area element should support autofocus]
|
[Area element should support autofocus]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-1.html]
|
[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]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_escaping-3.html]
|
[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]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-1.html]
|
[iframe_sandbox_popups_nonescaping-1.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-2.html]
|
[iframe_sandbox_popups_nonescaping-2.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.html]
|
||||||
expected: CRASH
|
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit.html]
|
|
||||||
[default submit action should supersede onclick submit()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -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]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
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
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
[promise-job-entry.html]
|
[promise-job-entry.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Fulfillment handler on fulfilled promise]
|
[Fulfillment handler on fulfilled promise]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Rejection handler on pending-then-rejected promise]
|
[Rejection handler on pending-then-rejected promise]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Sanity check: this all works as expected with no promises involved]
|
[Sanity check: this all works as expected with no promises involved]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
@ -15,5 +16,5 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Fulfillment handler on pending-then-fulfilled promise]
|
[Fulfillment handler on pending-then-fulfilled promise]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[realtimeanalyser-fft-scaling.html]
|
[realtimeanalyser-fft-scaling.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Worker-constructor.html]
|
||||||
|
expected: ERROR
|
|
@ -1,4 +1,5 @@
|
||||||
[003.html]
|
[003.html]
|
||||||
|
expected: ERROR
|
||||||
[shared]
|
[shared]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
|
@ -14826,13 +14826,6 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"element-request-fullscreen-dialog-manual.html": [
|
|
||||||
"360ade0724d1c9a31e8088f8a9177f88d9d5e732",
|
|
||||||
[
|
|
||||||
null,
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"element-request-fullscreen-non-top-manual.html": [
|
"element-request-fullscreen-non-top-manual.html": [
|
||||||
"0764e9c8423a2f528dbfa12d4e57614d7128b4a0",
|
"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": {
|
"reftest": {
|
||||||
|
@ -211570,7 +211611,85 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"mq-case-insensitive-001.html": [
|
"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,
|
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": [
|
"relative-units-001.html": [
|
||||||
"fac94d78edfba4031b7bad980f07ff9e73ddeb72",
|
"fac94d78edfba4031b7bad980f07ff9e73ddeb72",
|
||||||
[
|
[
|
||||||
|
@ -343623,7 +343768,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"idlharness.js": [
|
"idlharness.js": [
|
||||||
"fa24275648fcd266940940f1467e88ea4b5136ed",
|
"25c193b55e5b76fff6dc180268357a11a27abc08",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"idlharness.js.headers": [
|
"idlharness.js.headers": [
|
||||||
|
@ -343948,6 +344093,10 @@
|
||||||
"a1a641bd971e5a995e3965d27f3e2f8a8e834e7b",
|
"a1a641bd971e5a995e3965d27f3e2f8a8e834e7b",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"should_have_interface_object.html": [
|
||||||
|
"f5bb7bf35a58c23cbaf76f1519ac2dfec5f3ad62",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"test_primary_interface_of_undefined.html": [
|
"test_primary_interface_of_undefined.html": [
|
||||||
"0031558ad42ce55e0cd6ee92ea9973788a9a8017",
|
"0031558ad42ce55e0cd6ee92ea9973788a9a8017",
|
||||||
[]
|
[]
|
||||||
|
@ -347706,6 +347855,10 @@
|
||||||
"871003f3a2303404696d467a7cfaad729b811206",
|
"871003f3a2303404696d467a7cfaad729b811206",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
|
"mask-print-ref.svg": [
|
||||||
|
"5d58e49bc8e9b4f018a69ea4783eb90df83e14c7",
|
||||||
|
[]
|
||||||
|
],
|
||||||
"paint-context-001-ref.svg": [
|
"paint-context-001-ref.svg": [
|
||||||
"99bd8c44cb78a4b0340ad6456c7e58e4ca397257",
|
"99bd8c44cb78a4b0340ad6456c7e58e4ca397257",
|
||||||
[]
|
[]
|
||||||
|
@ -355152,7 +355305,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"firefox.py": [
|
"firefox.py": [
|
||||||
"8ffe82c662b8b1a2b28c32f967e933d23e9b053d",
|
"fc5abf8b93cd24ed3dd46c4384dd7c94facce232",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"firefox_android.py": [
|
"firefox_android.py": [
|
||||||
|
@ -381665,7 +381818,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"iframe-all-local-schemes.sub.html": [
|
"iframe-all-local-schemes.sub.html": [
|
||||||
"20a9cbdc9e086163000baafb9c74d4e9d32b071a",
|
"4b787e0c1888eae0e7c7e8dd75ad154f585af274",
|
||||||
[
|
[
|
||||||
null,
|
null,
|
||||||
{}
|
{}
|
||||||
|
@ -413366,7 +413519,7 @@
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"idlharness.window.js": [
|
"idlharness.window.js": [
|
||||||
"24b56cf05ada3722c30a7a1427d1cbb324ec366a",
|
"ab965adbc4354b50cb6718349f50e1529bead040",
|
||||||
[
|
[
|
||||||
"dom/idlharness.window.html?exclude=Node",
|
"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": [
|
"element-request-fullscreen-not-allowed.html": [
|
||||||
"3170c184823d737eec149c4bdecc9c10321d26ea",
|
"3170c184823d737eec149c4bdecc9c10321d26ea",
|
||||||
[
|
[
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[hit-test-floats-002.html]
|
|
||||||
[Hit test float]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[hit-test-floats-003.html]
|
|
||||||
[Miss float below something else]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -35,3 +35,9 @@
|
||||||
[Test @font-face matching for weight 249]
|
[Test @font-face matching for weight 249]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test @font-face matching for weight 500]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test @font-face matching for weight 250]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[CaretPosition-001.html]
|
|
||||||
[Element at (400, 100)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[elementFromPoint-001.html]
|
||||||
|
[CSSOM View - 5 - extensions to the Document interface]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[mq-gamut-001.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[mq-gamut-002.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[mq-gamut-004.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[mq-negative-range-001.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[mq-range-001.html]
|
||||||
|
expected: FAIL
|
|
@ -749,5 +749,14 @@
|
||||||
[Document interface: xmlDoc must inherit property "replaceChildren((Node or DOMString)...)" with the proper type]
|
[Document interface: xmlDoc must inherit property "replaceChildren((Node or DOMString)...)" with the proper type]
|
||||||
expected: FAIL
|
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]
|
[idlharness.window.html?include=Node]
|
||||||
|
|
|
@ -318,12 +318,6 @@
|
||||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||||
expected: FAIL
|
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 */*]
|
[<iframe>: separate response Content-Type: text/html */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -333,6 +327,12 @@
|
||||||
[<iframe>: combined response Content-Type: */* text/html]
|
[<iframe>: combined response Content-Type: */* text/html]
|
||||||
expected: FAIL
|
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
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -53,9 +53,3 @@
|
||||||
[combined text/javascript ]
|
[combined text/javascript ]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[separate text/javascript x/x]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[separate text/javascript; charset=windows-1252 text/javascript]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_2.html]
|
||||||
|
[Multiple history traversals, last would be aborted]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_5.html]
|
||||||
|
[Multiple history traversals, last would be aborted]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[cross-origin-objects-on-new-window.html]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -1,5 +1,4 @@
|
||||||
[supported-elements.html]
|
[supported-elements.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[Contenteditable element should support autofocus]
|
[Contenteditable element should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -10,7 +9,7 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Area element should support autofocus]
|
[Area element should support autofocus]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_escaping-1.html]
|
[iframe_sandbox_popups_escaping-1.html]
|
||||||
type: testharness
|
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]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_escaping-3.html]
|
[iframe_sandbox_popups_escaping-3.html]
|
||||||
type: testharness
|
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]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_nonescaping-1.html]
|
[iframe_sandbox_popups_nonescaping-1.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_nonescaping-2.html]
|
[iframe_sandbox_popups_nonescaping-2.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: CRASH
|
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[form-double-submit.html]
|
|
||||||
[default submit action should supersede onclick submit()]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -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]
|
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||||
expected: TIMEOUT
|
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
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
[promise-job-entry.html]
|
[promise-job-entry.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[Fulfillment handler on fulfilled promise]
|
[Fulfillment handler on fulfilled promise]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Rejection handler on pending-then-rejected promise]
|
[Rejection handler on pending-then-rejected promise]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Sanity check: this all works as expected with no promises involved]
|
[Sanity check: this all works as expected with no promises involved]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
@ -15,5 +16,5 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Fulfillment handler on pending-then-fulfilled promise]
|
[Fulfillment handler on pending-then-fulfilled promise]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[realtimeanalyser-fft-scaling.html]
|
[realtimeanalyser-fft-scaling.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
5
tests/wpt/metadata/webmessaging/with-ports/017.html.ini
Normal file
5
tests/wpt/metadata/webmessaging/with-ports/017.html.ini
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Worker-constructor.html]
|
||||||
|
expected: ERROR
|
|
@ -1,5 +1,6 @@
|
||||||
[003.html]
|
[003.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
|
expected: ERROR
|
||||||
[shared]
|
[shared]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -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 => {
|
async_test(t => {
|
||||||
var i = document.createElement('iframe');
|
var i = document.createElement('iframe');
|
||||||
document.body.appendChild(i);
|
document.body.appendChild(i);
|
||||||
|
@ -28,6 +38,29 @@
|
||||||
img.src = "{{location[server]}}/images/red-16x16.png";
|
img.src = "{{location[server]}}/images/red-16x16.png";
|
||||||
}, "<iframe>'s about:blank inherits policy.");
|
}, "<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 => {
|
async_test(t => {
|
||||||
var i = document.createElement('iframe');
|
var i = document.createElement('iframe');
|
||||||
i.srcdoc = `
|
i.srcdoc = `
|
||||||
|
@ -58,6 +91,19 @@
|
||||||
document.body.appendChild(i);
|
document.body.appendChild(i);
|
||||||
}, "<iframe src='blob:...'>'s inherits policy.");
|
}, "<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 => {
|
async_test(t => {
|
||||||
var i = document.createElement('iframe');
|
var i = document.createElement('iframe');
|
||||||
i.src = `data:text/html,<img src='{{location[server]}}/images/red-16x16.png'
|
i.src = `data:text/html,<img src='{{location[server]}}/images/red-16x16.png'
|
||||||
|
@ -70,6 +116,9 @@
|
||||||
document.body.appendChild(i);
|
document.body.appendChild(i);
|
||||||
}, "<iframe src='data:...'>'s inherits policy.");
|
}, "<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 => {
|
async_test(t => {
|
||||||
var i = document.createElement('iframe');
|
var i = document.createElement('iframe');
|
||||||
i.src = `javascript:"<img src='{{location[server]}}/images/red-16x16.png'
|
i.src = `javascript:"<img src='{{location[server]}}/images/red-16x16.png'
|
||||||
|
@ -82,6 +131,16 @@
|
||||||
document.body.appendChild(i);
|
document.body.appendChild(i);
|
||||||
}, "<iframe src='javascript:...'>'s inherits policy (static <img> is blocked)");
|
}, "<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>
|
// 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,
|
// from the new document, this one is created from the initial empty document,
|
||||||
// while evaluating the javascript-url.
|
// while evaluating the javascript-url.
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
<title>Test: ASCII-case-insensitivity of media queries</title>
|
<title>Test: ASCII-case-insensitivity of media queries</title>
|
||||||
<link rel="author" title="Gerald Squelart" href="mailto:gerald@mozilla.com">
|
<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="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">
|
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -44,8 +44,7 @@ idl_test(
|
||||||
DOMTokenList: ['document.body.classList'],
|
DOMTokenList: ['document.body.classList'],
|
||||||
XPathEvaluator: ['new XPathEvaluator()'],
|
XPathEvaluator: ['new XPathEvaluator()'],
|
||||||
XPathExpression: ['document.createExpression("//*")'],
|
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)'],
|
XPathResult: ['document.evaluate("//*", document.body)'],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,15 +2,17 @@
|
||||||
<title>Element#requestFullscreen() for dialog element</title>
|
<title>Element#requestFullscreen() for dialog element</title>
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script src="../trusted-click.js"></script>
|
<script src="/resources/testdriver.js"></script>
|
||||||
|
<script src="/resources/testdriver-vendor.js"></script>
|
||||||
<div id="log"></div>
|
<div id="log"></div>
|
||||||
<dialog></dialog>
|
<dialog></dialog>
|
||||||
<script>
|
<script>
|
||||||
async_test(t => {
|
async_test(t => {
|
||||||
var dialog = document.querySelector("dialog");
|
var dialog = document.querySelector("dialog");
|
||||||
assert_true(dialog instanceof HTMLDialogElement);
|
assert_true(dialog instanceof HTMLDialogElement);
|
||||||
trusted_request(t, dialog);
|
|
||||||
document.onfullscreenchange = t.unreached_func("fullscreenchange event");
|
document.onfullscreenchange = t.unreached_func("fullscreenchange event");
|
||||||
document.onfullscreenerror = t.step_func_done();
|
document.onfullscreenerror = t.step_func_done();
|
||||||
|
|
||||||
|
test_driver.bless("Initiate fullscreen", () => dialog.requestFullscreen().catch(() => {}));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
|
@ -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>
|
|
@ -1409,6 +1409,18 @@ IdlInterface.prototype.get_interface_object_owner = function()
|
||||||
return legacyNamespace ? self[legacyNamespace] : self;
|
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()
|
IdlInterface.prototype.assert_interface_object_exists = function()
|
||||||
{
|
{
|
||||||
var owner = this.get_legacy_namespace() || "self";
|
var owner = this.get_legacy_namespace() || "self";
|
||||||
|
@ -1416,8 +1428,9 @@ IdlInterface.prototype.assert_interface_object_exists = function()
|
||||||
};
|
};
|
||||||
|
|
||||||
IdlInterface.prototype.get_interface_object = function() {
|
IdlInterface.prototype.get_interface_object = function() {
|
||||||
if (this.has_extended_attribute("NoInterfaceObject")) {
|
if (!this.should_have_interface_object()) {
|
||||||
throw new IdlHarnessError(this.name + " has no interface object due to NoInterfaceObject");
|
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];
|
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.
|
// This function tests WebIDL as of 2015-01-13.
|
||||||
|
|
||||||
// "For every interface that is exposed in a given ECMAScript global
|
if (!this.should_have_interface_object()) {
|
||||||
// environment and:
|
return;
|
||||||
// * 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.
|
|
||||||
// The name of the property is the identifier of the interface, and its
|
// The name of the property is the identifier of the interface, and its
|
||||||
// value is an object called the interface object.
|
// value is an object called the interface object.
|
||||||
// The property has the attributes { [[Writable]]: true,
|
// The property has the attributes { [[Writable]]: true,
|
||||||
// [[Enumerable]]: false, [[Configurable]]: true }."
|
// [[Enumerable]]: false, [[Configurable]]: true }."
|
||||||
if (this.is_callback() && !this.has_constants()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Should we test here that the property is actually writable
|
// TODO: Should we test here that the property is actually writable
|
||||||
// etc., or trust getOwnPropertyDescriptor?
|
// etc., or trust getOwnPropertyDescriptor?
|
||||||
this.assert_interface_object_exists();
|
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");
|
}.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() {
|
subsetTestByKey(this.name, test, function() {
|
||||||
// This function tests WebIDL as of 2014-10-25.
|
// This function tests WebIDL as of 2014-10-25.
|
||||||
// https://heycam.github.io/webidl/#es-interface-call
|
// https://heycam.github.io/webidl/#es-interface-call
|
||||||
|
@ -1729,7 +1736,7 @@ IdlInterface.prototype.test_self = function()
|
||||||
}.bind(this), this.name + " interface object length");
|
}.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() {
|
subsetTestByKey(this.name, test, function() {
|
||||||
// This function tests WebIDL as of 2015-11-17.
|
// This function tests WebIDL as of 2015-11-17.
|
||||||
// https://heycam.github.io/webidl/#interface-object
|
// 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.
|
// This function tests WebIDL as of 2015-01-21.
|
||||||
// https://heycam.github.io/webidl/#interface-object
|
// https://heycam.github.io/webidl/#interface-object
|
||||||
|
|
||||||
if (this.is_callback() && !this.has_constants()) {
|
if (!this.should_have_interface_object()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2050,7 +2057,7 @@ IdlInterface.prototype.test_self = function()
|
||||||
|
|
||||||
subsetTestByKey(this.name, test, function()
|
subsetTestByKey(this.name, test, function()
|
||||||
{
|
{
|
||||||
if (this.is_callback() && !this.has_constants()) {
|
if (!this.should_have_interface_object()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2085,7 +2092,7 @@ IdlInterface.prototype.test_self = function()
|
||||||
|
|
||||||
subsetTestByKey(this.name, test, function()
|
subsetTestByKey(this.name, test, function()
|
||||||
{
|
{
|
||||||
if (this.is_callback() && !this.has_constants()) {
|
if (!this.should_have_interface_object()) {
|
||||||
return;
|
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);
|
var a_test = subsetTestByKey(this.name, async_test, this.name + " interface: attribute " + member.name);
|
||||||
a_test.step(function()
|
a_test.step(function()
|
||||||
{
|
{
|
||||||
if (this.is_callback() && !this.has_constants()) {
|
if (!this.should_have_interface_object()) {
|
||||||
a_test.done()
|
a_test.done();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2422,7 +2429,7 @@ IdlInterface.prototype.test_member_operation = function(member)
|
||||||
// This function tests WebIDL as of 2015-12-29.
|
// This function tests WebIDL as of 2015-12-29.
|
||||||
// https://heycam.github.io/webidl/#es-operations
|
// https://heycam.github.io/webidl/#es-operations
|
||||||
|
|
||||||
if (this.is_callback() && !this.has_constants()) {
|
if (!this.should_have_interface_object()) {
|
||||||
a_test.done();
|
a_test.done();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2665,7 +2672,7 @@ IdlInterface.prototype.test_member_stringifier = function(member)
|
||||||
{
|
{
|
||||||
subsetTestByKey(this.name, test, function()
|
subsetTestByKey(this.name, test, function()
|
||||||
{
|
{
|
||||||
if (this.is_callback() && !this.has_constants()) {
|
if (!this.should_have_interface_object()) {
|
||||||
return;
|
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
|
// interface object, or the object is from a different global environment
|
||||||
// (not instanceof Object). TODO: test in this case that its prototype at
|
// (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.
|
// 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))
|
&& (typeof obj != expected_typeof || obj instanceof Object))
|
||||||
{
|
{
|
||||||
subsetTestByKey(this.name, test, function()
|
subsetTestByKey(this.name, test, function()
|
||||||
|
|
|
@ -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>
|
|
@ -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 |
|
@ -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 |
|
@ -368,7 +368,8 @@ class BrowserInstance(object):
|
||||||
|
|
||||||
def stop(self, force=False, skip_marionette=False):
|
def stop(self, force=False, skip_marionette=False):
|
||||||
"""Stop Firefox"""
|
"""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())
|
self.logger.debug("Stopping Firefox %s" % self.pid())
|
||||||
shutdown_methods = [(True, lambda: self.runner.wait(self.shutdown_timeout)),
|
shutdown_methods = [(True, lambda: self.runner.wait(self.shutdown_timeout)),
|
||||||
(False, lambda: self.runner.stop(signal.SIGTERM)),
|
(False, lambda: self.runner.stop(signal.SIGTERM)),
|
||||||
|
@ -387,8 +388,12 @@ class BrowserInstance(object):
|
||||||
except OSError:
|
except OSError:
|
||||||
# This can happen on Windows if the process is already dead
|
# This can happen on Windows if the process is already dead
|
||||||
pass
|
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:
|
if not skip_marionette:
|
||||||
self.output_handler.after_stop()
|
self.output_handler.after_stop(clean_shutdown=clean)
|
||||||
|
|
||||||
def pid(self):
|
def pid(self):
|
||||||
if self.runner.process_handler is None:
|
if self.runner.process_handler is None:
|
||||||
|
@ -472,22 +477,26 @@ class OutputHandler(object):
|
||||||
self.__call__(line)
|
self.__call__(line)
|
||||||
self.line_buffer = []
|
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)
|
self.logger.info("PROCESS LEAKS %s" % self.instance.leak_report_file)
|
||||||
if self.lsan_handler:
|
if self.lsan_handler:
|
||||||
self.lsan_handler.process()
|
self.lsan_handler.process()
|
||||||
if self.instance.leak_report_file is not None:
|
if self.instance.leak_report_file is not None:
|
||||||
# We have to ignore missing leaks in the tab because it can happen that the
|
if not clean_shutdown:
|
||||||
# content process crashed and in that case we don't want the test to fail.
|
# If we didn't get a clean shutdown there probably isn't a leak report file
|
||||||
# Ideally we would record which content process crashed and just skip those.
|
self.logger.warning("Firefox didn't exit cleanly, not processing leak logs")
|
||||||
mozleak.process_leak_log(
|
else:
|
||||||
self.instance.leak_report_file,
|
# We have to ignore missing leaks in the tab because it can happen that the
|
||||||
leak_thresholds=self.mozleak_thresholds,
|
# content process crashed and in that case we don't want the test to fail.
|
||||||
ignore_missing_leaks=["tab", "gmplugin"],
|
# Ideally we would record which content process crashed and just skip those.
|
||||||
log=self.logger,
|
mozleak.process_leak_log(
|
||||||
stack_fixer=self.stack_fixer,
|
self.instance.leak_report_file,
|
||||||
scope=self.group_metadata.get("scope"),
|
leak_thresholds=self.mozleak_thresholds,
|
||||||
allowed=self.mozleak_allowed)
|
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):
|
def __call__(self, line):
|
||||||
"""Write a line of output from the firefox process to the log"""
|
"""Write a line of output from the firefox process to the log"""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue