test_sync_xhr_nested.html (1262B)
1 <!DOCTYPE HTML> 2 <!-- vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: --> 3 <html> 4 <head> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <script src="/tests/SimpleTest/EventUtils.js"></script> 7 <link rel="stylesheet" href="/tests/SimpleTest/test.css"> 8 </head> 9 <body > 10 <script type="text/javascript"> 11 SimpleTest.waitForExplicitFinish(); 12 13 var childXHRFinished = false; 14 var xhrFinished = false; 15 var subTab = null; 16 17 function receivedInput() { 18 ok(xhrFinished, "Input event should be handled after the sync xhr"); 19 SimpleTest.finish(); 20 } 21 22 function startSlowXHR() { 23 var xhr = new XMLHttpRequest(); 24 xhr.open("GET", "slow.sjs", false); 25 subTab.startSlowXHR(); 26 xhr.send(null); 27 28 // Above xhr.send(null) should spin up an event loop to process the inner XHR first 29 ok(childXHRFinished, "Child's XHR should be finished first"); 30 xhrFinished = true; 31 } 32 33 async function runTest() { 34 await SpecialPowers.pushPrefEnv({ 35 set: [["dom.input_events.canSuspendInBCG.enabled", true]] 36 }); 37 subTab = window.open("file_sync_xhr_nested_helper.html"); 38 await new Promise((r) => { 39 subTab.addEventListener("load", r); 40 }); 41 startSlowXHR(); 42 } 43 44 runTest(); 45 </script> 46 </body> 47 </html>