mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 20:15:17 +00:00
LibWeb/CSS: Implement pending-substitution value
This is a special value temporarily assigned to longhands when their shorthand is unresolved, and then later replaced once that is resolved.
This commit is contained in:
parent
13ec08c27c
commit
cc02778ef6
4 changed files with 48 additions and 0 deletions
|
@ -46,6 +46,7 @@
|
|||
#include <LibWeb/CSS/StyleValues/MathDepthStyleValue.h>
|
||||
#include <LibWeb/CSS/StyleValues/NumberStyleValue.h>
|
||||
#include <LibWeb/CSS/StyleValues/OpenTypeTaggedStyleValue.h>
|
||||
#include <LibWeb/CSS/StyleValues/PendingSubstitutionStyleValue.h>
|
||||
#include <LibWeb/CSS/StyleValues/PercentageStyleValue.h>
|
||||
#include <LibWeb/CSS/StyleValues/PositionStyleValue.h>
|
||||
#include <LibWeb/CSS/StyleValues/RadialGradientStyleValue.h>
|
||||
|
@ -281,6 +282,12 @@ OpenTypeTaggedStyleValue const& CSSStyleValue::as_open_type_tagged() const
|
|||
return static_cast<OpenTypeTaggedStyleValue const&>(*this);
|
||||
}
|
||||
|
||||
PendingSubstitutionStyleValue const& CSSStyleValue::as_pending_substitution() const
|
||||
{
|
||||
VERIFY(is_pending_substitution());
|
||||
return static_cast<PendingSubstitutionStyleValue const&>(*this);
|
||||
}
|
||||
|
||||
PercentageStyleValue const& CSSStyleValue::as_percentage() const
|
||||
{
|
||||
VERIFY(is_percentage());
|
||||
|
|
|
@ -120,6 +120,7 @@ public:
|
|||
MathDepth,
|
||||
Number,
|
||||
OpenTypeTagged,
|
||||
PendingSubstitution,
|
||||
Percentage,
|
||||
Position,
|
||||
RadialGradient,
|
||||
|
@ -284,6 +285,10 @@ public:
|
|||
OpenTypeTaggedStyleValue const& as_open_type_tagged() const;
|
||||
OpenTypeTaggedStyleValue& as_open_type_tagged() { return const_cast<OpenTypeTaggedStyleValue&>(const_cast<CSSStyleValue const&>(*this).as_open_type_tagged()); }
|
||||
|
||||
bool is_pending_substitution() const { return type() == Type::PendingSubstitution; }
|
||||
PendingSubstitutionStyleValue const& as_pending_substitution() const;
|
||||
PendingSubstitutionStyleValue& as_pending_substitution() { return const_cast<PendingSubstitutionStyleValue&>(const_cast<CSSStyleValue const&>(*this).as_pending_substitution()); }
|
||||
|
||||
bool is_percentage() const { return type() == Type::Percentage; }
|
||||
PercentageStyleValue const& as_percentage() const;
|
||||
PercentageStyleValue& as_percentage() { return const_cast<PercentageStyleValue&>(const_cast<CSSStyleValue const&>(*this).as_percentage()); }
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright (c) 2025, Sam Atkins <sam@ladybird.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibWeb/CSS/CSSStyleValue.h>
|
||||
|
||||
namespace Web::CSS {
|
||||
|
||||
// https://drafts.csswg.org/css-values-5/#pending-substitution-value
|
||||
class PendingSubstitutionStyleValue final : public StyleValueWithDefaultOperators<PendingSubstitutionStyleValue> {
|
||||
public:
|
||||
static ValueComparingNonnullRefPtr<PendingSubstitutionStyleValue> create()
|
||||
{
|
||||
static ValueComparingNonnullRefPtr<PendingSubstitutionStyleValue> instance = adopt_ref(*new (nothrow) PendingSubstitutionStyleValue());
|
||||
return instance;
|
||||
}
|
||||
virtual ~PendingSubstitutionStyleValue() override = default;
|
||||
virtual String to_string(SerializationMode) const override { return {}; }
|
||||
|
||||
// We shouldn't need to compare these, but in case we do: The nature of them is that their value is unknown, so
|
||||
// consider them all to be unique.
|
||||
bool properties_equal(PendingSubstitutionStyleValue const&) const { return false; }
|
||||
|
||||
private:
|
||||
PendingSubstitutionStyleValue()
|
||||
: StyleValueWithDefaultOperators(Type::PendingSubstitution)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
}
|
|
@ -233,6 +233,7 @@ class NumberOrCalculated;
|
|||
class NumberStyleValue;
|
||||
class OpenTypeTaggedStyleValue;
|
||||
class ParsedFontFace;
|
||||
class PendingSubstitutionStyleValue;
|
||||
class Percentage;
|
||||
class PercentageOrCalculated;
|
||||
class PercentageStyleValue;
|
||||
|
|
Loading…
Add table
Reference in a new issue