| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>Adding upload event listeners after send()</title> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script src=support.js?pipe=sub></script> |
| |
| <h1>Adding upload event listeners after send()</h1> |
| |
| <div id=log></div> |
| |
| <script> |
| function doTest(desc, headers) { |
| async_test("Late listeners: " + desc).step(function() { |
| var client = new XMLHttpRequest(); |
| var eventCounter = 0; |
| client.open("POST", CROSSDOMAIN + "resources/status.py?headers=custom-header"); |
| |
| for (var name in headers) { |
| client.setRequestHeader(name, headers[name]); |
| } |
| |
| client.onreadystatechange = this.step_func(function(e) { |
| // Irrelevant if request is not finished |
| if (client.readyState < 4) return; |
| assert_equals(client.status, 200); |
| assert_equals(eventCounter, 0, 'Events fired, but should not have'); |
| this.done(); |
| }); |
| client.send((new Array(3000)).join('xo')); |
| client.upload.onprogress = client.upload.onloadend = client.upload.onloadstart = client.upload.onload = this.step_func(function(e) { |
| eventCounter++; |
| assert_unreached("Upload events should not fire, but did: " + e.type); |
| }); |
| }); |
| } |
| |
| doTest("No preflight", {}); |
| doTest("Preflight", {"custom-header":"test"}); |
| </script> |