| <!doctype html> | |
| <html> | |
| <head> | |
| <title>XMLHttpRequest: open() resolving URLs (multi-Window; 4; evil)</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| </head> | |
| <body> | |
| <div id="log"></div> | |
| <script> | |
| /* | |
| It's unclear what the pass condition should be for this test. | |
| Implementations: | |
| Firefox, Opera (Presto): terminate request with no further events when IFRAME is removed. | |
| Chrome: completes request to readyState=4 but responseText is "" so it's pretty much terminated with an extra event for "DONE" state | |
| Pass condition is now according to my suggested spec text in https://github.com/whatwg/xhr/pull/3 , if that's not accepted we'll have to amend this test | |
| */ | |
| var test = async_test() | |
| function init() { | |
| test.step(function() { | |
| var hasErrorEvent = false | |
| var client = new self[0].XMLHttpRequest() | |
| client.onreadystatechange = function() { | |
| test.step(function() { | |
| if(client.readyState == 4) { | |
| assert_equals(client.responseText, "", "responseText is empty on inactive document error condition") | |
| } | |
| }) | |
| } | |
| client.addEventListener('error', function(){ | |
| test.step(function() { | |
| hasErrorEvent = true | |
| assert_equals(client.readyState, 4, "readyState is 4 when error listener fires") | |
| }) | |
| }) | |
| client.addEventListener('loadend', function(){ | |
| test.step(function() { | |
| assert_true(hasErrorEvent, "should get an error event") | |
| test.done() | |
| }) | |
| }) | |
| client.open("GET", "folder.txt") | |
| client.send(null) | |
| document.body.removeChild(document.getElementsByTagName("iframe")[0]) | |
| }) | |
| } | |
| </script> | |
| <iframe src="resources/init.htm"></iframe> | |
| </body> | |
| </html> |