response-consume-stream.any.js (3164B)
1 // META: global=window,worker 2 // META: title=Response consume 3 // META: script=../resources/utils.js 4 5 promise_test(function(test) { 6 var body = ""; 7 var response = new Response(""); 8 return validateStreamFromString(response.body.getReader(), ""); 9 }, "Read empty text response's body as readableStream"); 10 11 promise_test(function(test) { 12 var response = new Response(new Blob([], { "type" : "text/plain" })); 13 return validateStreamFromString(response.body.getReader(), ""); 14 }, "Read empty blob response's body as readableStream"); 15 16 var formData = new FormData(); 17 formData.append("name", "value"); 18 var textData = JSON.stringify("This is response's body"); 19 var blob = new Blob([textData], { "type" : "text/plain" }); 20 var urlSearchParamsData = "name=value"; 21 var urlSearchParams = new URLSearchParams(urlSearchParamsData); 22 23 for (const mode of [undefined, "byob"]) { 24 promise_test(function(test) { 25 var response = new Response(blob); 26 return validateStreamFromString(response.body.getReader({ mode }), textData); 27 }, `Read blob response's body as readableStream with mode=${mode}`); 28 29 promise_test(function(test) { 30 var response = new Response(textData); 31 return validateStreamFromString(response.body.getReader({ mode }), textData); 32 }, `Read text response's body as readableStream with mode=${mode}`); 33 34 promise_test(function(test) { 35 var response = new Response(urlSearchParams); 36 return validateStreamFromString(response.body.getReader({ mode }), urlSearchParamsData); 37 }, `Read URLSearchParams response's body as readableStream with mode=${mode}`); 38 39 promise_test(function(test) { 40 var arrayBuffer = new ArrayBuffer(textData.length); 41 var int8Array = new Int8Array(arrayBuffer); 42 for (var cptr = 0; cptr < textData.length; cptr++) 43 int8Array[cptr] = textData.charCodeAt(cptr); 44 45 return validateStreamFromString(new Response(arrayBuffer).body.getReader({ mode }), textData); 46 }, `Read array buffer response's body as readableStream with mode=${mode}`); 47 48 promise_test(function(test) { 49 var response = new Response(formData); 50 return validateStreamFromPartialString(response.body.getReader({ mode }), 51 "Content-Disposition: form-data; name=\"name\"\r\n\r\nvalue"); 52 }, `Read form data response's body as readableStream with mode=${mode}`); 53 } 54 55 test(function() { 56 assert_equals(Response.error().body, null); 57 }, "Getting an error Response stream"); 58 59 test(function() { 60 assert_equals(Response.redirect("/").body, null); 61 }, "Getting a redirect Response stream"); 62 63 promise_test(async function(test) { 64 var buffer = new ArrayBuffer(textData.length); 65 66 var body = new Response(textData).body; 67 const reader = body.getReader( {mode: 'byob'} ); 68 69 let offset = 3; 70 while (offset < textData.length) { 71 const {done, value} = await reader.read(new Uint8Array(buffer, offset)); 72 if (done) { 73 break; 74 } 75 buffer = value.buffer; 76 offset += value.byteLength; 77 } 78 79 validateBufferFromString(buffer, `\0\0\0\"This is response's bo`, 'Buffer should be validated'); 80 }, `Reading with offset from Response stream`);