summaryrefslogtreecommitdiffstats
path: root/dom/xhr/tests/test_sync_xhr_nested.html
blob: 450c5f7e5402b31e28aeacaafa7f12a48cdcd1dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE HTML>
<!-- vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: -->
<html>
<head>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <script src="/tests/SimpleTest/EventUtils.js"></script>
  <link rel="stylesheet" href="/tests/SimpleTest/test.css">
</head>
<body >
  <script type="text/javascript">
  SimpleTest.waitForExplicitFinish();

  var childXHRFinished = false;
  var xhrFinished = false;
  var subTab = null;

  function receivedInput() {
    ok(xhrFinished, "Input event should be handled after the sync xhr");
    SimpleTest.finish();
  }

  function startSlowXHR() {
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "slow.sjs", false);
    subTab.startSlowXHR();
    xhr.send(null);

    // Above xhr.send(null) should spin up an event loop to process the inner XHR first
    ok(childXHRFinished, "Child's XHR should be finished first");
    xhrFinished = true;
  }

  async function runTest() {
    await SpecialPowers.pushPrefEnv({
      set: [["dom.input_events.canSuspendInBCG.enabled", true]]
    });
    subTab = window.open("file_sync_xhr_nested_helper.html");
    await new Promise((r) => {
      subTab.addEventListener("load", r);
    });
    startSlowXHR();
  }

  runTest();
  </script>
</body>
</html>