Jelajahi Sumber

LibWeb: Add XMLDocument stub

Required by old versions of Pixi.js's XMLFormat bitmap font loader.
https://github.com/pixijs/pixijs/blob/db824181dc3dfffa0951fb8579282ba8e654cb3b/packages/text-bitmap/src/formats/XMLFormat.ts#L16
Luke Wilde 2 tahun lalu
induk
melakukan
1f863de9aa

+ 1 - 0
Userland/Libraries/LibWeb/CMakeLists.txt

@@ -155,6 +155,7 @@ set(SOURCES
     DOM/Text.cpp
     DOM/Text.cpp
     DOM/Text.idl
     DOM/Text.idl
     DOM/TreeWalker.cpp
     DOM/TreeWalker.cpp
+    DOM/XMLDocument.cpp
     DOMParsing/InnerHTML.cpp
     DOMParsing/InnerHTML.cpp
     DOMParsing/XMLSerializer.cpp
     DOMParsing/XMLSerializer.cpp
     Dump.cpp
     Dump.cpp

+ 1 - 1
Userland/Libraries/LibWeb/DOM/Document.h

@@ -472,9 +472,9 @@ protected:
     virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
     virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
     virtual void visit_edges(Cell::Visitor&) override;
     virtual void visit_edges(Cell::Visitor&) override;
 
 
-private:
     Document(JS::Realm&, AK::URL const&);
     Document(JS::Realm&, AK::URL const&);
 
 
+private:
     // ^HTML::GlobalEventHandlers
     // ^HTML::GlobalEventHandlers
     virtual EventTarget& global_event_handlers_to_event_target(FlyString const&) final { return *this; }
     virtual EventTarget& global_event_handlers_to_event_target(FlyString const&) final { return *this; }
 
 

+ 25 - 0
Userland/Libraries/LibWeb/DOM/XMLDocument.cpp

@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2023, Luke Wilde <lukew@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <LibWeb/Bindings/XMLDocumentPrototype.h>
+#include <LibWeb/DOM/XMLDocument.h>
+
+namespace Web::DOM {
+
+XMLDocument::XMLDocument(JS::Realm& realm, AK::URL const& url)
+    : Document(realm, url)
+{
+}
+
+JS::ThrowCompletionOr<void> XMLDocument::initialize(JS::Realm& realm)
+{
+    MUST_OR_THROW_OOM(Base::initialize(realm));
+    set_prototype(&Bindings::ensure_web_prototype<Bindings::XMLDocumentPrototype>(realm, "XMLDocument"));
+
+    return {};
+}
+
+}

+ 25 - 0
Userland/Libraries/LibWeb/DOM/XMLDocument.h

@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2023, Luke Wilde <lukew@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <LibWeb/DOM/Document.h>
+
+namespace Web::DOM {
+
+class XMLDocument final : public Document {
+    WEB_PLATFORM_OBJECT(XMLDocument, Document);
+
+public:
+    virtual ~XMLDocument() override = default;
+
+private:
+    XMLDocument(JS::Realm& realm, AK::URL const& url);
+
+    virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
+};
+
+}

+ 5 - 0
Userland/Libraries/LibWeb/DOM/XMLDocument.idl

@@ -0,0 +1,5 @@
+#import <DOM/Document.idl>
+
+[Exposed=Window]
+interface XMLDocument : Document {
+};

+ 1 - 0
Userland/Libraries/LibWeb/Forward.h

@@ -214,6 +214,7 @@ class StaticNodeList;
 class StaticRange;
 class StaticRange;
 class Text;
 class Text;
 class TreeWalker;
 class TreeWalker;
+class XMLDocument;
 
 
 enum class QuirksMode;
 enum class QuirksMode;
 
 

+ 1 - 0
Userland/Libraries/LibWeb/idl_files.cmake

@@ -51,6 +51,7 @@ libweb_js_bindings(DOM/ShadowRoot)
 libweb_js_bindings(DOM/StaticRange)
 libweb_js_bindings(DOM/StaticRange)
 libweb_js_bindings(DOM/Text)
 libweb_js_bindings(DOM/Text)
 libweb_js_bindings(DOM/TreeWalker)
 libweb_js_bindings(DOM/TreeWalker)
+libweb_js_bindings(DOM/XMLDocument)
 libweb_js_bindings(DOMParsing/XMLSerializer)
 libweb_js_bindings(DOMParsing/XMLSerializer)
 libweb_js_bindings(Encoding/TextDecoder)
 libweb_js_bindings(Encoding/TextDecoder)
 libweb_js_bindings(Encoding/TextEncoder)
 libweb_js_bindings(Encoding/TextEncoder)