Changeset 185697 in webkit
- Timestamp:
- Jun 18, 2015, 1:58:18 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 11 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/streams/reference-implementation/readable-stream-expected.txt (modified) (1 diff)
-
LayoutTests/streams/reference-implementation/readable-stream-reader-expected.txt (modified) (1 diff)
-
LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt (modified) (2 diffs)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/Modules/streams/ReadableStream.cpp (modified) (3 diffs)
-
Source/WebCore/Modules/streams/ReadableStream.h (modified) (1 diff)
-
Source/WebCore/Modules/streams/ReadableStreamReader.cpp (modified) (2 diffs)
-
Source/WebCore/Modules/streams/ReadableStreamReader.h (modified) (2 diffs)
-
Source/WebCore/Modules/streams/ReadableStreamReader.idl (modified) (1 diff)
-
Source/WebCore/bindings/js/JSReadableStreamReaderCustom.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r185695 r185697 1 2015-06-18 Youenn Fablet <youenn.fablet@crf.canon.fr> and Xabier Rodriguez Calvar <calvaris@igalia.com> 2 3 [Streams API] Implement ReadableStreamReader.releaseLock 4 https://bugs.webkit.org/show_bug.cgi?id=145299 5 6 Reviewed by Darin Adler. 7 8 * streams/reference-implementation/readable-stream-expected.txt: Rebasing expectations. 9 * streams/reference-implementation/readable-stream-reader-expected.txt: Ditto. 10 * streams/reference-implementation/readable-stream-templated-expected.txt: Ditto. 11 1 12 2015-06-18 Youenn Fablet <youenn.fablet@crf.canon.fr> and Xabier Rodriguez Calvar <calvaris@igalia.com> 2 13 -
trunk/LayoutTests/streams/reference-implementation/readable-stream-expected.txt
r185695 r185697 26 26 PASS ReadableStream: enqueue should throw when the stream is closed 27 27 PASS ReadableStream: enqueue should throw the stored error when the stream is errored 28 FAIL ReadableStream: should call underlying source methods as methods releaseLockis not implemented28 FAIL ReadableStream: should call underlying source methods as methods cancel is not implemented 29 29 FAIL ReadableStream strategies: the default strategy should give desiredSize of 1 to start, decreasing by 1 per enqueue assert_equals: expected (number) 1 but got (undefined) undefined 30 30 FAIL ReadableStream strategies: the default strategy should continue giving desiredSize of 1 if the chunks are read immediately assert_equals: desiredSize should start at 1 expected (number) 1 but got (undefined) undefined -
trunk/LayoutTests/streams/reference-implementation/readable-stream-reader-expected.txt
r185586 r185697 13 13 FAIL cancel() on a reader releases the reader before calling through cancel is not implemented 14 14 PASS closed should be fulfilled after stream is closed (.closed access before acquiring) 15 FAIL closed should be fulfilled after reader releases its lock (multiple stream locks) releaseLock is not implemented 16 FAIL Multiple readers can access the stream in sequence releaseLock is not implemented 17 FAIL Cannot use an already-released reader to unlock a stream again releaseLock is not implemented 18 FAIL cancel() on a released reader is a no-op and does not pass through releaseLockis not implemented15 PASS closed should be fulfilled after reader releases its lock (multiple stream locks) 16 PASS Multiple readers can access the stream in sequence 17 PASS Cannot use an already-released reader to unlock a stream again 18 FAIL cancel() on a released reader is a no-op and does not pass through cancel is not implemented 19 19 PASS Getting a second reader after erroring the stream should succeed 20 20 PASS Garbage-collecting a ReadableStreamReader should not unlock its stream -
trunk/LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt
r185641 r185697 9 9 PASS read() should return distinct promises each time 10 10 PASS getReader() again on the stream should fail 11 FAIL releasing the lock with pending read requests should throw but the read requests should stay pending releaseLock is not implemented12 FAIL releasing the lock should cause further read() calls to resolve as if the stream is closed releaseLock is not implemented 13 FAIL releasing the lock should cause closed to fulfill releaseLock is not implemented 14 FAIL releasing the lock should cause locked to become false releaseLock is not implemented 11 FAIL releasing the lock with pending read requests should throw but the read requests should stay pending Type error 12 PASS releasing the lock should cause further read() calls to resolve as if the stream is closed 13 PASS releasing the lock should cause closed to fulfill 14 PASS releasing the lock should cause locked to become false 15 15 FAIL canceling via the reader should cause the reader to act closed cancel is not implemented 16 16 FAIL canceling via the stream should fail cancel is not implemented … … 55 55 PASS third read, with waiting, should give { value: undefined, done: true } 56 56 PASS draining the stream via read() should cause the reader closed promise to fulfill and locked to be false 57 FAIL releasing the lock after the stream is closed should do nothing releaseLock is not implemented 58 FAIL releasing the lock should cause read() to act as if the stream is closed releaseLock is not implemented 59 FAIL reader's closed property always returns the same promise releaseLock is not implemented 57 PASS releasing the lock after the stream is closed should do nothing 58 PASS releasing the lock should cause read() to act as if the stream is closed 59 PASS reader's closed property always returns the same promise 60 60 -
trunk/Source/WebCore/ChangeLog
r185694 r185697 1 2015-06-18 Youenn Fablet <youenn.fablet@crf.canon.fr> and Xabier Rodriguez Calvar <calvaris@igalia.com> 2 3 [Streams API] Implement ReadableStreamReader.releaseLock 4 https://bugs.webkit.org/show_bug.cgi?id=145299 5 6 Reviewed by Darin Adler. 7 8 Covered by rebased tests. 9 10 * Modules/streams/ReadableStream.cpp: 11 (WebCore::ReadableStream::close): Moving some close code to newly added releaseReader. 12 (WebCore::ReadableStream::releaseReader): Implements reader release and callbacks finalization. 13 (WebCore::ReadableStream::changeStateToErrored): Calls releaseReader. 14 * Modules/streams/ReadableStream.h: 15 (WebCore::ReadableStream::hasReadPendingRequests): Added to enable reader.releaseLock throwing if read requests are pending. 16 * Modules/streams/ReadableStreamReader.cpp: 17 (WebCore::ReadableStreamReader::releaseLock): Implementation of releaseLock 18 * Modules/streams/ReadableStreamReader.h: 19 * Modules/streams/ReadableStreamReader.idl: 20 (WebCore::releaseLock): Deleted. 21 1 22 2015-06-18 Youenn Fablet <youenn.fablet@crf.canon.fr> 2 23 -
trunk/Source/WebCore/Modules/streams/ReadableStream.cpp
r185648 r185697 80 80 { 81 81 m_state = State::Closed; 82 82 releaseReader(); 83 } 84 85 void ReadableStream::releaseReader() 86 { 87 if (m_closedSuccessCallback) 88 m_closedSuccessCallback(); 89 90 for (auto& request : m_readRequests) 91 request.endCallback(); 92 93 clearCallbacks(); 83 94 if (m_reader) 84 95 m_releasedReaders.append(WTF::move(m_reader)); 85 86 if (m_closedSuccessCallback)87 m_closedSuccessCallback();88 89 for (auto& request : m_readRequests)90 request.endCallback();91 92 clearCallbacks();93 96 } 94 97 … … 98 101 return; 99 102 m_state = State::Errored; 100 101 if (m_reader)102 m_releasedReaders.append(WTF::move(m_reader));103 103 104 104 JSC::JSValue error = this->error(); … … 110 110 111 111 clearCallbacks(); 112 if (m_reader) 113 releaseReader(); 112 114 } 113 115 -
trunk/Source/WebCore/Modules/streams/ReadableStream.h
r185648 r185697 68 68 bool locked() const { return !!m_reader; } 69 69 70 void releaseReader(); 71 bool hasReadPendingRequests() { return !m_readRequests.isEmpty(); } 72 70 73 bool isErrored() const { return m_state == State::Errored; } 71 74 bool isReadable() const { return m_state == State::Readable; } -
trunk/Source/WebCore/Modules/streams/ReadableStreamReader.cpp
r185406 r185697 31 31 #include "ReadableStreamReader.h" 32 32 33 #include "ExceptionCode.h" 33 34 #include <runtime/JSCJSValueInlines.h> 34 35 … … 55 56 } 56 57 58 void ReadableStreamReader::releaseLock(ExceptionCode& ec) 59 { 60 if (m_stream.reader() != this) 61 return; 62 if (m_stream.hasReadPendingRequests()) { 63 ec = TypeError; 64 return; 65 } 66 m_stream.releaseReader(); 67 } 68 57 69 } 58 70 -
trunk/Source/WebCore/Modules/streams/ReadableStreamReader.h
r185114 r185697 42 42 namespace WebCore { 43 43 44 typedef int ExceptionCode; 45 44 46 // ReadableStreamReader implements access to ReadableStream from JavaScript. 45 47 // It basically allows access to the ReadableStream iff the ReadableStreamReader instance is the active reader … … 54 56 void closed(ReadableStream::ClosedSuccessCallback&&, ReadableStream::FailureCallback&&); 55 57 void read(ReadableStream::ReadSuccessCallback&&, ReadableStream::ReadEndCallback&&, ReadableStream::FailureCallback&&); 58 void releaseLock(ExceptionCode&); 56 59 57 60 void ref() { m_stream.ref(); } -
trunk/Source/WebCore/Modules/streams/ReadableStreamReader.idl
r184955 r185697 37 37 [Custom, RaisesException] Object read(); 38 38 [Custom, RaisesException] Promise cancel(DOMString reason); 39 [ Custom,RaisesException] void releaseLock();39 [RaisesException] void releaseLock(); 40 40 41 41 [CustomGetter] readonly attribute Promise closed; -
trunk/Source/WebCore/bindings/js/JSReadableStreamReaderCustom.cpp
r185641 r185697 93 93 } 94 94 95 JSValue JSReadableStreamReader::releaseLock(ExecState* exec)96 {97 JSValue error = createError(exec, ASCIILiteral("releaseLock is not implemented"));98 return exec->vm().throwException(exec, error);99 }100 101 95 EncodedJSValue JSC_HOST_CALL constructJSReadableStreamReader(ExecState* exec) 102 96 {
Note:
See TracChangeset
for help on using the changeset viewer.