Diff
Modified: trunk/LayoutTests/ChangeLog (188579 => 188580)
--- trunk/LayoutTests/ChangeLog 2015-08-18 06:33:51 UTC (rev 188579)
+++ trunk/LayoutTests/ChangeLog 2015-08-18 08:25:22 UTC (rev 188580)
@@ -1,3 +1,17 @@
+2015-08-18 Xabier Rodriguez Calvar <calva...@igalia.com>
+
+ [Streams API] Update implementation with the latest spec
+ https://bugs.webkit.org/show_bug.cgi?id=147978
+
+ Reviewed by Darin Adler.
+
+ Changed tests about the order of the read and closed promise resolution.
+
+ * streams/readable-stream-reader-read.html:
+ * streams/reference-implementation/readable-stream-tee.html:
+ * streams/reference-implementation/readable-stream-templated.html:
+ * streams/reference-implementation/readable-stream.html:
+
2015-08-17 Commit Queue <commit-qu...@webkit.org>
Unreviewed, rolling out r188539, r188544, r188552, and
Modified: trunk/LayoutTests/streams/readable-stream-reader-read.html (188579 => 188580)
--- trunk/LayoutTests/streams/readable-stream-reader-read.html 2015-08-18 06:33:51 UTC (rev 188579)
+++ trunk/LayoutTests/streams/readable-stream-reader-read.html 2015-08-18 08:25:22 UTC (rev 188580)
@@ -15,18 +15,15 @@
reader.read().then(test1.step_func(function(result) {
assert_object_equals(result, { value: undefined, done: true }, 'read() should fulfill with close');
- assert_equals(counter, 1);
- counter++;
+ assert_equals(++counter, 1);
}));
reader.read().then(test1.step_func(function(result) {
assert_object_equals(result, { value: undefined, done: true }, 'read() should fulfill with close');
- assert_equals(counter, 2);
- counter++;
- test1.done();
+ assert_equals(++counter, 2);
}));
reader.closed.then(test1.step_func(function() {
- assert_equals(counter, 0);
- counter++;
+ assert_equals(++counter, 3);
+ test1.done();
}));
controller.close();
@@ -118,23 +115,20 @@
assert_unreached('read() should reject on an errored stream');
}), test4.step_func(function(err) {
assert_equals(myError, err);
- assert_equals(counter, 1);
- counter++;
+ assert_equals(++counter, 1);
}));
reader.read().then(test4.step_func(function() {
assert_unreached('read() should reject on an errored stream');
}), test4.step_func(function(err) {
assert_equals(myError, err);
- assert_equals(counter, 2);
- counter++;
- test4.done();
+ assert_equals(++counter, 2);
}));
reader.closed.then(test4.step_func(function() {
assert_unreached('read() should reject on an errored stream');
}), test4.step_func(function(err) {
assert_equals(myError, err);
- assert_equals(counter, 0);
- counter++;
+ assert_equals(++counter, 3);
+ test4.done();
}));
var myError = { potato: 'mashed' };
Modified: trunk/LayoutTests/streams/reference-implementation/readable-stream-tee.html (188579 => 188580)
--- trunk/LayoutTests/streams/reference-implementation/readable-stream-tee.html 2015-08-18 06:33:51 UTC (rev 188579)
+++ trunk/LayoutTests/streams/reference-implementation/readable-stream-tee.html 2015-08-18 08:25:22 UTC (rev 188580)
@@ -16,7 +16,6 @@
var test1 = async_test('ReadableStream teeing: should be able to read one branch to the end without affecting the other');
test1.step(function() {
- var closedCalled = false;
var readCalls = 0;
const rs = new ReadableStream({
start: function(c) {
@@ -33,7 +32,8 @@
var reader2 = branch2.getReader();
reader1.closed.then(test1.step_func(function() {
- closedCalled = true;
+ assert_equals(readCalls, 4);
+ test1.done();
})).catch(test1.step_func(function(e) { assert_unreached(e); }));
reader2.closed.then(test1.step_func(function() { assert_unreached('branch2 should not be closed'); }));
@@ -47,9 +47,7 @@
}));
reader1.read().then(test1.step_func(function(r) {
assert_object_equals(r, { value: undefined, done: true }, 'third read() from branch1 should be done');
- assert_true(closedCalled);
- assert_equals(++readCalls, 4);
- test1.done();
+ ++readCalls;
}));
reader2.read().then(test1.step_func(function(r) {
Modified: trunk/LayoutTests/streams/reference-implementation/readable-stream-templated.html (188579 => 188580)
--- trunk/LayoutTests/streams/reference-implementation/readable-stream-templated.html 2015-08-18 06:33:51 UTC (rev 188579)
+++ trunk/LayoutTests/streams/reference-implementation/readable-stream-templated.html 2015-08-18 08:25:22 UTC (rev 188580)
@@ -81,12 +81,13 @@
reader.closed.catch(test1.step_func(function(e) {
assert_equals(e, error, 'reader.closed should reject with the error');
- ++promisesCount;
+ if (++promisesCount === 2)
+ test1.done();
}));
reader.read().catch(test1.step_func(function(e) {
assert_equals(e, error, 'reader.read() should reject with the error');
- assert_equals(++promisesCount, 2);
- test1.done();
+ if (++promisesCount === 2)
+ test1.done();
}));
});
Modified: trunk/LayoutTests/streams/reference-implementation/readable-stream.html (188579 => 188580)
--- trunk/LayoutTests/streams/reference-implementation/readable-stream.html 2015-08-18 06:33:51 UTC (rev 188579)
+++ trunk/LayoutTests/streams/reference-implementation/readable-stream.html 2015-08-18 08:25:22 UTC (rev 188580)
@@ -240,15 +240,15 @@
reader.closed.catch(test5.step_func(function(e) {
closed = true;
- assert_false(read);
+ assert_true(read);
assert_equals(e, error, 'closed should reject with the thrown error');
+ test5.done();
}));
reader.read().catch(test5.step_func(function(e) {
read = true;
- assert_true(closed);
+ assert_false(closed);
assert_equals(e, error, 'read() should reject with the thrown error');
- test5.done();
}));
});
Modified: trunk/Source/WebCore/ChangeLog (188579 => 188580)
--- trunk/Source/WebCore/ChangeLog 2015-08-18 06:33:51 UTC (rev 188579)
+++ trunk/Source/WebCore/ChangeLog 2015-08-18 08:25:22 UTC (rev 188580)
@@ -1,3 +1,20 @@
+2015-08-18 Xabier Rodriguez Calvar <calva...@igalia.com>
+
+ [Streams API] Update implementation with the latest spec
+ https://bugs.webkit.org/show_bug.cgi?id=147978
+
+ Reviewed by Darin Adler.
+
+ Changed the way the read and closed promises are resolved and the stream is released when an even closes or
+ errors the stream.
+
+ Current tests suffice after changing the order of the promise resolution according to the new spec.
+
+ * Modules/streams/ReadableStream.cpp:
+ (WebCore::ReadableStream::releaseReader): Changed how the promises are resolved.
+ (WebCore::ReadableStream::changeStateToErrored): Changed how the promises are resolved and manually releasing
+ the stream instead of calling releaseReader according to the spec.
+
2015-08-17 Zalan Bujtas <za...@apple.com>
Outline with auto style leaves bits behind when the the box is moved.
Modified: trunk/Source/WebCore/Modules/streams/ReadableStream.cpp (188579 => 188580)
--- trunk/Source/WebCore/Modules/streams/ReadableStream.cpp 2015-08-18 06:33:51 UTC (rev 188579)
+++ trunk/Source/WebCore/Modules/streams/ReadableStream.cpp 2015-08-18 08:25:22 UTC (rev 188580)
@@ -90,15 +90,14 @@
void ReadableStream::releaseReader()
{
- if (m_closedPromise)
- m_closedPromise.value().resolve(nullptr);
-
for (auto& request : m_readRequests)
request.resolveEnd();
+ if (m_reader)
+ m_releasedReaders.append(WTF::move(m_reader));
+ if (m_closedPromise)
+ m_closedPromise.value().resolve(nullptr);
clearCallbacks();
- if (m_reader)
- m_releasedReaders.append(WTF::move(m_reader));
}
void ReadableStream::changeStateToErrored()
@@ -107,18 +106,20 @@
return;
clearValues();
+
m_state = State::Errored;
+ if (!m_reader)
+ return;
+
JSC::JSValue error = this->error();
- if (m_closedPromise)
- m_closedPromise.value().reject(error);
-
for (auto& request : m_readRequests)
request.reject(error);
+ m_releasedReaders.append(WTF::move(m_reader));
+ if (m_closedPromise)
+ m_closedPromise.value().reject(error);
clearCallbacks();
- if (m_reader)
- releaseReader();
}
void ReadableStream::start()