Title: [225784] trunk
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);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to