Title: [186112] trunk
Revision
186112
Author
[email protected]
Date
2015-06-30 02:27:49 -0700 (Tue, 30 Jun 2015)

Log Message

[Streams API] Synced bad strategy test with reference implementation
https://bugs.webkit.org/show_bug.cgi?id=146411

Reviewed by Darin Adler.

Source/WebCore:

Current tests cover the case.

* bindings/js/ReadableJSStream.cpp:
(WebCore::ReadableJSStream::retrieveChunkSize): Check for negative size then running the _javascript_ function.

LayoutTests:

* streams/reference-implementation/bad-strategies-expected.txt:
* streams/reference-implementation/bad-strategies.html: There are three tests that are merged into one and a
fourth check is added. Updated expectations accordingly.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (186111 => 186112)


--- trunk/LayoutTests/ChangeLog	2015-06-30 07:50:12 UTC (rev 186111)
+++ trunk/LayoutTests/ChangeLog	2015-06-30 09:27:49 UTC (rev 186112)
@@ -1,3 +1,14 @@
+2015-06-30  Youenn Fablet  <[email protected]> and Xabier Rodriguez Calvar  <[email protected]>
+
+        [Streams API] Synced bad strategy test with reference implementation
+        https://bugs.webkit.org/show_bug.cgi?id=146411
+
+        Reviewed by Darin Adler.
+
+        * streams/reference-implementation/bad-strategies-expected.txt:
+        * streams/reference-implementation/bad-strategies.html: There are three tests that are merged into one and a
+        fourth check is added. Updated expectations accordingly.
+
 2015-06-29  Ryosuke Niwa  <[email protected]>
 
         Another rebaseline after r186086.

Modified: trunk/LayoutTests/streams/reference-implementation/bad-strategies-expected.txt (186111 => 186112)


--- trunk/LayoutTests/streams/reference-implementation/bad-strategies-expected.txt	2015-06-30 07:50:12 UTC (rev 186111)
+++ trunk/LayoutTests/streams/reference-implementation/bad-strategies-expected.txt	2015-06-30 09:27:49 UTC (rev 186112)
@@ -4,7 +4,5 @@
 PASS Readable stream: throwing strategy.highWaterMark getter 
 PASS Readable stream: invalid strategy.highWaterMark 
 PASS Readable stream: negative strategy.highWaterMark 
-PASS Readable stream: strategy.size returning NaN 
-PASS Readable stream: strategy.size returning -Infinity 
-PASS Readable stream: strategy.size returning +Infinity 
+PASS Readable stream: invalid strategy.size return value 
 

Modified: trunk/LayoutTests/streams/reference-implementation/bad-strategies.html (186111 => 186112)


--- trunk/LayoutTests/streams/reference-implementation/bad-strategies.html	2015-06-30 07:50:12 UTC (rev 186111)
+++ trunk/LayoutTests/streams/reference-implementation/bad-strategies.html	2015-06-30 09:27:49 UTC (rev 186112)
@@ -88,99 +88,38 @@
     }, 'construction should throw a RangeError');
 }, 'Readable stream: negative strategy.highWaterMark');
 
-var test2 = async_test('Readable stream: strategy.size returning NaN');
+var test2 = async_test('Readable stream: invalid strategy.size return value');
 test2.step(function() {
-    var theError;
-    var startCalled = false;
-    var rs = new ReadableStream(
-        {
+    var numberOfCalls = 0;
+    var elements = [NaN, -Infinity, +Infinity, -1];
+    var theError = [];
+    for (var i = 0; i < elements.length; i++) {
+        var rs = new ReadableStream({
             start: function(c) {
                 try {
                     c.enqueue('hi');
                     assert_unreached('enqueue didn\'t throw');
                 } catch (error) {
-                    startCalled = true;
-                    assert_equals(error.constructor, RangeError, 'enqueue should throw a RangeError');
-                    theError = error;
+                    assert_throws(new RangeError(), function() { throw error; }, 'enqueue should throw a RangeError for ' + elements[i]);
+                    theError[i] = error;
                 }
             }
         },
         {
             size: function() {
-                return NaN;
+                return elements[i];
             },
             highWaterMark: 5
-        }
-    );
+        });
 
-    rs.getReader().closed.catch(test2.step_func(function(e) {
-        assert_equals(e, theError, 'closed should reject with the error');
-        assert_true(startCalled);
-        test2.done();
-    }));
-});
-
-var test3 = async_test('Readable stream: strategy.size returning -Infinity');
-test3.step(function() {
-    var theError;
-    var startCalled = false;
-    var rs = new ReadableStream(
-        {
-            start: function(c) {
-                try {
-                    c.enqueue('hi');
-                    assert_unreached('enqueue didn\'t throw');
-                } catch (error) {
-                    startCalled = true;
-                    assert_equals(error.constructor, RangeError, 'enqueue should throw a RangeError');
-                    theError = error;
-                }
+        var catchFunction = function(i, e) {
+            assert_equals(e, theError[i], 'closed should reject with the error for ' + elements[i]);
+            if (++numberOfCalls, elements.length) {
+                test2.done();
             }
-        },
-        {
-            size: function() {
-                return -Infinity;
-            },
-            highWaterMark: 5
-        }
-    );
+        };
 
-    rs.getReader().closed.catch(test3.step_func(function(e) {
-        assert_equals(e, theError, 'closed should reject with the error');
-        assert_true(startCalled);
-        test3.done();
-    }));
+        rs.getReader().closed.catch(test2.step_func(catchFunction.bind(this, i)));
+    }
 });
-
-var test4 = async_test('Readable stream: strategy.size returning +Infinity');
-test4.step(function() {
-    var theError;
-    var startCalled = false;
-    var rs = new ReadableStream(
-        {
-            start: function(c) {
-                try {
-                    c.enqueue('hi');
-                    assert_unreached('enqueue didn\'t throw');
-                } catch (error) {
-                    startCalled = true;
-                    assert_equals(error.constructor, RangeError, 'enqueue should throw a RangeError');
-                    theError = error;
-                }
-            }
-        },
-        {
-            size: function() {
-                return +Infinity;
-            },
-            highWaterMark: 5
-        }
-    );
-
-    rs.getReader().closed.catch(test4.step_func(function(e) {
-        assert_equals(e, theError, 'closed should reject with the error');
-        assert_true(startCalled);
-        test4.done();
-    }));
-});
 </script>

Modified: trunk/Source/WebCore/ChangeLog (186111 => 186112)


--- trunk/Source/WebCore/ChangeLog	2015-06-30 07:50:12 UTC (rev 186111)
+++ trunk/Source/WebCore/ChangeLog	2015-06-30 09:27:49 UTC (rev 186112)
@@ -1,3 +1,15 @@
+2015-06-30  Youenn Fablet  <[email protected]> and Xabier Rodriguez Calvar  <[email protected]>
+
+        [Streams API] Synced bad strategy test with reference implementation
+        https://bugs.webkit.org/show_bug.cgi?id=146411
+
+        Reviewed by Darin Adler.
+
+        Current tests cover the case.
+
+        * bindings/js/ReadableJSStream.cpp:
+        (WebCore::ReadableJSStream::retrieveChunkSize): Check for negative size then running the _javascript_ function.
+
 2015-06-30  Youenn Fablet  <[email protected]>
 
         [Streams API] Remove ReadableStream.getReader() custom binding

Modified: trunk/Source/WebCore/bindings/js/ReadableJSStream.cpp (186111 => 186112)


--- trunk/Source/WebCore/bindings/js/ReadableJSStream.cpp	2015-06-30 07:50:12 UTC (rev 186111)
+++ trunk/Source/WebCore/bindings/js/ReadableJSStream.cpp	2015-06-30 09:27:49 UTC (rev 186112)
@@ -379,7 +379,7 @@
     if (state.hadException())
         return 0;
 
-    if (!std::isfinite(size)) {
+    if (!std::isfinite(size) || size < 0) {
         throwVMError(&state, createRangeError(&state, ASCIILiteral("Incorrect double value")));
         return 0;
     }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to