abort-during-done.window.js (3277B)
1 // META: title=XMLHttpRequest: abort() during DONE 2 3 async_test(test => { 4 var client = new XMLHttpRequest(), 5 result = [], 6 expected = [1, 4] // open() -> 1, send() -> 4 7 client.onreadystatechange = test.step_func(function() { 8 result.push(client.readyState) 9 }) 10 client.open("GET", "resources/well-formed.xml", false) 11 client.send(null) 12 assert_equals(client.readyState, 4) 13 assert_equals(client.status, 200) 14 assert_equals(client.statusText, "OK") 15 assert_equals(client.responseXML.documentElement.localName, "html") 16 client.abort() 17 assert_equals(client.readyState, 0) 18 assert_equals(client.status, 0) 19 assert_equals(client.statusText, "") 20 assert_equals(client.responseXML, null) 21 assert_equals(client.getAllResponseHeaders(), "") 22 assert_array_equals(result, expected) 23 test.done() 24 }, document.title + " (sync)") 25 26 async_test(test => { 27 var client = new XMLHttpRequest(), 28 result = [], 29 expected = [1, 4] // open() -> 1, send() -> 4 30 client.onreadystatechange = test.step_func(function() { 31 result.push(client.readyState); 32 if (client.readyState === 4) { 33 assert_equals(client.readyState, 4) 34 assert_equals(client.status, 200) 35 assert_equals(client.statusText, "OK") 36 assert_equals(client.responseXML.documentElement.localName, "html") 37 client.abort(); 38 assert_equals(client.readyState, 0) 39 assert_equals(client.status, 0) 40 assert_equals(client.statusText, "") 41 assert_equals(client.responseXML, null) 42 assert_equals(client.getAllResponseHeaders(), "") 43 test.done() 44 } 45 }) 46 client.open("GET", "resources/well-formed.xml", false) 47 client.send(null) 48 assert_equals(client.readyState, 0) 49 assert_equals(client.status, 200) 50 assert_equals(client.statusText, "OK") 51 assert_equals(client.responseXML.documentElement.localName, "html") 52 }, document.title + " (sync aborted in readystatechange)") 53 54 async_test(test => { 55 var client = new XMLHttpRequest(), 56 result = [], 57 expected = [1, 2, 3, 4] 58 client.onreadystatechange = test.step_func(function() { 59 result.push(client.readyState); 60 if (client.readyState === 4) { 61 assert_equals(client.readyState, 4) 62 assert_equals(client.status, 200) 63 assert_equals(client.responseXML.documentElement.localName, "html") 64 client.abort(); 65 assert_equals(client.readyState, 0) 66 assert_equals(client.status, 0) 67 assert_equals(client.statusText, "") 68 assert_equals(client.responseXML, null) 69 assert_equals(client.getAllResponseHeaders(), "") 70 test.step_timeout(function() { 71 assert_array_equals(result, expected) 72 test.done(); 73 }, 100); // wait a bit in case XHR timeout causes spurious event 74 } 75 }) 76 client.open("GET", "resources/well-formed.xml") 77 client.send(null) 78 }, document.title + " (async)")