/* * Copyright (c) 2025, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::CSS { // A non-spec base class for descriptor-list classes class CSSDescriptors : public CSSStyleDeclaration { WEB_PLATFORM_OBJECT(CSSDescriptors, CSSStyleDeclaration); public: virtual ~CSSDescriptors() override; virtual size_t length() const override; virtual String item(size_t index) const override; virtual WebIDL::ExceptionOr set_property(StringView property, StringView value, StringView priority) override; virtual WebIDL::ExceptionOr remove_property(StringView property) override; virtual String get_property_value(StringView property) const override; virtual StringView get_property_priority(StringView property) const override; Vector const& descriptors() const { return m_descriptors; } RefPtr descriptor(DescriptorID) const; RefPtr descriptor_or_initial_value(DescriptorID) const; virtual String serialized() const override; virtual WebIDL::ExceptionOr set_css_text(StringView) override; protected: CSSDescriptors(JS::Realm&, AtRuleID, Vector); private: bool set_a_css_declaration(DescriptorID, NonnullRefPtr, Important); virtual void visit_edges(Visitor&) override; AtRuleID m_at_rule_id; Vector m_descriptors; }; }