diff --git a/Libraries/LibWeb/CMakeLists.txt b/Libraries/LibWeb/CMakeLists.txt index c13c4f10df8..a29bf46f838 100644 --- a/Libraries/LibWeb/CMakeLists.txt +++ b/Libraries/LibWeb/CMakeLists.txt @@ -240,7 +240,6 @@ set(SOURCES DOM/TreeWalker.cpp DOM/Utils.cpp DOM/XMLDocument.cpp - DOMParsing/XMLSerializer.cpp DOMURL/DOMURL.cpp DOMURL/URLSearchParams.cpp DOMURL/URLSearchParamsIterator.cpp @@ -536,6 +535,7 @@ set(SOURCES HTML/WorkerNavigator.cpp HTML/WorkletGlobalScope.cpp HTML/ValidityState.cpp + HTML/XMLSerializer.cpp HighResolutionTime/Performance.cpp HighResolutionTime/TimeOrigin.cpp Infra/ByteSequences.cpp diff --git a/Libraries/LibWeb/DOM/Element.cpp b/Libraries/LibWeb/DOM/Element.cpp index 0dd01b1f98e..a3f202c3f2f 100644 --- a/Libraries/LibWeb/DOM/Element.cpp +++ b/Libraries/LibWeb/DOM/Element.cpp @@ -865,7 +865,7 @@ WebIDL::ExceptionOr Element::set_inner_html(StringView value) // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-element-innerhtml WebIDL::ExceptionOr Element::inner_html() const { - return serialize_fragment(DOMParsing::RequireWellFormed::Yes); + return serialize_fragment(HTML::RequireWellFormed::Yes); } bool Element::is_focused() const @@ -1768,7 +1768,7 @@ WebIDL::ExceptionOr> Element::parse_fragment(Stri // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-element-outerhtml WebIDL::ExceptionOr Element::outer_html() const { - return serialize_fragment(DOMParsing::RequireWellFormed::Yes, FragmentSerializationMode::Outer); + return serialize_fragment(HTML::RequireWellFormed::Yes, FragmentSerializationMode::Outer); } // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-element-outerhtml diff --git a/Libraries/LibWeb/DOM/Node.cpp b/Libraries/LibWeb/DOM/Node.cpp index 626150547fe..f5d0b1e2124 100644 --- a/Libraries/LibWeb/DOM/Node.cpp +++ b/Libraries/LibWeb/DOM/Node.cpp @@ -1815,7 +1815,7 @@ void Node::string_replace_all(String const& string) } // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#fragment-serializing-algorithm-steps -WebIDL::ExceptionOr Node::serialize_fragment(DOMParsing::RequireWellFormed require_well_formed, FragmentSerializationMode fragment_serialization_mode) const +WebIDL::ExceptionOr Node::serialize_fragment(HTML::RequireWellFormed require_well_formed, FragmentSerializationMode fragment_serialization_mode) const { // 1. Let context document be the value of node's node document. auto const& context_document = document(); @@ -1830,12 +1830,12 @@ WebIDL::ExceptionOr Node::serialize_fragment(DOMParsing::RequireWellForm if (fragment_serialization_mode == FragmentSerializationMode::Inner) { StringBuilder markup; for (auto* child = first_child(); child; child = child->next_sibling()) { - auto child_markup = TRY(DOMParsing::serialize_node_to_xml_string(*child, require_well_formed)); + auto child_markup = TRY(HTML::serialize_node_to_xml_string(*child, require_well_formed)); markup.append(child_markup.bytes_as_string_view()); } return MUST(markup.to_string()); } - return DOMParsing::serialize_node_to_xml_string(*this, require_well_formed); + return HTML::serialize_node_to_xml_string(*this, require_well_formed); } // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#unsafely-set-html diff --git a/Libraries/LibWeb/DOM/Node.h b/Libraries/LibWeb/DOM/Node.h index f659cd5333d..34d302a469d 100644 --- a/Libraries/LibWeb/DOM/Node.h +++ b/Libraries/LibWeb/DOM/Node.h @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include @@ -329,7 +329,7 @@ public: [[nodiscard]] UniqueNodeID unique_id() const { return m_unique_id; } static Node* from_unique_id(UniqueNodeID); - WebIDL::ExceptionOr serialize_fragment(DOMParsing::RequireWellFormed, FragmentSerializationMode = FragmentSerializationMode::Inner) const; + WebIDL::ExceptionOr serialize_fragment(HTML::RequireWellFormed, FragmentSerializationMode = FragmentSerializationMode::Inner) const; WebIDL::ExceptionOr unsafely_set_html(Element&, StringView); diff --git a/Libraries/LibWeb/DOM/ShadowRoot.cpp b/Libraries/LibWeb/DOM/ShadowRoot.cpp index e9acb7716bc..6e6b19f47ad 100644 --- a/Libraries/LibWeb/DOM/ShadowRoot.cpp +++ b/Libraries/LibWeb/DOM/ShadowRoot.cpp @@ -64,7 +64,7 @@ EventTarget* ShadowRoot::get_parent(Event const& event) // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-shadowroot-innerhtml WebIDL::ExceptionOr ShadowRoot::inner_html() const { - return serialize_fragment(DOMParsing::RequireWellFormed::Yes); + return serialize_fragment(HTML::RequireWellFormed::Yes); } // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-shadowroot-innerhtml diff --git a/Libraries/LibWeb/Forward.h b/Libraries/LibWeb/Forward.h index a3546223bf7..42670e156de 100644 --- a/Libraries/LibWeb/Forward.h +++ b/Libraries/LibWeb/Forward.h @@ -339,10 +339,6 @@ struct AddEventListenerOptions; struct EventListenerOptions; } -namespace Web::DOMParsing { -class XMLSerializer; -} - namespace Web::Encoding { class TextDecoder; class TextEncoder; @@ -579,6 +575,7 @@ class WorkerEnvironmentSettingsObject; class WorkerGlobalScope; class WorkerLocation; class WorkerNavigator; +class XMLSerializer; enum class AllowMultipleFiles; enum class MediaSeekMode; diff --git a/Libraries/LibWeb/DOMParsing/XMLSerializer.cpp b/Libraries/LibWeb/HTML/XMLSerializer.cpp similarity index 99% rename from Libraries/LibWeb/DOMParsing/XMLSerializer.cpp rename to Libraries/LibWeb/HTML/XMLSerializer.cpp index 7b9a9c7100c..6cb9546aa00 100644 --- a/Libraries/LibWeb/DOMParsing/XMLSerializer.cpp +++ b/Libraries/LibWeb/HTML/XMLSerializer.cpp @@ -16,13 +16,13 @@ #include #include #include -#include #include +#include #include #include #include -namespace Web::DOMParsing { +namespace Web::HTML { GC_DEFINE_ALLOCATOR(XMLSerializer); @@ -44,10 +44,12 @@ void XMLSerializer::initialize(JS::Realm& realm) WEB_SET_PROTOTYPE_FOR_INTERFACE(XMLSerializer); } -// https://w3c.github.io/DOM-Parsing/#dom-xmlserializer-serializetostring +// https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-xmlserializer-serializetostring WebIDL::ExceptionOr XMLSerializer::serialize_to_string(GC::Ref root) { - // The serializeToString(root) method must produce an XML serialization of root passing a value of false for the require well-formed parameter, and return the result. + // The serializeToString(root) method steps are: + + // 1. Return the XML serialization of root given false. return serialize_node_to_xml_string(root, RequireWellFormed::No); } diff --git a/Libraries/LibWeb/DOMParsing/XMLSerializer.h b/Libraries/LibWeb/HTML/XMLSerializer.h similarity index 88% rename from Libraries/LibWeb/DOMParsing/XMLSerializer.h rename to Libraries/LibWeb/HTML/XMLSerializer.h index 16be0bdb255..6a52b89a962 100644 --- a/Libraries/LibWeb/DOMParsing/XMLSerializer.h +++ b/Libraries/LibWeb/HTML/XMLSerializer.h @@ -8,8 +8,9 @@ #include -namespace Web::DOMParsing { +namespace Web::HTML { +// https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#xmlserializer class XMLSerializer final : public Bindings::PlatformObject { WEB_PLATFORM_OBJECT(XMLSerializer, Bindings::PlatformObject); GC_DECLARE_ALLOCATOR(XMLSerializer); diff --git a/Libraries/LibWeb/DOMParsing/XMLSerializer.idl b/Libraries/LibWeb/HTML/XMLSerializer.idl similarity index 60% rename from Libraries/LibWeb/DOMParsing/XMLSerializer.idl rename to Libraries/LibWeb/HTML/XMLSerializer.idl index 5799ffbf71c..020df4de127 100644 --- a/Libraries/LibWeb/DOMParsing/XMLSerializer.idl +++ b/Libraries/LibWeb/HTML/XMLSerializer.idl @@ -1,6 +1,6 @@ #import -// https://w3c.github.io/DOM-Parsing/#the-xmlserializer-interface +// https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#xmlserializer [Exposed=Window] interface XMLSerializer { constructor(); diff --git a/Libraries/LibWeb/XHR/XMLHttpRequest.cpp b/Libraries/LibWeb/XHR/XMLHttpRequest.cpp index e28aba712ad..0ac835511a1 100644 --- a/Libraries/LibWeb/XHR/XMLHttpRequest.cpp +++ b/Libraries/LibWeb/XHR/XMLHttpRequest.cpp @@ -573,7 +573,7 @@ WebIDL::ExceptionOr XMLHttpRequest::send(Optionalhas>()) { - auto string_serialized_document = TRY(body->get>().cell()->serialize_fragment(DOMParsing::RequireWellFormed::No)); + auto string_serialized_document = TRY(body->get>().cell()->serialize_fragment(HTML::RequireWellFormed::No)); m_request_body = Fetch::Infrastructure::byte_sequence_as_body(realm, string_serialized_document.bytes()); } // 3. Otherwise: diff --git a/Libraries/LibWeb/idl_files.cmake b/Libraries/LibWeb/idl_files.cmake index 65c596f03ad..ddb5f80c20c 100644 --- a/Libraries/LibWeb/idl_files.cmake +++ b/Libraries/LibWeb/idl_files.cmake @@ -83,7 +83,6 @@ libweb_js_bindings(DOM/StaticRange) libweb_js_bindings(DOM/Text) libweb_js_bindings(DOM/TreeWalker) libweb_js_bindings(DOM/XMLDocument) -libweb_js_bindings(DOMParsing/XMLSerializer) libweb_js_bindings(DOMURL/DOMURL) libweb_js_bindings(DOMURL/URLSearchParams ITERABLE) libweb_js_bindings(Encoding/TextDecoder) @@ -251,6 +250,7 @@ libweb_js_bindings(HTML/WorkerGlobalScope) libweb_js_bindings(HTML/WorkerLocation) libweb_js_bindings(HTML/WorkerNavigator) libweb_js_bindings(HTML/WorkletGlobalScope) +libweb_js_bindings(HTML/XMLSerializer) libweb_js_bindings(HighResolutionTime/Performance) libweb_js_bindings(IndexedDB/IDBCursor) libweb_js_bindings(IndexedDB/IDBDatabase) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp index 4ec2bf06ee4..5bd5b219c89 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp @@ -4505,7 +4505,6 @@ using namespace Web::CredentialManagement; using namespace Web::Crypto; using namespace Web::CSS; using namespace Web::DOM; -using namespace Web::DOMParsing; using namespace Web::DOMURL; using namespace Web::Encoding; using namespace Web::EntriesAPI; diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/Namespaces.h b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/Namespaces.h index 3bcd63c8cb0..fce40c45351 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/Namespaces.h +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/Namespaces.h @@ -18,7 +18,6 @@ static constexpr Array libweb_interface_namespaces = { "Compression"sv, "Crypto"sv, "DOM"sv, - "DOMParsing"sv, "DOMURL"sv, "Encoding"sv, "Fetch"sv, diff --git a/Meta/gn/secondary/Userland/Libraries/LibWeb/BUILD.gn b/Meta/gn/secondary/Userland/Libraries/LibWeb/BUILD.gn index b3a5f2b0709..fe62e177f65 100644 --- a/Meta/gn/secondary/Userland/Libraries/LibWeb/BUILD.gn +++ b/Meta/gn/secondary/Userland/Libraries/LibWeb/BUILD.gn @@ -301,7 +301,6 @@ shared_library("LibWeb") { "Cookie", "Crypto", "DOM", - "DOMParsing", "DOMURL", "Encoding", "EntriesAPI", diff --git a/Meta/gn/secondary/Userland/Libraries/LibWeb/DOMParsing/BUILD.gn b/Meta/gn/secondary/Userland/Libraries/LibWeb/DOMParsing/BUILD.gn deleted file mode 100644 index a6f354cf21f..00000000000 --- a/Meta/gn/secondary/Userland/Libraries/LibWeb/DOMParsing/BUILD.gn +++ /dev/null @@ -1,5 +0,0 @@ -source_set("DOMParsing") { - configs += [ "//Userland/Libraries/LibWeb:configs" ] - deps = [ "//Userland/Libraries/LibWeb:all_generated" ] - sources = [ "XMLSerializer.cpp" ] -} diff --git a/Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/BUILD.gn b/Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/BUILD.gn index 12d37d983fb..11c591ab194 100644 --- a/Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/BUILD.gn +++ b/Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/BUILD.gn @@ -205,5 +205,6 @@ source_set("HTML") { "WorkerGlobalScope.cpp", "WorkerLocation.cpp", "WorkerNavigator.cpp", + "XMLSerializer.cpp" ] } diff --git a/Meta/gn/secondary/Userland/Libraries/LibWeb/idl_files.gni b/Meta/gn/secondary/Userland/Libraries/LibWeb/idl_files.gni index 8e98b735e3a..2a80b1bf467 100644 --- a/Meta/gn/secondary/Userland/Libraries/LibWeb/idl_files.gni +++ b/Meta/gn/secondary/Userland/Libraries/LibWeb/idl_files.gni @@ -94,7 +94,6 @@ standard_idl_files = [ "//Userland/Libraries/LibWeb/DOM/Text.idl", "//Userland/Libraries/LibWeb/DOM/TreeWalker.idl", "//Userland/Libraries/LibWeb/DOM/XMLDocument.idl", - "//Userland/Libraries/LibWeb/DOMParsing/XMLSerializer.idl", "//Userland/Libraries/LibWeb/DOMURL/DOMURL.idl", "//Userland/Libraries/LibWeb/Encoding/TextDecoder.idl", "//Userland/Libraries/LibWeb/Encoding/TextEncoder.idl", @@ -258,6 +257,7 @@ standard_idl_files = [ "//Userland/Libraries/LibWeb/HTML/WorkerGlobalScope.idl", "//Userland/Libraries/LibWeb/HTML/WorkerLocation.idl", "//Userland/Libraries/LibWeb/HTML/WorkerNavigator.idl", + "//Userland/Libraries/LibWeb/HTML/XMLSerializer.idl", "//Userland/Libraries/LibWeb/IndexedDB/IDBFactory.idl", "//Userland/Libraries/LibWeb/IndexedDB/IDBOpenDBRequest.idl", "//Userland/Libraries/LibWeb/IndexedDB/IDBRequest.idl", diff --git a/Services/WebContent/WebDriverConnection.cpp b/Services/WebContent/WebDriverConnection.cpp index f46a35f5da4..a2c89b0cfcc 100644 --- a/Services/WebContent/WebDriverConnection.cpp +++ b/Services/WebContent/WebDriverConnection.cpp @@ -2033,13 +2033,13 @@ Messages::WebDriverClient::GetSourceResponse WebDriverConnection::get_source() // 3. Let source be the result of invoking the fragment serializing algorithm on a fictional node whose only // child is the document element providing true for the require well-formed flag. If this causes an exception // to be thrown, let source be null. - if (auto result = document->document_element()->serialize_fragment(Web::DOMParsing::RequireWellFormed::Yes, Web::DOM::FragmentSerializationMode::Outer); !result.is_error()) + if (auto result = document->document_element()->serialize_fragment(Web::HTML::RequireWellFormed::Yes, Web::DOM::FragmentSerializationMode::Outer); !result.is_error()) source = result.release_value(); // 4. Let source be the result of serializing to string session's current browsing context's active document, // if source is null. if (!source.has_value()) - source = MUST(document->serialize_fragment(Web::DOMParsing::RequireWellFormed::No)); + source = MUST(document->serialize_fragment(Web::HTML::RequireWellFormed::No)); // 5. Return success with data source. async_driver_execution_complete({ source.release_value() });