ladybird/Libraries/LibWeb/CSS/StyleValues/IntegerStyleValue.h
Callum Law b86377b9dc LibWeb: Clamp CSS <integer> value to i32 at parse time
This matches the behavior of other browsers. Previously we implemented
this at used-value time for z-index specifically.
2026-03-26 12:30:01 +01:00

46 lines
1.2 KiB
C++

/*
* Copyright (c) 2023-2025, Sam Atkins <sam@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibWeb/CSS/StyleValues/StyleValue.h>
namespace Web::CSS {
class IntegerStyleValue final : public StyleValue {
public:
static ValueComparingNonnullRefPtr<IntegerStyleValue const> create(i32 value)
{
return adopt_ref(*new (nothrow) IntegerStyleValue(value));
}
i32 integer() const { return m_value; }
virtual void serialize(StringBuilder&, SerializationMode) const override;
virtual Vector<Parser::ComponentValue> tokenize() const override;
virtual GC::Ref<CSSStyleValue> reify(JS::Realm&, FlyString const& associated_property) const override;
bool equals(StyleValue const& other) const override
{
if (type() != other.type())
return false;
auto const& other_integer = other.as_integer();
return m_value == other_integer.m_value;
}
virtual bool is_computationally_independent() const override { return true; }
private:
explicit IntegerStyleValue(i32 value)
: StyleValue(Type::Integer)
, m_value(value)
{
}
i32 m_value { 0 };
};
}