diff --git a/Userland/Libraries/LibWeb/DOM/Comment.cpp b/Userland/Libraries/LibWeb/DOM/Comment.cpp index 16ad0690bf..2d7bcb8fea 100644 --- a/Userland/Libraries/LibWeb/DOM/Comment.cpp +++ b/Userland/Libraries/LibWeb/DOM/Comment.cpp @@ -5,6 +5,7 @@ */ #include +#include #include namespace Web::DOM { @@ -18,4 +19,10 @@ Comment::~Comment() { } +// https://dom.spec.whatwg.org/#dom-comment-comment +NonnullRefPtr Comment::create_with_global_object(Bindings::WindowObject& window, String const& data) +{ + return make_ref_counted(window.impl().document(), data); +} + } diff --git a/Userland/Libraries/LibWeb/DOM/Comment.h b/Userland/Libraries/LibWeb/DOM/Comment.h index 84cf88281f..2d9c4d0646 100644 --- a/Userland/Libraries/LibWeb/DOM/Comment.h +++ b/Userland/Libraries/LibWeb/DOM/Comment.h @@ -19,6 +19,8 @@ public: virtual ~Comment() override; virtual FlyString node_name() const override { return "#comment"; } + + static NonnullRefPtr create_with_global_object(Bindings::WindowObject& window, String const& data); }; } diff --git a/Userland/Libraries/LibWeb/DOM/Comment.idl b/Userland/Libraries/LibWeb/DOM/Comment.idl index 7fb01d1d70..df107d1d6f 100644 --- a/Userland/Libraries/LibWeb/DOM/Comment.idl +++ b/Userland/Libraries/LibWeb/DOM/Comment.idl @@ -1,3 +1,3 @@ interface Comment : CharacterData { - + constructor(optional DOMString data = ""); }; diff --git a/Userland/Libraries/LibWeb/DOM/DocumentFragment.cpp b/Userland/Libraries/LibWeb/DOM/DocumentFragment.cpp index e1232cef73..50a5aabd86 100644 --- a/Userland/Libraries/LibWeb/DOM/DocumentFragment.cpp +++ b/Userland/Libraries/LibWeb/DOM/DocumentFragment.cpp @@ -1,10 +1,11 @@ /* - * Copyright (c) 2020, Luke Wilde + * Copyright (c) 2020-2021, Luke Wilde * * SPDX-License-Identifier: BSD-2-Clause */ #include +#include namespace Web::DOM { @@ -17,4 +18,10 @@ DocumentFragment::~DocumentFragment() { } +// https://dom.spec.whatwg.org/#dom-documentfragment-documentfragment +NonnullRefPtr DocumentFragment::create_with_global_object(Bindings::WindowObject& window) +{ + return make_ref_counted(window.impl().document()); +} + } diff --git a/Userland/Libraries/LibWeb/DOM/DocumentFragment.h b/Userland/Libraries/LibWeb/DOM/DocumentFragment.h index fa583a608c..7a0ef4fa71 100644 --- a/Userland/Libraries/LibWeb/DOM/DocumentFragment.h +++ b/Userland/Libraries/LibWeb/DOM/DocumentFragment.h @@ -19,6 +19,8 @@ class DocumentFragment public: using WrapperType = Bindings::DocumentFragmentWrapper; + static NonnullRefPtr create_with_global_object(Bindings::WindowObject& window); + explicit DocumentFragment(Document& document); virtual ~DocumentFragment() override; diff --git a/Userland/Libraries/LibWeb/DOM/DocumentFragment.idl b/Userland/Libraries/LibWeb/DOM/DocumentFragment.idl index 0b21365d0d..55f336dda4 100644 --- a/Userland/Libraries/LibWeb/DOM/DocumentFragment.idl +++ b/Userland/Libraries/LibWeb/DOM/DocumentFragment.idl @@ -1,5 +1,7 @@ interface DocumentFragment : Node { + constructor(); + Element? getElementById(DOMString id); // FIXME: These should all come from a ParentNode mixin diff --git a/Userland/Libraries/LibWeb/DOM/Text.cpp b/Userland/Libraries/LibWeb/DOM/Text.cpp index 03bf69d26a..6fa80992d2 100644 --- a/Userland/Libraries/LibWeb/DOM/Text.cpp +++ b/Userland/Libraries/LibWeb/DOM/Text.cpp @@ -5,6 +5,7 @@ */ #include +#include #include namespace Web::DOM { @@ -23,4 +24,10 @@ RefPtr Text::create_layout_node() return adopt_ref(*new Layout::TextNode(document(), *this)); } +// https://dom.spec.whatwg.org/#dom-text-text +NonnullRefPtr Text::create_with_global_object(Bindings::WindowObject& window, String const& data) +{ + return make_ref_counted(window.impl().document(), data); +} + } diff --git a/Userland/Libraries/LibWeb/DOM/Text.h b/Userland/Libraries/LibWeb/DOM/Text.h index 2a775aaff6..e6f1d33919 100644 --- a/Userland/Libraries/LibWeb/DOM/Text.h +++ b/Userland/Libraries/LibWeb/DOM/Text.h @@ -19,6 +19,8 @@ public: explicit Text(Document&, const String&); virtual ~Text() override; + static NonnullRefPtr create_with_global_object(Bindings::WindowObject& window, String const& data); + // ^Node virtual FlyString node_name() const override { return "#text"; } virtual bool is_editable() const override { return m_always_editable || CharacterData::is_editable(); } diff --git a/Userland/Libraries/LibWeb/DOM/Text.idl b/Userland/Libraries/LibWeb/DOM/Text.idl index 25a6fdb405..86c6a8d52c 100644 --- a/Userland/Libraries/LibWeb/DOM/Text.idl +++ b/Userland/Libraries/LibWeb/DOM/Text.idl @@ -1,3 +1,3 @@ interface Text : CharacterData { - + constructor(optional DOMString data = ""); };