From 46bba44f8bb184ae87ffd00ab4347bbe8ed6b2a7 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Fri, 15 Oct 2021 16:40:44 +0100 Subject: [PATCH] LibWeb: Move media-query-list serialization code to MediaQuery.{h,cpp} It's not a complicated algorithm, but having it in one place instead of 2, and with spec comments, is nice. :^) --- Userland/Libraries/LibWeb/CSS/MediaList.cpp | 4 +--- Userland/Libraries/LibWeb/CSS/MediaQuery.cpp | 14 ++++++++++++++ Userland/Libraries/LibWeb/CSS/MediaQuery.h | 2 ++ Userland/Libraries/LibWeb/CSS/MediaQueryList.cpp | 4 +--- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Userland/Libraries/LibWeb/CSS/MediaList.cpp b/Userland/Libraries/LibWeb/CSS/MediaList.cpp index b723800519..17b81c95f1 100644 --- a/Userland/Libraries/LibWeb/CSS/MediaList.cpp +++ b/Userland/Libraries/LibWeb/CSS/MediaList.cpp @@ -21,9 +21,7 @@ MediaList::~MediaList() // https://www.w3.org/TR/cssom-1/#dom-medialist-mediatext String MediaList::media_text() const { - StringBuilder builder; - builder.join(", ", m_media); - return builder.to_string(); + return serialize_a_media_query_list(m_media); } // https://www.w3.org/TR/cssom-1/#dom-medialist-mediatext diff --git a/Userland/Libraries/LibWeb/CSS/MediaQuery.cpp b/Userland/Libraries/LibWeb/CSS/MediaQuery.cpp index 83effe782f..a61b825942 100644 --- a/Userland/Libraries/LibWeb/CSS/MediaQuery.cpp +++ b/Userland/Libraries/LibWeb/CSS/MediaQuery.cpp @@ -227,4 +227,18 @@ bool MediaQuery::evaluate(DOM::Window const& window) return m_matches; } +// https://www.w3.org/TR/cssom-1/#serialize-a-media-query-list +String serialize_a_media_query_list(NonnullRefPtrVector const& media_queries) +{ + // 1. If the media query list is empty, then return the empty string. + if (media_queries.is_empty()) + return ""; + + // 2. Serialize each media query in the list of media queries, in the same order as they + // appear in the media query list, and then serialize the list. + StringBuilder builder; + builder.join(", ", media_queries); + return builder.to_string(); +} + } diff --git a/Userland/Libraries/LibWeb/CSS/MediaQuery.h b/Userland/Libraries/LibWeb/CSS/MediaQuery.h index 0e4e3fad65..5cb14662bf 100644 --- a/Userland/Libraries/LibWeb/CSS/MediaQuery.h +++ b/Userland/Libraries/LibWeb/CSS/MediaQuery.h @@ -93,6 +93,8 @@ private: bool m_matches { false }; }; +String serialize_a_media_query_list(NonnullRefPtrVector const&); + } namespace AK { diff --git a/Userland/Libraries/LibWeb/CSS/MediaQueryList.cpp b/Userland/Libraries/LibWeb/CSS/MediaQueryList.cpp index f581a96e96..f354be13dc 100644 --- a/Userland/Libraries/LibWeb/CSS/MediaQueryList.cpp +++ b/Userland/Libraries/LibWeb/CSS/MediaQueryList.cpp @@ -29,9 +29,7 @@ MediaQueryList::~MediaQueryList() // https://drafts.csswg.org/cssom-view/#dom-mediaquerylist-media String MediaQueryList::media() const { - StringBuilder builder; - builder.join(", ", m_media); - return builder.to_string(); + return serialize_a_media_query_list(m_media); } // https://drafts.csswg.org/cssom-view/#dom-mediaquerylist-matches