From 540c3070092b0c7572b09e3d2a9834c273446686 Mon Sep 17 00:00:00 2001 From: Luke Wilde Date: Sat, 1 Oct 2022 00:30:38 +0100 Subject: [PATCH] LibWeb: Implement Element.insertAdjacentText --- Userland/Libraries/LibWeb/DOM/Element.cpp | 12 ++++++++++++ Userland/Libraries/LibWeb/DOM/Element.h | 1 + Userland/Libraries/LibWeb/DOM/Element.idl | 1 + 3 files changed, 14 insertions(+) diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp index 47a8e18b481..686c73253cd 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.cpp +++ b/Userland/Libraries/LibWeb/DOM/Element.cpp @@ -891,4 +891,16 @@ WebIDL::ExceptionOr> Element::insert_adjacent_element(String return JS::GCPtr { verify_cast(*returned_node) }; } +// https://dom.spec.whatwg.org/#dom-element-insertadjacenttext +WebIDL::ExceptionOr Element::insert_adjacent_text(String const& where, String const& data) +{ + // 1. Let text be a new Text node whose data is data and node document is this’s node document. + JS::NonnullGCPtr text = *heap().allocate(realm(), document(), data); + + // 2. Run insert adjacent, given this, where, and text. + // Spec Note: This method returns nothing because it existed before we had a chance to design it. + (void)TRY(insert_adjacent(where, move(text))); + return {}; +} + } diff --git a/Userland/Libraries/LibWeb/DOM/Element.h b/Userland/Libraries/LibWeb/DOM/Element.h index 08e4b42bc98..a315e310368 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.h +++ b/Userland/Libraries/LibWeb/DOM/Element.h @@ -145,6 +145,7 @@ public: bool is_actually_disabled() const; WebIDL::ExceptionOr> insert_adjacent_element(String const& where, JS::NonnullGCPtr element); + WebIDL::ExceptionOr insert_adjacent_text(String const& where, String const& data); protected: Element(Document&, DOM::QualifiedName); diff --git a/Userland/Libraries/LibWeb/DOM/Element.idl b/Userland/Libraries/LibWeb/DOM/Element.idl index 6b514f6173e..3bc26ce7040 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.idl +++ b/Userland/Libraries/LibWeb/DOM/Element.idl @@ -54,6 +54,7 @@ interface Element : Node { readonly attribute long clientHeight; [CEReactions] Element? insertAdjacentElement(DOMString where, Element element); + undefined insertAdjacentText(DOMString where, DOMString data); [CEReactions] undefined insertAdjacentHTML(DOMString position, DOMString text); };