WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-163003-20161006122614.patch (text/plain), 5.90 KB, created by
Romain Bellessort
on 2016-10-06 03:29:29 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Romain Bellessort
Created:
2016-10-06 03:29:29 PDT
Size:
5.90 KB
patch
obsolete
>Subversion Revision: 206853 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index f7ec3a8b98c78cae78dd45f820e4c4364e52f99b..836461c23e734d1e82091ccc250fe81993af44f8 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,24 @@ >+2016-10-06 Romain Bellessort <romain.bellessort@crf.canon.fr> >+ >+ [Readable Streams API] Implement generic reader functions >+ https://bugs.webkit.org/show_bug.cgi?id=163003 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Implements reader generic functions defined by spec in order to prepare BYOBReader integration. >+ Generic functions factorize some code that is used by both DefaultReader and BYOBReader. >+ >+ No change in behaviour. >+ >+ * Modules/streams/ReadableStreamDefaultReader.js: >+ (cancel): Rely on readableStreamReaderGenericCancel. >+ (releaseLock): Rely on readableStreamReaderGenericRelease. >+ * Modules/streams/ReadableStreamInternals.js: >+ (privateInitializeReadableStreamDefaultReader): Rely on readableStreamReaderGenericInitialize. >+ (readableStreamReaderGenericInitialize): Added. >+ (readableStreamReaderGenericCancel): Added. >+ (readableStreamReaderGenericRelease): Added. >+ > 2016-10-05 Commit Queue <commit-queue@webkit.org> > > Unreviewed, rolling out r206845. >diff --git a/Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js b/Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js >index d5ac1f5f16851727ae65fdca888ca81fd61b9b35..453c1521da5d03be7c3735033877cb9556d2cef9 100644 >--- a/Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js >+++ b/Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js >@@ -35,7 +35,7 @@ function cancel(reason) > if (!this.@ownerReadableStream) > return @Promise.@reject(new @TypeError("cancel() called on a reader owned by no readable stream")); > >- return @readableStreamCancel(this.@ownerReadableStream, reason); >+ return @readableStreamReaderGenericCancel(this, reason); > } > > function read() >@@ -57,20 +57,13 @@ function releaseLock() > if (!@isReadableStreamDefaultReader(this)) > throw @makeThisTypeError("ReadableStreamDefaultReader", "releaseLock"); > >- const stream = this.@ownerReadableStream; >- if (!stream) >+ if (!this.@ownerReadableStream) > return; > > if (this.@readRequests.length) > throw new @TypeError("There are still pending read requests, cannot release the lock"); > >- if (stream.@state === @streamReadable) >- this.@closedPromiseCapability.@reject.@call(@undefined, new @TypeError("releasing lock of reader whose stream is still in readable state")); >- else >- this.@closedPromiseCapability = { @promise: @Promise.@reject(new @TypeError("reader released lock")) }; >- >- stream.@reader = @undefined; >- this.@ownerReadableStream = null; >+ @readableStreamReaderGenericRelease(this); > } > > function closed() >diff --git a/Source/WebCore/Modules/streams/ReadableStreamInternals.js b/Source/WebCore/Modules/streams/ReadableStreamInternals.js >index f68eacd0fdf4a2ba1e28a864709c8bdcab1c9ae5..b78f6a60573d1b26bbdf010c4de41e3c31c41709 100644 >--- a/Source/WebCore/Modules/streams/ReadableStreamInternals.js >+++ b/Source/WebCore/Modules/streams/ReadableStreamInternals.js >@@ -36,23 +36,28 @@ function privateInitializeReadableStreamDefaultReader(stream) > if (@isReadableStreamLocked(stream)) > throw new @TypeError("ReadableStream is locked"); > >+ @readableStreamReaderGenericInitialize(this, stream); > this.@readRequests = []; >- this.@ownerReadableStream = stream; >- stream.@reader = this; >- if (stream.@state === @streamReadable) { >- this.@closedPromiseCapability = @newPromiseCapability(@Promise); >- return this; >- } >- if (stream.@state === @streamClosed) { >- this.@closedPromiseCapability = { @promise: @Promise.@resolve() }; >- return this; >- } >- @assert(stream.@state === @streamErrored); >- this.@closedPromiseCapability = { @promise: @Promise.@reject(stream.@storedError) }; > > return this; > } > >+function readableStreamReaderGenericInitialize(reader, stream) >+{ >+ "use strict"; >+ >+ reader.@ownerReadableStream = stream; >+ stream.@reader = reader; >+ if (stream.@state === @streamReadable) >+ reader.@closedPromiseCapability = @newPromiseCapability(@Promise); >+ else if (stream.@state === @streamClosed) >+ reader.@closedPromiseCapability = { @promise: @Promise.@resolve() }; >+ else { >+ @assert(stream.@state === @streamErrored); >+ reader.@closedPromiseCapability = { @promise: @Promise.@reject(stream.@storedError) }; >+ } >+} >+ > function privateInitializeReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) > { > "use strict"; >@@ -323,6 +328,16 @@ function readableStreamDefaultControllerGetDesiredSize(controller) > return controller.@strategy.highWaterMark - controller.@queue.size; > } > >+ >+function readableStreamReaderGenericCancel(reader, reason) >+{ >+ "use strict"; >+ >+ const stream = reader.@ownerReadableStream; >+ @assert(!!stream); >+ return @readableStreamCancel(stream, reason); >+} >+ > function readableStreamCancel(stream, reason) > { > "use strict"; >@@ -460,3 +475,19 @@ function isReadableStreamDisturbed(stream) > @assert(@isReadableStream(stream)); > return stream.@disturbed; > } >+ >+function readableStreamReaderGenericRelease(reader) >+{ >+ "use strict"; >+ >+ @assert(!!reader.@ownerReadableStream); >+ @assert(reader.@ownerReadableStream.@reader === reader); >+ >+ if (reader.@ownerReadableStream.@state === @streamReadable) >+ reader.@closedPromiseCapability.@reject.@call(@undefined, new @TypeError("releasing lock of reader whose stream is still in readable state")); >+ else >+ reader.@closedPromiseCapability = { @promise: @Promise.@reject(new @TypeError("reader released lock")) }; >+ >+ reader.@ownerReadableStream.@reader = @undefined; >+ reader.@ownerReadableStream = null; >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 163003
:
290808
|
290913