Title: [206912] trunk/Source/WebCore
Revision
206912
Author
commit-qu...@webkit.org
Date
2016-10-07 08:10:46 -0700 (Fri, 07 Oct 2016)

Log Message

[Readable Streams API] Implement generic reader functions
https://bugs.webkit.org/show_bug.cgi?id=163003

Patch by Romain Bellessort <romain.belless...@crf.canon.fr> on 2016-10-07
Reviewed by Darin Adler.

Implements reader generic functions defined by spec in order to prepare BYOBReader integration.
Generic functions factorize some code that is used by both DefaultReader and BYOBReader.

No change in behaviour.

* Modules/streams/ReadableStreamDefaultReader.js:
(cancel): Rely on readableStreamReaderGenericCancel.
(releaseLock): Rely on readableStreamReaderGenericRelease.
* Modules/streams/ReadableStreamInternals.js:
(privateInitializeReadableStreamDefaultReader): Rely on readableStreamReaderGenericInitialize.
(readableStreamReaderGenericInitialize): Added.
(readableStreamReaderGenericCancel): Added.
(readableStreamReaderGenericRelease): Added.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (206911 => 206912)


--- trunk/Source/WebCore/ChangeLog	2016-10-07 15:00:57 UTC (rev 206911)
+++ trunk/Source/WebCore/ChangeLog	2016-10-07 15:10:46 UTC (rev 206912)
@@ -1,3 +1,24 @@
+2016-10-07  Romain Bellessort  <romain.belless...@crf.canon.fr>
+
+        [Readable Streams API] Implement generic reader functions
+        https://bugs.webkit.org/show_bug.cgi?id=163003
+
+        Reviewed by Darin Adler.
+
+        Implements reader generic functions defined by spec in order to prepare BYOBReader integration.
+        Generic functions factorize some code that is used by both DefaultReader and BYOBReader.
+
+        No change in behaviour.
+
+        * Modules/streams/ReadableStreamDefaultReader.js:
+        (cancel): Rely on readableStreamReaderGenericCancel.
+        (releaseLock): Rely on readableStreamReaderGenericRelease.
+        * Modules/streams/ReadableStreamInternals.js:
+        (privateInitializeReadableStreamDefaultReader): Rely on readableStreamReaderGenericInitialize.
+        (readableStreamReaderGenericInitialize): Added.
+        (readableStreamReaderGenericCancel): Added.
+        (readableStreamReaderGenericRelease): Added.
+
 2016-10-07  Adam Bergkvist  <adam.bergkv...@ericsson.com>
 
         WebRTC: Misc gardening: Use typedefs consistently and remove unused code

Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js (206911 => 206912)


--- trunk/Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js	2016-10-07 15:00:57 UTC (rev 206911)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js	2016-10-07 15:10:46 UTC (rev 206912)
@@ -35,7 +35,7 @@
     if (!this.@ownerReadableStream)
         return @Promise.@reject(new @TypeError("cancel() called on a reader owned by no readable stream"));
 
-    return @readableStreamCancel(this.@ownerReadableStream, reason);
+    return @readableStreamReaderGenericCancel(this, reason);
 }
 
 function read()
@@ -57,20 +57,13 @@
     if (!@isReadableStreamDefaultReader(this))
         throw @makeThisTypeError("ReadableStreamDefaultReader", "releaseLock");
 
-    const stream = this.@ownerReadableStream;
-    if (!stream)
-         return;
+    if (!this.@ownerReadableStream)
+        return;
 
     if (this.@readRequests.length)
         @throwTypeError("There are still pending read requests, cannot release the lock");
 
-    if (stream.@state === @streamReadable)
-        this.@closedPromiseCapability.@reject.@call(@undefined, new @TypeError("releasing lock of reader whose stream is still in readable state"));
-    else
-        this.@closedPromiseCapability = { @promise: @Promise.@reject(new @TypeError("reader released lock")) };
-
-    stream.@reader = @undefined;
-    this.@ownerReadableStream = null;
+    @readableStreamReaderGenericRelease(this);
 }
 
 function closed()

Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js (206911 => 206912)


--- trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js	2016-10-07 15:00:57 UTC (rev 206911)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js	2016-10-07 15:10:46 UTC (rev 206912)
@@ -36,23 +36,28 @@
     if (@isReadableStreamLocked(stream))
        @throwTypeError("ReadableStream is locked");
 
+    @readableStreamReaderGenericInitialize(this, stream);
     this.@readRequests = [];
-    this.@ownerReadableStream = stream;
-    stream.@reader = this;
-    if (stream.@state === @streamReadable) {
-        this.@closedPromiseCapability = @newPromiseCapability(@Promise);
-        return this;
-    }
-    if (stream.@state === @streamClosed) {
-        this.@closedPromiseCapability = { @promise: @Promise.@resolve() };
-        return this;
-    }
-    @assert(stream.@state === @streamErrored);
-    this.@closedPromiseCapability = { @promise: @Promise.@reject(stream.@storedError) };
 
     return this;
 }
 
+function readableStreamReaderGenericInitialize(reader, stream)
+{
+    "use strict";
+
+    reader.@ownerReadableStream = stream;
+    stream.@reader = reader;
+    if (stream.@state === @streamReadable)
+        reader.@closedPromiseCapability = @newPromiseCapability(@Promise);
+    else if (stream.@state === @streamClosed)
+        reader.@closedPromiseCapability = { @promise: @Promise.@resolve() };
+    else {
+        @assert(stream.@state === @streamErrored);
+        reader.@closedPromiseCapability = { @promise: @Promise.@reject(stream.@storedError) };
+    }
+}
+
 function privateInitializeReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark)
 {
     "use strict";
@@ -323,6 +328,16 @@
    return controller.@strategy.highWaterMark - controll...@queue.size;
 }
 
+
+function readableStreamReaderGenericCancel(reader, reason)
+{
+    "use strict";
+
+    const stream = reader.@ownerReadableStream;
+    @assert(!!stream);
+    return @readableStreamCancel(stream, reason);
+}
+
 function readableStreamCancel(stream, reason)
 {
     "use strict";
@@ -460,3 +475,19 @@
     @assert(@isReadableStream(stream));
     return stream.@disturbed;
 }
+
+function readableStreamReaderGenericRelease(reader)
+{
+    "use strict";
+
+    @assert(!!reader.@ownerReadableStream);
+    @assert(reader.@ownerReadableStream.@reader === reader);
+
+    if (reader.@ownerReadableStream.@state === @streamReadable)
+        reader.@closedPromiseCapability.@reject.@call(@undefined, new @TypeError("releasing lock of reader whose stream is still in readable state"));
+    else
+        reader.@closedPromiseCapability = { @promise: @Promise.@reject(new @TypeError("reader released lock")) };
+
+    reader.@ownerReadableStream.@reader = @undefined;
+    reader.@ownerReadableStream = null;
+}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to