Commit graph

103 commits

Author SHA1 Message Date
Shannon Booth
eaf9a56c10 LibWeb: Actually clear stream controller algorithms when needed
Now that these algorithms are a HeapFunction as opposed to SafeFunction,
the problem mentioned in the FIXME is no longer applicable as these
functions are GC-allocated like everything else.
2024-01-27 21:40:25 -05:00
Shannon Booth
5f484d200a LibWeb: Port Stream algorithms from JS::SafeFunction to JS::HeapFunction 2024-01-27 21:40:25 -05:00
Timothy Flynn
c8c3866101 LibWeb: Implement the CreateReadableByteStream AO 2024-01-27 16:01:56 +01:00
Timothy Flynn
9258d7b98a LibJS+LibWeb: Implement resizable ArrayBuffer support for TypedArray
This is (part of) a normative change in the ECMA-262 spec. See:
https://github.com/tc39/ecma262/commit/a9ae96e
2023-12-26 11:16:10 +01:00
Shannon Booth
08be5deb3f LibWeb: Implement AO ReadableByteStreamControllerRespond 2023-12-03 20:26:14 +01:00
Shannon Booth
2ab933e534 LibWeb: Implement AO ReadableByteStreamControllerRespondInternal 2023-12-03 20:26:14 +01:00
Shannon Booth
426cbd8ed3 LibWeb: Implement AO ReadableByteStreamControllerRespondInClosedState 2023-12-03 20:26:14 +01:00
Shannon Booth
be2195cb8c LibWeb: Implement AO ReadableByteStreamControllerRespondInReadableState 2023-12-03 20:26:14 +01:00
Shannon Booth
0245be70d8 LibWeb: Implement Streams AO CanTransferArrayBuffer 2023-12-03 20:26:14 +01:00
Shannon Booth
9d0700e770 LibWeb: Fix IDL getter for ReadableByteStreamController byobRequest
We were previously only returning the controllers current
[[byobRequest]] instead of taking into account pending pull intos.

Rename the getter function which would return the controllers
[[byobRequest]] slot to `raw_byob_request` to differentiate it from
the IDL getter.

This also leaves a FIXME for a spec step which we are also not currently
implementing correctly.
2023-12-03 20:26:14 +01:00
Shannon Booth
b2a0a41503 LibWeb: Use TypedArrayBase::kind for pull into constructor lookup 2023-12-03 20:26:14 +01:00
Shannon Booth
673329e1bd LibWeb: Use ArrayBufferView for ReadableStreamBYOBReader
Which means that we now have support for DataViews.

Using the ArrayBufferView class also seems to make this read a whole
bunch nicer as well.
2023-11-24 08:43:35 +01:00
Shannon Booth
dcb7bb4a92 LibWeb: Support BYOB readers in ReadableByteStreamControllerEnqueue 2023-11-19 18:53:17 +01:00
Shannon Booth
9662872b20 LibWeb: Implement AO ReadableStreamByobReaderRead
We've finally implemented enough of the Streams AOs so that we are close
to actually performing read operations with BYOB readers.
2023-11-19 18:53:17 +01:00
Shannon Booth
3d37cb0753 LibWeb: Partially implement ReadableByteStreamControllerPullInto
This implementation does not handle DataViews at the moment, but should
handle all of the typed arrays.
2023-11-19 18:53:17 +01:00
Shannon Booth
1443715775 LibWeb: Add ReadableBSControllerProcessPullIntoDescriptorsUsingQueue 2023-11-19 18:53:17 +01:00
Shannon Booth
737dc6ce4e LibWeb: Add ReadableByteStreamControllerFillPullIntoDescriptorFromQueue 2023-11-19 18:53:17 +01:00
Shannon Booth
aca63fd947 LibWeb: Implement ReadableByteStreamControllerCommitPullIntoDescriptor 2023-11-19 18:53:17 +01:00
Shannon Booth
cdcc1ebbba LibWeb: Implement ReadableByteStreamControllerFillHeadPullIntoDescriptor 2023-11-19 18:53:17 +01:00
Shannon Booth
26e393fbbc LibWeb: Implement ReadableByteStreamControllerConvertPullIntoDescriptor 2023-11-19 18:53:17 +01:00
Shannon Booth
25f8b80eab LibWeb: Use move on ByteBuffer in TransferArrayBuffer 2023-11-19 18:53:17 +01:00
Shannon Booth
446a78f30e LibWeb: Implement Streams AO ReadableStreamAddReadIntoRequest
This is effectively identical to ReadableStreamAddReadRequest besides
from the fact that it takes a ReadIntoRequest instead of a ReadRequest,
and is instead intended to be used for BYOB readers.
2023-11-19 18:53:17 +01:00
Shannon Booth
f27e76b0b7 LibWeb: Make ReadableStreamAddReadRequest take a NonnullGCPtr
Make it more obvious in the function signature that this function will
be taking a GC ref to a ReadRequest by appending it to the
ReadableStreams pending read requests.
2023-11-19 18:53:17 +01:00
Shannon Booth
5ef41dca53 LibWeb: Implement Streams AO ReadableStreamFulfillReadIntoRequest 2023-11-19 18:53:17 +01:00
Shannon Booth
acda17ccc4 LibWeb/Streams: Handle BYOB reader in ReadableStreamError 2023-09-24 20:10:50 -06:00
Timothy Flynn
54d1f4e234 LibJS: Stop propagating small OOM errors from the Error object 2023-09-09 13:03:25 -04:00
Shannon Booth
b06d80e6fd LibWeb: Implement ReadableStreamBYOBReaderRelease Streams AO 2023-08-31 19:28:56 +02:00
Shannon Booth
8ce4f5597c LibWeb: Implement ReadableStreamBYOBReaderErrorReadIntoRequests AO 2023-08-31 19:28:56 +02:00
Shannon Booth
e08072ac2b LibWeb: Explicitly clear read requests for default stream reader
Expecting the list to be cleared from the move() is quite strange and
not particularly clear. Explicitly clear the requests instead.
2023-08-31 19:28:56 +02:00
Andreas Kling
72c9f56c66 LibJS: Make Heap::allocate<T>() infallible
Stop worrying about tiny OOMs. Work towards #20449.

While going through these, I also changed the function signature in many
places where returning ThrowCompletionOr<T> is no longer necessary.
2023-08-13 15:38:42 +02:00
Andreas Kling
9c3e9e8981 LibWeb/Streams: Make ReadRequest GC-allocated
This allows it to keep its edges alive. Fixes an intermittent crash seen
by UBSAN on CI. :^)
2023-08-09 19:16:07 +02:00
Andreas Kling
97ebfd9f0f LibJS: Make Value::to_string_without_side_effects() infallible
Work towards #20449.
2023-08-09 17:09:16 +02:00
Andreas Kling
c084269e5f LibJS: Make PrimitiveString::utf8_string() infallible
Work towards #20449.
2023-08-09 17:09:16 +02:00
Daniel Bertalan
9feb1ce39f LibJS+LibWeb: Apply the Rule of Zero to {Nonnull,}GCPtr<T>
The compiler-generated copy constructor and copy assignment operator
already do the right thing (which is to simply copy the underlying
pointer).

The [Itanium C++ ABI][1] treats any class with non-trivial copy/move
constructors and destructors as non-trivial for the purposes of calls --
even if they are functionally identical to the compiler-generated ones.
If a class is non-trivial, it cannot be passed or returned in registers,
only via an invisible reference, which is worse for codegen. This commit
makes `{Nonnull,}GCPtr` trivial.

As the compiler can be sure that capturing a `GCPtr` by value has no
side effects, a few `-Wunused-lambda-capture` warnings had to be
addressed in LibWeb.

GCC seems to have a bug that prevents `ExceptionOr<Variant<GCPtr<T>>>`
from being implicitly constructed from `GCPtr<T>` after this change. A
non-invasive workaround is to explicitly construct the inner Variant
type.

[1]: https://itanium-cxx-abi.github.io/cxx-abi/abi.html#non-trivial
2023-08-07 22:20:03 -04:00
Shannon Booth
2b46e6f664 Everywhere: Update copyrights with my new serenityos.org e-mail :^) 2023-07-15 16:21:29 +02:00
Kenneth Myhra
7117cb7a35 LibWeb: Add set_up_transform_stream_default_controller_from_transformer 2023-07-15 11:59:39 +02:00
Kenneth Myhra
f7c532d093 LibWeb: Add AO set_up_transform_stream_default_controller() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
86455bbb74 LibWeb: Add AO initialize_transform_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
a52f9970bc LibWeb: Add AO create_readable_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
8e6b386ff7 LibWeb: Add AO initialize_readable_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
f91c150cfc LibWeb: Add AO transform_stream_default_source_pull_algorithm() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
894f1e9d62 LibWeb: Add AO create_writable_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
7d8f24c227 LibWeb: Add AO initialize_writable_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
641b9edd89 LibWeb: Add AO transform_stream_default_sink_close_algorithm() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
48921add86 LibWeb: Add AO transform_stream_default_sink_abort_algorithm() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
18aa588968 LibWeb: Add AO transform_stream_default_sink_write_algorithm() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
11c0600729 LibWeb: Add AO transform_stream_default_controller_perform_transform() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
e1740938fc LibWeb: Add AO transform_stream_default_controller_terminate() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
e028918a64 LibWeb: Add AO transform_stream_default_controller_enqueue() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
d2236e5ca5 LibWeb: Add AO readable_stream_default_controller_has_backpressure() 2023-07-15 11:59:39 +02:00