- Revision
- 225784
- Author
- romain.belless...@crf.canon.fr
- Date
- 2017-12-12 08:51:54 -0800 (Tue, 12 Dec 2017)
Log Message
[Readable Streams API] Throw RangeError if a size is provided when creating a readable byte stream
https://bugs.webkit.org/show_bug.cgi?id=180470
Reviewed by Youenn Fablet.
LayoutTests/imported/w3c:
One new test imported from WPT to check that RangeError is thrown if a size is provided.
* web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated expectations.
* web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated expectations.
* web-platform-tests/streams/readable-byte-streams/general.js: Imported one test case from WPT.
* web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt: Updated expectations.
Source/WebCore:
Throw a RangeError if a ReadableStream is created with type 'bytes' and with a
non-undefined strategy size, as per latest spec:
- https://github.com/whatwg/streams/pull/856
- https://streams.spec.whatwg.org/#rs-constructor (step 4.c)
One new test imported from WPT to check that RangeError is thrown.
* Modules/streams/ReadableStream.js:
(initializeReadableStream): Check strategy size and throw RangeError if needed.
Modified Paths
Diff
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (225783 => 225784)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2017-12-12 16:46:09 UTC (rev 225783)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2017-12-12 16:51:54 UTC (rev 225784)
@@ -1,3 +1,17 @@
+2017-12-12 Romain Bellessort <romain.belless...@crf.canon.fr>
+
+ [Readable Streams API] Throw RangeError if a size is provided when creating a readable byte stream
+ https://bugs.webkit.org/show_bug.cgi?id=180470
+
+ Reviewed by Youenn Fablet.
+
+ One new test imported from WPT to check that RangeError is thrown if a size is provided.
+
+ * web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated expectations.
+ * web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated expectations.
+ * web-platform-tests/streams/readable-byte-streams/general.js: Imported one test case from WPT.
+ * web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt: Updated expectations.
+
2017-12-12 Ms2ger <ms2...@igalia.com>
[GTK] Update some test expectations.
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt (225783 => 225784)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt 2017-12-12 16:46:09 UTC (rev 225783)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt 2017-12-12 16:51:54 UTC (rev 225784)
@@ -71,4 +71,5 @@
PASS ReadableStreamBYOBReader constructor requires a ReadableStream argument
PASS ReadableStreamBYOBReader constructor requires an unlocked ReadableStream
PASS ReadableStreamBYOBReader constructor requires a ReadableStream with type "bytes"
+PASS ReadableStream constructor should not accept a strategy with a size defined if type is "bytes"
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt (225783 => 225784)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt 2017-12-12 16:46:09 UTC (rev 225783)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt 2017-12-12 16:51:54 UTC (rev 225784)
@@ -71,4 +71,5 @@
PASS ReadableStreamBYOBReader constructor requires a ReadableStream argument
PASS ReadableStreamBYOBReader constructor requires an unlocked ReadableStream
PASS ReadableStreamBYOBReader constructor requires a ReadableStream with type "bytes"
+PASS ReadableStream constructor should not accept a strategy with a size defined if type is "bytes"
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.js (225783 => 225784)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.js 2017-12-12 16:46:09 UTC (rev 225783)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.js 2017-12-12 16:51:54 UTC (rev 225784)
@@ -1943,4 +1943,30 @@
assert_throws(new TypeError(), () => new ReadableStreamBYOBReader(stream), 'constructor must throw');
}, 'ReadableStreamBYOBReader constructor requires a ReadableStream with type "bytes"');
+test(() => {
+ assert_throws(new RangeError(), () => new ReadableStream({ type: 'bytes' }, {
+ size() {
+ return 1;
+ }
+ }), 'constructor should throw for size function');
+
+ assert_throws(new RangeError(), () => new ReadableStream({ type: 'bytes' }, { size: null }),
+ 'constructor should throw for size defined');
+
+ assert_throws(new RangeError(),
+ () => new ReadableStream({ type: 'bytes' }, new CountQueuingStrategy({ highWaterMark: 1 })),
+ 'constructor should throw when strategy is CountQueuingStrategy');
+
+ assert_throws(new RangeError(),
+ () => new ReadableStream({ type: 'bytes' }, new ByteLengthQueuingStrategy({ highWaterMark: 512 })),
+ 'constructor should throw when strategy is ByteLengthQueuingStrategy');
+
+ class HasSizeMethod {
+ size() {}
+ }
+
+ assert_throws(new RangeError(), () => new ReadableStream({ type: 'bytes' }, new HasSizeMethod()),
+ 'constructor should throw when size on the prototype chain');
+}, 'ReadableStream constructor should not accept a strategy with a size defined if type is "bytes"');
+
done();
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt (225783 => 225784)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt 2017-12-12 16:46:09 UTC (rev 225783)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt 2017-12-12 16:51:54 UTC (rev 225784)
@@ -72,4 +72,9 @@
FAIL ReadableStreamBYOBReader constructor requires a ReadableStream argument ReadableByteStreamController is not implemented
FAIL ReadableStreamBYOBReader constructor requires an unlocked ReadableStream ReadableByteStreamController is not implemented
FAIL ReadableStreamBYOBReader constructor requires a ReadableStream with type "bytes" ReadableByteStreamController is not implemented
+FAIL ReadableStream constructor should not accept a strategy with a size defined if type is "bytes" assert_throws: constructor should throw for size function function "() => new ReadableStream({ type: 'bytes' }, {
+ size() {
+ return 1;
+ }
+ })" threw object "TypeError: ReadableByteStreamController is not implemented" ("TypeError") expected object "RangeError" ("RangeError")
Modified: trunk/Source/WebCore/ChangeLog (225783 => 225784)
--- trunk/Source/WebCore/ChangeLog 2017-12-12 16:46:09 UTC (rev 225783)
+++ trunk/Source/WebCore/ChangeLog 2017-12-12 16:51:54 UTC (rev 225784)
@@ -1,3 +1,20 @@
+2017-12-12 Romain Bellessort <romain.belless...@crf.canon.fr>
+
+ [Readable Streams API] Throw RangeError if a size is provided when creating a readable byte stream
+ https://bugs.webkit.org/show_bug.cgi?id=180470
+
+ Reviewed by Youenn Fablet.
+
+ Throw a RangeError if a ReadableStream is created with type 'bytes' and with a
+ non-undefined strategy size, as per latest spec:
+ - https://github.com/whatwg/streams/pull/856
+ - https://streams.spec.whatwg.org/#rs-constructor (step 4.c)
+
+ One new test imported from WPT to check that RangeError is thrown.
+
+ * Modules/streams/ReadableStream.js:
+ (initializeReadableStream): Check strategy size and throw RangeError if needed.
+
2017-12-12 Carlos Alberto Lopez Perez <clo...@igalia.com>
[GTK][WebRTC] Stop warning with so much verbosity about not implemented RealtimeMediaSourceCenter
Modified: trunk/Source/WebCore/Modules/streams/ReadableStream.js (225783 => 225784)
--- trunk/Source/WebCore/Modules/streams/ReadableStream.js 2017-12-12 16:46:09 UTC (rev 225783)
+++ trunk/Source/WebCore/Modules/streams/ReadableStream.js 2017-12-12 16:51:54 UTC (rev 225784)
@@ -57,6 +57,8 @@
if (strategy.highWaterMark === @undefined)
strategy.highWaterMark = 0;
+ if (strategy.size !== @undefined)
+ @throwRangeError("Strategy for a ReadableByteStreamController cannot have a size");
let readableByteStreamControllerConstructor = @ReadableByteStreamController;
this.@readableStreamController = new @ReadableByteStreamController(this, underlyingSource, strategy.highWaterMark);