diff --git a/Libraries/LibHTML/CSS/Selector.h b/Libraries/LibHTML/CSS/Selector.h index 1648a911f4..967b9e963d 100644 --- a/Libraries/LibHTML/CSS/Selector.h +++ b/Libraries/LibHTML/CSS/Selector.h @@ -18,6 +18,7 @@ public: enum class Relation { None, ImmediateChild, + Descendant, }; Relation relation { Relation::None }; diff --git a/Libraries/LibHTML/Dump.cpp b/Libraries/LibHTML/Dump.cpp index 0252c061b7..ae1d14e4f0 100644 --- a/Libraries/LibHTML/Dump.cpp +++ b/Libraries/LibHTML/Dump.cpp @@ -155,6 +155,9 @@ void dump_rule(const StyleRule& rule) case Selector::Component::Relation::ImmediateChild: relation_description = "{ImmediateChild}"; break; + case Selector::Component::Relation::Descendant: + relation_description = "{Descendant}"; + break; } dbgprintf(" %s:%s %s\n", type_description, component.value.characters(), relation_description); } diff --git a/Libraries/LibHTML/Parser/CSSParser.cpp b/Libraries/LibHTML/Parser/CSSParser.cpp index 61489b5d53..77df32ae2d 100644 --- a/Libraries/LibHTML/Parser/CSSParser.cpp +++ b/Libraries/LibHTML/Parser/CSSParser.cpp @@ -88,7 +88,7 @@ public: { consume_whitespace(); Selector::Component::Type type; - Selector::Component::Relation relation = Selector::Component::Relation::None; + Selector::Component::Relation relation = Selector::Component::Relation::Descendant; if (peek() == '{') return {}; @@ -149,6 +149,10 @@ public: break; } + if (components.is_empty()) + return; + components.first().relation = Selector::Component::Relation::None; + current_rule.selectors.append(Selector(move(components))); };