diff options
author | Andreas Kling <kling@serenityos.org> | 2021-02-10 18:21:35 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-02-10 19:06:20 +0100 |
commit | d597626ea1b61cfe7f99d19fb60b451b7d3863f5 (patch) | |
tree | 0b9af7ce29534009bab76cee19fa33e09e59cf9b | |
parent | bf82e7fba21a9ce1b56a2f49d6ee06922a87eb6e (diff) | |
download | serenity-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.cpp | 10 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/DOM/Element.h | 6 |
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<> |