diff options
author | Sam Atkins <atkinssj@gmail.com> | 2021-07-12 17:30:40 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-07-14 13:31:00 +0200 |
commit | 776b1f45487eb5f541f079239c209d1aa3c9e5cf (patch) | |
tree | 8cae90ffe6fc04c9f62977c5f1eee9676bd1c487 /Userland/Libraries/LibWeb/DOM | |
parent | 8cae79cc8de78c510f25a4f86ac4da00f5640590 (diff) | |
download | serenity-776b1f45487eb5f541f079239c209d1aa3c9e5cf.zip |
LibWeb: Make CSS::Selector reference counted
The end goal is to make the PseudoClass::not_selector be a Selector
instead of a String that is repeatedly re-parsed. But since Selector
contains a Vector of ComplexSelectors, which each have a Vector of
SimpleSelectors, it's probably a good idea to not be passing them
around by value anyway. :^)
Diffstat (limited to 'Userland/Libraries/LibWeb/DOM')
-rw-r--r-- | Userland/Libraries/LibWeb/DOM/ParentNode.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/Userland/Libraries/LibWeb/DOM/ParentNode.cpp b/Userland/Libraries/LibWeb/DOM/ParentNode.cpp index 904a1f4945..447954e6b2 100644 --- a/Userland/Libraries/LibWeb/DOM/ParentNode.cpp +++ b/Userland/Libraries/LibWeb/DOM/ParentNode.cpp @@ -14,14 +14,14 @@ namespace Web::DOM { RefPtr<Element> ParentNode::query_selector(const StringView& selector_text) { auto selector = parse_selector(CSS::DeprecatedParsingContext(*this), selector_text); - if (!selector.has_value()) + if (!selector) return {}; - dump_selector(selector.value()); + dump_selector(selector.release_nonnull()); RefPtr<Element> result; for_each_in_inclusive_subtree_of_type<Element>([&](auto& element) { - if (SelectorEngine::matches(selector.value(), element)) { + if (SelectorEngine::matches(selector.release_nonnull(), element)) { result = element; return IterationDecision::Break; } @@ -34,14 +34,14 @@ RefPtr<Element> ParentNode::query_selector(const StringView& selector_text) NonnullRefPtrVector<Element> ParentNode::query_selector_all(const StringView& selector_text) { auto selector = parse_selector(CSS::DeprecatedParsingContext(*this), selector_text); - if (!selector.has_value()) + if (!selector) return {}; - dump_selector(selector.value()); + dump_selector(selector.release_nonnull()); NonnullRefPtrVector<Element> elements; for_each_in_inclusive_subtree_of_type<Element>([&](auto& element) { - if (SelectorEngine::matches(selector.value(), element)) { + if (SelectorEngine::matches(selector.release_nonnull(), element)) { elements.append(element); } return IterationDecision::Continue; |