Shannon Booth
49689e5d8e
LibWeb: Implement size attribute of CountQueuingStrategy
...
Co-authored-by: Matthew Olsson <mattco@serenityos.org>
2023-06-23 13:27:29 +02:00
Shannon Booth
4f217947b3
LibWeb: Implement QueuingStrategy for Web::Streams::ReadableStream
2023-06-23 13:27:29 +02:00
Shannon Booth
9cb4bf0683
LibWeb: Implement QueuingStrategy for Web::Streams::WritableStream
2023-06-22 06:58:23 +02:00
Shannon Booth
33f6e5d516
LibWeb: Implement Streams AO ExtractSizeAlgorithm(strategy)
2023-06-22 06:58:23 +02:00
Shannon Booth
060c130c82
LibWeb: Implement SetUpReadableByteStreamControllerFromUnderlyingSource
2023-06-22 06:58:23 +02:00
Shannon Booth
9ea597016a
LibWeb: Implement Streams AO ExtractHighWaterMark(strategy, defaultHWM)
2023-06-22 06:58:23 +02:00
Shannon Booth
e1d71454eb
LibWeb: Correct parameter name in Web::Streams::ReadableStream::cancel
...
This aligns with the name given in the implementation file and is a
better description of what is being passed in.
2023-06-22 06:58:23 +02:00
Shannon Booth
314eeeb9b2
LibWeb: Const qualify Web::Streams::ReadableStream::locked
2023-06-22 06:58:23 +02:00
Shannon Booth
42c102ecb6
LibWeb: Add IDL definition for Web::Streams::QueuingStrategy
2023-06-22 06:58:23 +02:00
Shannon Booth
f86c3ab148
LibWeb: Implement ByteLengthQueuingStrategy highWaterMark property
2023-06-21 12:27:04 +02:00
Shannon Booth
c9941ba95b
LibWeb: Implement CountQueuingStrategy highWaterMark property
2023-06-21 12:27:04 +02:00
Shannon Booth
0d714ad165
LibWeb: Add IDL definition for Web::Streams::QueuingStrategyInit
...
This is used in the constructor for ByteLengthQueuingStrategy and
CountQueuingStrategy.
2023-06-21 12:27:04 +02:00
Shannon Booth
b0bc8f2282
LibWeb: Add ReadableStreamDefaultReader::read_all_bytes_deprecated
...
This is not to the specification, but as the FIXME comment for the
function states, we need it to be able to properly interface with the
FileAPI spcification, which seems to have not been updated to the non
promise based API.
2023-06-18 08:34:02 +02:00
Shannon Booth
3df10d7fb6
LibWeb: Add Streams::ReadableStreamDefaultReader::read_all_bytes
2023-06-18 08:34:02 +02:00
Shannon Booth
46f9a49bd8
LibWeb: Add Streams::ReadableStreamDefaultReader read-loop reader
...
This algorithm is used by ReadableStreamDefaultReader to read all bytes
from a given stream. Currently the algorithm used is somewhat naive as
it is recursive, but given the initial use of this reader, it should not
be a problem.
2023-06-18 08:34:02 +02:00
Shannon Booth
94883866f5
LibWeb: Implement Web::Streams::readable_stream_enqueue AO
...
This AO will be used in the Web::FileAPI::Blob::get_stream()
implementation to enqueue all data in the blob to the stream.
There are still plenty of cases to handle, but this appears to be enough
for the basic case of reading all chunks from a readable stream until it
is done.
2023-06-14 06:27:04 +02:00
Shannon Booth
b7b5b5763e
LibWeb: Add support to set up stream with byte reading support
...
This is used by Blobs to set up their stream in their get stream
algorithm.
2023-06-14 06:27:04 +02:00
Matthew Olsson
22e97332fc
LibWeb: Throw the correct object when enqueuing to a readable stream
2023-05-27 13:55:14 +02:00
Matthew Olsson
4c8015c1f6
LibWeb: Do not clear stream algorithms (and add corresponding FIXMEs)
2023-05-27 13:55:14 +02:00
Matthew Olsson
dd65d60069
LibWeb: Use doubles for Stream's high_water_mark and queue_total_size
...
This matches the IDL types
2023-05-27 13:55:14 +02:00
Matthew Olsson
bdfc14f24d
LibWeb: Accept explicit "type: undefined" in UnderlyingSource
2023-05-27 13:55:14 +02:00
Matthew Olsson
5d48ade508
LibWeb: Use TRY() to convert invoke_callback result to an ExceptionOr
...
Otherwise, the JS::Completion is always interpretted as an error by
ExceptionOr.
2023-05-27 13:55:14 +02:00
Matthew Olsson
e5ff777b48
LibWeb: Capture stack values by copy in async lambdas in Stream AOs
2023-05-27 13:55:14 +02:00
Matthew Olsson
42fb847cc8
LibWeb: Use u64 for ReadableByteStream offsets instead of u32
...
These are specified in the IDL as "unsigned long long", which translates
to u64.
2023-05-27 13:55:14 +02:00
Matthew Olsson
ed06429d33
LibWeb: Implement ReadableByteStreamController.error()
2023-04-27 07:57:53 +02:00
Matthew Olsson
c9be755367
LibWeb: Implement ReadableByteStreamController.close()
2023-04-27 07:57:53 +02:00
Matthew Olsson
ef3810d03d
LibWeb: Add missing AOs for ReadableByteStreamController.[[PullSteps]]
2023-04-27 07:57:53 +02:00
Matthew Olsson
b57b3c54cc
LibWeb: Add ReadableStreamBYOBReader to ReadableStreamReader type
2023-04-27 07:57:53 +02:00
Matthew Olsson
e8ad571082
LibWeb: Add ReadableStreamBYOBReader interface
2023-04-27 07:57:53 +02:00
Matthew Olsson
2b269d4a49
LibWeb: Fix a blatant nullptr dereference in ReadableStreamGenericReader
2023-04-27 07:57:53 +02:00
Matthew Olsson
d824d07784
LibWeb: Fix inverted condition in WritableStream's constructor
2023-04-17 10:27:40 +02:00
Matthew Olsson
bb9d51fd84
LibWeb: Make StartAlgorithm return a Value instead of a Promise
2023-04-17 10:27:40 +02:00
Matthew Olsson
bad541a0d4
LibWeb: Remove outdated FIXMEs around WebIDL::invoke_callback usages
2023-04-17 10:27:40 +02:00
Matthew Olsson
c40109628d
LibWeb: Properly reject abrupt completion in clean_up_on_return
2023-04-17 10:27:40 +02:00
Timothy Flynn
781287c1e3
LibWeb: Do not dereference empty Optional in ReadableStream::visit_edges
...
There are quite a few steps between a ReadableStream being created and
its controller being set. If GC occurs between those points, we will
have an empty Optional in ReadableStream::visit_edges. Seen on YouTube.
2023-04-14 18:55:59 +02:00
Linus Groh
0abdffc33d
LibWeb/Streams: Rename one instance of 'e' to 'exception'
...
This is what we call it everywhere else.
2023-04-14 16:35:17 +02:00
Linus Groh
6b35cca65b
LibWeb/Streams: Add FIXMEs to incorrect invoke_callback() invocations
2023-04-14 16:35:17 +02:00
Linus Groh
1c165b67ef
LibWeb/Streams: Use MUST_OR_THROW_OOM() when creating JS exceptions
...
This cannot throw unless we OOM.
2023-04-14 16:35:17 +02:00
Linus Groh
d192f44523
LibWeb/Streams: Make most algorithms return a NonnullGCPtr
...
Only the 'start algorithm' ever returns undefined (as a null GCPtr), so
let's type the others more strictly.
2023-04-14 16:35:17 +02:00
Matthew Olsson
db1be40b13
LibWeb: Propogate OOM errors from readable_stream_reader_generic_cancel
2023-04-14 13:03:34 +02:00
Matthew Olsson
f9d6a161e8
LibWeb: Add ByteStreamController to ReadableStreamController type
2023-04-14 13:03:34 +02:00
Matthew Olsson
bd7809cc18
LibWeb: Mostly implement ReadableByteStreamController.[[ReleaseSteps]]
2023-04-14 13:03:34 +02:00
Matthew Olsson
51abecc8bc
LibWeb: Mostly implement ReadableByteStreamController.[[PullSteps]]
2023-04-14 13:03:34 +02:00
Matthew Olsson
c97f6b7701
LibWeb: Implement ReadableByteStreamController.[[CancelSteps]]
2023-04-14 13:03:34 +02:00
Matthew Olsson
8274906301
LibWeb: Expose ReadableStream::m_state and use in AOs
...
This allows us to be a bit closer to the spec phrasing and matches
what we do with WritableStream
2023-04-14 13:03:34 +02:00
Linus Groh
742f6f7e26
LibWeb/Streams: Fix inconsistent uses of realm() and vm()
...
This is not documented yet, but the preferred style is getting both
upfront instead of inlining various kinds of calls in places that use
the realm and vm.
2023-04-13 09:51:48 +02:00
Matthew Olsson
819b6332d1
LibWeb: Add ReadableStreamByteController interface
2023-04-12 01:47:48 +02:00
Matthew Olsson
c7aa4fa166
LibWeb: Add ReadableStreamBYOBRequest interface
2023-04-12 01:47:48 +02:00
Matthew Olsson
0a220a19da
LibWeb: Set up the DefaultController when constructing a WritableStream
2023-04-10 00:45:03 +02:00
Matthew Olsson
58f3009faa
LibWeb: Implement WritableStreamDefaultWriter.write()
2023-04-10 00:45:03 +02:00