diff --git a/Tests/LibWeb/Text/expected/DOM/DOMImplementation-createHTMLDocument.txt b/Tests/LibWeb/Text/expected/DOM/DOMImplementation-createHTMLDocument.txt new file mode 100644 index 0000000000..6700e3c9a7 --- /dev/null +++ b/Tests/LibWeb/Text/expected/DOM/DOMImplementation-createHTMLDocument.txt @@ -0,0 +1,4 @@ + [object HTMLDocument] +true +[object HTMLDocument] +true diff --git a/Tests/LibWeb/Text/input/DOM/DOMImplementation-createHTMLDocument.html b/Tests/LibWeb/Text/input/DOM/DOMImplementation-createHTMLDocument.html new file mode 100644 index 0000000000..b5b70000e9 --- /dev/null +++ b/Tests/LibWeb/Text/input/DOM/DOMImplementation-createHTMLDocument.html @@ -0,0 +1,12 @@ + + + + diff --git a/Userland/Libraries/LibWeb/DOM/DOMImplementation.cpp b/Userland/Libraries/LibWeb/DOM/DOMImplementation.cpp index 5caa2abdf9..7cbeca4747 100644 --- a/Userland/Libraries/LibWeb/DOM/DOMImplementation.cpp +++ b/Userland/Libraries/LibWeb/DOM/DOMImplementation.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -91,10 +92,11 @@ WebIDL::ExceptionOr> DOMImplementation::create_docume JS::NonnullGCPtr DOMImplementation::create_html_document(Optional const& title) const { // 1. Let doc be a new document that is an HTML document. - auto html_document = Document::create(realm()); + auto html_document = HTML::HTMLDocument::create(realm()); // 2. Set doc’s content type to "text/html". html_document->set_content_type("text/html"_string); + html_document->set_document_type(DOM::Document::Type::HTML); html_document->set_ready_for_post_load_tasks(true); diff --git a/Userland/Libraries/LibWeb/HTML/HTMLDocument.cpp b/Userland/Libraries/LibWeb/HTML/HTMLDocument.cpp index df8b25dbd1..b890e57bbb 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLDocument.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLDocument.cpp @@ -27,4 +27,10 @@ JS::NonnullGCPtr HTMLDocument::create(JS::Realm& realm, URL const& return realm.heap().allocate(realm, realm, url); } +void HTMLDocument::initialize(JS::Realm& realm) +{ + Base::initialize(realm); + set_prototype(&Bindings::ensure_web_prototype(realm, "HTMLDocument"_fly_string)); +} + } diff --git a/Userland/Libraries/LibWeb/HTML/HTMLDocument.h b/Userland/Libraries/LibWeb/HTML/HTMLDocument.h index 29c2bc953c..9d481e80c7 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLDocument.h +++ b/Userland/Libraries/LibWeb/HTML/HTMLDocument.h @@ -15,7 +15,7 @@ namespace Web::HTML { // https://github.com/whatwg/html/issues/4792 // https://github.com/whatwg/dom/issues/221 class HTMLDocument final : public DOM::Document { - JS_CELL(HTMLDocument, DOM::Document); + WEB_PLATFORM_OBJECT(HTMLDocument, DOM::Document); JS_DECLARE_ALLOCATOR(HTMLDocument); public: @@ -25,6 +25,8 @@ public: WebIDL::ExceptionOr> construct_impl(JS::Realm&); private: + virtual void initialize(JS::Realm&) override; + HTMLDocument(JS::Realm&, URL const&); };