Skip to content

Commit 5343c9b

Browse files
committed
LibWeb/CSS: Dump out media queries in more detail
Instead of just serializing them, dump out the query condition as a tree, taking advantage of the existing dump code for BooleanExpressions.
1 parent 1db13c5 commit 5343c9b

File tree

5 files changed

+37
-5
lines changed

5 files changed

+37
-5
lines changed

Libraries/LibWeb/CSS/CSSMediaRule.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ void CSSMediaRule::dump(StringBuilder& builder, int indent_levels) const
8080
{
8181
Base::dump(builder, indent_levels);
8282

83-
dump_indent(builder, indent_levels + 1);
84-
builder.appendff("Media: {}\n", condition_text());
83+
m_media->dump(builder, indent_levels + 1);
84+
8585
dump_indent(builder, indent_levels + 1);
8686
builder.appendff("Rules ({}):\n", css_rules().length());
8787
for (auto& rule : css_rules())

Libraries/LibWeb/CSS/MediaList.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org>
2+
* Copyright (c) 2021-2025, Sam Atkins <sam@ladybird.org>
33
* Copyright (c) 2022-2023, Andreas Kling <andreas@ladybird.org>
44
*
55
* SPDX-License-Identifier: BSD-2-Clause
@@ -10,6 +10,7 @@
1010
#include <LibWeb/CSS/CSSStyleSheet.h>
1111
#include <LibWeb/CSS/MediaList.h>
1212
#include <LibWeb/CSS/Parser/Parser.h>
13+
#include <LibWeb/Dump.h>
1314
#include <LibWeb/WebIDL/ExceptionOr.h>
1415

1516
namespace Web::CSS {
@@ -136,4 +137,12 @@ Optional<JS::Value> MediaList::item_value(size_t index) const
136137
return JS::PrimitiveString::create(vm(), m_media[index]->to_string());
137138
}
138139

140+
void MediaList::dump(StringBuilder& builder, int indent_levels) const
141+
{
142+
dump_indent(builder, indent_levels);
143+
builder.appendff("Media list ({}):\n", m_media.size());
144+
for (auto const& media : m_media)
145+
media->dump(builder, indent_levels + 1);
146+
}
147+
139148
}

Libraries/LibWeb/CSS/MediaList.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021-2022, Sam Atkins <atkinssj@serenityos.org>
2+
* Copyright (c) 2021-2025, Sam Atkins <sam@ladybird.org>
33
* Copyright (c) 2022, Andreas Kling <andreas@ladybird.org>
44
* Copyright (c) 2023, Luke Wilde <lukew@serenityos.org>
55
*
@@ -38,6 +38,8 @@ class MediaList final : public Bindings::PlatformObject {
3838

3939
void set_associated_style_sheet(GC::Ref<StyleSheet> style_sheet) { m_associated_style_sheet = style_sheet; }
4040

41+
void dump(StringBuilder&, int indent_levels = 0) const;
42+
4143
private:
4244
MediaList(JS::Realm&, Vector<NonnullRefPtr<MediaQuery>>&&);
4345

Libraries/LibWeb/CSS/MediaQuery.cpp

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <LibWeb/CSS/Serialize.h>
99
#include <LibWeb/CSS/StyleComputer.h>
1010
#include <LibWeb/DOM/Document.h>
11+
#include <LibWeb/Dump.h>
1112
#include <LibWeb/HTML/Window.h>
1213
#include <LibWeb/Page/Page.h>
1314

@@ -261,7 +262,7 @@ MatchResult MediaFeature::compare(DOM::Document const& document, MediaFeatureVal
261262
void MediaFeature::dump(StringBuilder& builder, int indent_levels) const
262263
{
263264
indent(builder, indent_levels);
264-
builder.appendff("MediaFeature: {}", to_string());
265+
builder.appendff("MediaFeature: {}\n", to_string());
265266
}
266267

267268
String MediaQuery::to_string() const
@@ -318,6 +319,24 @@ bool MediaQuery::evaluate(DOM::Document const& document)
318319
return m_matches;
319320
}
320321

322+
void MediaQuery::dump(StringBuilder& builder, int indent_levels) const
323+
{
324+
dump_indent(builder, indent_levels);
325+
builder.appendff("Media condition: (matches = {})\n", m_matches);
326+
327+
dump_indent(builder, indent_levels + 1);
328+
builder.appendff("Negated: {}\n", m_negated);
329+
330+
dump_indent(builder, indent_levels + 1);
331+
builder.appendff("Type: {}\n", m_media_type.name);
332+
333+
if (m_media_condition) {
334+
dump_indent(builder, indent_levels + 1);
335+
builder.append("Condition:\n"sv);
336+
m_media_condition->dump(builder, indent_levels + 2);
337+
}
338+
}
339+
321340
// https://www.w3.org/TR/cssom-1/#serialize-a-media-query-list
322341
String serialize_a_media_query_list(Vector<NonnullRefPtr<MediaQuery>> const& media_queries)
323342
{

Libraries/LibWeb/CSS/MediaQuery.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,8 @@ class MediaQuery : public RefCounted<MediaQuery> {
221221
bool evaluate(DOM::Document const&);
222222
String to_string() const;
223223

224+
void dump(StringBuilder&, int indent_levels = 0) const;
225+
224226
private:
225227
MediaQuery() = default;
226228

0 commit comments

Comments
 (0)