summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-02-10 18:21:35 +0100
committerAndreas Kling <kling@serenityos.org>2021-02-10 19:06:20 +0100
commitd597626ea1b61cfe7f99d19fb60b451b7d3863f5 (patch)
tree0b9af7ce29534009bab76cee19fa33e09e59cf9b
parentbf82e7fba21a9ce1b56a2f49d6ee06922a87eb6e (diff)
downloadserenity-d597626ea1b61cfe7f99d19fb60b451b7d3863f5.zip
LibWeb: Add a way to give DOM::Element a ShadowRoot
You can now attach a shadow root to your favorite Element. It doesn't do anything yet, but you can.
-rw-r--r--Userland/Libraries/LibWeb/DOM/Element.cpp10
-rw-r--r--Userland/Libraries/LibWeb/DOM/Element.h6
2 files changed, 15 insertions, 1 deletions
diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp
index 3eb3e0b747..c40932a0f5 100644
--- a/Userland/Libraries/LibWeb/DOM/Element.cpp
+++ b/Userland/Libraries/LibWeb/DOM/Element.cpp
@@ -31,8 +31,8 @@
#include <LibWeb/CSS/StyleInvalidator.h>
#include <LibWeb/CSS/StyleResolver.h>
#include <LibWeb/DOM/Document.h>
-#include <LibWeb/DOM/DocumentFragment.h>
#include <LibWeb/DOM/Element.h>
+#include <LibWeb/DOM/ShadowRoot.h>
#include <LibWeb/DOM/Text.h>
#include <LibWeb/HTML/Parser/HTMLDocumentParser.h>
#include <LibWeb/Layout/BlockBox.h>
@@ -365,4 +365,12 @@ NonnullRefPtrVector<Element> Element::get_elements_by_class_name(const FlyString
return elements;
}
+void Element::set_shadow_root(RefPtr<ShadowRoot> shadow_root)
+{
+ if (m_shadow_root == shadow_root)
+ return;
+ m_shadow_root = move(shadow_root);
+ invalidate_style();
+}
+
}
diff --git a/Userland/Libraries/LibWeb/DOM/Element.h b/Userland/Libraries/LibWeb/DOM/Element.h
index 1f914cf484..fd41df14d9 100644
--- a/Userland/Libraries/LibWeb/DOM/Element.h
+++ b/Userland/Libraries/LibWeb/DOM/Element.h
@@ -101,6 +101,10 @@ public:
NonnullRefPtrVector<Element> get_elements_by_tag_name(const FlyString&) const;
NonnullRefPtrVector<Element> get_elements_by_class_name(const FlyString&) const;
+ ShadowRoot* shadow_root() { return m_shadow_root; }
+ const ShadowRoot* shadow_root() const { return m_shadow_root; }
+ void set_shadow_root(RefPtr<ShadowRoot>);
+
protected:
RefPtr<Layout::Node> create_layout_node() override;
@@ -116,6 +120,8 @@ private:
RefPtr<CSS::StyleProperties> m_specified_css_values;
Vector<FlyString> m_classes;
+
+ RefPtr<ShadowRoot> m_shadow_root;
};
template<>