/* * Copyright (c) 2025, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace Web::CSS { // https://drafts.csswg.org/css-values-5/#pending-substitution-value class PendingSubstitutionStyleValue final : public StyleValueWithDefaultOperators { public: static ValueComparingNonnullRefPtr create(StyleValue const& original_shorthand_value) { return adopt_ref(*new (nothrow) PendingSubstitutionStyleValue(original_shorthand_value)); } virtual ~PendingSubstitutionStyleValue() override = default; virtual void serialize(StringBuilder&, SerializationMode) const override { } virtual Vector tokenize() const override { // Not sure what to do here, but this isn't valid so returning GIV seems the most correct. return { Parser::ComponentValue { Parser::GuaranteedInvalidValue {} } }; } StyleValue const& original_shorthand_value() const { return *m_original_shorthand_value; } // 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; } // NB: We should never be in a position where we need to check this virtual bool is_computationally_independent() const override { VERIFY_NOT_REACHED(); } private: explicit PendingSubstitutionStyleValue(StyleValue const& original_shorthand_value) : StyleValueWithDefaultOperators(Type::PendingSubstitution) , m_original_shorthand_value(original_shorthand_value) { } NonnullRefPtr m_original_shorthand_value; }; }