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-20161007101835.patch (text/plain), 5.91 KB, created by
Romain Bellessort
on 2016-10-07 01:21:51 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Romain Bellessort
Created:
2016-10-07 01:21:51 PDT
Size:
5.91 KB
patch
obsolete
>Subversion Revision: 206903 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 392613e6cc080f805939231460868d6eb6132a35..55a426d6ad109c47adfb283ff0b750ea0607d8b8 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,24 @@ >+2016-10-07 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 Darin Adler. >+ >+ 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-07 Youenn Fablet <youenn@apple.com> > > Refactor CachedResourceClient::notifyFinished >diff --git a/Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js b/Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js >index 0ae0d4c55655410a55e4b06784047c40c089e272..d5a51c3a05b6d8502405eeed72ee96603fd74335 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) >- return; >+ if (!this.@ownerReadableStream) >+ return; > > if (this.@readRequests.length) > @throwTypeError("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 61fdcba57d87108a3a654f27df2a263100b19e4d..29c3dd40c29364b36624a7a83203404feafdb54e 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)) > @throwTypeError("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