From 8dd259b8d8dbca8da7e0f8097bbcaaa5a930e7a1 Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Fri, 18 Jul 2025 10:53:55 +0200 Subject: [PATCH] LibWeb: Stub CSSCounterStyleRule Just the interface. Adds 6 new WPT subtest passes. --- Libraries/LibWeb/CMakeLists.txt | 1 + Libraries/LibWeb/CSS/CSSCounterStyleRule.cpp | 24 ++++++++++++++++++ Libraries/LibWeb/CSS/CSSCounterStyleRule.h | 25 +++++++++++++++++++ Libraries/LibWeb/CSS/CSSCounterStyleRule.idl | 17 +++++++++++++ Libraries/LibWeb/CSS/CSSRule.h | 2 +- Libraries/LibWeb/idl_files.cmake | 1 + .../Text/expected/all-window-properties.txt | 1 + 7 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 Libraries/LibWeb/CSS/CSSCounterStyleRule.cpp create mode 100644 Libraries/LibWeb/CSS/CSSCounterStyleRule.h create mode 100644 Libraries/LibWeb/CSS/CSSCounterStyleRule.idl diff --git a/Libraries/LibWeb/CMakeLists.txt b/Libraries/LibWeb/CMakeLists.txt index 26d4d4f9221..4db612d5534 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 00000000000..25b7b805e75 --- /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 00000000000..6cf4dbabc5f --- /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 00000000000..f6333a3ed63 --- /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 aeeb1242616..00558307987 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 5fa1d463343..a2f04c610c0 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 b6685611e19..a79498ab377 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