From 1d948f746244b19d106e5148ec3270cee7d279e7 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Fri, 24 Mar 2023 23:53:41 +0000 Subject: LibWeb: Split UnresolvedStyleValue out of StyleValue.{h,cpp} --- Userland/Libraries/LibWeb/CMakeLists.txt | 1 + Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp | 1 + Userland/Libraries/LibWeb/CSS/StyleComputer.cpp | 1 + Userland/Libraries/LibWeb/CSS/StyleValue.cpp | 17 +------- Userland/Libraries/LibWeb/CSS/StyleValue.h | 27 ------------- .../CSS/StyleValues/UnresolvedStyleValue.cpp | 31 +++++++++++++++ .../LibWeb/CSS/StyleValues/UnresolvedStyleValue.h | 45 ++++++++++++++++++++++ 7 files changed, 80 insertions(+), 43 deletions(-) create mode 100644 Userland/Libraries/LibWeb/CSS/StyleValues/UnresolvedStyleValue.cpp create mode 100644 Userland/Libraries/LibWeb/CSS/StyleValues/UnresolvedStyleValue.h (limited to 'Userland/Libraries/LibWeb') diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 377a8ddbbf..cf95c24267 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -95,6 +95,7 @@ set(SOURCES CSS/StyleValues/ShadowStyleValue.cpp CSS/StyleValues/TextDecorationStyleValue.cpp CSS/StyleValues/TransformationStyleValue.cpp + CSS/StyleValues/UnresolvedStyleValue.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 24f0170719..f5b16eef54 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -67,6 +67,7 @@ #include #include #include +#include #include #include #include diff --git a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp index 24afe8e3fa..6288d9bf43 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -44,6 +44,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 19b64f4b38..aa259167be 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -1151,22 +1152,6 @@ ErrorOr RectStyleValue::to_string() const return String::formatted("rect({} {} {} {})", m_rect.top_edge, m_rect.right_edge, m_rect.bottom_edge, m_rect.left_edge); } -ErrorOr UnresolvedStyleValue::to_string() const -{ - StringBuilder builder; - for (auto& value : m_values) - TRY(builder.try_append(TRY(value.to_string()))); - return builder.to_string(); -} - -bool UnresolvedStyleValue::equals(StyleValue const& other) const -{ - if (type() != other.type()) - return false; - // This is a case where comparing the strings actually makes sense. - return to_string().release_value_but_fixme_should_propagate_errors() == other.to_string().release_value_but_fixme_should_propagate_errors(); -} - bool StyleValueList::Properties::operator==(Properties const& other) const { return separator == other.separator && values.span() == other.values.span(); diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h index 2502ad0461..bb8d0af38a 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -622,33 +622,6 @@ private: NonnullOwnPtr m_expression; }; -class UnresolvedStyleValue final : public StyleValue { -public: - static ValueComparingNonnullRefPtr create(Vector&& values, bool contains_var_or_attr) - { - return adopt_ref(*new UnresolvedStyleValue(move(values), contains_var_or_attr)); - } - virtual ~UnresolvedStyleValue() override = default; - - virtual ErrorOr to_string() const override; - - Vector const& values() const { return m_values; } - bool contains_var_or_attr() const { return m_contains_var_or_attr; } - - virtual bool equals(StyleValue const& other) const override; - -private: - UnresolvedStyleValue(Vector&& values, bool contains_var_or_attr) - : StyleValue(Type::Unresolved) - , m_values(move(values)) - , m_contains_var_or_attr(contains_var_or_attr) - { - } - - Vector m_values; - bool m_contains_var_or_attr { false }; -}; - class UnsetStyleValue final : public StyleValueWithDefaultOperators { public: static ValueComparingNonnullRefPtr the() diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/UnresolvedStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/UnresolvedStyleValue.cpp new file mode 100644 index 0000000000..3b0a77e560 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/UnresolvedStyleValue.cpp @@ -0,0 +1,31 @@ +/* + * 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 "UnresolvedStyleValue.h" +#include + +namespace Web::CSS { + +ErrorOr UnresolvedStyleValue::to_string() const +{ + StringBuilder builder; + for (auto& value : m_values) + TRY(builder.try_append(TRY(value.to_string()))); + return builder.to_string(); +} + +bool UnresolvedStyleValue::equals(StyleValue const& other) const +{ + if (type() != other.type()) + return false; + // This is a case where comparing the strings actually makes sense. + return to_string().release_value_but_fixme_should_propagate_errors() == other.to_string().release_value_but_fixme_should_propagate_errors(); +} + +} diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/UnresolvedStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/UnresolvedStyleValue.h new file mode 100644 index 0000000000..4fa6e1cf08 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/UnresolvedStyleValue.h @@ -0,0 +1,45 @@ +/* + * 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 +#include +#include + +namespace Web::CSS { + +class UnresolvedStyleValue final : public StyleValue { +public: + static ValueComparingNonnullRefPtr create(Vector&& values, bool contains_var_or_attr) + { + return adopt_ref(*new UnresolvedStyleValue(move(values), contains_var_or_attr)); + } + virtual ~UnresolvedStyleValue() override = default; + + virtual ErrorOr to_string() const override; + + Vector const& values() const { return m_values; } + bool contains_var_or_attr() const { return m_contains_var_or_attr; } + + virtual bool equals(StyleValue const& other) const override; + +private: + UnresolvedStyleValue(Vector&& values, bool contains_var_or_attr) + : StyleValue(Type::Unresolved) + , m_values(move(values)) + , m_contains_var_or_attr(contains_var_or_attr) + { + } + + Vector m_values; + bool m_contains_var_or_attr { false }; +}; + +} -- cgit v1.2.3