[Readable Streams API] Align getDesiredSize with spec
https://bugs.webkit.org/show_bug.cgi?id=172220
Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2017-05-18
Reviewed by Chris Dumez.
LayoutTests/imported/w3c:
Updated test expectations (tests are now passing).
* web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated.
* web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated.
* web-platform-tests/streams/readable-streams/general-expected.txt: Updated.
* web-platform-tests/streams/readable-streams/general.dedicatedworker-expected.txt: Updated.
Source/WebCore:
Aligned implementation of getDesiredSize operation for both controllers:
- https://streams.spec.whatwg.org/#readable-stream-default-controller-get-desired-size
- https://streams.spec.whatwg.org/#readable-byte-stream-controller-get-desired-size
Implementation slightly differs from spec as queueTotalSize refactoring is not
yet implemented, but behavior is now similar.
No new tests (already covered by WPT tests, corresponding expectations have been updated).
* Modules/streams/ReadableByteStreamInternals.js:
(readableByteStreamControllerGetDesiredSize): Updated.
* Modules/streams/ReadableStreamInternals.js:
(readableStreamDefaultControllerGetDesiredSize): Updated.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@217044 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/Modules/streams/ReadableStreamInternals.js b/Source/WebCore/Modules/streams/ReadableStreamInternals.js
index af0fc13..f4e5daf 100644
--- a/Source/WebCore/Modules/streams/ReadableStreamInternals.js
+++ b/Source/WebCore/Modules/streams/ReadableStreamInternals.js
@@ -333,6 +333,13 @@
{
"use strict";
+ const stream = controller.@controlledReadableStream;
+
+ if (stream.@state === @streamErrored)
+ return null;
+ if (stream.@state === @streamClosed)
+ return 0;
+
return controller.@strategy.highWaterMark - controller.@queue.size;
}