Kaynağa Gözat

LibWeb: Add CSSSupportsRule wrapper

Sam Atkins 3 yıl önce
ebeveyn
işleme
1cec8e473f

+ 4 - 0
Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp

@@ -11,10 +11,12 @@
 #include <LibWeb/Bindings/CSSRuleWrapper.h>
 #include <LibWeb/Bindings/CSSRuleWrapperFactory.h>
 #include <LibWeb/Bindings/CSSStyleRuleWrapper.h>
+#include <LibWeb/Bindings/CSSSupportsRuleWrapper.h>
 #include <LibWeb/CSS/CSSFontFaceRule.h>
 #include <LibWeb/CSS/CSSImportRule.h>
 #include <LibWeb/CSS/CSSMediaRule.h>
 #include <LibWeb/CSS/CSSStyleRule.h>
+#include <LibWeb/CSS/CSSSupportsRule.h>
 
 namespace Web::Bindings {
 
@@ -31,6 +33,8 @@ CSSRuleWrapper* wrap(JS::GlobalObject& global_object, CSS::CSSRule& rule)
         return static_cast<CSSRuleWrapper*>(wrap_impl(global_object, verify_cast<CSS::CSSMediaRule>(rule)));
     if (is<CSS::CSSFontFaceRule>(rule))
         return static_cast<CSSRuleWrapper*>(wrap_impl(global_object, verify_cast<CSS::CSSFontFaceRule>(rule)));
+    if (is<CSS::CSSSupportsRule>(rule))
+        return static_cast<CSSRuleWrapper*>(wrap_impl(global_object, verify_cast<CSS::CSSSupportsRule>(rule)));
     return static_cast<CSSRuleWrapper*>(wrap_impl(global_object, rule));
 }
 

+ 3 - 0
Userland/Libraries/LibWeb/Bindings/WindowObjectHelper.h

@@ -35,6 +35,8 @@
 #include <LibWeb/Bindings/CSSStyleRulePrototype.h>
 #include <LibWeb/Bindings/CSSStyleSheetConstructor.h>
 #include <LibWeb/Bindings/CSSStyleSheetPrototype.h>
+#include <LibWeb/Bindings/CSSSupportsRuleConstructor.h>
+#include <LibWeb/Bindings/CSSSupportsRulePrototype.h>
 #include <LibWeb/Bindings/CanvasGradientConstructor.h>
 #include <LibWeb/Bindings/CanvasGradientPrototype.h>
 #include <LibWeb/Bindings/CanvasRenderingContext2DConstructor.h>
@@ -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)                                                      \

+ 1 - 0
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)

+ 4 - 2
Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021, Sam Atkins <atkinssj@serenityos.org>
+ * Copyright (c) 2021-2022, Sam Atkins <atkinssj@serenityos.org>
  *
  * 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<CSSSupportsRule> create(NonnullRefPtr<Supports>&& supports, NonnullRefPtrVector<CSSRule>&& 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; };

+ 5 - 0
Userland/Libraries/LibWeb/CSS/CSSSupportsRule.idl

@@ -0,0 +1,5 @@
+#import <CSS/CSSConditionRule.idl>
+
+[Exposed=Window]
+interface CSSSupportsRule : CSSConditionRule {
+};

+ 1 - 0
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;