ladybird/Libraries/LibWeb/CSS/StylePropertyMapReadOnly.h
Sam Atkins 1620fc5bf6 LibWeb/CSS: Stub out StylePropertyMapReadOnly
Nothing yet produces this, and the useful parts of get() and get_all()
will have to wait until type reification is implemented.
2025-08-13 09:47:50 +01:00

47 lines
1.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) 2025, Sam Atkins <sam@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibWeb/Bindings/PlatformObject.h>
#include <LibWeb/CSS/StyleValues/StyleValue.h>
#include <LibWeb/DOM/AbstractElement.h>
#include <LibWeb/WebIDL/Types.h>
namespace Web::CSS {
// https://drafts.css-houdini.org/css-typed-om-1/#stylepropertymapreadonly
class StylePropertyMapReadOnly : public Bindings::PlatformObject {
WEB_PLATFORM_OBJECT(StylePropertyMapReadOnly, Bindings::PlatformObject);
GC_DECLARE_ALLOCATOR(StylePropertyMapReadOnly);
public:
[[nodiscard]] static GC::Ref<StylePropertyMapReadOnly> create_computed_style(JS::Realm&, DOM::AbstractElement);
virtual ~StylePropertyMapReadOnly() override;
WebIDL::ExceptionOr<Variant<GC::Ref<CSSStyleValue>, Empty>> get(String property);
WebIDL::ExceptionOr<Vector<GC::Ref<CSSStyleValue>>> get_all(String property);
WebIDL::ExceptionOr<bool> has(String property);
WebIDL::UnsignedLong size() const;
protected:
explicit StylePropertyMapReadOnly(JS::Realm&, GC::Ref<CSSStyleDeclaration>);
explicit StylePropertyMapReadOnly(JS::Realm&, Optional<DOM::AbstractElement> = {});
virtual void initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override;
Optional<DOM::AbstractElement> m_source_element;
GC::Ptr<CSSStyleDeclaration> m_source_declaration;
// https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymapreadonly-declarations-slot
// A StylePropertyMapReadOnly object has a [[declarations]] internal slot, which is a map reflecting the CSS
// declaration blocks declarations.
HashMap<FlyString, NonnullRefPtr<StyleValue>> m_declarations;
};
}