LibWeb/CSS: Move and rename PseudoElement types to prep for code gen

The upcoming generated types will match those for pseudo-classes: A
PseudoElementSelector type, that then holds a PseudoElement enum
defining what it is. That enum will be at the top level in the Web::CSS
namespace.

In order to keep the diffs clearer, this commit renames and moves the
types, and then a following one will replace the handwritten enum with
a generated one.
This commit is contained in:
Sam Atkins 2025-03-20 16:56:46 +00:00
parent 40760308c6
commit eb1ad8655e
42 changed files with 270 additions and 271 deletions

View file

@ -535,70 +535,70 @@ String serialize_a_group_of_selectors(SelectorList const& selectors)
return MUST(String::join(", "sv, selectors));
}
StringView Selector::PseudoElement::name(Selector::PseudoElement::Type pseudo_element)
StringView Selector::PseudoElementSelector::name(PseudoElement pseudo_element)
{
switch (pseudo_element) {
case Selector::PseudoElement::Type::Before:
case PseudoElement::Before:
return "before"sv;
case Selector::PseudoElement::Type::After:
case PseudoElement::After:
return "after"sv;
case Selector::PseudoElement::Type::FirstLine:
case PseudoElement::FirstLine:
return "first-line"sv;
case Selector::PseudoElement::Type::FirstLetter:
case PseudoElement::FirstLetter:
return "first-letter"sv;
case Selector::PseudoElement::Type::Marker:
case PseudoElement::Marker:
return "marker"sv;
case Selector::PseudoElement::Type::Track:
case PseudoElement::Track:
return "track"sv;
case Selector::PseudoElement::Type::Fill:
case PseudoElement::Fill:
return "fill"sv;
case Selector::PseudoElement::Type::Thumb:
case PseudoElement::Thumb:
return "thumb"sv;
case Selector::PseudoElement::Type::Placeholder:
case PseudoElement::Placeholder:
return "placeholder"sv;
case Selector::PseudoElement::Type::Selection:
case PseudoElement::Selection:
return "selection"sv;
case Selector::PseudoElement::Type::Backdrop:
case PseudoElement::Backdrop:
return "backdrop"sv;
case Selector::PseudoElement::Type::FileSelectorButton:
case PseudoElement::FileSelectorButton:
return "file-selector-button"sv;
case Selector::PseudoElement::Type::DetailsContent:
case PseudoElement::DetailsContent:
return "details-content"sv;
case Selector::PseudoElement::Type::KnownPseudoElementCount:
case Selector::PseudoElement::Type::UnknownWebKit:
case PseudoElement::KnownPseudoElementCount:
case PseudoElement::UnknownWebKit:
VERIFY_NOT_REACHED();
}
VERIFY_NOT_REACHED();
}
Optional<Selector::PseudoElement> Selector::PseudoElement::from_string(FlyString const& name)
Optional<Selector::PseudoElementSelector> Selector::PseudoElementSelector::from_string(FlyString const& name)
{
if (name.equals_ignoring_ascii_case("after"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::After };
return Selector::PseudoElementSelector { PseudoElement::After };
} else if (name.equals_ignoring_ascii_case("before"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::Before };
return Selector::PseudoElementSelector { PseudoElement::Before };
} else if (name.equals_ignoring_ascii_case("first-letter"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::FirstLetter };
return Selector::PseudoElementSelector { PseudoElement::FirstLetter };
} else if (name.equals_ignoring_ascii_case("first-line"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::FirstLine };
return Selector::PseudoElementSelector { PseudoElement::FirstLine };
} else if (name.equals_ignoring_ascii_case("marker"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::Marker };
return Selector::PseudoElementSelector { PseudoElement::Marker };
} else if (name.equals_ignoring_ascii_case("track"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::Track };
return Selector::PseudoElementSelector { PseudoElement::Track };
} else if (name.equals_ignoring_ascii_case("fill"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::Fill };
return Selector::PseudoElementSelector { PseudoElement::Fill };
} else if (name.equals_ignoring_ascii_case("thumb"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::Thumb };
return Selector::PseudoElementSelector { PseudoElement::Thumb };
} else if (name.equals_ignoring_ascii_case("placeholder"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::Placeholder };
return Selector::PseudoElementSelector { PseudoElement::Placeholder };
} else if (name.equals_ignoring_ascii_case("selection"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::Selection };
return Selector::PseudoElementSelector { PseudoElement::Selection };
} else if (name.equals_ignoring_ascii_case("backdrop"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::Backdrop };
return Selector::PseudoElementSelector { PseudoElement::Backdrop };
} else if (name.equals_ignoring_ascii_case("file-selector-button"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::FileSelectorButton };
return Selector::PseudoElementSelector { PseudoElement::FileSelectorButton };
} else if (name.equals_ignoring_ascii_case("details-content"sv)) {
return Selector::PseudoElement { Selector::PseudoElement::Type::DetailsContent };
return Selector::PseudoElementSelector { PseudoElement::DetailsContent };
}
return {};
}
@ -636,7 +636,7 @@ bool Selector::contains_unknown_webkit_pseudo_element() const
}
}
}
if (simple_selector.type == SimpleSelector::Type::PseudoElement && simple_selector.pseudo_element().type() == PseudoElement::Type::UnknownWebKit)
if (simple_selector.type == SimpleSelector::Type::PseudoElement && simple_selector.pseudo_element().type() == PseudoElement::UnknownWebKit)
return true;
}
}
@ -828,7 +828,7 @@ SelectorList adapt_nested_relative_selector_list(SelectorList const& selectors)
}
// https://drafts.csswg.org/selectors/#has-allowed-pseudo-element
bool is_has_allowed_pseudo_element(Selector::PseudoElement::Type)
bool is_has_allowed_pseudo_element(PseudoElement)
{
// No spec currently defines any pseudo-elements that are allowed in :has()
return false;