diff --git a/Libraries/LibWeb/CMakeLists.txt b/Libraries/LibWeb/CMakeLists.txt index 26d4d4f922..4db612d553 100644 --- a/Libraries/LibWeb/CMakeLists.txt +++ b/Libraries/LibWeb/CMakeLists.txt @@ -91,6 +91,7 @@ set(SOURCES CSS/CSS.cpp CSS/CSSAnimation.cpp CSS/CSSConditionRule.cpp + CSS/CSSCounterStyleRule.cpp CSS/CSSDescriptors.cpp CSS/CSSFontFaceDescriptors.cpp CSS/CSSFontFaceRule.cpp diff --git a/Libraries/LibWeb/CSS/CSSCounterStyleRule.cpp b/Libraries/LibWeb/CSS/CSSCounterStyleRule.cpp new file mode 100644 index 0000000000..25b7b805e7 --- /dev/null +++ b/Libraries/LibWeb/CSS/CSSCounterStyleRule.cpp @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025, Jelle Raaijmakers + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include + +namespace Web::CSS { + +CSSCounterStyleRule::CSSCounterStyleRule(JS::Realm& realm, Type type) + : CSSRule(realm, type) +{ +} + +void CSSCounterStyleRule::initialize(JS::Realm& realm) +{ + WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSCounterStyleRule); + Base::initialize(realm); +} + +} diff --git a/Libraries/LibWeb/CSS/CSSCounterStyleRule.h b/Libraries/LibWeb/CSS/CSSCounterStyleRule.h new file mode 100644 index 0000000000..6cf4dbabc5 --- /dev/null +++ b/Libraries/LibWeb/CSS/CSSCounterStyleRule.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2025, Jelle Raaijmakers + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Web::CSS { + +class CSSCounterStyleRule : public CSSRule { + WEB_PLATFORM_OBJECT(CSSCounterStyleRule, CSSRule); + +public: + virtual ~CSSCounterStyleRule() = default; + +protected: + CSSCounterStyleRule(JS::Realm&, Type); + + virtual void initialize(JS::Realm&) override; +}; + +} diff --git a/Libraries/LibWeb/CSS/CSSCounterStyleRule.idl b/Libraries/LibWeb/CSS/CSSCounterStyleRule.idl new file mode 100644 index 0000000000..f6333a3ed6 --- /dev/null +++ b/Libraries/LibWeb/CSS/CSSCounterStyleRule.idl @@ -0,0 +1,17 @@ +#import + +// https://drafts.csswg.org/css-counter-styles/#the-csscounterstylerule-interface +[Exposed=Window] +interface CSSCounterStyleRule : CSSRule { + [FIXME] attribute CSSOMString name; + [FIXME] attribute CSSOMString system; + [FIXME] attribute CSSOMString symbols; + [FIXME] attribute CSSOMString additiveSymbols; + [FIXME] attribute CSSOMString negative; + [FIXME] attribute CSSOMString prefix; + [FIXME] attribute CSSOMString suffix; + [FIXME] attribute CSSOMString range; + [FIXME] attribute CSSOMString pad; + [FIXME] attribute CSSOMString speakAs; + [FIXME] attribute CSSOMString fallback; +}; diff --git a/Libraries/LibWeb/CSS/CSSRule.h b/Libraries/LibWeb/CSS/CSSRule.h index aeeb124261..0055830798 100644 --- a/Libraries/LibWeb/CSS/CSSRule.h +++ b/Libraries/LibWeb/CSS/CSSRule.h @@ -63,7 +63,7 @@ public: virtual void clear_caches(); protected: - explicit CSSRule(JS::Realm&, Type); + CSSRule(JS::Realm&, Type); virtual void visit_edges(Cell::Visitor&) override; diff --git a/Libraries/LibWeb/idl_files.cmake b/Libraries/LibWeb/idl_files.cmake index 5fa1d46334..a2f04c610c 100644 --- a/Libraries/LibWeb/idl_files.cmake +++ b/Libraries/LibWeb/idl_files.cmake @@ -23,6 +23,7 @@ libweb_js_bindings(Crypto/SubtleCrypto) libweb_js_bindings(CSS/AnimationEvent) libweb_js_bindings(CSS/CSSAnimation) libweb_js_bindings(CSS/CSSConditionRule) +libweb_js_bindings(CSS/CSSCounterStyleRule) libweb_js_bindings(CSS/CSSFontFaceDescriptors) libweb_js_bindings(CSS/CSSFontFaceRule) libweb_js_bindings(CSS/CSSGroupingRule) diff --git a/Tests/LibWeb/Text/expected/all-window-properties.txt b/Tests/LibWeb/Text/expected/all-window-properties.txt index b6685611e1..a79498ab37 100644 --- a/Tests/LibWeb/Text/expected/all-window-properties.txt +++ b/Tests/LibWeb/Text/expected/all-window-properties.txt @@ -38,6 +38,7 @@ ByteLengthQueuingStrategy CDATASection CSSAnimation CSSConditionRule +CSSCounterStyleRule CSSFontFaceDescriptors CSSFontFaceRule CSSGroupingRule