Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Unified Diff: third_party/WebKit/Source/core/streams/WritableStream.js

Issue 2561443004: Implementation of ReadableStream pipeTo and pipeThrough (Closed)
Patch Set: Stop waiting for writes to terminate at shutdown Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/streams/WritableStream.js
diff --git a/third_party/WebKit/Source/core/streams/WritableStream.js b/third_party/WebKit/Source/core/streams/WritableStream.js
index e987cedd7f85b4496a9d3cff686013165fcf546d..d7cc5243511bed8f8a989b231edbd68b26e02474 100644
--- a/third_party/WebKit/Source/core/streams/WritableStream.js
+++ b/third_party/WebKit/Source/core/streams/WritableStream.js
@@ -364,6 +364,26 @@
}
}
+ // Functions to expose internals for ReadableStream.pipeTo. These are not
+ // part of the standard.
+ function IsWritableStreamErrored(stream) {
+ TEMP_ASSERT(IsWritableStream(stream),
+ '! IsWritableStream(stream) is true.');
+ return stream[_state] === ERRORED;
+ }
+
+ function IsWritableStreamClosingOrClosed(stream) {
+ TEMP_ASSERT(IsWritableStream(stream),
+ '! IsWritableStream(stream) is true.');
+ return stream[_state] === CLOSING || stream[_state] === CLOSED;
+ }
+
+ function WritableStreamStoredError(stream) {
+ TEMP_ASSERT(IsWritableStream(stream),
+ '! IsWritableStream(stream) is true.');
+ return stream[_storedError];
+ }
+
class WritableStreamDefaultWriter {
constructor(stream) {
if (!IsWritableStream(stream)) {
@@ -504,6 +524,20 @@
return stream[_pendingCloseRequest];
}
+ function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {
+ const stream = writer[_ownerWritableStream];
+ TEMP_ASSERT(stream !== undefined, 'stream is not undefined.');
+ const state = stream[_state];
+ if (state === CLOSING || state === CLOSED) {
+ return Promise_resolve(undefined);
+ }
+ if (state === ERRORED) {
+ return Promise_reject(stream[_storedError]);
+ }
+ TEMP_ASSERT(state === WRITABLE, 'state is "writable".');
+ return WritableStreamDefaultWriterClose(writer);
+ }
+
function WritableStreamDefaultWriterGetDesiredSize(writer) {
const stream = writer[_ownerWritableStream];
const state = stream[_state];
@@ -563,6 +597,20 @@
return promise;
}
+ // Functions to expose internals for ReadableStream.pipeTo. These do not
+ // appear in the standard.
+ function WritableStreamDefaultWriterClosedPromise(writer) {
+ TEMP_ASSERT(IsWritableStreamDefaultWriter(writer),
+ 'writer is a WritableStreamDefaultWriter');
+ return writer[_closedPromise];
+ }
+
+ function WritableStreamDefaultWriterReadyPromise(writer) {
+ TEMP_ASSERT(IsWritableStreamDefaultWriter(writer),
+ 'writer is a WritableStreamDefaultWriter');
+ return writer[_readyPromise];
+ }
+
class WritableStreamDefaultController {
constructor(stream, underlyingSink, size, highWaterMark) {
if (!IsWritableStream(stream)) {
@@ -934,4 +982,25 @@
});
// TODO(ricea): Exports to Blink
+
+ // Exports for ReadableStream
+ binding.AcquireWritableStreamDefaultWriter =
+ AcquireWritableStreamDefaultWriter;
+ binding.IsWritableStream = IsWritableStream;
+ binding.IsWritableStreamClosingOrClosed = IsWritableStreamClosingOrClosed;
+ binding.IsWritableStreamErrored = IsWritableStreamErrored;
+ binding.IsWritableStreamLocked = IsWritableStreamLocked;
+ binding.WritableStreamAbort = WritableStreamAbort;
+ binding.WritableStreamDefaultWriterCloseWithErrorPropagation =
+ WritableStreamDefaultWriterCloseWithErrorPropagation;
+ binding.WritableStreamDefaultWriterClosedPromise =
+ WritableStreamDefaultWriterClosedPromise;
+ binding.WritableStreamDefaultWriterGetDesiredSize =
+ WritableStreamDefaultWriterGetDesiredSize;
+ binding.WritableStreamDefaultWriterReadyPromise =
+ WritableStreamDefaultWriterReadyPromise;
+ binding.WritableStreamDefaultWriterRelease =
+ WritableStreamDefaultWriterRelease;
+ binding.WritableStreamDefaultWriterWrite = WritableStreamDefaultWriterWrite;
+ binding.WritableStreamStoredError = WritableStreamStoredError;
});

Powered by Google App Engine
This is Rietveld 408576698