diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index fc440d6d5a..1d35524eb9 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -72,6 +72,7 @@ set(SOURCES CSS/StyleValues/BorderRadiusStyleValue.cpp CSS/StyleValues/BorderStyleValue.cpp CSS/StyleValues/ColorStyleValue.cpp + CSS/StyleValues/ContentStyleValue.cpp CSS/Supports.cpp CSS/SyntaxHighlighter/SyntaxHighlighter.cpp CSS/Time.cpp diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index e5c64e6dbb..84b48ed75b 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include diff --git a/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp b/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp index 470faa05a9..311f9a45a9 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp index 7dae224edf..0e9bca9cb5 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -1021,13 +1022,6 @@ CalculatedStyleValue::CalculationResult CalculatedStyleValue::CalcNumberSumPartW return value->resolve(layout_node, percentage_basis); } -ErrorOr ContentStyleValue::to_string() const -{ - if (has_alt_text()) - return String::formatted("{} / {}", TRY(m_properties.content->to_string()), TRY(m_properties.alt_text->to_string())); - return m_properties.content->to_string(); -} - float Filter::Blur::resolved_radius(Layout::Node const& node) const { // Default value when omitted is 0px. diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h index 4d862b64c1..0719cc91a5 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -713,35 +713,6 @@ private: NonnullOwnPtr m_expression; }; -class ContentStyleValue final : public StyleValueWithDefaultOperators { -public: - static ValueComparingNonnullRefPtr create(ValueComparingNonnullRefPtr content, ValueComparingRefPtr alt_text) - { - return adopt_ref(*new ContentStyleValue(move(content), move(alt_text))); - } - - StyleValueList const& content() const { return *m_properties.content; } - bool has_alt_text() const { return !m_properties.alt_text.is_null(); } - StyleValueList const* alt_text() const { return m_properties.alt_text; } - - virtual ErrorOr to_string() const override; - - bool properties_equal(ContentStyleValue const& other) const { return m_properties == other.m_properties; }; - -private: - ContentStyleValue(ValueComparingNonnullRefPtr content, ValueComparingRefPtr alt_text) - : StyleValueWithDefaultOperators(Type::Content) - , m_properties { .content = move(content), .alt_text = move(alt_text) } - { - } - - struct Properties { - ValueComparingNonnullRefPtr content; - ValueComparingRefPtr alt_text; - bool operator==(Properties const&) const = default; - } m_properties; -}; - class FilterValueListStyleValue final : public StyleValueWithDefaultOperators { public: static ValueComparingNonnullRefPtr create( diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/ContentStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/ContentStyleValue.cpp new file mode 100644 index 0000000000..e3513fab71 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/ContentStyleValue.cpp @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2021, Tobias Christiansen + * Copyright (c) 2021-2023, Sam Atkins + * Copyright (c) 2022-2023, MacDue + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include "ContentStyleValue.h" + +namespace Web::CSS { + +ErrorOr ContentStyleValue::to_string() const +{ + if (has_alt_text()) + return String::formatted("{} / {}", TRY(m_properties.content->to_string()), TRY(m_properties.alt_text->to_string())); + return m_properties.content->to_string(); +} + +bool ContentStyleValue::Properties::operator==(ContentStyleValue::Properties const&) const = default; + +} diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/ContentStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/ContentStyleValue.h new file mode 100644 index 0000000000..761fa5501d --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/ContentStyleValue.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2021, Tobias Christiansen + * Copyright (c) 2021-2023, Sam Atkins + * Copyright (c) 2022-2023, MacDue + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Web::CSS { + +class ContentStyleValue final : public StyleValueWithDefaultOperators { +public: + static ValueComparingNonnullRefPtr create(ValueComparingNonnullRefPtr content, ValueComparingRefPtr alt_text) + { + return adopt_ref(*new ContentStyleValue(move(content), move(alt_text))); + } + virtual ~ContentStyleValue() override = default; + + StyleValueList const& content() const { return *m_properties.content; } + bool has_alt_text() const { return !m_properties.alt_text.is_null(); } + StyleValueList const* alt_text() const { return m_properties.alt_text; } + + virtual ErrorOr to_string() const override; + + bool properties_equal(ContentStyleValue const& other) const { return m_properties == other.m_properties; }; + +private: + ContentStyleValue(ValueComparingNonnullRefPtr content, ValueComparingRefPtr alt_text) + : StyleValueWithDefaultOperators(Type::Content) + , m_properties { .content = move(content), .alt_text = move(alt_text) } + { + } + + struct Properties { + ValueComparingNonnullRefPtr content; + ValueComparingRefPtr alt_text; + bool operator==(Properties const&) const; + } m_properties; +}; + +}