tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

open-during-abort-event.htm (1646B)


      1 <!doctype html>
      2 <title>XMLHttpRequest: open() during abort event - abort() called from upload.onloadstart</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <div id="log"></div>
      6 <script>
      7 async_test(t => {
      8  let client = new XMLHttpRequest(),
      9      log = [],
     10      lastTest = false,
     11      expected = [
     12        'readyState before abort() 1',
     13        "upload.onabort - before open() 4",
     14        "readyState after open() 1",
     15        "client.onabort 1",
     16        "client.onloadend 1",
     17        "readyState after abort() 1",
     18        "client.onload 4",
     19        "client.onloadend 4"
     20      ]
     21 
     22  client.upload.onloadstart = t.step_func(() => {
     23    log.push('readyState before abort() '+client.readyState)
     24    client.abort()
     25    log.push('readyState after abort() '+client.readyState)
     26  })
     27 
     28  client.upload.onabort = t.step_func(() => {
     29    log.push('upload.onabort - before open() ' + client.readyState)
     30    client.open("GET", "resources/content.py")
     31    log.push('readyState after open() ' + client.readyState)
     32    client.send(null)
     33  })
     34 
     35  client.onabort = t.step_func(() => {
     36    // happens immediately after all of upload.onabort, so readyState is 1
     37    log.push('client.onabort ' + client.readyState)
     38  })
     39 
     40  client.onloadend = t.step_func(() => {
     41    log.push('client.onloadend ' + client.readyState)
     42    if(lastTest) {
     43      assert_array_equals(log, expected)
     44      t.done()
     45    }
     46    lastTest = true
     47  })
     48 
     49  client.onload = t.step_func(() => {
     50    log.push('client.onload ' + client.readyState)
     51  })
     52 
     53  client.open("POST", "resources/content.py")
     54  client.send("non-empty")
     55 })
     56 </script>