Title: [192160] trunk/Source/WebCore
Revision
192160
Author
youenn.fab...@crf.canon.fr
Date
2015-11-09 10:06:51 -0800 (Mon, 09 Nov 2015)

Log Message

[Streams API] Activate assertions
https://bugs.webkit.org/show_bug.cgi?id=151021

Reviewed by Darin Adler.

Activating assertions in streams API.
Fixing a bug in ReadableStream implementation: when pull promise is rejected,
the readable stream may already be errored by some other means.

Covered by existing test sets in Debug builds.

* Modules/streams/ReadableStreamInternals.js:
(teeReadableStream):
(teeReadableStreamPullFunction):
(errorReadableStream):
(requestReadableStreamPull):
(finishClosingReadableStream):
(closeReadableStream):
(enqueueInReadableStream):
(readFromReadableStreamReader):
* Modules/streams/ReadableStreamReader.js:
(cancel):
* Modules/streams/StreamInternals.js:
(peekQueueValue):
* Modules/streams/WritableStream.js:
(write):
(state):
* Modules/streams/WritableStreamInternals.js:
(syncWritableStreamStateWithQueue):
(closeWritableStream): Deleted.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (192159 => 192160)


--- trunk/Source/WebCore/ChangeLog	2015-11-09 16:34:05 UTC (rev 192159)
+++ trunk/Source/WebCore/ChangeLog	2015-11-09 18:06:51 UTC (rev 192160)
@@ -1,3 +1,36 @@
+2015-11-09  Youenn Fablet  <youenn.fab...@crf.canon.fr>
+
+        [Streams API] Activate assertions
+        https://bugs.webkit.org/show_bug.cgi?id=151021
+
+        Reviewed by Darin Adler.
+
+        Activating assertions in streams API.
+        Fixing a bug in ReadableStream implementation: when pull promise is rejected,
+        the readable stream may already be errored by some other means.
+
+        Covered by existing test sets in Debug builds.
+
+        * Modules/streams/ReadableStreamInternals.js:
+        (teeReadableStream):
+        (teeReadableStreamPullFunction):
+        (errorReadableStream):
+        (requestReadableStreamPull):
+        (finishClosingReadableStream):
+        (closeReadableStream):
+        (enqueueInReadableStream):
+        (readFromReadableStreamReader):
+        * Modules/streams/ReadableStreamReader.js:
+        (cancel):
+        * Modules/streams/StreamInternals.js:
+        (peekQueueValue):
+        * Modules/streams/WritableStream.js:
+        (write):
+        (state):
+        * Modules/streams/WritableStreamInternals.js:
+        (syncWritableStreamStateWithQueue):
+        (closeWritableStream): Deleted.
+
 2015-11-09  Xabier Rodriguez Calvar  <calva...@igalia.com>
 
         [Streams API] Shield implementation from mangling then and catch promise methods

Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js (192159 => 192160)


--- trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js	2015-11-09 16:34:05 UTC (rev 192159)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js	2015-11-09 18:06:51 UTC (rev 192160)
@@ -76,8 +76,8 @@
 {
     "use strict";
 
-    // TODO: Assert: IsReadableStream(stream) is true.
-    // TODO: Assert: Type(shouldClone) is Boolean.
+    @assert(@isReadableStream(stream));
+    @assert(typeof(shouldClone) === "boolean");
 
     let reader = stream.getReader();
 
@@ -133,11 +133,11 @@
             if (teeState.closedOrErrored)
                 return;
             if (!teeState.canceled1) {
-                // TODO: Implement cloning if shouldClone is true
+                // FIXME: Implement cloning if shouldClone is true
                 @enqueueInReadableStream(teeState.branch1, result.value);
             }
             if (!teeState.canceled2) {
-                // TODO: Implement cloning if shouldClone is true
+                // FIXME: Implement cloning if shouldClone is true
                 @enqueueInReadableStream(teeState.branch2, result.value);
             }
         });
@@ -195,7 +195,7 @@
 {
     "use strict";
 
-    // FIXME: ASSERT(stream.@state === @streamReadable);
+    @assert(stream.@state === @streamReadable);
     stream.@queue = @newQueue();
     stream.@storedError = error;
     stream.@state = @streamErrored;
@@ -244,7 +244,8 @@
             @requestReadableStreamPull(stream);
         }
     }, function(error) {
-        @errorReadableStream(stream, error);
+        if (stream.@state === @streamReadable)
+            @errorReadableStream(stream, error);
     });
 }
 
@@ -287,7 +288,7 @@
 {
     "use strict";
 
-    // FIXME: ASSERT(stream.@state ===  @streamReadable);
+    @assert(stream.@state ===  @streamReadable);
     stream.@state = @streamClosed;
     var reader = stream.@reader;
     if (reader)
@@ -298,8 +299,8 @@
 {
     "use strict";
 
-    // FIXME: ASSERT(!stream.@closeRequested);
-    // FIXME: ASSERT(stream.@state !== @streamErrored);
+    @assert(!stream.@closeRequested);
+    @assert(stream.@state !== @streamErrored);
     if (stream.@state === @streamClosed)
         return; 
     stream.@closeRequested = true;
@@ -324,8 +325,8 @@
 {
     "use strict";
 
-    // FIXME: ASSERT(!stream.@closeRequested);
-    // FIXME: ASSERT(stream.@state !== @streamErrored);
+    @assert(!stream.@closeRequested);
+    @assert(stream.@state !== @streamErrored);
     if (stream.@state === @streamClosed)
         return undefined;
     if (@isReadableStreamLocked(stream) && stream.@reader.@readRequests.length) {
@@ -357,8 +358,8 @@
         return @Promise.@resolve({value: undefined, done: true});
     if (reader.@state === @streamErrored)
         return @Promise.@reject(reader.@storedError);
-    // FIXME: ASSERT(!!reader.@ownerReadableStream);
-    // FIXME: ASSERT(reader.@ownerReadableStream.@state === @streamReadable);
+    @assert(!!reader.@ownerReadableStream);
+    @assert(reader.@ownerReadableStream.@state === @streamReadable);
     var stream = reader.@ownerReadableStream;
     if (stream.@queue.content.length) {
         var chunk = @dequeueValue(stream.@queue);

Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamReader.js (192159 => 192160)


--- trunk/Source/WebCore/Modules/streams/ReadableStreamReader.js	2015-11-09 16:34:05 UTC (rev 192159)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamReader.js	2015-11-09 18:06:51 UTC (rev 192160)
@@ -38,8 +38,8 @@
     if (this.@state === @streamErrored)
         return @Promise.@reject(this.@storedError);
 
-    // FIXME: ASSERT(@isReadableStream(this.@ownerReadableStream));
-    // FIXME: ASSERT(this.@ownerReadableStream.@state === @streamReadable);
+    @assert(@isReadableStream(this.@ownerReadableStream));
+    @assert(this.@ownerReadableStream.@state === @streamReadable);
     return @cancelReadableStream(this.@ownerReadableStream, reason);
 }
 

Modified: trunk/Source/WebCore/Modules/streams/StreamInternals.js (192159 => 192160)


--- trunk/Source/WebCore/Modules/streams/StreamInternals.js	2015-11-09 16:34:05 UTC (rev 192159)
+++ trunk/Source/WebCore/Modules/streams/StreamInternals.js	2015-11-09 18:06:51 UTC (rev 192160)
@@ -117,8 +117,7 @@
 
 function peekQueueValue(queue)
 {
-    // FIXME
-    // assert(queue.content.length > 0);
+    @assert(queue.content.length > 0);
 
     return queue.content[0].value;
 }

Modified: trunk/Source/WebCore/Modules/streams/WritableStream.js (192159 => 192160)


--- trunk/Source/WebCore/Modules/streams/WritableStream.js	2015-11-09 16:34:05 UTC (rev 192159)
+++ trunk/Source/WebCore/Modules/streams/WritableStream.js	2015-11-09 18:06:51 UTC (rev 192160)
@@ -121,8 +121,7 @@
     if (this.@state === @streamErrored)
         return @Promise.@reject(this.@storedError);
 
-    // FIXME
-    // assert(this.@state === @streamWritable || this.@state === @streamWaiting);
+    @assert(this.@state === @streamWritable || this.@state === @streamWaiting);
 
     let chunkSize = 1;
     if (th...@strategy.size !== undefined) {
@@ -188,8 +187,5 @@
         return "writable";
     }
 
-    // FIXME
-    // assert_not_reached();
-
-    return undefined;
+    @assert(false);
 }

Modified: trunk/Source/WebCore/Modules/streams/WritableStreamInternals.js (192159 => 192160)


--- trunk/Source/WebCore/Modules/streams/WritableStreamInternals.js	2015-11-09 16:34:05 UTC (rev 192159)
+++ trunk/Source/WebCore/Modules/streams/WritableStreamInternals.js	2015-11-09 18:06:51 UTC (rev 192160)
@@ -41,8 +41,7 @@
     if (stream.@state === @streamClosing)
         return;
 
-    // FIXME
-    // assert(stream.@state === @streamWritable || stream.@state === @streamWaiting);
+    @assert(stream.@state === @streamWritable || stream.@state === @streamWaiting);
 
     const shouldApplyBackpressure = stre...@queue.size > stream.@strategy.highWaterMark;
     if (shouldApplyBackpressure && stream.@state === @streamWritable) {
@@ -91,11 +90,9 @@
 
     const writeRecord = @peekQueueValue(stream.@queue);
     if (writeRecord === "close") {
-        // FIXME
-        // assert(stream.@state === @streamClosing);
+        @assert(stream.@state === @streamClosing);
         @dequeueValue(stream.@queue);
-        // FIXME
-        // assert(stream.@queue.content.length === 0);
+        @assert(stream.@queue.content.length === 0);
         @closeWritableStream(stream);
         return undefined;
     }
@@ -121,14 +118,12 @@
 
 function closeWritableStream(stream)
 {
-    // FIXME
-    // assert(stream.@state === @streamClosing);
+    @assert(stream.@state === @streamClosing);
     @promiseInvokeOrNoop(stream.@underlyingSink, "close").@then(
         function() {
             if (stream.@state === @streamErrored)
                 return;
-            // FIXME
-            // assert(stream.@state === @streamClosing);
+            @assert(stream.@state === @streamClosing);
             stream.@closedPromiseCapability.@resolve.@call(undefined, undefined);
             stream.@state = @streamClosed;
         },
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to