mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 18:27:35 +00:00
LibWeb: Split UnresolvedStyleValue out of StyleValue.{h,cpp}
This commit is contained in:
parent
87b7efa109
commit
1d948f7462
7 changed files with 80 additions and 43 deletions
|
@ -95,6 +95,7 @@ set(SOURCES
|
||||||
CSS/StyleValues/ShadowStyleValue.cpp
|
CSS/StyleValues/ShadowStyleValue.cpp
|
||||||
CSS/StyleValues/TextDecorationStyleValue.cpp
|
CSS/StyleValues/TextDecorationStyleValue.cpp
|
||||||
CSS/StyleValues/TransformationStyleValue.cpp
|
CSS/StyleValues/TransformationStyleValue.cpp
|
||||||
|
CSS/StyleValues/UnresolvedStyleValue.cpp
|
||||||
CSS/Supports.cpp
|
CSS/Supports.cpp
|
||||||
CSS/SyntaxHighlighter/SyntaxHighlighter.cpp
|
CSS/SyntaxHighlighter/SyntaxHighlighter.cpp
|
||||||
CSS/Time.cpp
|
CSS/Time.cpp
|
||||||
|
|
|
@ -67,6 +67,7 @@
|
||||||
#include <LibWeb/CSS/StyleValues/TextDecorationStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/TextDecorationStyleValue.h>
|
||||||
#include <LibWeb/CSS/StyleValues/TimeStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/TimeStyleValue.h>
|
||||||
#include <LibWeb/CSS/StyleValues/TransformationStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/TransformationStyleValue.h>
|
||||||
|
#include <LibWeb/CSS/StyleValues/UnresolvedStyleValue.h>
|
||||||
#include <LibWeb/DOM/Document.h>
|
#include <LibWeb/DOM/Document.h>
|
||||||
#include <LibWeb/Dump.h>
|
#include <LibWeb/Dump.h>
|
||||||
#include <LibWeb/Infra/Strings.h>
|
#include <LibWeb/Infra/Strings.h>
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
#include <LibWeb/CSS/StyleValues/OverflowStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/OverflowStyleValue.h>
|
||||||
#include <LibWeb/CSS/StyleValues/PercentageStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/PercentageStyleValue.h>
|
||||||
#include <LibWeb/CSS/StyleValues/TextDecorationStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/TextDecorationStyleValue.h>
|
||||||
|
#include <LibWeb/CSS/StyleValues/UnresolvedStyleValue.h>
|
||||||
#include <LibWeb/DOM/Document.h>
|
#include <LibWeb/DOM/Document.h>
|
||||||
#include <LibWeb/DOM/Element.h>
|
#include <LibWeb/DOM/Element.h>
|
||||||
#include <LibWeb/FontCache.h>
|
#include <LibWeb/FontCache.h>
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
#include <LibWeb/CSS/StyleValues/TextDecorationStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/TextDecorationStyleValue.h>
|
||||||
#include <LibWeb/CSS/StyleValues/TimeStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/TimeStyleValue.h>
|
||||||
#include <LibWeb/CSS/StyleValues/TransformationStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/TransformationStyleValue.h>
|
||||||
|
#include <LibWeb/CSS/StyleValues/UnresolvedStyleValue.h>
|
||||||
#include <LibWeb/DOM/Document.h>
|
#include <LibWeb/DOM/Document.h>
|
||||||
#include <LibWeb/HTML/BrowsingContext.h>
|
#include <LibWeb/HTML/BrowsingContext.h>
|
||||||
#include <LibWeb/Loader/LoadRequest.h>
|
#include <LibWeb/Loader/LoadRequest.h>
|
||||||
|
@ -1151,22 +1152,6 @@ ErrorOr<String> RectStyleValue::to_string() const
|
||||||
return String::formatted("rect({} {} {} {})", m_rect.top_edge, m_rect.right_edge, m_rect.bottom_edge, m_rect.left_edge);
|
return String::formatted("rect({} {} {} {})", m_rect.top_edge, m_rect.right_edge, m_rect.bottom_edge, m_rect.left_edge);
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorOr<String> 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
|
bool StyleValueList::Properties::operator==(Properties const& other) const
|
||||||
{
|
{
|
||||||
return separator == other.separator && values.span() == other.values.span();
|
return separator == other.separator && values.span() == other.values.span();
|
||||||
|
|
|
@ -622,33 +622,6 @@ private:
|
||||||
NonnullOwnPtr<CalcSum> m_expression;
|
NonnullOwnPtr<CalcSum> m_expression;
|
||||||
};
|
};
|
||||||
|
|
||||||
class UnresolvedStyleValue final : public StyleValue {
|
|
||||||
public:
|
|
||||||
static ValueComparingNonnullRefPtr<UnresolvedStyleValue> create(Vector<Parser::ComponentValue>&& values, bool contains_var_or_attr)
|
|
||||||
{
|
|
||||||
return adopt_ref(*new UnresolvedStyleValue(move(values), contains_var_or_attr));
|
|
||||||
}
|
|
||||||
virtual ~UnresolvedStyleValue() override = default;
|
|
||||||
|
|
||||||
virtual ErrorOr<String> to_string() const override;
|
|
||||||
|
|
||||||
Vector<Parser::ComponentValue> 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<Parser::ComponentValue>&& values, bool contains_var_or_attr)
|
|
||||||
: StyleValue(Type::Unresolved)
|
|
||||||
, m_values(move(values))
|
|
||||||
, m_contains_var_or_attr(contains_var_or_attr)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector<Parser::ComponentValue> m_values;
|
|
||||||
bool m_contains_var_or_attr { false };
|
|
||||||
};
|
|
||||||
|
|
||||||
class UnsetStyleValue final : public StyleValueWithDefaultOperators<UnsetStyleValue> {
|
class UnsetStyleValue final : public StyleValueWithDefaultOperators<UnsetStyleValue> {
|
||||||
public:
|
public:
|
||||||
static ValueComparingNonnullRefPtr<UnsetStyleValue> the()
|
static ValueComparingNonnullRefPtr<UnsetStyleValue> the()
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
||||||
|
* Copyright (c) 2021, Tobias Christiansen <tobyase@serenityos.org>
|
||||||
|
* Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org>
|
||||||
|
* Copyright (c) 2022-2023, MacDue <macdue@dueutil.tech>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "UnresolvedStyleValue.h"
|
||||||
|
#include <AK/StringBuilder.h>
|
||||||
|
|
||||||
|
namespace Web::CSS {
|
||||||
|
|
||||||
|
ErrorOr<String> 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
||||||
|
* Copyright (c) 2021, Tobias Christiansen <tobyase@serenityos.org>
|
||||||
|
* Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org>
|
||||||
|
* Copyright (c) 2022-2023, MacDue <macdue@dueutil.tech>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <AK/Vector.h>
|
||||||
|
#include <LibWeb/CSS/Parser/ComponentValue.h>
|
||||||
|
#include <LibWeb/CSS/StyleValue.h>
|
||||||
|
|
||||||
|
namespace Web::CSS {
|
||||||
|
|
||||||
|
class UnresolvedStyleValue final : public StyleValue {
|
||||||
|
public:
|
||||||
|
static ValueComparingNonnullRefPtr<UnresolvedStyleValue> create(Vector<Parser::ComponentValue>&& values, bool contains_var_or_attr)
|
||||||
|
{
|
||||||
|
return adopt_ref(*new UnresolvedStyleValue(move(values), contains_var_or_attr));
|
||||||
|
}
|
||||||
|
virtual ~UnresolvedStyleValue() override = default;
|
||||||
|
|
||||||
|
virtual ErrorOr<String> to_string() const override;
|
||||||
|
|
||||||
|
Vector<Parser::ComponentValue> 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<Parser::ComponentValue>&& values, bool contains_var_or_attr)
|
||||||
|
: StyleValue(Type::Unresolved)
|
||||||
|
, m_values(move(values))
|
||||||
|
, m_contains_var_or_attr(contains_var_or_attr)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector<Parser::ComponentValue> m_values;
|
||||||
|
bool m_contains_var_or_attr { false };
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue