ladybird/Libraries/LibWeb/CSS/StyleValues/UnresolvedStyleValue.h
Callum Law fec79b62e4 LibWeb: Always pass ASF presence to UnresolvedSV::create()
There was only one place that we weren't passing this where we could
have ASFs so let's just handle that there and explicitly mark the others
as having no ASFs to avoid unnecessary work.

No functional changes
2026-03-30 19:57:36 +01:00

47 lines
2 KiB
C++

/*
* Copyright (c) 2018-2020, Andreas Kling <andreas@ladybird.org>
* Copyright (c) 2021, Tobias Christiansen <tobyase@serenityos.org>
* Copyright (c) 2021-2025, Sam Atkins <sam@ladybird.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/StyleValues/StyleValue.h>
namespace Web::CSS {
class UnresolvedStyleValue final : public StyleValue {
public:
static ValueComparingNonnullRefPtr<UnresolvedStyleValue const> create(Vector<Parser::ComponentValue>&& values, Parser::SubstitutionFunctionsPresence, Optional<String> original_source_text = {});
virtual ~UnresolvedStyleValue() override = default;
virtual void serialize(StringBuilder&, SerializationMode) const override;
virtual Vector<Parser::ComponentValue> tokenize() const override { return m_values; }
Vector<Parser::ComponentValue> const& values() const { return m_values; }
bool contains_arbitrary_substitution_function() const { return m_substitution_functions_presence.has_any(); }
bool includes_attr_function() const { return m_substitution_functions_presence.attr; }
bool includes_inherit_function() const { return m_substitution_functions_presence.inherit; }
bool includes_if_function() const { return m_substitution_functions_presence.if_; }
bool includes_var_function() const { return m_substitution_functions_presence.var; }
virtual bool equals(StyleValue const& other) const override;
virtual GC::Ref<CSSStyleValue> reify(JS::Realm&, FlyString const& associated_property) const override;
virtual bool is_computationally_independent() const override { VERIFY_NOT_REACHED(); }
private:
UnresolvedStyleValue(Vector<Parser::ComponentValue>&& values, Parser::SubstitutionFunctionsPresence, Optional<String> original_source_text);
Vector<Parser::ComponentValue> m_values;
Parser::SubstitutionFunctionsPresence m_substitution_functions_presence {};
Optional<String> m_original_source_text;
};
}