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