mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2026-04-19 10:20:22 +00:00
By making use of the WEB_PLATFORM_OBJECT macro we can remove the boilerplate of needing to add this override for every serializable platform object so that we can check whether they are exposed or not.
51 lines
1.7 KiB
C++
51 lines
1.7 KiB
C++
/*
|
|
* Copyright (c) 2025, Sam Atkins <sam@ladybird.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <LibWeb/CSS/CSSStyleDeclaration.h>
|
|
#include <LibWeb/CSS/Descriptor.h>
|
|
#include <LibWeb/CSS/DescriptorID.h>
|
|
|
|
namespace Web::CSS {
|
|
|
|
// A non-spec base class for descriptor-list classes
|
|
class CSSDescriptors : public CSSStyleDeclaration {
|
|
WEB_NON_IDL_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<void> set_property(FlyString const& property, StringView value, StringView priority) override;
|
|
virtual WebIDL::ExceptionOr<String> remove_property(FlyString const& property) override;
|
|
virtual String get_property_value(FlyString const& property) const override;
|
|
virtual StringView get_property_priority(FlyString const& property) const override;
|
|
|
|
Vector<Descriptor> const& descriptors() const { return m_descriptors; }
|
|
RefPtr<StyleValue const> descriptor(DescriptorID) const;
|
|
RefPtr<StyleValue const> descriptor_or_initial_value(DescriptorID) const;
|
|
virtual String serialized() const override;
|
|
|
|
virtual WebIDL::ExceptionOr<void> set_css_text(StringView) override;
|
|
|
|
protected:
|
|
CSSDescriptors(JS::Realm&, AtRuleID, Vector<Descriptor>);
|
|
|
|
private:
|
|
bool set_a_css_declaration(DescriptorID, NonnullRefPtr<StyleValue const>, Important);
|
|
|
|
virtual void visit_edges(Visitor&) override;
|
|
|
|
AtRuleID m_at_rule_id;
|
|
Vector<Descriptor> m_descriptors;
|
|
};
|
|
|
|
bool is_shorthand(AtRuleID, DescriptorID);
|
|
void for_each_expanded_longhand(AtRuleID, DescriptorID, RefPtr<StyleValue const>, Function<void(DescriptorID, RefPtr<StyleValue const>)>);
|
|
|
|
}
|