diff --git a/Libraries/LibHTML/Parser/CSSParser.cpp b/Libraries/LibHTML/Parser/CSSParser.cpp index 49b7a53113..e12cbd20ec 100644 --- a/Libraries/LibHTML/Parser/CSSParser.cpp +++ b/Libraries/LibHTML/Parser/CSSParser.cpp @@ -104,6 +104,16 @@ public: { } + bool next_is(const char* str) const + { + int len = strlen(str); + for (int i = 0; i < len; ++i) { + if (peek(i) != str[i]) + return false; + } + return true; + } + char peek(int offset = 0) const { if ((index + offset) < css.length()) @@ -335,6 +345,25 @@ public: void parse_rule() { + // FIXME: We ignore @media rules for now. + if (next_is("@media")) { + while (peek() != '{') + consume_one(); + int level = 0; + for (;;) { + auto ch = consume_one(); + if (ch == '{') { + ++level; + } else if (ch == '}') { + --level; + if (level == 0) + break; + } + } + consume_whitespace_or_comments(); + return; + } + parse_selector_list(); consume_specific('{'); parse_declaration();