diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp index 627cd472e27..f33a17ff8d1 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp @@ -513,7 +513,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter )~~~"); } else { scoped_generator.append(R"~~~( - Optional> @cpp_name@; + JS::GCPtr<@parameter.type.name@> @cpp_name@; if (!@js_name@@js_suffix@.is_undefined()) { if (!@js_name@@js_suffix@.is_object() || !is<@parameter.type.name@>(@js_name@@js_suffix@.as_object())) return vm.throw_completion(JS::ErrorType::NotAnObjectOfType, "@parameter.type.name@"); diff --git a/Userland/Libraries/LibWeb/DOM/EventTarget.cpp b/Userland/Libraries/LibWeb/DOM/EventTarget.cpp index 6173efd7606..10520ce16ab 100644 --- a/Userland/Libraries/LibWeb/DOM/EventTarget.cpp +++ b/Userland/Libraries/LibWeb/DOM/EventTarget.cpp @@ -135,8 +135,8 @@ static FlattenedAddEventListenerOptions flatten_add_event_listener_options(Varia once = add_event_listener_options.once; // 2. If options["signal"] exists, then set signal to options["signal"]. - if (add_event_listener_options.signal.has_value()) - signal = add_event_listener_options.signal.value().ptr(); + if (add_event_listener_options.signal) + signal = add_event_listener_options.signal; } // 5. Return capture, passive, once, and signal. diff --git a/Userland/Libraries/LibWeb/DOM/IDLEventListener.h b/Userland/Libraries/LibWeb/DOM/IDLEventListener.h index 672714babbb..4305919939d 100644 --- a/Userland/Libraries/LibWeb/DOM/IDLEventListener.h +++ b/Userland/Libraries/LibWeb/DOM/IDLEventListener.h @@ -21,7 +21,7 @@ struct EventListenerOptions { struct AddEventListenerOptions : public EventListenerOptions { bool passive { false }; bool once { false }; - Optional> signal; + JS::GCPtr signal; }; class IDLEventListener final : public JS::Object { diff --git a/Userland/Libraries/LibWeb/Streams/ReadableStream.cpp b/Userland/Libraries/LibWeb/Streams/ReadableStream.cpp index 92598eb8743..62f4ba0b275 100644 --- a/Userland/Libraries/LibWeb/Streams/ReadableStream.cpp +++ b/Userland/Libraries/LibWeb/Streams/ReadableStream.cpp @@ -121,7 +121,7 @@ WebIDL::ExceptionOr> ReadableStream::pipe_throu return WebIDL::SimpleException { WebIDL::SimpleExceptionType::TypeError, "Failed to execute 'pipeThrough' on 'ReadableStream': parameter 1's 'writable' is locked"sv }; // 3. Let signal be options["signal"] if it exists, or undefined otherwise. - auto signal = options.signal.has_value() ? JS::Value(options.signal.value().ptr()) : JS::js_undefined(); + auto signal = options.signal ? JS::Value(options.signal) : JS::js_undefined(); // 4. Let promise be ! ReadableStreamPipeTo(this, transform["writable"], options["preventClose"], options["preventAbort"], options["preventCancel"], signal). auto promise = MUST(readable_stream_pipe_to(*this, *transform.writable, options.prevent_close, options.prevent_abort, options.prevent_cancel, signal)); @@ -152,7 +152,7 @@ WebIDL::ExceptionOr> ReadableStream::pipe_to(Writab } // 3. Let signal be options["signal"] if it exists, or undefined otherwise. - auto signal = options.signal.has_value() ? JS::Value(options.signal.value().ptr()) : JS::js_undefined(); + auto signal = options.signal ? JS::Value(options.signal) : JS::js_undefined(); // 4. Return ! ReadableStreamPipeTo(this, destination, options["preventClose"], options["preventAbort"], options["preventCancel"], signal). return MUST(readable_stream_pipe_to(*this, destination, options.prevent_close, options.prevent_abort, options.prevent_cancel, signal))->promise(); diff --git a/Userland/Libraries/LibWeb/Streams/ReadableStream.h b/Userland/Libraries/LibWeb/Streams/ReadableStream.h index fa911f8dae3..9b039146073 100644 --- a/Userland/Libraries/LibWeb/Streams/ReadableStream.h +++ b/Userland/Libraries/LibWeb/Streams/ReadableStream.h @@ -36,7 +36,7 @@ struct StreamPipeOptions { bool prevent_close { false }; bool prevent_abort { false }; bool prevent_cancel { false }; - Optional> signal; + JS::GCPtr signal; }; struct ReadableStreamPair { diff --git a/Userland/Libraries/LibWeb/XHR/FormData.cpp b/Userland/Libraries/LibWeb/XHR/FormData.cpp index 4b9799e4f94..7165449fbb5 100644 --- a/Userland/Libraries/LibWeb/XHR/FormData.cpp +++ b/Userland/Libraries/LibWeb/XHR/FormData.cpp @@ -18,13 +18,13 @@ namespace Web::XHR { JS_DEFINE_ALLOCATOR(FormData); // https://xhr.spec.whatwg.org/#dom-formdata -WebIDL::ExceptionOr> FormData::construct_impl(JS::Realm& realm, Optional> form) +WebIDL::ExceptionOr> FormData::construct_impl(JS::Realm& realm, JS::GCPtr form) { Vector list; // 1. If form is given, then: - if (form.has_value()) { + if (form) { // 1. Let list be the result of constructing the entry list for form. - auto entry_list = TRY(construct_entry_list(realm, form.value())); + auto entry_list = TRY(construct_entry_list(realm, *form)); // 2. If list is null, then throw an "InvalidStateError" DOMException. if (!entry_list.has_value()) return WebIDL::InvalidStateError::create(realm, "Form element does not contain any entries."_fly_string); diff --git a/Userland/Libraries/LibWeb/XHR/FormData.h b/Userland/Libraries/LibWeb/XHR/FormData.h index 5d2571eabee..f607ba27cbc 100644 --- a/Userland/Libraries/LibWeb/XHR/FormData.h +++ b/Userland/Libraries/LibWeb/XHR/FormData.h @@ -23,7 +23,7 @@ class FormData : public Bindings::PlatformObject { public: virtual ~FormData() override; - static WebIDL::ExceptionOr> construct_impl(JS::Realm&, Optional> form = {}); + static WebIDL::ExceptionOr> construct_impl(JS::Realm&, JS::GCPtr form = {}); static WebIDL::ExceptionOr> construct_impl(JS::Realm&, Vector entry_list); WebIDL::ExceptionOr append(String const& name, String const& value);