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;
}