mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-27 21:21:50 +03:00
LibWeb: Properly convert UnderlyingSource's autoAllocateChunkSize to u64
The JS::Value being passed through is not a bigint, and needs to be converted using ConvertToInt, as per: https://webidl.spec.whatwg.org/#es-unsigned-long-long Furthermore, the IDL definition also specifies that this is associated with the [EnforceRange] extended attribute. This makes it actually possible to pass through an autoAllocateChunkSize to the ReadableStream constructor without it throwing a TypeError.
This commit is contained in:
parent
99bf986889
commit
6b88fc2e05
Notes:
sideshowbarker
2024-07-17 00:49:59 +09:00
Author: https://github.com/shannonbooth Commit: https://github.com/SerenityOS/serenity/commit/6b88fc2e05 Pull-request: https://github.com/SerenityOS/serenity/pull/22468
@ -0,0 +1 @@
|
||||
PASS. Made: ReadableStream
|
@ -0,0 +1,10 @@
|
||||
<script src="../include.js"></script>
|
||||
<script>
|
||||
test(() => {
|
||||
let stream = new ReadableStream({
|
||||
type: "bytes",
|
||||
autoAllocateChunkSize: 64
|
||||
});
|
||||
println(`PASS. Made: ${stream.constructor.name}`);
|
||||
});
|
||||
</script>
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2023, Matthew Olsson <mattco@serenityos.org>
|
||||
* Copyright (c) 2023, Shannon Booth <shannon@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
@ -7,7 +8,9 @@
|
||||
#include <LibJS/Runtime/VM.h>
|
||||
#include <LibWeb/Streams/AbstractOperations.h>
|
||||
#include <LibWeb/Streams/UnderlyingSource.h>
|
||||
#include <LibWeb/WebIDL/AbstractOperations.h>
|
||||
#include <LibWeb/WebIDL/CallbackType.h>
|
||||
#include <LibWeb/WebIDL/Types.h>
|
||||
|
||||
namespace Web::Streams {
|
||||
|
||||
@ -35,8 +38,10 @@ JS::ThrowCompletionOr<UnderlyingSource> UnderlyingSource::from_value(JS::VM& vm,
|
||||
return vm.throw_completion<JS::TypeError>(ByteString::formatted("Unknown stream type '{}'", type_value));
|
||||
}
|
||||
|
||||
if (TRY(object.has_property("autoAllocateChunkSize")))
|
||||
underlying_source.auto_allocate_chunk_size = TRY(TRY(object.get("autoAllocateChunkSize")).to_bigint_uint64(vm));
|
||||
if (TRY(object.has_property("autoAllocateChunkSize"))) {
|
||||
auto value = TRY(object.get("autoAllocateChunkSize"));
|
||||
underlying_source.auto_allocate_chunk_size = TRY(WebIDL::convert_to_int<WebIDL::UnsignedLongLong>(vm, value, WebIDL::EnforceRange::Yes));
|
||||
}
|
||||
|
||||
return underlying_source;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user