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