From 1cec8e473f9ca6c13847ebfaed9bc0f4e2e4aecd Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Fri, 22 Apr 2022 14:17:23 +0100 Subject: [PATCH] LibWeb: Add CSSSupportsRule wrapper --- .../Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp | 4 ++++ Userland/Libraries/LibWeb/Bindings/WindowObjectHelper.h | 3 +++ Userland/Libraries/LibWeb/CMakeLists.txt | 1 + Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h | 6 ++++-- Userland/Libraries/LibWeb/CSS/CSSSupportsRule.idl | 5 +++++ Userland/Libraries/LibWeb/Forward.h | 1 + 6 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 Userland/Libraries/LibWeb/CSS/CSSSupportsRule.idl diff --git a/Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp b/Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp index 6a83775427..c46d960a31 100644 --- a/Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp +++ b/Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp @@ -11,10 +11,12 @@ #include #include #include +#include #include #include #include #include +#include namespace Web::Bindings { @@ -31,6 +33,8 @@ CSSRuleWrapper* wrap(JS::GlobalObject& global_object, CSS::CSSRule& rule) return static_cast(wrap_impl(global_object, verify_cast(rule))); if (is(rule)) return static_cast(wrap_impl(global_object, verify_cast(rule))); + if (is(rule)) + return static_cast(wrap_impl(global_object, verify_cast(rule))); return static_cast(wrap_impl(global_object, rule)); } diff --git a/Userland/Libraries/LibWeb/Bindings/WindowObjectHelper.h b/Userland/Libraries/LibWeb/Bindings/WindowObjectHelper.h index 790be85388..10f4ecec5d 100644 --- a/Userland/Libraries/LibWeb/Bindings/WindowObjectHelper.h +++ b/Userland/Libraries/LibWeb/Bindings/WindowObjectHelper.h @@ -35,6 +35,8 @@ #include #include #include +#include +#include #include #include #include @@ -374,6 +376,7 @@ ADD_WINDOW_OBJECT_INTERFACE(CSSStyleDeclaration) \ ADD_WINDOW_OBJECT_INTERFACE(CSSStyleRule) \ ADD_WINDOW_OBJECT_INTERFACE(CSSStyleSheet) \ + ADD_WINDOW_OBJECT_INTERFACE(CSSSupportsRule) \ ADD_WINDOW_OBJECT_INTERFACE(CanvasGradient) \ ADD_WINDOW_OBJECT_INTERFACE(CanvasRenderingContext2D) \ ADD_WINDOW_OBJECT_INTERFACE(CharacterData) \ diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 8c6274d8c2..2d27f4e1ff 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -461,6 +461,7 @@ libweb_js_wrapper(CSS/CSSRuleList) libweb_js_wrapper(CSS/CSSStyleDeclaration) libweb_js_wrapper(CSS/CSSStyleRule) libweb_js_wrapper(CSS/CSSStyleSheet) +libweb_js_wrapper(CSS/CSSSupportsRule) libweb_js_wrapper(CSS/MediaList) libweb_js_wrapper(CSS/MediaQueryList) libweb_js_wrapper(CSS/MediaQueryListEvent) diff --git a/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h b/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h index 19d678865e..23d4704a43 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Sam Atkins + * Copyright (c) 2021-2022, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ @@ -21,12 +21,14 @@ class CSSSupportsRule final : public CSSConditionRule { AK_MAKE_NONMOVABLE(CSSSupportsRule); public: + using WrapperType = Bindings::CSSSupportsRuleWrapper; + static NonnullRefPtr create(NonnullRefPtr&& supports, NonnullRefPtrVector&& rules) { return adopt_ref(*new CSSSupportsRule(move(supports), move(rules))); } - ~CSSSupportsRule() = default; + virtual ~CSSSupportsRule() = default; virtual StringView class_name() const override { return "CSSSupportsRule"; }; virtual Type type() const override { return Type::Supports; }; diff --git a/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.idl b/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.idl new file mode 100644 index 0000000000..f60b2a2ebf --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.idl @@ -0,0 +1,5 @@ +#import + +[Exposed=Window] +interface CSSSupportsRule : CSSConditionRule { +}; diff --git a/Userland/Libraries/LibWeb/Forward.h b/Userland/Libraries/LibWeb/Forward.h index 0f060673a6..de34410f9a 100644 --- a/Userland/Libraries/LibWeb/Forward.h +++ b/Userland/Libraries/LibWeb/Forward.h @@ -418,6 +418,7 @@ class CSSRuleWrapper; class CSSStyleDeclarationWrapper; class CSSStyleRuleWrapper; class CSSStyleSheetWrapper; +class CSSSupportsRuleWrapper; class CustomEventWrapper; class DocumentFragmentWrapper; class DocumentTypeWrapper;