tor-browser

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

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)")