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
|
||||
|
||||
[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
|
||||
|
|
|
@ -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]
|
||||
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]
|
||||
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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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]
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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]
|
||||
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]
|
||||
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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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]
|
||||
expected: ERROR
|
||||
[shared]
|
||||
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
|
||||
|
||||
[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
|
||||
|
|
|
@ -14826,13 +14826,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"element-request-fullscreen-dialog-manual.html": [
|
||||
"360ade0724d1c9a31e8088f8a9177f88d9d5e732",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"element-request-fullscreen-non-top-manual.html": [
|
||||
"0764e9c8423a2f528dbfa12d4e57614d7128b4a0",
|
||||
[
|
||||
|
@ -24287,7 +24280,55 @@
|
|||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"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
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -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",
|
||||
[
|
||||
|
|
|
@ -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]
|
||||
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]
|
||||
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]
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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]
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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]
|
||||
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]
|
||||
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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
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]
|
||||
type: testharness
|
||||
expected: ERROR
|
||||
[shared]
|
||||
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 => {
|
||||
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.
|
||||
|
|
|
@ -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">
|
||||
|
||||
|
|
|
@ -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'],
|
||||
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)'],
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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>
|
|
@ -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;
|
||||
};
|
||||
|
||||
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()
|
||||
|
|
|
@ -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):
|
||||
"""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,11 +477,15 @@ 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:
|
||||
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.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue