test_xmlhttprequest.js (1351B)
1 "use strict"; 2 3 const { HttpServer } = ChromeUtils.importESModule( 4 "resource://testing-common/httpd.sys.mjs" 5 ); 6 7 var httpserver = new HttpServer(); 8 var testpath = "/simple"; 9 var httpbody = "<?xml version='1.0' ?><root>0123456789</root>"; 10 11 function createXHR(async) { 12 var xhr = new XMLHttpRequest(); 13 xhr.open( 14 "GET", 15 "http://localhost:" + httpserver.identity.primaryPort + testpath, 16 async 17 ); 18 return xhr; 19 } 20 21 function checkResults(xhr) { 22 if (xhr.readyState != 4) { 23 return false; 24 } 25 26 Assert.equal(xhr.status, 200); 27 Assert.equal(xhr.responseText, httpbody); 28 29 var root_node = xhr.responseXML.getElementsByTagName("root").item(0); 30 Assert.equal(root_node.firstChild.data, "0123456789"); 31 return true; 32 } 33 34 function run_test() { 35 httpserver.registerPathHandler(testpath, serverHandler); 36 httpserver.start(-1); 37 38 // Test sync XHR sending 39 var sync = createXHR(false); 40 sync.send(null); 41 checkResults(sync); 42 43 // Test async XHR sending 44 let async = createXHR(true); 45 async.addEventListener("readystatechange", function () { 46 if (checkResults(async)) { 47 httpserver.stop(do_test_finished); 48 } 49 }); 50 async.send(null); 51 do_test_pending(); 52 } 53 54 function serverHandler(metadata, response) { 55 response.setHeader("Content-Type", "text/xml", false); 56 response.bodyOutputStream.write(httpbody, httpbody.length); 57 }