| Index: third_party/WebKit/Source/core/streams/ReadableStream.js
|
| diff --git a/third_party/WebKit/Source/core/streams/ReadableStream.js b/third_party/WebKit/Source/core/streams/ReadableStream.js
|
| index 80580c76e90ad7b5de7c6650a4fea08d785c4911..02f1dbaf73f014e0c6f412460466809e181038be 100644
|
| --- a/third_party/WebKit/Source/core/streams/ReadableStream.js
|
| +++ b/third_party/WebKit/Source/core/streams/ReadableStream.js
|
| @@ -176,45 +176,54 @@
|
| throw new RangeError(errGetReaderBadMode);
|
| }
|
|
|
| - tee() {
|
| - if (IsReadableStream(this) === false) {
|
| - throw new TypeError(streamErrors.illegalInvocation);
|
| + pipeThrough({writable, readable}, options) {
|
| + this.pipeTo(writable, options);
|
| + return readable;
|
| + }
|
| +
|
| + pipeTo(dest, {preventClose, preventAbort, preventCancel} = {}) {
|
| + if (!IsReadableStream(this)) {
|
| + return Promise_reject(new TypeError(streamErrors.illegalInvocation));
|
| }
|
|
|
| - return ReadableStreamTee(this);
|
| - }
|
| - }
|
| + if (!binding.IsWritableStream(dest)) {
|
| + // TODO(ricea): Think about having a better error message.
|
| + return Promise_reject(new TypeError(streamErrors.illegalInvocation));
|
| + }
|
|
|
| - // TODO(ricea): Move this into the class definition once it ships.
|
| - function ReadableStream_prototype_pipeThrough({writable, readable}, options) {
|
| - this.pipeTo(writable, options);
|
| - return readable;
|
| - }
|
| + preventClose = Boolean(preventClose);
|
| + preventAbort = Boolean(preventAbort);
|
| + preventCancel = Boolean(preventCancel);
|
|
|
| - // TODO(ricea): Move this into the class definition once it ships.
|
| - function ReadableStream_prototype_pipeTo(
|
| - dest, {preventClose, preventAbort, preventCancel} = {}) {
|
| - if (!IsReadableStream(this)) {
|
| - return Promise_reject(new TypeError(streamErrors.illegalInvocation));
|
| - }
|
| + if (IsReadableStreamLocked(this)) {
|
| + return Promise_reject(new TypeError(errCannotPipeLockedStream));
|
| + }
|
| +
|
| + if (binding.IsWritableStreamLocked(dest)) {
|
| + return Promise_reject(new TypeError(errCannotPipeToALockedStream));
|
| + }
|
|
|
| - if (!binding.IsWritableStream(dest)) {
|
| - // TODO(ricea): Think about having a better error message.
|
| - return Promise_reject(new TypeError(streamErrors.illegalInvocation));
|
| + return ReadableStreamPipeTo(this, dest, preventClose, preventAbort,
|
| + preventCancel);
|
| }
|
|
|
| - preventClose = Boolean(preventClose);
|
| - preventAbort = Boolean(preventAbort);
|
| - preventCancel = Boolean(preventCancel);
|
| + tee() {
|
| + if (IsReadableStream(this) === false) {
|
| + throw new TypeError(streamErrors.illegalInvocation);
|
| + }
|
|
|
| - const readable = this;
|
| - if (IsReadableStreamLocked(readable)) {
|
| - return Promise_reject(new TypeError(errCannotPipeLockedStream));
|
| + return ReadableStreamTee(this);
|
| }
|
| + }
|
|
|
| - if (binding.IsWritableStreamLocked(dest)) {
|
| - return Promise_reject(new TypeError(errCannotPipeToALockedStream));
|
| - }
|
| + function ReadableStreamPipeTo(readable, dest, preventClose, preventAbort,
|
| + preventCancel) {
|
| + // Callers of this function must ensure that the following invariants
|
| + // are enforced:
|
| + // assert(IsReadableStream(readable));
|
| + // assert(binding.IsWritableStream(dest));
|
| + // assert(!IsReadableStreamLocked(readable));
|
| + // assert(!binding.IsWritableStreamLocked(dest));
|
|
|
| const reader = AcquireReadableStreamDefaultReader(readable);
|
| const writer = binding.AcquireWritableStreamDefaultWriter(dest);
|
| @@ -1108,9 +1117,4 @@
|
| return new ReadableStream(
|
| underlyingSource, strategy, createWithExternalControllerSentinel);
|
| };
|
| -
|
| - // Temporary exports while pipeTo() and pipeThrough() are behind flags
|
| - binding.ReadableStream_prototype_pipeThrough =
|
| - ReadableStream_prototype_pipeThrough;
|
| - binding.ReadableStream_prototype_pipeTo = ReadableStream_prototype_pipeTo;
|
| });
|
|
|