Title: [223044] trunk/Source/WebCore
- Revision
- 223044
- Author
- [email protected]
- Date
- 2017-10-09 05:53:11 -0700 (Mon, 09 Oct 2017)
Log Message
[Readable Streams API] Implement canCloseOrEnqueue
https://bugs.webkit.org/show_bug.cgi?id=178005
Reviewed by Youenn Fablet.
Implemented readableStreamDefaultControllerCanCloseOrEnqueue [1]. This is
just a refactoring (based on spec) aiming at factorizing a set of tests
that are done at multiple places.
[1] https://streams.spec.whatwg.org/#readable-stream-default-controller-can-close-or-enqueue
No new tests (refactoring, no new behavior).
* Modules/streams/ReadableStreamDefaultController.js:
(enqueue): Updated.
(close): Updated.
* Modules/streams/ReadableStreamInternals.js:
(readableStreamDefaultControllerClose): Updated.
(readableStreamDefaultControllerCanCloseOrEnqueue): Added.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (223043 => 223044)
--- trunk/Source/WebCore/ChangeLog 2017-10-09 09:59:26 UTC (rev 223043)
+++ trunk/Source/WebCore/ChangeLog 2017-10-09 12:53:11 UTC (rev 223044)
@@ -1,3 +1,25 @@
+2017-10-09 Romain Bellessort <[email protected]>
+
+ [Readable Streams API] Implement canCloseOrEnqueue
+ https://bugs.webkit.org/show_bug.cgi?id=178005
+
+ Reviewed by Youenn Fablet.
+
+ Implemented readableStreamDefaultControllerCanCloseOrEnqueue [1]. This is
+ just a refactoring (based on spec) aiming at factorizing a set of tests
+ that are done at multiple places.
+
+ [1] https://streams.spec.whatwg.org/#readable-stream-default-controller-can-close-or-enqueue
+
+ No new tests (refactoring, no new behavior).
+
+ * Modules/streams/ReadableStreamDefaultController.js:
+ (enqueue): Updated.
+ (close): Updated.
+ * Modules/streams/ReadableStreamInternals.js:
+ (readableStreamDefaultControllerClose): Updated.
+ (readableStreamDefaultControllerCanCloseOrEnqueue): Added.
+
2017-10-05 Frederic Wang <[email protected]>
Remove WOFF2 from Source/ThirdParty.
Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamDefaultController.js (223043 => 223044)
--- trunk/Source/WebCore/Modules/streams/ReadableStreamDefaultController.js 2017-10-09 09:59:26 UTC (rev 223043)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamDefaultController.js 2017-10-09 12:53:11 UTC (rev 223044)
@@ -32,12 +32,9 @@
if (!@isReadableStreamDefaultController(this))
throw @makeThisTypeError("ReadableStreamDefaultController", "enqueue");
- if (this.@closeRequested)
- @throwTypeError("ReadableStreamDefaultController is requested to close");
+ if (!@readableStreamDefaultControllerCanCloseOrEnqueue(this))
+ @throwTypeError("ReadableStreamDefaultController is not in a state where chunk can be enqueued");
- if (this.@controlledReadableStream.@state !== @streamReadable)
- @throwTypeError("ReadableStream is not readable");
-
return @readableStreamDefaultControllerEnqueue(this, chunk);
}
@@ -61,12 +58,9 @@
if (!@isReadableStreamDefaultController(this))
throw @makeThisTypeError("ReadableStreamDefaultController", "close");
- if (this.@closeRequested)
- @throwTypeError("ReadableStreamDefaultController is already requested to close");
+ if (!@readableStreamDefaultControllerCanCloseOrEnqueue(this))
+ @throwTypeError("ReadableStreamDefaultController is not in a state where it can be closed");
- if (this.@controlledReadableStream.@state !== @streamReadable)
- @throwTypeError("ReadableStream is not readable");
-
@readableStreamDefaultControllerClose(this);
}
Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js (223043 => 223044)
--- trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js 2017-10-09 09:59:26 UTC (rev 223043)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js 2017-10-09 12:53:11 UTC (rev 223044)
@@ -319,10 +319,8 @@
const stream = controller.@controlledReadableStream;
- if (stream.@state === @streamClosed || stream.@state === @streamErrored)
+ if (!@readableStreamDefaultControllerCanCloseOrEnqueue(controller))
return;
- if (controller.@closeRequested)
- return;
if (!controller.@started)
return;
if ((!@isReadableStreamLocked(stream) || !stream.@[email protected]) && @readableStreamDefaultControllerGetDesiredSize(controller) <= 0)
@@ -423,12 +421,10 @@
{
"use strict";
- const stream = controller.@controlledReadableStream;
- @assert(!controller.@closeRequested);
- @assert(stream.@state === @streamReadable);
+ @assert(@readableStreamDefaultControllerCanCloseOrEnqueue(controller));
controller.@closeRequested = true;
if ([email protected] === 0)
- @readableStreamClose(stream);
+ @readableStreamClose(controller.@controlledReadableStream);
}
function readableStreamClose(stream)
@@ -464,8 +460,7 @@
"use strict";
const stream = controller.@controlledReadableStream;
- @assert(!controller.@closeRequested);
- @assert(stream.@state === @streamReadable);
+ @assert(@readableStreamDefaultControllerCanCloseOrEnqueue(controller));
if (@isReadableStreamLocked(stream) && stream.@[email protected]) {
@readableStreamFulfillReadRequest(stream, chunk, false);
@@ -541,3 +536,10 @@
reader.@ownerReadableStream.@reader = @undefined;
reader.@ownerReadableStream = @undefined;
}
+
+function readableStreamDefaultControllerCanCloseOrEnqueue(controller)
+{
+ "use strict";
+
+ return !controller.@closeRequested && controller.@controlledReadableStream.@state === @streamReadable;
+}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes