tor-browser

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

response-cancel-stream.any.js (2196B)


      1 // META: global=window,worker
      2 // META: title=Response consume blob and http bodies
      3 // META: script=../resources/utils.js
      4 
      5 promise_test(function(test) {
      6    return new Response(new Blob([], { "type" : "text/plain" })).body.cancel();
      7 }, "Cancelling a starting blob Response stream");
      8 
      9 promise_test(function(test) {
     10    var response = new Response(new Blob(["This is data"], { "type" : "text/plain" }));
     11    var reader = response.body.getReader();
     12    reader.read();
     13    return reader.cancel();
     14 }, "Cancelling a loading blob Response stream");
     15 
     16 promise_test(function(test) {
     17    var response = new Response(new Blob(["T"], { "type" : "text/plain" }));
     18    var reader = response.body.getReader();
     19 
     20    var closedPromise = reader.closed.then(function() {
     21        return reader.cancel();
     22    });
     23    reader.read().then(function readMore({done, value}) {
     24      if (!done) return reader.read().then(readMore);
     25    });
     26    return closedPromise;
     27 }, "Cancelling a closed blob Response stream");
     28 
     29 promise_test(function(test) {
     30    return fetch(RESOURCES_DIR + "trickle.py?ms=30&count=100").then(function(response) {
     31        return response.body.cancel();
     32    });
     33 }, "Cancelling a starting Response stream");
     34 
     35 promise_test(function() {
     36    return fetch(RESOURCES_DIR + "trickle.py?ms=30&count=100").then(function(response) {
     37        var reader = response.body.getReader();
     38        return reader.read().then(function() {
     39            return reader.cancel();
     40        });
     41    });
     42 }, "Cancelling a loading Response stream");
     43 
     44 promise_test(function() {
     45    async function readAll(reader) {
     46      while (true) {
     47        const {value, done} = await reader.read();
     48        if (done)
     49          return;
     50      }
     51    }
     52 
     53    return fetch(RESOURCES_DIR + "top.txt").then(function(response) {
     54        var reader = response.body.getReader();
     55        return readAll(reader).then(() => reader.cancel());
     56    });
     57 }, "Cancelling a closed Response stream");
     58 
     59 promise_test(async () => {
     60    const response = await fetch(RESOURCES_DIR + "top.txt");
     61    const { body } = response;
     62    await body.cancel();
     63    assert_equals(body, response.body, ".body should not change after cancellation");
     64 }, "Accessing .body after canceling it");