Browse Source

LibWeb: Ignore parsed pseudo-element selectors & empty complex selectors

Currently we don't deal with them, so they shouldn't return a
SimpleSelector - that'd be a false positive.

Also don't produce a ComplexSelector if no SimpleSelector was parsed.

This fixes a couple of rendering issues on awesomekling.github.io:
link colours, footer size, content max-width (and possibly more!)
Linus Groh 5 years ago
parent
commit
673527d314
1 changed files with 9 additions and 0 deletions
  1. 9 0
      Libraries/LibWeb/Parser/CSSParser.cpp

+ 9 - 0
Libraries/LibWeb/Parser/CSSParser.cpp

@@ -383,6 +383,12 @@ public:
             auto pseudo_name = String::copy(buffer);
             buffer.clear();
 
+
+            // Ignore for now, otherwise we produce a "false positive" selector
+            // and apply styles to the element itself, not its pseudo element
+            if (is_pseudo_element)
+                return {};
+
             if (pseudo_name == "link")
                 simple_selector.pseudo_class = Selector::SimpleSelector::PseudoClass::Link;
             else if (pseudo_name == "hover")
@@ -442,6 +448,9 @@ public:
             PARSE_ASSERT(simple_selectors.size() < 100);
         }
 
+        if (simple_selectors.is_empty())
+            return {};
+
         return Selector::ComplexSelector { relation, move(simple_selectors) };
     }