| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>ReadableStream disturbed tests, via Response's bodyUsed property</title> |
| <link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me"> |
| <link rel="author" title="Takeshi Yoshino" href="mailto:tyoshino@chromium.org"> |
| |
| <link rel="help" href="https://streams.spec.whatwg.org/#is-readable-stream-disturbed"> |
| <link rel="help" href="https://fetch.spec.whatwg.org/#dom-body-bodyused"> |
| |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <script> |
| "use strict"; |
| |
| test(() => { |
| const stream = new ReadableStream(); |
| const response = new Response(stream); |
| assert_false(response.bodyUsed, "On construction"); |
| |
| const reader = stream.getReader(); |
| assert_false(response.bodyUsed, "After getting a reader"); |
| |
| reader.read(); |
| assert_true(response.bodyUsed, "After calling stream.read()"); |
| }, "A non-closed stream on which read() has been called"); |
| |
| test(() => { |
| const stream = new ReadableStream(); |
| const response = new Response(stream); |
| assert_false(response.bodyUsed, "On construction"); |
| |
| const reader = stream.getReader(); |
| assert_false(response.bodyUsed, "After getting a reader"); |
| |
| reader.cancel(); |
| assert_true(response.bodyUsed, "After calling stream.cancel()"); |
| }, "A non-closed stream on which cancel() has been called"); |
| |
| test(() => { |
| const stream = new ReadableStream({ |
| start(c) { |
| c.close(); |
| } |
| }); |
| const response = new Response(stream); |
| assert_false(response.bodyUsed, "On construction"); |
| |
| const reader = stream.getReader(); |
| assert_false(response.bodyUsed, "After getting a reader"); |
| |
| reader.read(); |
| assert_true(response.bodyUsed, "After calling stream.read()"); |
| }, "A closed stream on which read() has been called"); |
| |
| test(() => { |
| const stream = new ReadableStream({ |
| start(c) { |
| c.error(new Error("some error")); |
| } |
| }); |
| const response = new Response(stream); |
| assert_false(response.bodyUsed, "On construction"); |
| |
| const reader = stream.getReader(); |
| assert_false(response.bodyUsed, "After getting a reader"); |
| |
| reader.read().then(() => { }, () => { }); |
| assert_true(response.bodyUsed, "After calling stream.read()"); |
| }, "An errored stream on which read() has been called"); |
| |
| test(() => { |
| const stream = new ReadableStream({ |
| start(c) { |
| c.error(new Error("some error")); |
| } |
| }); |
| const response = new Response(stream); |
| assert_false(response.bodyUsed, "On construction"); |
| |
| const reader = stream.getReader(); |
| assert_false(response.bodyUsed, "After getting a reader"); |
| |
| reader.cancel().then(() => { }, () => { }); |
| assert_true(response.bodyUsed, "After calling stream.cancel()"); |
| }, "An errored stream on which cancel() has been called"); |
| |
| </script> |