[Readable Streams API] Align respondInClosedState with spec
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 23 May 2017 16:24:39 +0000 (16:24 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 23 May 2017 16:24:39 +0000 (16:24 +0000)
https://bugs.webkit.org/show_bug.cgi?id=172288

Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2017-05-23
Reviewed by Chris Dumez.

Two changes are implemented in this patch:
- Change #1: An issue was reported to GH [1] while working on respondInClosedState
implementation. This issue has now been fixed, and this patch aligns implementation
with spec [2].
- Change #2: In addition, this patch also fixes a bug that went unnoticed as code
is not yet reachable (usage of controller.@reader is not valid and is therefore
replaced by controller.@controlledReadableStream.@reader).

[1] https://github.com/whatwg/streams/issues/686
[2] https://streams.spec.whatwg.org/#readable-byte-stream-controller-respond-in-closed-state

No added test as:
- Change #1 does not change behavior;
- Change #2 is not testable as the code is not yet reachable.

* Modules/streams/ReadableByteStreamInternals.js:
(readableByteStreamControllerRespondInClosedState): Aligned with spec.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@217279 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/Modules/streams/ReadableByteStreamInternals.js

index 52ca661..1357d4a 100644 (file)
@@ -1,3 +1,28 @@
+2017-05-23  Romain Bellessort  <romain.bellessort@crf.canon.fr>
+
+        [Readable Streams API] Align respondInClosedState with spec
+        https://bugs.webkit.org/show_bug.cgi?id=172288
+
+        Reviewed by Chris Dumez.
+
+        Two changes are implemented in this patch:
+        - Change #1: An issue was reported to GH [1] while working on respondInClosedState 
+        implementation. This issue has now been fixed, and this patch aligns implementation 
+        with spec [2].
+        - Change #2: In addition, this patch also fixes a bug that went unnoticed as code 
+        is not yet reachable (usage of controller.@reader is not valid and is therefore 
+        replaced by controller.@controlledReadableStream.@reader).
+
+        [1] https://github.com/whatwg/streams/issues/686
+        [2] https://streams.spec.whatwg.org/#readable-byte-stream-controller-respond-in-closed-state
+
+        No added test as:
+        - Change #1 does not change behavior;
+        - Change #2 is not testable as the code is not yet reachable.
+
+        * Modules/streams/ReadableByteStreamInternals.js:
+        (readableByteStreamControllerRespondInClosedState): Aligned with spec.
+
 2017-05-22 Emilio Cobos Ãlvarez  <ecobos@igalia.com>
 
         Add a RuntimeEnabledFeature for display: contents, defaulted to false.
index 6b10d47..826fe07 100644 (file)
@@ -456,16 +456,11 @@ function readableByteStreamControllerRespondInClosedState(controller, firstDescr
     firstDescriptor.buffer = @transferBufferToCurrentRealm(firstDescriptor.buffer);
     @assert(firstDescriptor.bytesFilled === 0);
 
-    // FIXME: Spec does not describe below test. However, only ReadableStreamBYOBReader has a readIntoRequests
-    // property. This issue has been reported through WHATWG/streams GitHub
-    // (https://github.com/whatwg/streams/issues/686), but no solution has been provided for the moment.
-    // Therefore, below test is added as a temporary fix.
-    if (!@isReadableStreamBYOBReader(controller.@reader))
-        return;
-
-    while (controller.@reader.@readIntoRequests.length > 0) {
-        let pullIntoDescriptor = @readableByteStreamControllerShiftPendingDescriptor(controller);
-        @readableByteStreamControllerCommitDescriptor(controller.@controlledReadableStream, pullIntoDescriptor);
+    if (@readableStreamHasBYOBReader(controller.@controlledReadableStream)) {
+        while (controller.@controlledReadableStream.@reader.@readIntoRequests.length > 0) {
+            let pullIntoDescriptor = @readableByteStreamControllerShiftPendingDescriptor(controller);
+            @readableByteStreamControllerCommitDescriptor(controller.@controlledReadableStream, pullIntoDescriptor);
+        }
     }
 }