summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Myhra <kennethmyhra@gmail.com>2022-10-20 10:47:27 +0200
committerAndreas Kling <kling@serenityos.org>2022-10-20 17:57:52 +0200
commitebd93c8d57991c91d0844996e690d670bba7178f (patch)
tree72cf047b8b5ac3d3349192a4239ac578a449f62b
parent645a64ef0fc3d26c479a685ecf3ed876cde04ebb (diff)
downloadserenity-ebd93c8d57991c91d0844996e690d670bba7178f.zip
LibWeb: Revert support for DOM::Document in XHR::send()
This is a manual revert of commit: 7831e62 Let's revert this until we got nested union support in our IDL generator/parser.
-rw-r--r--Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp3
-rw-r--r--Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp29
-rw-r--r--Userland/Libraries/LibWeb/XHR/XMLHttpRequest.h2
-rw-r--r--Userland/Libraries/LibWeb/XHR/XMLHttpRequest.idl3
4 files changed, 10 insertions, 27 deletions
diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp
index 8f979aa75f..f46bbbb01a 100644
--- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp
+++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp
@@ -130,9 +130,6 @@ CppType idl_type_name_to_cpp_type(Type const& type, Interface const& interface)
if (type.name() == "BufferSource")
return { .name = "JS::Handle<JS::Object>", .sequence_storage_type = SequenceStorageType::MarkedVector };
- if (type.name() == "XMLHttpRequestBodyInit")
- return { .name = "Fetch::XMLHttpRequestBodyInit", .sequence_storage_type = SequenceStorageType::MarkedVector };
-
if (type.name() == "sequence") {
auto& parameterized_type = verify_cast<ParameterizedType>(type);
auto& sequence_type = parameterized_type.parameters().first();
diff --git a/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp b/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp
index 8244360fd2..a8c9e62eea 100644
--- a/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp
+++ b/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp
@@ -396,7 +396,7 @@ WebIDL::ExceptionOr<void> XMLHttpRequest::open(String const& method_string, Stri
}
// https://xhr.spec.whatwg.org/#dom-xmlhttprequest-send
-WebIDL::ExceptionOr<void> XMLHttpRequest::send(Optional<Variant<JS::Handle<DOM::Document>, Fetch::XMLHttpRequestBodyInit>> body)
+WebIDL::ExceptionOr<void> XMLHttpRequest::send(Optional<Fetch::XMLHttpRequestBodyInit> body)
{
auto& vm = this->vm();
auto& realm = *vm.current_realm();
@@ -411,15 +411,8 @@ WebIDL::ExceptionOr<void> XMLHttpRequest::send(Optional<Variant<JS::Handle<DOM::
if (m_method.is_one_of("GET"sv, "HEAD"sv))
body = {};
- Optional<Fetch::Infrastructure::BodyWithType> body_with_type {};
- Optional<ByteBuffer> serialized_document {};
- if (body.has_value()) {
- if (body->has<JS::Handle<DOM::Document>>()) {
- serialized_document = body->get<JS::Handle<DOM::Document>>().cell()->serialize_fragment().to_byte_buffer();
- } else {
- body_with_type = TRY(Fetch::extract_body(realm, body.value().get<Fetch::XMLHttpRequestBodyInit>()));
- }
- }
+ auto body_with_type = body.has_value() ? TRY(Fetch::extract_body(realm, body.value())) : Optional<Fetch::Infrastructure::BodyWithType> {};
+
AK::URL request_url = m_window->associated_document().parse_url(m_url.to_string());
dbgln("XHR send from {} to {}", m_window->associated_document().url(), request_url);
@@ -439,9 +432,7 @@ WebIDL::ExceptionOr<void> XMLHttpRequest::send(Optional<Variant<JS::Handle<DOM::
auto request = LoadRequest::create_for_url_on_page(request_url, m_window->page());
request.set_method(m_method);
- if (serialized_document.has_value()) {
- request.set_body(serialized_document.release_value());
- } else if (body_with_type.has_value()) {
+ if (body_with_type.has_value()) {
TRY(body_with_type->body.source().visit(
[&](ByteBuffer const& buffer) -> WebIDL::ExceptionOr<void> {
auto byte_buffer = TRY_OR_RETURN_OOM(realm, ByteBuffer::copy(buffer));
@@ -456,14 +447,10 @@ WebIDL::ExceptionOr<void> XMLHttpRequest::send(Optional<Variant<JS::Handle<DOM::
[](auto&) -> WebIDL::ExceptionOr<void> {
return {};
}));
- }
-
- // If type is non-null and this’s headers’s header list does not contain `Content-Type`, then append (`Content-Type`, type) to this’s headers.
- if (!m_request_headers.contains("Content-Type"sv)) {
- if (body_with_type.has_value() && body_with_type->type.has_value()) {
- request.set_header("Content-Type", String { body_with_type->type->span() });
- } else if (body.has_value() && body->has<JS::Handle<DOM::Document>>()) {
- request.set_header("Content-Type", "text/html;charset=UTF-8");
+ if (body_with_type->type.has_value()) {
+ // If type is non-null and this’s headers’s header list does not contain `Content-Type`, then append (`Content-Type`, type) to this’s headers.
+ if (!m_request_headers.contains("Content-Type"sv))
+ request.set_header("Content-Type", String { body_with_type->type->span() });
}
}
for (auto& it : m_request_headers)
diff --git a/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.h b/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.h
index 574ac27a61..77037dc230 100644
--- a/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.h
+++ b/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.h
@@ -47,7 +47,7 @@ public:
WebIDL::ExceptionOr<void> open(String const& method, String const& url);
WebIDL::ExceptionOr<void> open(String const& method, String const& url, bool async, String const& username = {}, String const& password = {});
- WebIDL::ExceptionOr<void> send(Optional<Variant<JS::Handle<DOM::Document>, Fetch::XMLHttpRequestBodyInit>> body = {});
+ WebIDL::ExceptionOr<void> send(Optional<Fetch::XMLHttpRequestBodyInit> body);
WebIDL::ExceptionOr<void> set_request_header(String const& header, String const& value);
void set_response_type(Bindings::XMLHttpRequestResponseType type) { m_response_type = type; }
diff --git a/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.idl b/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.idl
index a0943b18ba..ca967466a9 100644
--- a/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.idl
+++ b/Userland/Libraries/LibWeb/XHR/XMLHttpRequest.idl
@@ -1,4 +1,3 @@
-#import <DOM/Document.idl>
#import <DOM/EventHandler.idl>
#import <Fetch/BodyInit.idl>
#import <XHR/XMLHttpRequestEventTarget.idl>
@@ -34,7 +33,7 @@ interface XMLHttpRequest : XMLHttpRequestEventTarget {
undefined open(DOMString method, DOMString url);
undefined open(ByteString method, USVString url, boolean async, optional USVString? username = {}, optional USVString? password = {});
undefined setRequestHeader(DOMString name, DOMString value);
- undefined send(optional (Document or XMLHttpRequestBodyInit)? body = null);
+ undefined send(optional XMLHttpRequestBodyInit? body = null);
ByteString? getResponseHeader(ByteString name);
ByteString getAllResponseHeaders();