| <!doctype html> | |
| <meta charset=utf-8> | |
| <title>XMLHttpRequest: passing objects that interfere with the XHR instance to send()</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <link rel="help" href="https://xhr.spec.whatwg.org/#the-send()-method" data-tested-assertations="following::ol/li[4]" /> | |
| <link rel="help" href="https://heycam.github.io/webidl/#es-union" data-tested-assertations="following::ol/li[16]" /> | |
| <div id="log"></div> | |
| <script> | |
| var test1 = async_test('abort() called from data stringification') | |
| test1.step(function() { | |
| var client = new XMLHttpRequest() | |
| var objAbortsOnStringification = {toString:function(){ | |
| client.abort(); | |
| }} | |
| client.open('POST', 'resources/content.py') | |
| assert_throws("InvalidStateError", function(){ | |
| client.send(objAbortsOnStringification) | |
| }) | |
| test1.done() | |
| }); | |
| var test2 = async_test('open() called from data stringification') | |
| test2.step(function() { | |
| var client = new XMLHttpRequest() | |
| var objOpensOnStringification = {toString:function(){ | |
| client.open('POST', 'resources/status.py?text=second_open_wins'); | |
| }} | |
| client.onloadend = test2.step_func(function(){ | |
| assert_equals(client.statusText, 'second_open_wins') | |
| test2.done() | |
| }) | |
| client.open('POST', 'resources/status.py?text=first_open_wins') | |
| client.send(objOpensOnStringification) | |
| }); | |
| var test3 = async_test('send() called from data stringification') | |
| test3.step(function() { | |
| var client = new XMLHttpRequest() | |
| var objSendsOnStringification = {toString:function(){ | |
| client.send('bomb!'); | |
| }} | |
| client.onload = test3.step_func(function(){ | |
| assert_equals(client.responseText, 'bomb!') | |
| test3.done() | |
| }) | |
| client.open('POST', 'resources/content.py') | |
| assert_throws('InvalidStateError', function(){ | |
| client.send(objSendsOnStringification) | |
| }) | |
| }); | |
| </script> |