.first) [8,8 784x17]
+ TextPaintable (TextNode<#text>)
+ PaintableWithLines (BlockContainer(anonymous)) [8,25 784x0]
+ PaintableWithLines (BlockContainer
.second) [8,25 784x17]
+ TextPaintable (TextNode<#text>)
+ PaintableWithLines (BlockContainer(anonymous)) [8,42 784x0]
diff --git a/Tests/LibWeb/Layout/input/media-query-empty.html b/Tests/LibWeb/Layout/input/media-query-empty.html
new file mode 100644
index 0000000000..54924c9ee9
--- /dev/null
+++ b/Tests/LibWeb/Layout/input/media-query-empty.html
@@ -0,0 +1,15 @@
+
+
First
+
Second
+
Invalid
diff --git a/Userland/Libraries/LibWeb/CSS/MediaList.cpp b/Userland/Libraries/LibWeb/CSS/MediaList.cpp
index 16db4ab544..c9446d99c5 100644
--- a/Userland/Libraries/LibWeb/CSS/MediaList.cpp
+++ b/Userland/Libraries/LibWeb/CSS/MediaList.cpp
@@ -100,9 +100,8 @@ bool MediaList::evaluate(HTML::Window const& window)
bool MediaList::matches() const
{
- if (m_media.is_empty()) {
+ if (m_media.is_empty())
return true;
- }
for (auto& media : m_media) {
if (media->matches())
diff --git a/Userland/Libraries/LibWeb/CSS/MediaQueryList.cpp b/Userland/Libraries/LibWeb/CSS/MediaQueryList.cpp
index cb8b9de37d..fc774916a0 100644
--- a/Userland/Libraries/LibWeb/CSS/MediaQueryList.cpp
+++ b/Userland/Libraries/LibWeb/CSS/MediaQueryList.cpp
@@ -51,10 +51,14 @@ String MediaQueryList::media() const
// https://drafts.csswg.org/cssom-view/#dom-mediaquerylist-matches
bool MediaQueryList::matches() const
{
+ if (m_media.is_empty())
+ return true;
+
for (auto& media : m_media) {
if (media->matches())
return true;
}
+
return false;
}
@@ -64,6 +68,9 @@ bool MediaQueryList::evaluate()
if (!window)
return false;
+ if (m_media.is_empty())
+ return true;
+
bool now_matches = false;
for (auto& media : m_media) {
now_matches = now_matches || media->evaluate(*window);
diff --git a/Userland/Libraries/LibWeb/CSS/Parser/MediaParsing.cpp b/Userland/Libraries/LibWeb/CSS/Parser/MediaParsing.cpp
index 2000409034..3234912903 100644
--- a/Userland/Libraries/LibWeb/CSS/Parser/MediaParsing.cpp
+++ b/Userland/Libraries/LibWeb/CSS/Parser/MediaParsing.cpp
@@ -27,6 +27,12 @@ Vector
> Parser::parse_a_media_query_list(TokenStream> media_queries;
@@ -616,11 +622,6 @@ Optional Parser::parse_media_feature_value(MediaFeatureID med
JS::GCPtr 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()) {
dbgln_if(CSS_PARSER_DEBUG, "Failed to parse @media rule: No block.");
return {};
@@ -628,8 +629,6 @@ JS::GCPtr Parser::convert_to_media_rule(Rule& rule)
auto media_query_tokens = TokenStream { rule.prelude() };
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 parser_rules = parse_a_list_of_rules(child_tokens);