Update web-platform-tests to revision b'79fa4cf76e0d39e3fc1b7ead85e067b0a064b892'

This commit is contained in:
WPT Sync Bot 2021-03-06 08:21:21 +00:00
parent 4a46a476d7
commit 31f9c69336
83 changed files with 2200 additions and 954 deletions

View file

@ -4,7 +4,7 @@
expected: TIMEOUT
[Opening a blob URL in a new window immediately before revoking it works.]
expected: TIMEOUT
expected: FAIL
[Fetching a blob URL immediately before revoking it works in an iframe.]
expected: FAIL

View file

@ -326,3 +326,153 @@
[margin-right length(mm) / values]
expected: FAIL
[color color(rgba) / values]
expected: FAIL
[font-size length(pt) / values]
expected: FAIL
[font-size length(pc) / values]
expected: FAIL
[font-size length(px) / values]
expected: FAIL
[font-size length(em) / values]
expected: FAIL
[font-size length(ex) / values]
expected: FAIL
[font-size length(mm) / values]
expected: FAIL
[font-size length(cm) / values]
expected: FAIL
[font-size length(in) / values]
expected: FAIL
[font-size percentage(%) / values]
expected: FAIL
[font-weight font-weight(keyword) / values]
expected: FAIL
[font-weight font-weight(numeric) / values]
expected: FAIL
[line-height number(integer) / values]
expected: FAIL
[line-height number(decimal) / values]
expected: FAIL
[line-height length(pt) / values]
expected: FAIL
[line-height length(pc) / values]
expected: FAIL
[line-height length(px) / values]
expected: FAIL
[line-height length(em) / values]
expected: FAIL
[line-height length(ex) / values]
expected: FAIL
[line-height length(mm) / values]
expected: FAIL
[line-height length(cm) / values]
expected: FAIL
[line-height length(in) / values]
expected: FAIL
[line-height percentage(%) / values]
expected: FAIL
[letter-spacing length(pt) / values]
expected: FAIL
[letter-spacing length(pc) / values]
expected: FAIL
[letter-spacing length(px) / values]
expected: FAIL
[letter-spacing length(em) / values]
expected: FAIL
[letter-spacing length(ex) / values]
expected: FAIL
[letter-spacing length(mm) / values]
expected: FAIL
[letter-spacing length(cm) / values]
expected: FAIL
[letter-spacing length(in) / values]
expected: FAIL
[word-spacing length(pt) / values]
expected: FAIL
[word-spacing length(pc) / values]
expected: FAIL
[word-spacing length(px) / values]
expected: FAIL
[word-spacing length(em) / values]
expected: FAIL
[word-spacing length(ex) / values]
expected: FAIL
[word-spacing length(mm) / values]
expected: FAIL
[word-spacing length(cm) / values]
expected: FAIL
[word-spacing length(in) / values]
expected: FAIL
[word-spacing percentage(%) / values]
expected: FAIL
[text-indent length(pt) / values]
expected: FAIL
[text-indent length(pc) / values]
expected: FAIL
[text-indent length(px) / values]
expected: FAIL
[text-indent length(em) / values]
expected: FAIL
[text-indent length(ex) / values]
expected: FAIL
[text-indent length(mm) / values]
expected: FAIL
[text-indent length(cm) / values]
expected: FAIL
[text-indent length(in) / values]
expected: FAIL
[text-indent percentage(%) / values]
expected: FAIL
[text-shadow shadow(shadow) / values]
expected: FAIL

View file

@ -236,156 +236,6 @@
[margin-right length(mm) / events]
expected: FAIL
[max-height length(ex) / events]
expected: FAIL
[max-height length(mm) / events]
expected: FAIL
[max-height length(cm) / events]
expected: FAIL
[max-height length(in) / events]
expected: FAIL
[max-height percentage(%) / events]
expected: FAIL
[max-width length(pt) / events]
expected: FAIL
[max-width length(pc) / events]
expected: FAIL
[max-width length(px) / events]
expected: FAIL
[max-width length(em) / events]
expected: FAIL
[max-width length(ex) / events]
expected: FAIL
[max-width length(mm) / events]
expected: FAIL
[max-width length(cm) / events]
expected: FAIL
[max-width length(in) / events]
expected: FAIL
[max-width percentage(%) / events]
expected: FAIL
[top length(pt) / events]
expected: FAIL
[top length(pc) / events]
expected: FAIL
[top length(px) / events]
expected: FAIL
[top length(em) / events]
expected: FAIL
[top length(ex) / events]
expected: FAIL
[top length(mm) / events]
expected: FAIL
[top length(cm) / events]
expected: FAIL
[top length(in) / events]
expected: FAIL
[top percentage(%) / events]
expected: FAIL
[right length(pt) / events]
expected: FAIL
[right length(pc) / events]
expected: FAIL
[right length(px) / events]
expected: FAIL
[right length(em) / events]
expected: FAIL
[right length(ex) / events]
expected: FAIL
[right length(mm) / events]
expected: FAIL
[right length(cm) / events]
expected: FAIL
[right length(in) / events]
expected: FAIL
[right percentage(%) / events]
expected: FAIL
[bottom length(pt) / events]
expected: FAIL
[bottom length(pc) / events]
expected: FAIL
[bottom length(px) / events]
expected: FAIL
[bottom length(em) / events]
expected: FAIL
[bottom length(ex) / events]
expected: FAIL
[bottom length(mm) / events]
expected: FAIL
[bottom length(cm) / events]
expected: FAIL
[bottom length(in) / events]
expected: FAIL
[bottom percentage(%) / events]
expected: FAIL
[left length(pt) / events]
expected: FAIL
[left length(pc) / events]
expected: FAIL
[left length(px) / events]
expected: FAIL
[left length(em) / events]
expected: FAIL
[left length(ex) / events]
expected: FAIL
[left length(mm) / events]
expected: FAIL
[left length(cm) / events]
expected: FAIL
[left length(in) / events]
expected: FAIL
[left percentage(%) / events]
expected: FAIL
[color color(rgba) / events]
expected: FAIL
@ -506,3 +356,126 @@
[word-spacing percentage(%) / events]
expected: FAIL
[background-color color(rgba) / events]
expected: FAIL
[border-top-width length(pt) / events]
expected: FAIL
[border-top-width length(pc) / events]
expected: FAIL
[border-top-width length(px) / events]
expected: FAIL
[border-top-width length(em) / events]
expected: FAIL
[border-top-width length(ex) / events]
expected: FAIL
[border-top-width length(mm) / events]
expected: FAIL
[border-top-width length(cm) / events]
expected: FAIL
[border-top-width length(in) / events]
expected: FAIL
[border-right-width length(pt) / events]
expected: FAIL
[border-right-width length(pc) / events]
expected: FAIL
[border-right-width length(px) / events]
expected: FAIL
[border-right-width length(em) / events]
expected: FAIL
[border-right-width length(ex) / events]
expected: FAIL
[border-right-width length(mm) / events]
expected: FAIL
[border-right-width length(cm) / events]
expected: FAIL
[border-right-width length(in) / events]
expected: FAIL
[border-bottom-width length(pt) / events]
expected: FAIL
[border-bottom-width length(pc) / events]
expected: FAIL
[border-bottom-width length(px) / events]
expected: FAIL
[border-bottom-width length(em) / events]
expected: FAIL
[border-bottom-width length(ex) / events]
expected: FAIL
[border-bottom-width length(mm) / events]
expected: FAIL
[border-bottom-width length(cm) / events]
expected: FAIL
[border-bottom-width length(in) / events]
expected: FAIL
[border-left-width length(pt) / events]
expected: FAIL
[border-left-width length(pc) / events]
expected: FAIL
[border-left-width length(px) / events]
expected: FAIL
[border-left-width length(em) / events]
expected: FAIL
[border-left-width length(ex) / events]
expected: FAIL
[border-left-width length(mm) / events]
expected: FAIL
[border-left-width length(cm) / events]
expected: FAIL
[border-left-width length(in) / events]
expected: FAIL
[border-top-color color(rgba) / events]
expected: FAIL
[border-right-color color(rgba) / events]
expected: FAIL
[border-bottom-color color(rgba) / events]
expected: FAIL
[border-left-color color(rgba) / events]
expected: FAIL
[padding-bottom length(pt) / events]
expected: FAIL
[padding-bottom length(pc) / events]
expected: FAIL
[padding-bottom length(px) / events]
expected: FAIL
[padding-bottom length(em) / events]
expected: FAIL

View file

@ -326,3 +326,153 @@
[margin-right length(mm) / values]
expected: FAIL
[max-height length(ex) / values]
expected: FAIL
[max-height length(mm) / values]
expected: FAIL
[max-height length(cm) / values]
expected: FAIL
[max-height length(in) / values]
expected: FAIL
[max-height percentage(%) / values]
expected: FAIL
[max-width length(pt) / values]
expected: FAIL
[max-width length(pc) / values]
expected: FAIL
[max-width length(px) / values]
expected: FAIL
[max-width length(em) / values]
expected: FAIL
[max-width length(ex) / values]
expected: FAIL
[max-width length(mm) / values]
expected: FAIL
[max-width length(cm) / values]
expected: FAIL
[max-width length(in) / values]
expected: FAIL
[max-width percentage(%) / values]
expected: FAIL
[top length(pt) / values]
expected: FAIL
[top length(pc) / values]
expected: FAIL
[top length(px) / values]
expected: FAIL
[top length(em) / values]
expected: FAIL
[top length(ex) / values]
expected: FAIL
[top length(mm) / values]
expected: FAIL
[top length(cm) / values]
expected: FAIL
[top length(in) / values]
expected: FAIL
[top percentage(%) / values]
expected: FAIL
[right length(pt) / values]
expected: FAIL
[right length(pc) / values]
expected: FAIL
[right length(px) / values]
expected: FAIL
[right length(em) / values]
expected: FAIL
[right length(ex) / values]
expected: FAIL
[right length(mm) / values]
expected: FAIL
[right length(cm) / values]
expected: FAIL
[right length(in) / values]
expected: FAIL
[right percentage(%) / values]
expected: FAIL
[bottom length(pt) / values]
expected: FAIL
[bottom length(pc) / values]
expected: FAIL
[bottom length(px) / values]
expected: FAIL
[bottom length(em) / values]
expected: FAIL
[bottom length(ex) / values]
expected: FAIL
[bottom length(mm) / values]
expected: FAIL
[bottom length(cm) / values]
expected: FAIL
[bottom length(in) / values]
expected: FAIL
[bottom percentage(%) / values]
expected: FAIL
[left length(pt) / values]
expected: FAIL
[left length(pc) / values]
expected: FAIL
[left length(px) / values]
expected: FAIL
[left length(em) / values]
expected: FAIL
[left length(ex) / values]
expected: FAIL
[left length(mm) / values]
expected: FAIL
[left length(cm) / values]
expected: FAIL
[left length(in) / values]
expected: FAIL
[left percentage(%) / values]
expected: FAIL

View file

@ -8,3 +8,12 @@
[A custom property referencing a non-existent variable is treated as unset]
expected: FAIL
[Custom properties in a cycle become guaranteed-invalid]
expected: FAIL
[A custom property referencing a cycle becomes guaranteed-invalid]
expected: FAIL
[A custom property referencing a non-existent variable becomes guaranteed-invalid]
expected: FAIL

View file

@ -1,7 +1,14 @@
[request-upload.any.html]
expected: TIMEOUT
[Fetch with POST with ReadableStream]
expected: FAIL
[Fetch with POST with text body on 421 response should be retried once on new connection.]
expected: FAIL
[Fetch with POST with ReadableStream on 421 response should return the response and not retry.]
expected: TIMEOUT
[request-upload.any.serviceworker.html]
expected: ERROR
@ -10,6 +17,13 @@
expected: ERROR
[request-upload.any.worker.html]
expected: TIMEOUT
[Fetch with POST with ReadableStream]
expected: FAIL
[Fetch with POST with text body on 421 response should be retried once on new connection.]
expected: FAIL
[Fetch with POST with ReadableStream on 421 response should return the response and not retry.]
expected: TIMEOUT

View file

@ -41,3 +41,45 @@
[Content-Length%3A%20]
expected: FAIL
[Input: "Content-Length: 42,42". Expected: 42.]
expected: FAIL
[Input: "Content-Length: 42\\r\\nContent-Length: 42,42". Expected: 42.]
expected: FAIL
[Input: "Content-Length: 30,30". Expected: 30.]
expected: FAIL
[Input: "Content-Length: 30\\r\\nContent-Length: 30,30". Expected: 30.]
expected: FAIL
[Input: "Content-Length: aaaah\\r\\nContent-Length: aaaah". Expected: 42.]
expected: FAIL
[Input: "Content-Length: aaaah, aaaah". Expected: 42.]
expected: FAIL
[Input: "Content-Length: aaaah". Expected: 42.]
expected: FAIL
[Input: "Content-Length: 42s". Expected: 42.]
expected: FAIL
[Input: "Content-Length: 30s". Expected: 42.]
expected: FAIL
[Input: "Content-Length: -1". Expected: 42.]
expected: FAIL
[Input: "Content-Length: 0x20". Expected: 42.]
expected: FAIL
[Input: "Content-Length: 030\\r\\nContent-Length: 30". Expected: network error.]
expected: FAIL
[Input: "Content-Length: \\"30\\"". Expected: 42.]
expected: FAIL
[Input: "Content-Length: ". Expected: 42.]
expected: FAIL

View file

@ -309,12 +309,9 @@
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: NOTRUN
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL

View file

@ -56,3 +56,6 @@
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL

View file

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

View file

@ -1,4 +1,5 @@
[creating_browsing_context_test_01.html]
expected: TIMEOUT
[first argument: absolute url]
expected: FAIL
expected: TIMEOUT

View file

@ -1,4 +1,5 @@
[embedded-opener-remove-frame.html]
expected: CRASH
[opener of discarded nested browsing context]
expected: FAIL

View file

@ -14,3 +14,6 @@
[Host element with delegatesFocus should support autofocus]
expected: FAIL
[Non-HTMLElement should not support autofocus]
expected: FAIL

View file

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

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html]
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-2.html]
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-3.html]
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL

View file

@ -1,4 +0,0 @@
[form-double-submit-2.html]
[preventDefault should allow onclick submit() to succeed]
expected: FAIL

View file

@ -0,0 +1,4 @@
[form-double-submit-3.html]
[<button> should have the same double-submit protection as <input type=submit>]
expected: FAIL

View file

@ -2,9 +2,6 @@
[input type search: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type password: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type search: selectionStart a second time (must not fire select)]
expected: FAIL
@ -23,42 +20,15 @@
[input type text: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionStart a second time (must not fire select)]
expected: FAIL
[input type password: select() a second time (must not fire select)]
expected: FAIL
[input type password: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[textarea: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[textarea: setRangeText() a second time (must not fire select)]
expected: FAIL
[textarea: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type text: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type text: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type text: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type search: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type search: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type search: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type tel: setRangeText() a second time (must not fire select)]
expected: FAIL
@ -68,9 +38,48 @@
[input type url: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type url: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type password: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[textarea: selectionStart a second time (must not fire select)]
expected: FAIL
[textarea: selectionEnd a second time (must not fire select)]
expected: FAIL
[textarea: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type text: selectionStart a second time (must not fire select)]
expected: FAIL
[input type text: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type search: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type search: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type tel: select() a second time (must not fire select)]
expected: FAIL
[input type tel: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type tel: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type url: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type password: selectionStart a second time (must not fire select)]
expected: FAIL
[input type password: selectionEnd out of range a second time (must not fire select)]
expected: FAIL

View file

@ -0,0 +1,4 @@
[module-delayed.html]
[async document.write in a module]
expected: FAIL

View file

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

View file

@ -1,9 +1,10 @@
[promise-job-entry-different-function-realm.html]
expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
expected: FAIL
expected: TIMEOUT
[Thenable resolution]
expected: FAIL
@ -12,5 +13,5 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
expected: FAIL
expected: TIMEOUT

View file

@ -620,3 +620,9 @@
[X SNR (-300.5653344749286 dB) is not greater than or equal to 65.737. Got -300.5653344749286.]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[15240\]\t-6.9001540120165462e-27\t3.3531737327575684e-1\t3.3531737327575684e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[15241\]\t4.5592646835272248e-41\t3.9367997646331787e-1\t3.9367997646331787e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 3.9367997646331787e-1 at index of 15241.\n\tMax RelError of 1.0000000000000000e+0 at index of 15240.\n]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[7189\]\t-7.1126672850560558e-27\t-9.8956179618835449e-1\t9.8956179618835449e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[7190\]\t-8.8409073650836945e-2\t-9.9664616584777832e-1\t9.0823709219694138e-1\t9.1129341918891205e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.8956179618835449e-1 at index of 7189.\n\tMax RelError of 1.0000000000000000e+0 at index of 7189.\n]
expected: FAIL

View file

@ -2,6 +2,3 @@
[test_element_in_object]
expected: FAIL
[test_element_in_collection]
expected: FAIL

View file

@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
expected: TIMEOUT
expected: FAIL
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: TIMEOUT

View file

@ -53703,6 +53703,19 @@
{}
]
],
"floats-placement-004.html": [
"bbfc9196c867206bef20bc9e16a79325c7b77ab0",
[
null,
[
[
"/css/CSS2/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"floats-placement-vertical-001a.xht": [
"07de02887e7f28693ef23b518c4729602ff77c3b",
[
@ -285754,6 +285767,14 @@
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
[]
],
"javascript-url-srcdoc-cross-origin-iframe-inheritance-helper.sub.html": [
"afe4753cf93f8d68884eb731ce69e004a4b5e9ff",
[]
],
"navigate-parent-to-blob.html": [
"df4a4438935a5798d3672111081984d6ef9d0ef1",
[]
],
"navigate-self-to-blob.html": [
"9ea069969cafff022e94fef3de535feafaca1de7",
[]
@ -285762,6 +285783,10 @@
"2642b0fa06730692aa4617260b6903b7f698b4b4",
[]
],
"postmessage-top.html": [
"4f83a58dd4a80b5a6171266d2944e628d204e434",
[]
],
"srcdoc-child-frame.html": [
"9148be203d30ea043a56b38305877142735a4c49",
[]
@ -286472,7 +286497,7 @@
[]
],
"checkReport.sub.js": [
"f188d18207e71569f004070ec4bc7d367ae9d6b0",
"ecbc69239098c6c99699e6678ec618b928cc31f1",
[]
],
"dedicated-worker-helper.js": [
@ -324343,7 +324368,7 @@
[]
],
"common.js": [
"65feec3b6b61c1342217ba550652f9dbfa684d6c",
"038ef07a6d92af585101c864cdd048cffb68f3bc",
[]
],
"scroll-target-align-001-iframe.html": [
@ -341895,7 +341920,7 @@
[]
],
"network-partition-key.py": [
"61e0496fca35d359008a11f2b581555cb6d94027",
"d59c74137b80a7135bb9b2c0b39014b764a61428",
[]
],
"network-partition-worker-checker.html": [
@ -347228,7 +347253,7 @@
},
"resources": {
"dispatcher.js": [
"45225a7f263de4ac7700febf2f99b91c473f8a8d",
"dd96310e410b177d37c3224ece2b4cf87be34754",
[]
],
"dispatcher.py": [
@ -357597,11 +357622,11 @@
[]
],
"webgl1.idl": [
"95a0fa342652d5ed76ad567f2a5437b7c888f7e0",
"46d629193c9139de5a570734c6ecaf249e3e9600",
[]
],
"webgl2.idl": [
"b2e660e6b6545f33e4acb6e378bce3517ab4d4cb",
"518637fcc72d3e02924f00d269bf1c56794806dd",
[]
],
"webhid.idl": [
@ -365485,7 +365510,7 @@
[]
],
"fetch-event-test-worker.js": [
"ba8204b9bb8ae94906bb4b0964c999a6c38fc207",
"bb59bc928651acd5274431e6d31711c4288523ba",
[]
],
"fetch-event-within-sw-worker.js": [
@ -378508,7 +378533,7 @@
"urlpattern": {
"resources": {
"urlpatterntestdata.json": [
"9e7fe20005bed1aa02a9db4dba749c3ba134449a",
"ae9405ea4b1292a210c10add867f6cb0bff12013",
[]
]
}
@ -380567,6 +380592,10 @@
"META.yml": [
"be8cb028f08842589d6c2f06391bc5c8469048d2",
[]
],
"RTCRtpSynchronizationSource-helper.js": [
"10cfd651554a259817cd34521ab44556063f4f44",
[]
]
},
"webrtc-ice": {
@ -406831,6 +406860,13 @@
{}
]
],
"blob-url-inherits-from-initiator.sub.html": [
"72d59325d196a816544a3a82c466e2e688484c3c",
[
null,
{}
]
],
"document-write-iframe.html": [
"a84e3a37031280ec33ccb98307f422e3ca468744",
[
@ -406873,6 +406909,13 @@
{}
]
],
"javascript-url-srcdoc-cross-origin-iframe-inheritance.html": [
"81210fe30f41faf10a2ca9704c9295bbd228ecfd",
[
null,
{}
]
],
"sandboxed-blob-scheme.html": [
"590fa7ec1a9caafc6f18e6821f100629688bd300",
[
@ -415008,7 +415051,7 @@
]
],
"env-in-custom-properties.tentative.html": [
"6dadcc586b039b7fe4d69dc6ce4678a601343b77",
"24afe2963b938a01d73fc6ff02eb944ee3822b85",
[
null,
{}
@ -423437,6 +423480,13 @@
{}
]
],
"position-sticky-scrollIntoView.html": [
"6fb4723529e49a550577d6f38d884028acc277f5",
[
null,
{}
]
],
"position-sticky-scrolled-remove-sibling.html": [
"f2cf8a98b30a2c19a986d31bc4da99f0bdd8df9d",
[
@ -423444,6 +423494,13 @@
{}
]
],
"position-sticky-top-and-bottom.html": [
"c790eaaf3ee2b62916e5f151dea10af882c5568a",
[
null,
{}
]
],
"position-sticky-top.html": [
"9929fc734bab4c9816200bdb04e859eedd11b110",
[
@ -423616,7 +423673,7 @@
]
],
"unit-cycles.html": [
"5301b6fcc77b1b7885ef7602410e4f4586391b4f",
"f8eba17f2183bbc6fc02e9e5ee2cf5fc55d30d56",
[
null,
{}
@ -423630,7 +423687,7 @@
]
],
"var-reference-registered-properties-cycles.html": [
"e94da5ddaef0c6906acc37ac78cab571504535d4",
"91792ef51db097ed626839537b40814c12b98cef",
[
null,
{}
@ -434233,7 +434290,7 @@
]
],
"variable-substitution-variable-declaration.html": [
"678d05a1acc234362c1f8ac54f6a2190fc3a9fb1",
"0b0ab1f0f0f868fa86673f51d6ada27245926add",
[
null,
{}
@ -434282,7 +434339,7 @@
]
],
"variables-substitute-guaranteed-invalid.html": [
"c30e8746db516f2ef35e904c948801b184ceecae",
"4abfe28d1f21b2891599543b3972b26fbd15b77e",
[
null,
{}
@ -443066,7 +443123,7 @@
]
],
"caretnavigation.html": [
"defe7fecfc2850355fe21da8a6d14ed6c5265885",
"c0a8eca4ac23e179ab7e8d7df741417564c4fda1",
[
null,
{
@ -458162,7 +458219,7 @@
]
],
"request-upload.any.js": [
"1412816a3c220d60ca1b3c525ac5953d10157c3c",
"82b1ac93c996dc76a641fc7f85e342c513ffe3d8",
[
"fetch/api/basic/request-upload.any.html",
{
@ -458174,6 +458231,14 @@
[
"script",
"../resources/utils.js"
],
[
"script",
"/common/utils.js"
],
[
"script",
"/common/get-host-info.sub.js"
]
]
}
@ -458189,6 +458254,14 @@
[
"script",
"../resources/utils.js"
],
[
"script",
"/common/utils.js"
],
[
"script",
"/common/get-host-info.sub.js"
]
]
}
@ -458204,6 +458277,14 @@
[
"script",
"../resources/utils.js"
],
[
"script",
"/common/utils.js"
],
[
"script",
"/common/get-host-info.sub.js"
]
]
}
@ -458219,6 +458300,14 @@
[
"script",
"../resources/utils.js"
],
[
"script",
"/common/utils.js"
],
[
"script",
"/common/get-host-info.sub.js"
]
]
}
@ -464082,7 +464171,7 @@
]
],
"parsing.window.js": [
"73fbb482e042c1f05cfedfac8927ea789991265b",
"5028ad943dee6ab7bdd915dd61dd87461b059ff3",
[
"fetch/content-length/parsing.window.html",
{}
@ -509554,7 +509643,7 @@
]
],
"elementTiming.html": [
"cdfdff55f33ba591d5068ed0aea644527b12bc4e",
"ec71e0477ba1ff98836bca7db9a19484cc01d4d2",
[
null,
{
@ -522997,7 +523086,7 @@
]
],
"pointerevent_touch-action-keyboard.html": [
"aeff71331dd61ec5e7da5c0e67e241e9e4bdd941",
"ba087ab64151343e6e49b0ae13b2fd1ccb2f7d10",
[
null,
{
@ -540277,7 +540366,7 @@
]
],
"fetch-event.https.html": [
"5e56fe248c9ef63cc9d028c15d0de123a8304612",
"31a2cb05e2ccb44b6de35beb8000599a516368ee",
[
null,
{
@ -565186,7 +565275,7 @@
]
],
"RTCRtpSynchronizationSource-captureTimestamp.html": [
"323c207f5e63e0ca77458e4254e12072c9ac9e2d",
"11f2540c94602a9b4e685b9a5a309466c47fcccf",
[
null,
{

View file

@ -326,3 +326,153 @@
[margin-right length(mm) / values]
expected: FAIL
[color color(rgba) / values]
expected: FAIL
[font-size length(pt) / values]
expected: FAIL
[font-size length(pc) / values]
expected: FAIL
[font-size length(px) / values]
expected: FAIL
[font-size length(em) / values]
expected: FAIL
[font-size length(ex) / values]
expected: FAIL
[font-size length(mm) / values]
expected: FAIL
[font-size length(cm) / values]
expected: FAIL
[font-size length(in) / values]
expected: FAIL
[font-size percentage(%) / values]
expected: FAIL
[font-weight font-weight(keyword) / values]
expected: FAIL
[font-weight font-weight(numeric) / values]
expected: FAIL
[line-height number(integer) / values]
expected: FAIL
[line-height number(decimal) / values]
expected: FAIL
[line-height length(pt) / values]
expected: FAIL
[line-height length(pc) / values]
expected: FAIL
[line-height length(px) / values]
expected: FAIL
[line-height length(em) / values]
expected: FAIL
[line-height length(ex) / values]
expected: FAIL
[line-height length(mm) / values]
expected: FAIL
[line-height length(cm) / values]
expected: FAIL
[line-height length(in) / values]
expected: FAIL
[line-height percentage(%) / values]
expected: FAIL
[letter-spacing length(pt) / values]
expected: FAIL
[letter-spacing length(pc) / values]
expected: FAIL
[letter-spacing length(px) / values]
expected: FAIL
[letter-spacing length(em) / values]
expected: FAIL
[letter-spacing length(ex) / values]
expected: FAIL
[letter-spacing length(mm) / values]
expected: FAIL
[letter-spacing length(cm) / values]
expected: FAIL
[letter-spacing length(in) / values]
expected: FAIL
[word-spacing length(pt) / values]
expected: FAIL
[word-spacing length(pc) / values]
expected: FAIL
[word-spacing length(px) / values]
expected: FAIL
[word-spacing length(em) / values]
expected: FAIL
[word-spacing length(ex) / values]
expected: FAIL
[word-spacing length(mm) / values]
expected: FAIL
[word-spacing length(cm) / values]
expected: FAIL
[word-spacing length(in) / values]
expected: FAIL
[word-spacing percentage(%) / values]
expected: FAIL
[text-indent length(pt) / values]
expected: FAIL
[text-indent length(pc) / values]
expected: FAIL
[text-indent length(px) / values]
expected: FAIL
[text-indent length(em) / values]
expected: FAIL
[text-indent length(ex) / values]
expected: FAIL
[text-indent length(mm) / values]
expected: FAIL
[text-indent length(cm) / values]
expected: FAIL
[text-indent length(in) / values]
expected: FAIL
[text-indent percentage(%) / values]
expected: FAIL
[text-shadow shadow(shadow) / values]
expected: FAIL

View file

@ -206,156 +206,6 @@
[margin-right length(mm) / events]
expected: FAIL
[max-height length(ex) / events]
expected: FAIL
[max-height length(mm) / events]
expected: FAIL
[max-height length(cm) / events]
expected: FAIL
[max-height length(in) / events]
expected: FAIL
[max-height percentage(%) / events]
expected: FAIL
[max-width length(pt) / events]
expected: FAIL
[max-width length(pc) / events]
expected: FAIL
[max-width length(px) / events]
expected: FAIL
[max-width length(em) / events]
expected: FAIL
[max-width length(ex) / events]
expected: FAIL
[max-width length(mm) / events]
expected: FAIL
[max-width length(cm) / events]
expected: FAIL
[max-width length(in) / events]
expected: FAIL
[max-width percentage(%) / events]
expected: FAIL
[top length(pt) / events]
expected: FAIL
[top length(pc) / events]
expected: FAIL
[top length(px) / events]
expected: FAIL
[top length(em) / events]
expected: FAIL
[top length(ex) / events]
expected: FAIL
[top length(mm) / events]
expected: FAIL
[top length(cm) / events]
expected: FAIL
[top length(in) / events]
expected: FAIL
[top percentage(%) / events]
expected: FAIL
[right length(pt) / events]
expected: FAIL
[right length(pc) / events]
expected: FAIL
[right length(px) / events]
expected: FAIL
[right length(em) / events]
expected: FAIL
[right length(ex) / events]
expected: FAIL
[right length(mm) / events]
expected: FAIL
[right length(cm) / events]
expected: FAIL
[right length(in) / events]
expected: FAIL
[right percentage(%) / events]
expected: FAIL
[bottom length(pt) / events]
expected: FAIL
[bottom length(pc) / events]
expected: FAIL
[bottom length(px) / events]
expected: FAIL
[bottom length(em) / events]
expected: FAIL
[bottom length(ex) / events]
expected: FAIL
[bottom length(mm) / events]
expected: FAIL
[bottom length(cm) / events]
expected: FAIL
[bottom length(in) / events]
expected: FAIL
[bottom percentage(%) / events]
expected: FAIL
[left length(pt) / events]
expected: FAIL
[left length(pc) / events]
expected: FAIL
[left length(px) / events]
expected: FAIL
[left length(em) / events]
expected: FAIL
[left length(ex) / events]
expected: FAIL
[left length(mm) / events]
expected: FAIL
[left length(cm) / events]
expected: FAIL
[left length(in) / events]
expected: FAIL
[left percentage(%) / events]
expected: FAIL
[color color(rgba) / events]
expected: FAIL
@ -506,3 +356,126 @@
[text-shadow shadow(shadow) / events]
expected: FAIL
[background-color color(rgba) / events]
expected: FAIL
[border-top-width length(pt) / events]
expected: FAIL
[border-top-width length(pc) / events]
expected: FAIL
[border-top-width length(px) / events]
expected: FAIL
[border-top-width length(em) / events]
expected: FAIL
[border-top-width length(ex) / events]
expected: FAIL
[border-top-width length(mm) / events]
expected: FAIL
[border-top-width length(cm) / events]
expected: FAIL
[border-top-width length(in) / events]
expected: FAIL
[border-right-width length(pt) / events]
expected: FAIL
[border-right-width length(pc) / events]
expected: FAIL
[border-right-width length(px) / events]
expected: FAIL
[border-right-width length(em) / events]
expected: FAIL
[border-right-width length(ex) / events]
expected: FAIL
[border-right-width length(mm) / events]
expected: FAIL
[border-right-width length(cm) / events]
expected: FAIL
[border-right-width length(in) / events]
expected: FAIL
[border-bottom-width length(pt) / events]
expected: FAIL
[border-bottom-width length(pc) / events]
expected: FAIL
[border-bottom-width length(px) / events]
expected: FAIL
[border-bottom-width length(em) / events]
expected: FAIL
[border-bottom-width length(ex) / events]
expected: FAIL
[border-bottom-width length(mm) / events]
expected: FAIL
[border-bottom-width length(cm) / events]
expected: FAIL
[border-bottom-width length(in) / events]
expected: FAIL
[border-left-width length(pt) / events]
expected: FAIL
[border-left-width length(pc) / events]
expected: FAIL
[border-left-width length(px) / events]
expected: FAIL
[border-left-width length(em) / events]
expected: FAIL
[border-left-width length(ex) / events]
expected: FAIL
[border-left-width length(mm) / events]
expected: FAIL
[border-left-width length(cm) / events]
expected: FAIL
[border-left-width length(in) / events]
expected: FAIL
[border-top-color color(rgba) / events]
expected: FAIL
[border-right-color color(rgba) / events]
expected: FAIL
[border-bottom-color color(rgba) / events]
expected: FAIL
[border-left-color color(rgba) / events]
expected: FAIL
[padding-bottom length(pt) / events]
expected: FAIL
[padding-bottom length(pc) / events]
expected: FAIL
[padding-bottom length(px) / events]
expected: FAIL
[padding-bottom length(em) / events]
expected: FAIL

View file

@ -326,3 +326,153 @@
[margin-right length(mm) / values]
expected: FAIL
[max-height length(ex) / values]
expected: FAIL
[max-height length(mm) / values]
expected: FAIL
[max-height length(cm) / values]
expected: FAIL
[max-height length(in) / values]
expected: FAIL
[max-height percentage(%) / values]
expected: FAIL
[max-width length(pt) / values]
expected: FAIL
[max-width length(pc) / values]
expected: FAIL
[max-width length(px) / values]
expected: FAIL
[max-width length(em) / values]
expected: FAIL
[max-width length(ex) / values]
expected: FAIL
[max-width length(mm) / values]
expected: FAIL
[max-width length(cm) / values]
expected: FAIL
[max-width length(in) / values]
expected: FAIL
[max-width percentage(%) / values]
expected: FAIL
[top length(pt) / values]
expected: FAIL
[top length(pc) / values]
expected: FAIL
[top length(px) / values]
expected: FAIL
[top length(em) / values]
expected: FAIL
[top length(ex) / values]
expected: FAIL
[top length(mm) / values]
expected: FAIL
[top length(cm) / values]
expected: FAIL
[top length(in) / values]
expected: FAIL
[top percentage(%) / values]
expected: FAIL
[right length(pt) / values]
expected: FAIL
[right length(pc) / values]
expected: FAIL
[right length(px) / values]
expected: FAIL
[right length(em) / values]
expected: FAIL
[right length(ex) / values]
expected: FAIL
[right length(mm) / values]
expected: FAIL
[right length(cm) / values]
expected: FAIL
[right length(in) / values]
expected: FAIL
[right percentage(%) / values]
expected: FAIL
[bottom length(pt) / values]
expected: FAIL
[bottom length(pc) / values]
expected: FAIL
[bottom length(px) / values]
expected: FAIL
[bottom length(em) / values]
expected: FAIL
[bottom length(ex) / values]
expected: FAIL
[bottom length(mm) / values]
expected: FAIL
[bottom length(cm) / values]
expected: FAIL
[bottom length(in) / values]
expected: FAIL
[bottom percentage(%) / values]
expected: FAIL
[left length(pt) / values]
expected: FAIL
[left length(pc) / values]
expected: FAIL
[left length(px) / values]
expected: FAIL
[left length(em) / values]
expected: FAIL
[left length(ex) / values]
expected: FAIL
[left length(mm) / values]
expected: FAIL
[left length(cm) / values]
expected: FAIL
[left length(in) / values]
expected: FAIL
[left percentage(%) / values]
expected: FAIL

View file

@ -0,0 +1,4 @@
[variable-substitution-variable-declaration.html]
[target10 --varC]
expected: FAIL

View file

@ -8,3 +8,12 @@
[A custom property referencing a non-existent variable is treated as unset]
expected: FAIL
[Custom properties in a cycle become guaranteed-invalid]
expected: FAIL
[A custom property referencing a cycle becomes guaranteed-invalid]
expected: FAIL
[A custom property referencing a non-existent variable becomes guaranteed-invalid]
expected: FAIL

View file

@ -1,12 +1,26 @@
[request-upload.any.html]
expected: TIMEOUT
[Fetch with POST with ReadableStream]
expected: FAIL
[Fetch with POST with text body on 421 response should be retried once on new connection.]
expected: FAIL
[Fetch with POST with ReadableStream on 421 response should return the response and not retry.]
expected: TIMEOUT
[request-upload.any.worker.html]
expected: TIMEOUT
[Fetch with POST with ReadableStream]
expected: FAIL
[Fetch with POST with text body on 421 response should be retried once on new connection.]
expected: FAIL
[Fetch with POST with ReadableStream on 421 response should return the response and not retry.]
expected: TIMEOUT
[request-upload.any.serviceworker.html]
expected: ERROR

View file

@ -41,3 +41,45 @@
[Content-Length%3A%20]
expected: FAIL
[Input: "Content-Length: 42,42". Expected: 42.]
expected: FAIL
[Input: "Content-Length: 42\\r\\nContent-Length: 42,42". Expected: 42.]
expected: FAIL
[Input: "Content-Length: 30,30". Expected: 30.]
expected: FAIL
[Input: "Content-Length: 30\\r\\nContent-Length: 30,30". Expected: 30.]
expected: FAIL
[Input: "Content-Length: aaaah\\r\\nContent-Length: aaaah". Expected: 42.]
expected: FAIL
[Input: "Content-Length: aaaah, aaaah". Expected: 42.]
expected: FAIL
[Input: "Content-Length: aaaah". Expected: 42.]
expected: FAIL
[Input: "Content-Length: 42s". Expected: 42.]
expected: FAIL
[Input: "Content-Length: 30s". Expected: 42.]
expected: FAIL
[Input: "Content-Length: -1". Expected: 42.]
expected: FAIL
[Input: "Content-Length: 0x20". Expected: 42.]
expected: FAIL
[Input: "Content-Length: 030\\r\\nContent-Length: 30". Expected: network error.]
expected: FAIL
[Input: "Content-Length: \\"30\\"". Expected: 42.]
expected: FAIL
[Input: "Content-Length: ". Expected: 42.]
expected: FAIL

View file

@ -309,12 +309,9 @@
[fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL

View file

@ -56,3 +56,6 @@
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL

View file

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

View file

@ -1,4 +1,5 @@
[creating_browsing_context_test_01.html]
expected: TIMEOUT
[first argument: absolute url]
expected: FAIL
expected: TIMEOUT

View file

@ -1,4 +1,5 @@
[embedded-opener-remove-frame.html]
expected: CRASH
[opener and "removed" embedded documents]
expected: FAIL

View file

@ -14,3 +14,6 @@
[Host element with delegatesFocus should support autofocus]
expected: FAIL
[Non-HTMLElement should not support autofocus]
expected: FAIL

View file

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

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-2.html]
type: testharness
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-3.html]
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL

View file

@ -1,4 +0,0 @@
[form-double-submit-2.html]
[preventDefault should allow onclick submit() to succeed]
expected: FAIL

View file

@ -0,0 +1,4 @@
[form-double-submit-3.html]
[<button> should have the same double-submit protection as <input type=submit>]
expected: FAIL

View file

@ -2,9 +2,6 @@
[input type search: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type password: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type search: selectionStart a second time (must not fire select)]
expected: FAIL
@ -23,42 +20,15 @@
[input type text: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionStart a second time (must not fire select)]
expected: FAIL
[input type password: select() a second time (must not fire select)]
expected: FAIL
[input type password: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[textarea: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[textarea: setRangeText() a second time (must not fire select)]
expected: FAIL
[textarea: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type text: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type text: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type text: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type search: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type search: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type search: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type tel: setRangeText() a second time (must not fire select)]
expected: FAIL
@ -68,9 +38,48 @@
[input type url: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type url: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type password: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[textarea: selectionStart a second time (must not fire select)]
expected: FAIL
[textarea: selectionEnd a second time (must not fire select)]
expected: FAIL
[textarea: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type text: selectionStart a second time (must not fire select)]
expected: FAIL
[input type text: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type search: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type search: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type tel: select() a second time (must not fire select)]
expected: FAIL
[input type tel: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type tel: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type url: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type password: selectionStart a second time (must not fire select)]
expected: FAIL
[input type password: selectionEnd out of range a second time (must not fire select)]
expected: FAIL

View file

@ -0,0 +1,4 @@
[module-delayed.html]
[async document.write in a module]
expected: FAIL

View file

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

View file

@ -1,9 +1,10 @@
[promise-job-entry-different-function-realm.html]
expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
expected: FAIL
expected: TIMEOUT
[Thenable resolution]
expected: FAIL
@ -12,5 +13,5 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
expected: FAIL
expected: TIMEOUT

View file

@ -848,3 +848,9 @@
[X SNR (-300.5653344749286 dB) is not greater than or equal to 65.737. Got -300.5653344749286.]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[15240\]\t-6.9001540120165462e-27\t3.3531737327575684e-1\t3.3531737327575684e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[15241\]\t4.5592646835272248e-41\t3.9367997646331787e-1\t3.9367997646331787e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 3.9367997646331787e-1 at index of 15241.\n\tMax RelError of 1.0000000000000000e+0 at index of 15240.\n]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[7189\]\t-7.1126672850560558e-27\t-9.8956179618835449e-1\t9.8956179618835449e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[7190\]\t-8.8409073650836945e-2\t-9.9664616584777832e-1\t9.0823709219694138e-1\t9.1129341918891205e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.8956179618835449e-1 at index of 7189.\n\tMax RelError of 1.0000000000000000e+0 at index of 7189.\n]
expected: FAIL

View file

@ -2,6 +2,3 @@
[test_element_in_object]
expected: FAIL
[test_element_in_collection]
expected: FAIL

View file

@ -0,0 +1,43 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Blob URL inherits CSP from initiator.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
let testCases = [
{
initiator_origin: window.origin,
name: "Initiator is same-origin with target frame.",
},
{
initiator_origin: "http://{{hosts[alt][]}}:{{ports[http][0]}}",
name: "Initiator is cross-origin with target frame.",
},
];
testCases.forEach(test => {
async_test(t => {
// Create a popup. At the beginning, the popup has no CSPs.
let target = window.open();
t.add_cleanup(() => target.close());
// Create a child frame in the popup. The child frame has
// Content-Security-Policy: script-src 'unsafe-inline'. The child frame
// will navigate the popup to a blob URL, which will try if eval is
// allowed and message back.
let initiator = target.document.createElement('iframe');
initiator.sandbox = "allow-scripts allow-same-origin allow-top-navigation";
initiator.src = test.initiator_origin +
"/content-security-policy/inheritance/support/navigate-parent-to-blob.html";
window.addEventListener("message", t.step_func(e => {
if (e.source !== target) return;
assert_equals(e.data, "eval blocked",
"Eval should be blocked by CSP in blob URL.");
t.done();
}));
target.document.body.appendChild(initiator);
}, test.name);
});
</script>

View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>Content Security Policy: nested inheritance</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
// This test creates a page with CSP: frame-src 'self'. The page is
// navigated to a javascript URL creating a cross-origin iframe inside a
// srcdoc iframe. If everything works correctly, the cross-origin iframe
// should be blocked.
//
// Note that most of the logic is performed by the iframe. This file is only
// for managing testharness assertions.
async_test(t => {
window.addEventListener("message", t.step_func(function(e) {
if (e.data === "frame allowed") {
assert_unreached("Frame should have been blocked.");
} else if (e.data === "frame blocked") {
t.done();
}
}));
}, "Nested cross-origin iframe should be blocked by frame-src 'self'.");
</script>
<iframe src="./support/javascript-url-srcdoc-cross-origin-iframe-inheritance-helper.sub.html"></iframe>
</body>

View file

@ -0,0 +1,24 @@
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Security-Policy" content="frame-src 'self'">
<script>
// The following is the content of a srcdoc iframe. It contains:
// - a script that catches the frame-src securitypolicyviolation event and
// forwards the information to the parent,
// - a cross-origin iframe.
let doc = `
<script>
window.addEventListener("securitypolicyviolation", e => {
if (e.violatedDirective === "frame-src") {
window.top.postMessage("frame blocked", "*");
}
});
</scr` + `ipt>
<iframe src="http://{{hosts[alt][]}}:{{ports[http][0]}}/content-security-policy/inheritance/support/postmessage-top.html"></iframe>`;
doc = doc.replaceAll('"', "\\\'");
const js_url = "javascript:'<iframe srcdoc=\""+ doc +"\">'";
window.open(js_url, "_self");
</script>
</head>

View file

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-inline'">
</head>
<body>
<script>
const blob_payload = `
<!doctype html>
<script>
var i = false;
try {
eval('i = true');
} catch {}
opener.postMessage(i ? "eval allowed" : "eval blocked", '*');
</scr` + `ipt>
`;
var blob_url = URL.createObjectURL(
new Blob([blob_payload], { type: 'text/html' }));
parent.location = blob_url;
</script>
</body>
</html>

View file

@ -0,0 +1,4 @@
<!DOCTYPE html>
<script>
top.postMessage("ready", "*");
</script>

View file

@ -70,7 +70,7 @@
assert_equals("false", reportExists, data.error);
} else {
if(reportExists != "" && reportExists == "false" && data["csp-report"]) {
assert_unreached("CSP report sent, but not expecting one: " + JSON.stringify(data["csp-report"]));
assert_unreached("CSP report sent, but not expecting one");
}
// Firefox expands 'self' or origins in a policy to the actual origin value
// so "www.example.com" becomes "http://www.example.com:80".

View file

@ -0,0 +1,9 @@
<!DOCTYPE html>
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1183944">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="width:100px; display: flow-root; background: red; line-height: 0;">
<div style="width: 100px; height: 50px; float: left; background: green;"></div>
<div style="width: 100px; height: 10px; float: right; background: green;"></div>
<div style="display: inline-block; width: 100px; height: 40px; background: green;"></div>
</div>

View file

@ -28,8 +28,8 @@
test(() => {
const style = window.getComputedStyle(child);
assert_equals(style.getPropertyValue("--var1"), " inherited");
}, 'Substitution of unrecognized env() causes unset');
assert_equals(style.getPropertyValue("--var1"), "");
}, 'Substitution of unrecognized env() causes guaranteed-invalid');
</script>
</body>
</html>

View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<title>Scrolling to sticky position elements uses their unshifted position</title>
<link rel="help" href="https://www.w3.org/TR/css-position-3/#stickypos-scroll" />
<meta name="assert" content="This test checks that scrolling to sticky position elements uses their initial position" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
h1 {
position: sticky;
background: #ddd;
border: 1px solid black;
top: 0px;
bottom: 0px;
}
section {
height: 100vh;
}
</style>
<body>
<h1>Title 1</h1>
<section></section>
<h1>Title 2</h1>
<section></section>
<h1>Title 3</h1>
<section></section>
<script>
test(() => {
window.scrollTo(0, 0);
const element = document.querySelectorAll('h1')[2];
element.scrollIntoView();
assert_approx_equals(document.scrollingElement.scrollTop, element.offsetTop, 1);
}, 'scrolling a sticky element into view should use its unshifted position');
</script>
</body>

View file

@ -0,0 +1,57 @@
<!DOCTYPE html>
<title>position:sticky elements can be constrained by top and bottom exceeding container size</title>
<link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" />
<meta name="assert" content="This test checks that position:sticky elements obey both top and bottom constraints" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
.scroller {
height: 200px;
overflow: auto;
position: relative;
}
.container {
height: 120px;
}
.padding, .sticky {
height: 50px;
}
.overflow-padding {
height: 200px;
}
.sticky {
position: sticky;
background: green;
top: -25px;
bottom: 150px;
}
</style>
<body>
<div class="scroller">
<div class="container">
<div class="padding"></div>
<div class="sticky"></div>
</div>
<div class="overflow-padding"></div>
</div>
</body>
<script>
test(() => {
const scroller = document.querySelector('.scroller');
const element = document.querySelector('.sticky');
scroller.scrollTop = 0;
assert_equals(element.offsetTop, 0);
}, 'initially the sticky box should be pushed to the top of the container');
test(() => {
const scroller = document.querySelector('.scroller');
const element = document.querySelector('.sticky');
scroller.scrollTop = 95;
assert_equals(element.offsetTop, 70);
}, 'when we scroll past the flow position the top constraint pushes it down');
</script>

View file

@ -4,7 +4,7 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
function register_length(name, inherits=true) {
function register_length(name, inherits=false) {
CSS.registerProperty({
name: name,
syntax: '<length>',
@ -96,19 +96,19 @@
test(function() {
target.style = 'font-size: var(--font-size-em);';
assert_property_equals('font-size', unsetFontSize);
assert_property_equals('--font-size-em', '');
assert_property_equals('--font-size-em', '0px');
}, 'Lengths with em units may not be referenced from font-size');
test(function() {
target.style = 'font-size: var(--font-size-ex);';
assert_property_equals('font-size', unsetFontSize);
assert_property_equals('--font-size-ex', '');
assert_property_equals('--font-size-ex', '0px');
}, 'Lengths with ex units may not be referenced from font-size');
test(function() {
target.style = 'font-size: var(--font-size-ch);';
assert_property_equals('font-size', unsetFontSize);
assert_property_equals('--font-size-ch', '');
assert_property_equals('--font-size-ch', '0px');
}, 'Lengths with ch units may not be referenced from font-size');
test(function() {
@ -122,7 +122,7 @@
let root = document.documentElement;
root.style = 'font-size: var(--font-size-rem);';
assert_property_equals('font-size', unsetFontSize, root);
assert_property_equals('--font-size-rem', '', root);
assert_property_equals('--font-size-rem', '0px', root);
}, 'Lengths with rem units may not be referenced from font-size on root element');
test(function() {
@ -155,26 +155,26 @@
test(function() {
target.style = 'font-size: var(--font-size-em-via-var);';
assert_property_equals('font-size', unsetFontSize);
assert_property_equals('--font-size-em-via-var', '');
assert_property_equals('--font-size-em-via-var', '0px');
}, 'Lengths with em units are detected via var references');
test(function() {
target.style = 'font-size: var(--font-size-ex-via-var);';
assert_property_equals('font-size', unsetFontSize);
assert_property_equals('--font-size-ex-via-var', '');
assert_property_equals('--font-size-ex-via-var', '0px');
}, 'Lengths with ex units are detected via var references');
test(function() {
target.style = 'font-size: var(--font-size-ch-via-var);';
assert_property_equals('font-size', unsetFontSize);
assert_property_equals('--font-size-ch-via-var', '');
assert_property_equals('--font-size-ch-via-var', '0px');
}, 'Lengths with ch units are detected via var references');
test(function() {
let root = document.documentElement;
root.style = 'font-size: var(--font-size-rem-via-var);';
assert_property_equals('font-size', unsetFontSize, root);
assert_property_equals('--font-size-rem-via-var', '', root);
assert_property_equals('--font-size-rem-via-var', '0px', root);
root.style = 'font-size: unset';
}, 'Lengths with rem units are detected via var references');

View file

@ -25,13 +25,13 @@ test(function() {
CSS.registerProperty({name: '--registered-1-d', syntax: '<length>', initialValue: '4px', inherits: false});
computedStyle = getComputedStyle(test1);
assert_equals(computedStyle.getPropertyValue('--registered-1-a'), '');
assert_equals(computedStyle.getPropertyValue('--registered-1-b'), '');
assert_equals(computedStyle.getPropertyValue('--registered-1-c'), '30px');
assert_equals(computedStyle.getPropertyValue('--registered-1-d'), '4px');
assert_equals(computedStyle.getPropertyValue('--unregistered-1-a'), '');
assert_equals(computedStyle.left, '50px');
assert_equals(computedStyle.top, '60px');
assert_equals(computedStyle.getPropertyValue('--registered-1-a'), '1px');
assert_equals(computedStyle.getPropertyValue('--registered-1-b'), '2px');
assert_equals(computedStyle.getPropertyValue('--registered-1-c'), '2px');
assert_equals(computedStyle.getPropertyValue('--registered-1-d'), '2px');
assert_equals(computedStyle.getPropertyValue('--unregistered-1-a'), '1px');
assert_equals(computedStyle.left, '1px');
assert_equals(computedStyle.top, '2px');
}, "A var() cycle between two registered properties is handled correctly.");
</script>
@ -62,18 +62,18 @@ test(function() {
CSS.registerProperty({name: '--registered-2-e', syntax: '<length>', initialValue: '5px', inherits: false});
computedStyle = getComputedStyle(test2);
assert_equals(computedStyle.getPropertyValue('--registered-2-a'), '');
assert_equals(computedStyle.getPropertyValue('--registered-2-a'), '1px');
assert_equals(computedStyle.getPropertyValue('--unregistered-2-a'), '');
assert_equals(computedStyle.getPropertyValue('--registered-2-b'), '30px');
assert_equals(computedStyle.getPropertyValue('--registered-2-c'), '3px');
assert_equals(computedStyle.getPropertyValue('--registered-2-b'), '1px');
assert_equals(computedStyle.getPropertyValue('--registered-2-c'), '1px');
assert_equals(computedStyle.getPropertyValue('--registered-2-d'), '40px');
assert_equals(computedStyle.getPropertyValue('--registered-2-e'), '5px');
assert_equals(computedStyle.getPropertyValue('--unregistered-2-b'), '50px');
assert_equals(computedStyle.getPropertyValue('--unregistered-2-c'), '');
assert_equals(computedStyle.getPropertyValue('--unregistered-2-b'), '1px');
assert_equals(computedStyle.getPropertyValue('--unregistered-2-c'), '1px');
assert_equals(computedStyle.getPropertyValue('--unregistered-2-d'), '60px');
assert_equals(computedStyle.getPropertyValue('--unregistered-2-e'), '');
assert_equals(computedStyle.left, '70px');
assert_equals(computedStyle.left, '1px');
assert_equals(computedStyle.top, '80px');
}, "A var() cycle between a registered properties and an unregistered property is handled correctly.");
</script>
@ -136,7 +136,7 @@ test(function() {
assert_equals(computedStyle.getPropertyValue('--unregistered-4-a'), '');
assert_equals(computedStyle.getPropertyValue('--registered-4-b'), 'meow');
assert_equals(computedStyle.getPropertyValue('--registered-4-c'), 'circle');
assert_equals(computedStyle.getPropertyValue('--registered-4-c'), '');
assert_equals(computedStyle.getPropertyValue('--unregistered-4-b'), 'woof');
assert_equals(computedStyle.getPropertyValue('--unregistered-4-c'), '');
assert_equals(computedStyle.transitionProperty, 'water');
@ -174,9 +174,10 @@ test(function() {
let computedStyle = getComputedStyle(test5);
assert_equals(computedStyle.getPropertyValue('--registered-5-a'), '');
assert_equals(computedStyle.getPropertyValue('--registered-5-b'), '');
assert_equals(computedStyle.getPropertyValue('--registered-5-c'), 'foo');
assert_equals(computedStyle.getPropertyValue('--registered-5-d'), 'bar');
assert_equals(computedStyle.getPropertyValue('--registered-5-e'), 'baz');
assert_equals(computedStyle.getPropertyValue('--registered-5-c'), '');
assert_equals(computedStyle.getPropertyValue('--registered-5-d'), '');
assert_equals(computedStyle.getPropertyValue('--registered-5-e'), '');
assert_equals(computedStyle.getPropertyValue('color'), 'rgb(0, 128, 0)');
}, "Invalid at computed-value time triggers 'unset' behavior");
}, "Custom properties with universal syntax become guaranteed-invalid when " +
"invalid at computed-value time");
</script>

View file

@ -19,14 +19,7 @@ async function keyPress(target, key) {
code = KEY_CODE_MAP[key];
// First move pointer on target and click to ensure it receives the key.
let actions = new test_driver.Actions()
.pointerMove(0, 0, {origin: target})
.pointerDown()
.pointerUp()
.keyDown(code)
.keyUp(code);
return actions.send();
return test_driver.send_keys(target, code);
}
// Use rAF to wait for the value of the getter function passed to not change for

View file

@ -140,7 +140,7 @@
{ element: "target10", propertyName: "--varA", expectedPropertyValue: "" },
{ element: "target10", propertyName: "--varB", expectedPropertyValue: "" },
{ element: "target10", propertyName: "--varC", expectedPropertyValue: " another good one" },
{ element: "target10", propertyName: "--varC", expectedPropertyValue: "" },
];
testcases.forEach(function (testcase) {

View file

@ -30,15 +30,15 @@
let cs = getComputedStyle(target1);
assert_equals(cs.getPropertyValue('--var1'), '');
assert_equals(cs.getPropertyValue('--var2'), '');
}, 'Custom properties in a cycle are guaranteed-invalid');
}, 'Custom properties in a cycle become guaranteed-invalid');
test( function () {
let cs = getComputedStyle(target1);
assert_equals(cs.getPropertyValue('--var3'), ' inherited');
}, 'A custom property referencing a cycle is treated as unset');
assert_equals(cs.getPropertyValue('--var3'), '');
}, 'A custom property referencing a cycle becomes guaranteed-invalid');
test( function () {
let cs = getComputedStyle(target1);
assert_equals(cs.getPropertyValue('--var4'), ' inherited');
}, 'A custom property referencing a non-existent variable is treated as unset');
assert_equals(cs.getPropertyValue('--var4'), '');
}, 'A custom property referencing a non-existent variable becomes guaranteed-invalid');
</script>

View file

@ -28,12 +28,7 @@ const KEY_CODE_MAP = {
*/
function keyPress(target, key) {
const code = KEY_CODE_MAP[key];
let actions = new test_driver.Actions()
.keyDown(code)
.keyUp(code);
return actions.send();
return test_driver.send_keys(target, code);
}
</script>

View file

@ -1,5 +1,7 @@
// META: global=window,worker
// META: script=../resources/utils.js
// META: script=/common/utils.js
// META: script=/common/get-host-info.sub.js
function testUpload(desc, url, method, createBody, expectedBody) {
const requestInit = {"method": method}
@ -123,3 +125,30 @@ testUploadFailure("Fetch with POST with ReadableStream containing Blob", url,
controller.close();
}})
});
promise_test(async (test) => {
const resp = await fetch(
"/fetch/connection-pool/resources/network-partition-key.py?"
+ `status=421&uuid=${token()}&partition_id=${get_host_info().ORIGIN}`
+ `&dispatch=check_partition&addcounter=true`,
{method: "POST", body: "foobar"});
assert_equals(resp.status, 421);
const text = await resp.text();
assert_equals(text, "ok. Request was sent 2 times. 2 connections were created.");
}, "Fetch with POST with text body on 421 response should be retried once on new connection.");
promise_test(async (test) => {
const body = new ReadableStream({start: controller => {
const encoder = new TextEncoder();
controller.enqueue(encoder.encode("Test"));
controller.close();
}});
const resp = await fetch(
"/fetch/connection-pool/resources/network-partition-key.py?"
+ `status=421&uuid=${token()}&partition_id=${get_host_info().ORIGIN}`
+ `&dispatch=check_partition&addcounter=true`,
{method: "POST", body: body});
assert_equals(resp.status, 421);
const text = await resp.text();
assert_equals(text, "ok. Request was sent 1 times. 1 connections were created.");
}, "Fetch with POST with ReadableStream on 421 response should return the response and not retry.");

View file

@ -25,15 +25,26 @@ def main(request, response):
# Unless nocheck_partition is true, check partition_id against server_state, and update server_state.
stash = request.server.stash
test_failed = False
request_count = 0;
connection_count = 0;
if request.GET.first(b"nocheck_partition", None) != b"True":
# Need to grab the lock to access the Stash, since requests are made in parallel.
with stash.lock:
# Don't use server hostname here, since H2 allows multiple hosts to reuse a connection.
# Server IP is not currently available, unfortunately.
address_key = isomorphic_encode(str(request.client_address) + u"|" + str(request.url_parts.port))
server_state = stash.take(uuid) or {b"test_failed": False}
if address_key in server_state and server_state[address_key] != partition_id:
server_state[b"test_failed"] = True
server_state = stash.take(uuid) or {b"test_failed": False,
b"request_count": 0, b"connection_count": 0}
request_count = server_state[b"request_count"]
request_count += 1
server_state[b"request_count"] = request_count
if address_key in server_state:
if server_state[address_key] != partition_id:
server_state[b"test_failed"] = True
else:
connection_count = server_state[b"connection_count"]
connection_count += 1
server_state[b"connection_count"] = connection_count
server_state[address_key] = partition_id
test_failed = server_state[b"test_failed"]
stash.put(uuid, server_state)
@ -50,9 +61,14 @@ def main(request, response):
return handle_fetch_file(request, response, partition_id, uuid)
if dispatch == b"check_partition":
status = request.GET.first(b"status", 200)
if test_failed:
return simple_response(request, response, 200, b"OK", b"Multiple partition IDs used on a socket")
return simple_response(request, response, 200, b"OK", b"ok")
return simple_response(request, response, status, b"OK", b"Multiple partition IDs used on a socket")
body = b"ok"
if request.GET.first(b"addcounter", False):
body += (". Request was sent " + str(request_count) + " times. " +
str(connection_count) + " connections were created.").encode('utf-8')
return simple_response(request, response, status, b"OK", body)
if dispatch == b"clean_up":
stash.take(uuid)

View file

@ -3,17 +3,16 @@ promise_test(() => {
}, "Loading JSON…");
function runTests(testUnits) {
testUnits.forEach(testUnit => {
const input = encodeURIComponent(testUnit.input);
testUnits.forEach(({ input, output }) => {
promise_test(t => {
const result = fetch("resources/content-length.py?length=" + input);
if (testUnit.output === null) {
const result = fetch(`resources/content-length.py?length=${encodeURIComponent(input)}`);
if (output === null) {
return promise_rejects_js(t, TypeError, result);
} else {
return result.then(res => res.text()).then(text => {
assert_equals(text.length, testUnit.output);
assert_equals(text.length, output);
});
}
}, input);
}, `Input: ${format_value(input)}. Expected: ${output === null ? "network error" : output}.`);
});
}

View file

@ -10,10 +10,28 @@ const dispatcher_path =
'/html/cross-origin-opener-policy/reporting/resources/dispatcher.py';
const dispatcher_url = new URL(dispatcher_path, location.href).href;
// Return a promise, limiting the number of concurrent accesses to a shared
// resources to |max_concurrent_access|.
const concurrencyLimiter = (max_concurrency) => {
let pending = 0;
let waiting = [];
return async (task) => {
pending++;
if (pending > max_concurrency)
await new Promise(resolve => waiting.push(resolve));
await task();
pending--;
waiting.shift()?.();
};
}
// The official web-platform-test runner sometimes drop POST requests when
// too many are requested in parallel. Limiting this document to send only one
// at a time fixes the issue.
const sendLimiter = concurrencyLimiter(1);
const send = async function(uuid, message) {
// The official web-platform-test runner sometimes drop POST requests when
// many are requested in parallel. Using a lock fixes the issue.
await navigator.locks.request("dispatcher_send", async lock => {
await sendLimiter(async () => {
await fetch(dispatcher_url + `?uuid=${uuid}`, {
method: 'POST',
body: message

View file

@ -36,20 +36,31 @@ let events = [];
async_test(t => {
let test1 = document.getElementById("test1");
let test2 = document.getElementById("test2");
document.getElementById("test1").addEventListener("click",
() => {test2.style.display = "block"; test2.style.top = "100px"; test2.style.left = "0"});
document.getElementById("test2").addEventListener("click",
e => {events.push(e.clientX); events.push(e.clientY)});
test1.addEventListener("click",
() => {
test2.style.display = "block";
test2.style.top = "100px";
test2.style.left = "0"});
test2.addEventListener("click",
e => {
events.push(e.clientX);
events.push(e.clientY);});
let div = document.getElementById("backing");
const waitCondition = new Promise((resolve, reject)=>{setTimeout(resolve, 5000);});
const test1ClickWatcher = new EventWatcher(t, test1, ["click"], ()=>waitCondition);
const test2ClickWatcher = new EventWatcher(t, test2, ["click"], ()=>waitCondition);
let waitForClicks = Promise.all([test1ClickWatcher.wait_for(["click"]), test2ClickWatcher.wait_for(["click"])]);
let actions = new test_driver.Actions()
.pointerMove(0, 0, {origin: test1})
.pointerDown()
.pointerUp()
.pointerMove(0, 0, {origin: test2})
.pointerDown()
.pointerUp()
.send()
.then(()=>new test_driver.Actions()
.pointerMove(0, 0, {origin: test2})
.pointerDown()
.pointerUp()
.send())
.then(()=>waitForClicks)
.then(t.step_func_done(() => assert_array_equals(events, [50, 150])))
.catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e)));
});

View file

@ -523,33 +523,33 @@ interface mixin WebGLRenderingContextBase
sequence<DOMString>? getSupportedExtensions();
object? getExtension(DOMString name);
void activeTexture(GLenum texture);
void attachShader(WebGLProgram program, WebGLShader shader);
void bindAttribLocation(WebGLProgram program, GLuint index, DOMString name);
void bindBuffer(GLenum target, WebGLBuffer? buffer);
void bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer);
void bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer);
void bindTexture(GLenum target, WebGLTexture? texture);
void blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
void blendEquation(GLenum mode);
void blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
void blendFunc(GLenum sfactor, GLenum dfactor);
void blendFuncSeparate(GLenum srcRGB, GLenum dstRGB,
GLenum srcAlpha, GLenum dstAlpha);
undefined activeTexture(GLenum texture);
undefined attachShader(WebGLProgram program, WebGLShader shader);
undefined bindAttribLocation(WebGLProgram program, GLuint index, DOMString name);
undefined bindBuffer(GLenum target, WebGLBuffer? buffer);
undefined bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer);
undefined bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer);
undefined bindTexture(GLenum target, WebGLTexture? texture);
undefined blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
undefined blendEquation(GLenum mode);
undefined blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
undefined blendFunc(GLenum sfactor, GLenum dfactor);
undefined blendFuncSeparate(GLenum srcRGB, GLenum dstRGB,
GLenum srcAlpha, GLenum dstAlpha);
[WebGLHandlesContextLoss] GLenum checkFramebufferStatus(GLenum target);
void clear(GLbitfield mask);
void clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
void clearDepth(GLclampf depth);
void clearStencil(GLint s);
void colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
void compileShader(WebGLShader shader);
undefined clear(GLbitfield mask);
undefined clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
undefined clearDepth(GLclampf depth);
undefined clearStencil(GLint s);
undefined colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
undefined compileShader(WebGLShader shader);
void copyTexImage2D(GLenum target, GLint level, GLenum internalformat,
GLint x, GLint y, GLsizei width, GLsizei height,
GLint border);
void copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLint x, GLint y, GLsizei width, GLsizei height);
undefined copyTexImage2D(GLenum target, GLint level, GLenum internalformat,
GLint x, GLint y, GLsizei width, GLsizei height,
GLint border);
undefined copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLint x, GLint y, GLsizei width, GLsizei height);
WebGLBuffer? createBuffer();
WebGLFramebuffer? createFramebuffer();
@ -558,36 +558,36 @@ interface mixin WebGLRenderingContextBase
WebGLShader? createShader(GLenum type);
WebGLTexture? createTexture();
void cullFace(GLenum mode);
undefined cullFace(GLenum mode);
void deleteBuffer(WebGLBuffer? buffer);
void deleteFramebuffer(WebGLFramebuffer? framebuffer);
void deleteProgram(WebGLProgram? program);
void deleteRenderbuffer(WebGLRenderbuffer? renderbuffer);
void deleteShader(WebGLShader? shader);
void deleteTexture(WebGLTexture? texture);
undefined deleteBuffer(WebGLBuffer? buffer);
undefined deleteFramebuffer(WebGLFramebuffer? framebuffer);
undefined deleteProgram(WebGLProgram? program);
undefined deleteRenderbuffer(WebGLRenderbuffer? renderbuffer);
undefined deleteShader(WebGLShader? shader);
undefined deleteTexture(WebGLTexture? texture);
void depthFunc(GLenum func);
void depthMask(GLboolean flag);
void depthRange(GLclampf zNear, GLclampf zFar);
void detachShader(WebGLProgram program, WebGLShader shader);
void disable(GLenum cap);
void disableVertexAttribArray(GLuint index);
void drawArrays(GLenum mode, GLint first, GLsizei count);
void drawElements(GLenum mode, GLsizei count, GLenum type, GLintptr offset);
undefined depthFunc(GLenum func);
undefined depthMask(GLboolean flag);
undefined depthRange(GLclampf zNear, GLclampf zFar);
undefined detachShader(WebGLProgram program, WebGLShader shader);
undefined disable(GLenum cap);
undefined disableVertexAttribArray(GLuint index);
undefined drawArrays(GLenum mode, GLint first, GLsizei count);
undefined drawElements(GLenum mode, GLsizei count, GLenum type, GLintptr offset);
void enable(GLenum cap);
void enableVertexAttribArray(GLuint index);
void finish();
void flush();
void framebufferRenderbuffer(GLenum target, GLenum attachment,
GLenum renderbuffertarget,
WebGLRenderbuffer? renderbuffer);
void framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget,
WebGLTexture? texture, GLint level);
void frontFace(GLenum mode);
undefined enable(GLenum cap);
undefined enableVertexAttribArray(GLuint index);
undefined finish();
undefined flush();
undefined framebufferRenderbuffer(GLenum target, GLenum attachment,
GLenum renderbuffertarget,
WebGLRenderbuffer? renderbuffer);
undefined framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget,
WebGLTexture? texture, GLint level);
undefined frontFace(GLenum mode);
void generateMipmap(GLenum target);
undefined generateMipmap(GLenum target);
WebGLActiveInfo? getActiveAttrib(WebGLProgram program, GLuint index);
WebGLActiveInfo? getActiveUniform(WebGLProgram program, GLuint index);
@ -621,7 +621,7 @@ interface mixin WebGLRenderingContextBase
[WebGLHandlesContextLoss] GLintptr getVertexAttribOffset(GLuint index, GLenum pname);
void hint(GLenum target, GLenum mode);
undefined hint(GLenum target, GLenum mode);
[WebGLHandlesContextLoss] GLboolean isBuffer(WebGLBuffer? buffer);
[WebGLHandlesContextLoss] GLboolean isEnabled(GLenum cap);
[WebGLHandlesContextLoss] GLboolean isFramebuffer(WebGLFramebuffer? framebuffer);
@ -629,99 +629,99 @@ interface mixin WebGLRenderingContextBase
[WebGLHandlesContextLoss] GLboolean isRenderbuffer(WebGLRenderbuffer? renderbuffer);
[WebGLHandlesContextLoss] GLboolean isShader(WebGLShader? shader);
[WebGLHandlesContextLoss] GLboolean isTexture(WebGLTexture? texture);
void lineWidth(GLfloat width);
void linkProgram(WebGLProgram program);
void pixelStorei(GLenum pname, GLint param);
void polygonOffset(GLfloat factor, GLfloat units);
undefined lineWidth(GLfloat width);
undefined linkProgram(WebGLProgram program);
undefined pixelStorei(GLenum pname, GLint param);
undefined polygonOffset(GLfloat factor, GLfloat units);
void renderbufferStorage(GLenum target, GLenum internalformat,
GLsizei width, GLsizei height);
void sampleCoverage(GLclampf value, GLboolean invert);
void scissor(GLint x, GLint y, GLsizei width, GLsizei height);
undefined renderbufferStorage(GLenum target, GLenum internalformat,
GLsizei width, GLsizei height);
undefined sampleCoverage(GLclampf value, GLboolean invert);
undefined scissor(GLint x, GLint y, GLsizei width, GLsizei height);
void shaderSource(WebGLShader shader, DOMString source);
undefined shaderSource(WebGLShader shader, DOMString source);
void stencilFunc(GLenum func, GLint ref, GLuint mask);
void stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
void stencilMask(GLuint mask);
void stencilMaskSeparate(GLenum face, GLuint mask);
void stencilOp(GLenum fail, GLenum zfail, GLenum zpass);
void stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
undefined stencilFunc(GLenum func, GLint ref, GLuint mask);
undefined stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
undefined stencilMask(GLuint mask);
undefined stencilMaskSeparate(GLenum face, GLuint mask);
undefined stencilOp(GLenum fail, GLenum zfail, GLenum zpass);
undefined stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
void texParameterf(GLenum target, GLenum pname, GLfloat param);
void texParameteri(GLenum target, GLenum pname, GLint param);
undefined texParameterf(GLenum target, GLenum pname, GLfloat param);
undefined texParameteri(GLenum target, GLenum pname, GLint param);
void uniform1f(WebGLUniformLocation? location, GLfloat x);
void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y);
void uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z);
void uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
undefined uniform1f(WebGLUniformLocation? location, GLfloat x);
undefined uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y);
undefined uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z);
undefined uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void uniform1i(WebGLUniformLocation? location, GLint x);
void uniform2i(WebGLUniformLocation? location, GLint x, GLint y);
void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z);
void uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w);
undefined uniform1i(WebGLUniformLocation? location, GLint x);
undefined uniform2i(WebGLUniformLocation? location, GLint x, GLint y);
undefined uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z);
undefined uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w);
void useProgram(WebGLProgram? program);
void validateProgram(WebGLProgram program);
undefined useProgram(WebGLProgram? program);
undefined validateProgram(WebGLProgram program);
void vertexAttrib1f(GLuint index, GLfloat x);
void vertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
void vertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
void vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
undefined vertexAttrib1f(GLuint index, GLfloat x);
undefined vertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
undefined vertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
undefined vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void vertexAttrib1fv(GLuint index, Float32List values);
void vertexAttrib2fv(GLuint index, Float32List values);
void vertexAttrib3fv(GLuint index, Float32List values);
void vertexAttrib4fv(GLuint index, Float32List values);
undefined vertexAttrib1fv(GLuint index, Float32List values);
undefined vertexAttrib2fv(GLuint index, Float32List values);
undefined vertexAttrib3fv(GLuint index, Float32List values);
undefined vertexAttrib4fv(GLuint index, Float32List values);
void vertexAttribPointer(GLuint index, GLint size, GLenum type,
GLboolean normalized, GLsizei stride, GLintptr offset);
undefined vertexAttribPointer(GLuint index, GLint size, GLenum type,
GLboolean normalized, GLsizei stride, GLintptr offset);
void viewport(GLint x, GLint y, GLsizei width, GLsizei height);
undefined viewport(GLint x, GLint y, GLsizei width, GLsizei height);
};
interface mixin WebGLRenderingContextOverloads
{
void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
void bufferData(GLenum target, [AllowShared] BufferSource? data, GLenum usage);
void bufferSubData(GLenum target, GLintptr offset, [AllowShared] BufferSource data);
undefined bufferData(GLenum target, GLsizeiptr size, GLenum usage);
undefined bufferData(GLenum target, [AllowShared] BufferSource? data, GLenum usage);
undefined bufferSubData(GLenum target, GLintptr offset, [AllowShared] BufferSource data);
void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat,
GLsizei width, GLsizei height, GLint border,
[AllowShared] ArrayBufferView data);
void compressedTexSubImage2D(GLenum target, GLint level,
GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format,
[AllowShared] ArrayBufferView data);
undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat,
GLsizei width, GLsizei height, GLint border,
[AllowShared] ArrayBufferView data);
undefined compressedTexSubImage2D(GLenum target, GLint level,
GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format,
[AllowShared] ArrayBufferView data);
void readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
void texImage2D(GLenum target, GLint level, GLint internalformat,
GLsizei width, GLsizei height, GLint border, GLenum format,
GLenum type, [AllowShared] ArrayBufferView? pixels);
void texImage2D(GLenum target, GLint level, GLint internalformat,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
undefined texImage2D(GLenum target, GLint level, GLint internalformat,
GLsizei width, GLsizei height, GLint border, GLenum format,
GLenum type, [AllowShared] ArrayBufferView? pixels);
undefined texImage2D(GLenum target, GLint level, GLint internalformat,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height,
GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height,
GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
void uniform1fv(WebGLUniformLocation? location, Float32List v);
void uniform2fv(WebGLUniformLocation? location, Float32List v);
void uniform3fv(WebGLUniformLocation? location, Float32List v);
void uniform4fv(WebGLUniformLocation? location, Float32List v);
undefined uniform1fv(WebGLUniformLocation? location, Float32List v);
undefined uniform2fv(WebGLUniformLocation? location, Float32List v);
undefined uniform3fv(WebGLUniformLocation? location, Float32List v);
undefined uniform4fv(WebGLUniformLocation? location, Float32List v);
void uniform1iv(WebGLUniformLocation? location, Int32List v);
void uniform2iv(WebGLUniformLocation? location, Int32List v);
void uniform3iv(WebGLUniformLocation? location, Int32List v);
void uniform4iv(WebGLUniformLocation? location, Int32List v);
undefined uniform1iv(WebGLUniformLocation? location, Int32List v);
undefined uniform2iv(WebGLUniformLocation? location, Int32List v);
undefined uniform3iv(WebGLUniformLocation? location, Int32List v);
undefined uniform4iv(WebGLUniformLocation? location, Int32List v);
void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
undefined uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
undefined uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
undefined uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
};
[Exposed=(Window,Worker)]

View file

@ -298,279 +298,279 @@ interface mixin WebGL2RenderingContextBase
const GLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247;
/* Buffer objects */
void copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset,
GLintptr writeOffset, GLsizeiptr size);
undefined copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset,
GLintptr writeOffset, GLsizeiptr size);
// MapBufferRange, in particular its read-only and write-only modes,
// can not be exposed safely to JavaScript. GetBufferSubData
// replaces it for the purpose of fetching data back from the GPU.
void getBufferSubData(GLenum target, GLintptr srcByteOffset, [AllowShared] ArrayBufferView dstBuffer,
optional GLuint dstOffset = 0, optional GLuint length = 0);
undefined getBufferSubData(GLenum target, GLintptr srcByteOffset, [AllowShared] ArrayBufferView dstBuffer,
optional GLuint dstOffset = 0, optional GLuint length = 0);
/* Framebuffer objects */
void blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0,
GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
void framebufferTextureLayer(GLenum target, GLenum attachment, WebGLTexture? texture, GLint level,
GLint layer);
void invalidateFramebuffer(GLenum target, sequence<GLenum> attachments);
void invalidateSubFramebuffer(GLenum target, sequence<GLenum> attachments,
GLint x, GLint y, GLsizei width, GLsizei height);
void readBuffer(GLenum src);
undefined blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0,
GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
undefined framebufferTextureLayer(GLenum target, GLenum attachment, WebGLTexture? texture, GLint level,
GLint layer);
undefined invalidateFramebuffer(GLenum target, sequence<GLenum> attachments);
undefined invalidateSubFramebuffer(GLenum target, sequence<GLenum> attachments,
GLint x, GLint y, GLsizei width, GLsizei height);
undefined readBuffer(GLenum src);
/* Renderbuffer objects */
any getInternalformatParameter(GLenum target, GLenum internalformat, GLenum pname);
void renderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat,
GLsizei width, GLsizei height);
undefined renderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat,
GLsizei width, GLsizei height);
/* Texture objects */
void texStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width,
GLsizei height);
void texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width,
GLsizei height, GLsizei depth);
undefined texStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width,
GLsizei height);
undefined texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width,
GLsizei height, GLsizei depth);
void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr pboOffset);
void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLsizei depth, GLint border, GLenum format, GLenum type,
TexImageSource source); // May throw DOMException
void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView? srcData);
void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
GLuint srcOffset);
undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr pboOffset);
undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLsizei depth, GLint border, GLenum format, GLenum type,
TexImageSource source); // May throw DOMException
undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView? srcData);
undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
GLuint srcOffset);
void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
GLintptr pboOffset);
void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
TexImageSource source); // May throw DOMException
void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
[AllowShared] ArrayBufferView? srcData, optional GLuint srcOffset = 0);
undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
GLintptr pboOffset);
undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
TexImageSource source); // May throw DOMException
undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
[AllowShared] ArrayBufferView? srcData, optional GLuint srcOffset = 0);
void copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLint x, GLint y, GLsizei width, GLsizei height);
undefined copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLint x, GLint y, GLsizei width, GLsizei height);
void compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLintptr offset);
void compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLsizei depth, GLint border, [AllowShared] ArrayBufferView srcData,
optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLintptr offset);
undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLsizei depth, GLint border, [AllowShared] ArrayBufferView srcData,
optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
void compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
GLenum format, GLsizei imageSize, GLintptr offset);
void compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
GLenum format, [AllowShared] ArrayBufferView srcData,
optional GLuint srcOffset = 0,
optional GLuint srcLengthOverride = 0);
undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
GLenum format, GLsizei imageSize, GLintptr offset);
undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
GLenum format, [AllowShared] ArrayBufferView srcData,
optional GLuint srcOffset = 0,
optional GLuint srcLengthOverride = 0);
/* Programs and shaders */
[WebGLHandlesContextLoss] GLint getFragDataLocation(WebGLProgram program, DOMString name);
/* Uniforms */
void uniform1ui(WebGLUniformLocation? location, GLuint v0);
void uniform2ui(WebGLUniformLocation? location, GLuint v0, GLuint v1);
void uniform3ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2);
void uniform4ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
undefined uniform1ui(WebGLUniformLocation? location, GLuint v0);
undefined uniform2ui(WebGLUniformLocation? location, GLuint v0, GLuint v1);
undefined uniform3ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2);
undefined uniform4ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
void uniform1uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniform2uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniform3uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniform4uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
undefined uniform1uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
undefined uniform2uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
undefined uniform3uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
undefined uniform4uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
undefined uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
undefined uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
undefined uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
undefined uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
undefined uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
undefined uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
/* Vertex attribs */
void vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
void vertexAttribI4iv(GLuint index, Int32List values);
void vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
void vertexAttribI4uiv(GLuint index, Uint32List values);
void vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
undefined vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
undefined vertexAttribI4iv(GLuint index, Int32List values);
undefined vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
undefined vertexAttribI4uiv(GLuint index, Uint32List values);
undefined vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
/* Writing to the drawing buffer */
void vertexAttribDivisor(GLuint index, GLuint divisor);
void drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
void drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount);
void drawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset);
undefined vertexAttribDivisor(GLuint index, GLuint divisor);
undefined drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
undefined drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount);
undefined drawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset);
/* Multiple Render Targets */
void drawBuffers(sequence<GLenum> buffers);
undefined drawBuffers(sequence<GLenum> buffers);
void clearBufferfv(GLenum buffer, GLint drawbuffer, Float32List values,
optional GLuint srcOffset = 0);
void clearBufferiv(GLenum buffer, GLint drawbuffer, Int32List values,
optional GLuint srcOffset = 0);
void clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32List values,
optional GLuint srcOffset = 0);
undefined clearBufferfv(GLenum buffer, GLint drawbuffer, Float32List values,
optional GLuint srcOffset = 0);
undefined clearBufferiv(GLenum buffer, GLint drawbuffer, Int32List values,
optional GLuint srcOffset = 0);
undefined clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32List values,
optional GLuint srcOffset = 0);
void clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
undefined clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
/* Query Objects */
WebGLQuery? createQuery();
void deleteQuery(WebGLQuery? query);
undefined deleteQuery(WebGLQuery? query);
[WebGLHandlesContextLoss] GLboolean isQuery(WebGLQuery? query);
void beginQuery(GLenum target, WebGLQuery query);
void endQuery(GLenum target);
undefined beginQuery(GLenum target, WebGLQuery query);
undefined endQuery(GLenum target);
WebGLQuery? getQuery(GLenum target, GLenum pname);
any getQueryParameter(WebGLQuery query, GLenum pname);
/* Sampler Objects */
WebGLSampler? createSampler();
void deleteSampler(WebGLSampler? sampler);
undefined deleteSampler(WebGLSampler? sampler);
[WebGLHandlesContextLoss] GLboolean isSampler(WebGLSampler? sampler);
void bindSampler(GLuint unit, WebGLSampler? sampler);
void samplerParameteri(WebGLSampler sampler, GLenum pname, GLint param);
void samplerParameterf(WebGLSampler sampler, GLenum pname, GLfloat param);
undefined bindSampler(GLuint unit, WebGLSampler? sampler);
undefined samplerParameteri(WebGLSampler sampler, GLenum pname, GLint param);
undefined samplerParameterf(WebGLSampler sampler, GLenum pname, GLfloat param);
any getSamplerParameter(WebGLSampler sampler, GLenum pname);
/* Sync objects */
WebGLSync? fenceSync(GLenum condition, GLbitfield flags);
[WebGLHandlesContextLoss] GLboolean isSync(WebGLSync? sync);
void deleteSync(WebGLSync? sync);
undefined deleteSync(WebGLSync? sync);
GLenum clientWaitSync(WebGLSync sync, GLbitfield flags, GLuint64 timeout);
void waitSync(WebGLSync sync, GLbitfield flags, GLint64 timeout);
undefined waitSync(WebGLSync sync, GLbitfield flags, GLint64 timeout);
any getSyncParameter(WebGLSync sync, GLenum pname);
/* Transform Feedback */
WebGLTransformFeedback? createTransformFeedback();
void deleteTransformFeedback(WebGLTransformFeedback? tf);
undefined deleteTransformFeedback(WebGLTransformFeedback? tf);
[WebGLHandlesContextLoss] GLboolean isTransformFeedback(WebGLTransformFeedback? tf);
void bindTransformFeedback (GLenum target, WebGLTransformFeedback? tf);
void beginTransformFeedback(GLenum primitiveMode);
void endTransformFeedback();
void transformFeedbackVaryings(WebGLProgram program, sequence<DOMString> varyings, GLenum bufferMode);
undefined bindTransformFeedback (GLenum target, WebGLTransformFeedback? tf);
undefined beginTransformFeedback(GLenum primitiveMode);
undefined endTransformFeedback();
undefined transformFeedbackVaryings(WebGLProgram program, sequence<DOMString> varyings, GLenum bufferMode);
WebGLActiveInfo? getTransformFeedbackVarying(WebGLProgram program, GLuint index);
void pauseTransformFeedback();
void resumeTransformFeedback();
undefined pauseTransformFeedback();
undefined resumeTransformFeedback();
/* Uniform Buffer Objects and Transform Feedback Buffers */
void bindBufferBase(GLenum target, GLuint index, WebGLBuffer? buffer);
void bindBufferRange(GLenum target, GLuint index, WebGLBuffer? buffer, GLintptr offset, GLsizeiptr size);
undefined bindBufferBase(GLenum target, GLuint index, WebGLBuffer? buffer);
undefined bindBufferRange(GLenum target, GLuint index, WebGLBuffer? buffer, GLintptr offset, GLsizeiptr size);
any getIndexedParameter(GLenum target, GLuint index);
sequence<GLuint>? getUniformIndices(WebGLProgram program, sequence<DOMString> uniformNames);
any getActiveUniforms(WebGLProgram program, sequence<GLuint> uniformIndices, GLenum pname);
GLuint getUniformBlockIndex(WebGLProgram program, DOMString uniformBlockName);
any getActiveUniformBlockParameter(WebGLProgram program, GLuint uniformBlockIndex, GLenum pname);
DOMString? getActiveUniformBlockName(WebGLProgram program, GLuint uniformBlockIndex);
void uniformBlockBinding(WebGLProgram program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
undefined uniformBlockBinding(WebGLProgram program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
/* Vertex Array Objects */
WebGLVertexArrayObject? createVertexArray();
void deleteVertexArray(WebGLVertexArrayObject? vertexArray);
undefined deleteVertexArray(WebGLVertexArrayObject? vertexArray);
[WebGLHandlesContextLoss] GLboolean isVertexArray(WebGLVertexArrayObject? vertexArray);
void bindVertexArray(WebGLVertexArrayObject? array);
undefined bindVertexArray(WebGLVertexArrayObject? array);
};
interface mixin WebGL2RenderingContextOverloads
{
// WebGL1:
void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
void bufferData(GLenum target, [AllowShared] BufferSource? srcData, GLenum usage);
void bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] BufferSource srcData);
undefined bufferData(GLenum target, GLsizeiptr size, GLenum usage);
undefined bufferData(GLenum target, [AllowShared] BufferSource? srcData, GLenum usage);
undefined bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] BufferSource srcData);
// WebGL2:
void bufferData(GLenum target, [AllowShared] ArrayBufferView srcData, GLenum usage, GLuint srcOffset,
optional GLuint length = 0);
void bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] ArrayBufferView srcData,
GLuint srcOffset, optional GLuint length = 0);
undefined bufferData(GLenum target, [AllowShared] ArrayBufferView srcData, GLenum usage, GLuint srcOffset,
optional GLuint length = 0);
undefined bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] ArrayBufferView srcData,
GLuint srcOffset, optional GLuint length = 0);
// WebGL1 legacy entrypoints:
void texImage2D(GLenum target, GLint level, GLint internalformat,
GLsizei width, GLsizei height, GLint border, GLenum format,
GLenum type, [AllowShared] ArrayBufferView? pixels);
void texImage2D(GLenum target, GLint level, GLint internalformat,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
undefined texImage2D(GLenum target, GLint level, GLint internalformat,
GLsizei width, GLsizei height, GLint border, GLenum format,
GLenum type, [AllowShared] ArrayBufferView? pixels);
undefined texImage2D(GLenum target, GLint level, GLint internalformat,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height,
GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height,
GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
// WebGL2 entrypoints:
void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLint border, GLenum format, GLenum type, GLintptr pboOffset);
void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLint border, GLenum format, GLenum type,
TexImageSource source); // May throw DOMException
void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
GLuint srcOffset);
undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLint border, GLenum format, GLenum type, GLintptr pboOffset);
undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLint border, GLenum format, GLenum type,
TexImageSource source); // May throw DOMException
undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
GLuint srcOffset);
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
GLsizei height, GLenum format, GLenum type, GLintptr pboOffset);
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
GLsizei height, GLenum format, GLenum type,
TexImageSource source); // May throw DOMException
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
GLuint srcOffset);
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
GLsizei height, GLenum format, GLenum type, GLintptr pboOffset);
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
GLsizei height, GLenum format, GLenum type,
TexImageSource source); // May throw DOMException
undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
GLuint srcOffset);
void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLint border, GLsizei imageSize, GLintptr offset);
void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLint border, [AllowShared] ArrayBufferView srcData,
optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLint border, GLsizei imageSize, GLintptr offset);
undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLint border, [AllowShared] ArrayBufferView srcData,
optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLintptr offset);
void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format,
[AllowShared] ArrayBufferView srcData,
optional GLuint srcOffset = 0,
optional GLuint srcLengthOverride = 0);
undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLintptr offset);
undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height, GLenum format,
[AllowShared] ArrayBufferView srcData,
optional GLuint srcOffset = 0,
optional GLuint srcLengthOverride = 0);
void uniform1fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniform2fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniform3fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniform4fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
undefined uniform1fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
undefined uniform2fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
undefined uniform3fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
undefined uniform4fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniform1iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniform2iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniform3iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniform4iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
undefined uniform1iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
undefined uniform2iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
undefined uniform3iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
undefined uniform4iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
undefined uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
undefined uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
undefined uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
/* Reading back pixels */
// WebGL1:
void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
[AllowShared] ArrayBufferView? dstData);
undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
[AllowShared] ArrayBufferView? dstData);
// WebGL2:
void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
GLintptr offset);
void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
[AllowShared] ArrayBufferView dstData, GLuint dstOffset);
undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
GLintptr offset);
undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
[AllowShared] ArrayBufferView dstData, GLuint dstOffset);
};
[Exposed=(Window,Worker)]

View file

@ -120,17 +120,21 @@
});
// Inject keyboard scroll inputs.
const arrow_down = "\uE015";
const arrow_right = "\uE014";
actions_promise = new test_driver.Actions()
.addPointer("mousePointer1", "mouse")
.pointerMove(0, 0, {origin: target0})
.pointerDown()
.pointerUp()
.addTick()
.keyDown("\uE015")
.keyUp("\uE015")
.keyDown("\uE014")
.keyUp("\uE014")
.send();
actions_promise = actions_promise
.then(()=>test_driver.send_keys(target0, arrow_down))
.then(()=>test_driver.send_keys(target0, arrow_down))
.then(()=>test_driver.send_keys(target0, arrow_right))
.then(()=>test_driver.send_keys(target0, arrow_right));
}
function updateDescriptionNextStepKeyboard() {
@ -142,4 +146,4 @@
</div>
<div id="log"></div>
</body>
</html>
</html>

View file

@ -1030,5 +1030,27 @@ promise_test(async t => {
assert_true(loadend, 'loadend');
}, 'XHR upload progress events for network fallback');
promise_test(async t => {
// Set page_url to "?ignore" so the service worker falls back to network
// for the main resource request, and add a suffix to avoid colliding
// with other tests.
const page_url = 'resources/?ignore-for-request-body-fallback-string';
const frame = await with_iframe(page_url);
t.add_cleanup(() => { frame.remove(); });
// Add "?clone-and-ignore" so the service worker falls back to
// echo-content.py.
const echo_url = '/fetch/api/resources/echo-content.py?status=421';
const response = await frame.contentWindow.fetch(echo_url, {
method: 'POST',
body: 'text body'
});
assert_equals(response.status, 421);
const text = await response.text();
assert_equals(
text,
'text body. Request was sent 1 times.',
'the network fallback request should include the request body');
}, 'Fetch with POST with text on sw 421 response should not be retried.');
</script>
</body>

View file

@ -167,6 +167,17 @@ function handleCloneAndIgnore(event) {
return;
}
var handle_status_count = 0;
function handleStatus(event) {
handle_status_count++;
event.respondWith(async function() {
const res = await fetch(event.request);
const text = await res.text();
return new Response(`${text}. Request was sent ${handle_status_count} times.`,
{"status": new URL(event.request.url).searchParams.get("status")});
}());
}
self.addEventListener('fetch', function(event) {
var url = event.request.url;
var handlers = [
@ -194,6 +205,7 @@ self.addEventListener('fetch', function(event) {
{ pattern: '?isHistoryNavigation', fn: handleIsHistoryNavigation },
{ pattern: '?use-and-ignore', fn: handleUseAndIgnore },
{ pattern: '?clone-and-ignore', fn: handleCloneAndIgnore },
{ pattern: '?status', fn: handleStatus },
];
var handler = null;

View file

@ -985,6 +985,14 @@
"username": { "input": "caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "username": "café" },
"input": { "username" : "café" },
"expected": {
"input": { "username" : "café" },
"username": { "input": "caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "username": "caf%c3%a9" },
"input": { "username" : "café" },
@ -998,6 +1006,14 @@
"password": { "input": "caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "password": "café" },
"input": { "password" : "café" },
"expected": {
"input": { "password" : "café" },
"password": { "input": "caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "password": "caf%c3%a9" },
"input": { "password" : "café" },
@ -1011,6 +1027,14 @@
"hostname": { "input": "xn--caf-dma.com", "groups": {}}
}
},
{
"pattern": { "hostname": "café.com" },
"input": { "hostname" : "café.com" },
"expected": {
"input": { "hostname" : "café.com" },
"hostname": { "input": "xn--caf-dma.com", "groups": {}}
}
},
{
"pattern": { "port": "" },
"input": { "protocol": "http", "port": "80" },
@ -1020,6 +1044,35 @@
"port": { "input": "", "groups": {}}
}
},
{
"pattern": { "protocol": "http", "port": "80" },
"input": { "protocol": "http", "port": "80" },
"expected": {
"input": { "protocol": "http", "port": "80" },
"protocol": { "input": "http", "groups": {}},
"port": { "input": "", "groups": {}}
}
},
{
"pattern": { "protocol": "http", "port": "80{20}?" },
"input": { "protocol": "http", "port": "80" },
"expected": null
},
{
"pattern": { "protocol": "http", "port": "80 " },
"input": { "protocol": "http", "port": "80" },
"error": true
},
{
"pattern": { "port": "80" },
"input": { "protocol": "http", "port": "80" },
"expected": null
},
{
"pattern": { "protocol": "http{s}?", "port": "80" },
"input": { "protocol": "http", "port": "80" },
"expected": null
},
{
"pattern": { "port": "80" },
"input": { "port": "80" },
@ -1057,6 +1110,14 @@
"pathname": { "input": "/caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "pathname": "/café" },
"input": { "pathname": "/café" },
"expected": {
"input": { "pathname": "/café" },
"pathname": { "input": "/caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "pathname": "/caf%c3%a9" },
"input": { "pathname": "/café" },
@ -1077,6 +1138,25 @@
"pathname": { "input": "/foo/bar", "groups": {}}
}
},
{
"pattern": { "pathname": "/foo/../bar" },
"input": { "pathname": "/bar" },
"expected": {
"input": { "pathname": "/bar" },
"pathname": { "input": "/bar", "groups": {}}
}
},
{
"pattern": { "pathname": "./foo/bar", "baseURL": "https://example.com" },
"input": { "pathname": "foo/bar", "baseURL": "https://example.com" },
"expected": {
"input": { "pathname": "foo/bar", "baseURL": "https://example.com" },
"exactly_empty_components": [ "username", "password", "port" ],
"protocol": { "input": "https", "groups": {}},
"hostname": { "input": "example.com", "groups": {}},
"pathname": { "input": "/foo/bar", "groups": {}}
}
},
{
"pattern": { "pathname": "foo/bar" },
"input": "https://example.com/foo/bar",
@ -1112,6 +1192,14 @@
"search": { "input": "q=caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "search": "q=café" },
"input": { "search": "q=café" },
"expected": {
"input": { "search": "q=café" },
"search": { "input": "q=caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "search": "q=caf%c3%a9" },
"input": { "search": "q=café" },
@ -1125,6 +1213,14 @@
"hash": { "input": "caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "hash": "café" },
"input": { "hash": "café" },
"expected": {
"input": { "hash": "café" },
"hash": { "input": "caf%C3%A9", "groups": {}}
}
},
{
"pattern": { "hash": "caf%c3%a9" },
"input": { "hash": "café" },

View file

@ -8,145 +8,10 @@
<script src="/resources/testharnessreport.js"></script>
<script src="/webrtc/RTCPeerConnection-helper.js"></script>
<script src="/webrtc/RTCStats-helper.js"></script>
<script src="/webrtc-extensions/RTCRtpSynchronizationSource-helper.js"></script>
<script>
'use strict';
var kAbsCaptureTime =
'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time';
function addHeaderExtensionToSdp(sdp, uri) {
const extmap = new RegExp('a=extmap:(\\d+)');
let sdpLines = sdp.split('\r\n');
// This assumes at most one audio m= section and one video m= section.
// If more are present, only the first section of each kind is munged.
for (const section of ['audio', 'video']) {
let found_section = false;
let maxId = undefined;
let maxIdLine = undefined;
let extmapAllowMixed = false;
// find the largest header extension id for section.
for (let i = 0; i < sdpLines.length; ++i) {
if (!found_section) {
if (sdpLines[i].startsWith('m=' + section)) {
found_section = true;
}
continue;
} else {
if (sdpLines[i].startsWith('m=')) {
// end of section
break;
}
}
if (sdpLines[i] === 'a=extmap-allow-mixed') {
extmapAllowMixed = true;
}
let result = sdpLines[i].match(extmap);
if (result && result.length === 2) {
if (maxId == undefined || result[1] > maxId) {
maxId = parseInt(result[1]);
maxIdLine = i;
}
}
}
if (maxId == 14 && !extmapAllowMixed) {
// Reaching the limit of one byte header extension. Adding two byte header
// extension support.
sdpLines.splice(maxIdLine + 1, 0, 'a=extmap-allow-mixed');
}
if (maxIdLine !== undefined) {
sdpLines.splice(maxIdLine + 1, 0,
'a=extmap:' + (maxId + 1).toString() + ' ' + uri);
}
}
return sdpLines.join('\r\n');
}
// TODO(crbug.com/1051821): Use RTP header extension API instead of munging
// when the RTP header extension API is implemented.
async function addAbsCaptureTimeAndExchangeOffer(caller, callee) {
let offer = await caller.createOffer();
// Absolute capture time header extension may not be offered by default,
// in such case, munge the SDP.
offer.sdp = addHeaderExtensionToSdp(offer.sdp, kAbsCaptureTime);
await caller.setLocalDescription(offer);
return callee.setRemoteDescription(offer);
}
// TODO(crbug.com/1051821): Use RTP header extension API instead of munging
// when the RTP header extension API is implemented.
async function checkAbsCaptureTimeAndExchangeAnswer(caller, callee,
absCaptureTimeAnswered) {
let answer = await callee.createAnswer();
const extmap = new RegExp('a=extmap:\\d+ ' + kAbsCaptureTime + '\r\n', 'g');
if (answer.sdp.match(extmap) == null) {
// We expect that absolute capture time RTP header extension is answered.
// But if not, there is no need to proceed with the test.
assert_false(absCaptureTimeAnswered, 'Absolute capture time RTP ' +
'header extension is not answered');
} else {
if (!absCaptureTimeAnswered) {
// We expect that absolute capture time RTP header extension is not
// answered, but it is, then we munge the answer to remove it.
answer.sdp = answer.sdp.replace(extmap, '');
}
}
await callee.setLocalDescription(answer);
return caller.setRemoteDescription(answer);
}
async function exchangeOfferAndListenToOntrack(t, caller, callee,
absCaptureTimeOffered) {
const ontrackPromise = addEventListenerPromise(t, callee, 'track');
// Absolute capture time header extension is expected not offered by default,
// and thus munging is needed to enable it.
await absCaptureTimeOffered
? addAbsCaptureTimeAndExchangeOffer(caller, callee)
: exchangeOffer(caller, callee);
return ontrackPromise;
}
async function initiateSingleTrackCall(t, cap, absCaptureTimeOffered,
absCaptureTimeAnswered) {
const caller = new RTCPeerConnection();
t.add_cleanup(() => caller.close());
const callee = new RTCPeerConnection();
t.add_cleanup(() => callee.close());
const stream = await getNoiseStream(cap);
stream.getTracks().forEach(track => {
caller.addTrack(track, stream);
t.add_cleanup(() => track.stop());
});
// TODO(crbug.com/988432): `getSynchronizationSources() on the audio side
// needs a hardware sink for the returned dictionary entries to get updated.
const remoteVideo = document.getElementById('remote');
callee.ontrack = e => {
remoteVideo.srcObject = e.streams[0];
}
exchangeIceCandidates(caller, callee);
await exchangeOfferAndListenToOntrack(t, caller, callee,
absCaptureTimeOffered);
// Exchange answer and check whether the absolute capture time RTP header
// extension is answered.
await checkAbsCaptureTimeAndExchangeAnswer(caller, callee,
absCaptureTimeAnswered);
return [caller, callee];
}
function listenForCaptureTimestamp(t, receiver) {
return new Promise((resolve) => {
function listen() {
@ -165,8 +30,8 @@ function listenForCaptureTimestamp(t, receiver) {
});
}
// This test only passes if the implementation is sending the absolute capture
// timestamp header extension.
// Passes if `getSynchronizationSources()` contains `captureTimestamp` if and
// only if expected.
for (const kind of ['audio', 'video']) {
promise_test(async t => {
const [caller, callee] = await initiateSingleTrackCall(
@ -202,6 +67,9 @@ for (const kind of ['audio', 'video']) {
'negotiated');
}
// Passes if `captureTimestamp` for audio and video are comparable, which is
// expected since the test creates a local peer connection between `caller` and
// `callee`.
promise_test(async t => {
const [caller, callee] = await initiateSingleTrackCall(
t, {audio: true, video: true}, true, true);

View file

@ -0,0 +1,140 @@
'use strict';
// This file depends on `webrtc/RTCPeerConnection-helper.js`
// which should be loaded from the main HTML file.
var kAbsCaptureTime =
'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time';
function addHeaderExtensionToSdp(sdp, uri) {
const extmap = new RegExp('a=extmap:(\\d+)');
let sdpLines = sdp.split('\r\n');
// This assumes at most one audio m= section and one video m= section.
// If more are present, only the first section of each kind is munged.
for (const section of ['audio', 'video']) {
let found_section = false;
let maxId = undefined;
let maxIdLine = undefined;
let extmapAllowMixed = false;
// find the largest header extension id for section.
for (let i = 0; i < sdpLines.length; ++i) {
if (!found_section) {
if (sdpLines[i].startsWith('m=' + section)) {
found_section = true;
}
continue;
} else {
if (sdpLines[i].startsWith('m=')) {
// end of section
break;
}
}
if (sdpLines[i] === 'a=extmap-allow-mixed') {
extmapAllowMixed = true;
}
let result = sdpLines[i].match(extmap);
if (result && result.length === 2) {
if (maxId == undefined || result[1] > maxId) {
maxId = parseInt(result[1]);
maxIdLine = i;
}
}
}
if (maxId == 14 && !extmapAllowMixed) {
// Reaching the limit of one byte header extension. Adding two byte header
// extension support.
sdpLines.splice(maxIdLine + 1, 0, 'a=extmap-allow-mixed');
}
if (maxIdLine !== undefined) {
sdpLines.splice(maxIdLine + 1, 0,
'a=extmap:' + (maxId + 1).toString() + ' ' + uri);
}
}
return sdpLines.join('\r\n');
}
// TODO(crbug.com/1051821): Use RTP header extension API instead of munging
// when the RTP header extension API is implemented.
async function addAbsCaptureTimeAndExchangeOffer(caller, callee) {
let offer = await caller.createOffer();
// Absolute capture time header extension may not be offered by default,
// in such case, munge the SDP.
offer.sdp = addHeaderExtensionToSdp(offer.sdp, kAbsCaptureTime);
await caller.setLocalDescription(offer);
return callee.setRemoteDescription(offer);
}
// TODO(crbug.com/1051821): Use RTP header extension API instead of munging
// when the RTP header extension API is implemented.
async function checkAbsCaptureTimeAndExchangeAnswer(caller, callee,
absCaptureTimeAnswered) {
let answer = await callee.createAnswer();
const extmap = new RegExp('a=extmap:\\d+ ' + kAbsCaptureTime + '\r\n', 'g');
if (answer.sdp.match(extmap) == null) {
// We expect that absolute capture time RTP header extension is answered.
// But if not, there is no need to proceed with the test.
assert_false(absCaptureTimeAnswered, 'Absolute capture time RTP ' +
'header extension is not answered');
} else {
if (!absCaptureTimeAnswered) {
// We expect that absolute capture time RTP header extension is not
// answered, but it is, then we munge the answer to remove it.
answer.sdp = answer.sdp.replace(extmap, '');
}
}
await callee.setLocalDescription(answer);
return caller.setRemoteDescription(answer);
}
async function exchangeOfferAndListenToOntrack(t, caller, callee,
absCaptureTimeOffered) {
const ontrackPromise = addEventListenerPromise(t, callee, 'track');
// Absolute capture time header extension is expected not offered by default,
// and thus munging is needed to enable it.
await absCaptureTimeOffered
? addAbsCaptureTimeAndExchangeOffer(caller, callee)
: exchangeOffer(caller, callee);
return ontrackPromise;
}
async function initiateSingleTrackCall(t, cap, absCaptureTimeOffered,
absCaptureTimeAnswered) {
const caller = new RTCPeerConnection();
t.add_cleanup(() => caller.close());
const callee = new RTCPeerConnection();
t.add_cleanup(() => callee.close());
const stream = await getNoiseStream(cap);
stream.getTracks().forEach(track => {
caller.addTrack(track, stream);
t.add_cleanup(() => track.stop());
});
// TODO(crbug.com/988432): `getSynchronizationSources() on the audio side
// needs a hardware sink for the returned dictionary entries to get updated.
const remoteVideo = document.getElementById('remote');
callee.ontrack = e => {
remoteVideo.srcObject = e.streams[0];
}
exchangeIceCandidates(caller, callee);
await exchangeOfferAndListenToOntrack(t, caller, callee,
absCaptureTimeOffered);
// Exchange answer and check whether the absolute capture time RTP header
// extension is answered.
await checkAbsCaptureTimeAndExchangeAnswer(caller, callee,
absCaptureTimeAnswered);
return [caller, callee];
}