mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:37:46 +00:00
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. :^)
This commit is contained in:
parent
8cae79cc8d
commit
776b1f4548
9 changed files with 48 additions and 38 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue