|
@@ -27,6 +27,12 @@ Vector<NonnullRefPtr<MediaQuery>> Parser::parse_a_media_query_list(TokenStream<T
|
|
{
|
|
{
|
|
// https://www.w3.org/TR/mediaqueries-4/#mq-list
|
|
// https://www.w3.org/TR/mediaqueries-4/#mq-list
|
|
|
|
|
|
|
|
+ // AD-HOC: Ignore whitespace-only queries
|
|
|
|
+ // to make `@media {..}` equivalent to `@media all {..}`
|
|
|
|
+ tokens.skip_whitespace();
|
|
|
|
+ if (!tokens.has_next_token())
|
|
|
|
+ return {};
|
|
|
|
+
|
|
auto comma_separated_lists = parse_a_comma_separated_list_of_component_values(tokens);
|
|
auto comma_separated_lists = parse_a_comma_separated_list_of_component_values(tokens);
|
|
|
|
|
|
AK::Vector<NonnullRefPtr<MediaQuery>> media_queries;
|
|
AK::Vector<NonnullRefPtr<MediaQuery>> media_queries;
|
|
@@ -616,11 +622,6 @@ Optional<MediaFeatureValue> Parser::parse_media_feature_value(MediaFeatureID med
|
|
|
|
|
|
JS::GCPtr<CSSMediaRule> Parser::convert_to_media_rule(Rule& rule)
|
|
JS::GCPtr<CSSMediaRule> Parser::convert_to_media_rule(Rule& rule)
|
|
{
|
|
{
|
|
- if (rule.prelude().is_empty()) {
|
|
|
|
- dbgln_if(CSS_PARSER_DEBUG, "Failed to parse @media rule: Empty prelude.");
|
|
|
|
- return {};
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if (!rule.block()) {
|
|
if (!rule.block()) {
|
|
dbgln_if(CSS_PARSER_DEBUG, "Failed to parse @media rule: No block.");
|
|
dbgln_if(CSS_PARSER_DEBUG, "Failed to parse @media rule: No block.");
|
|
return {};
|
|
return {};
|
|
@@ -628,8 +629,6 @@ JS::GCPtr<CSSMediaRule> Parser::convert_to_media_rule(Rule& rule)
|
|
|
|
|
|
auto media_query_tokens = TokenStream { rule.prelude() };
|
|
auto media_query_tokens = TokenStream { rule.prelude() };
|
|
auto media_query_list = parse_a_media_query_list(media_query_tokens);
|
|
auto media_query_list = parse_a_media_query_list(media_query_tokens);
|
|
- if (media_query_list.is_empty())
|
|
|
|
- return {};
|
|
|
|
|
|
|
|
auto child_tokens = TokenStream { rule.block()->values() };
|
|
auto child_tokens = TokenStream { rule.block()->values() };
|
|
auto parser_rules = parse_a_list_of_rules(child_tokens);
|
|
auto parser_rules = parse_a_list_of_rules(child_tokens);
|