From fda71a6d4846f50b1dc120b62753244f337aef7f Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Fri, 22 Apr 2022 14:17:04 +0100 Subject: [PATCH] LibWeb: Add CSSMediaRule wrapper --- .../Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp | 4 ++++ Userland/Libraries/LibWeb/Bindings/WindowObjectHelper.h | 3 +++ Userland/Libraries/LibWeb/CMakeLists.txt | 1 + Userland/Libraries/LibWeb/CSS/CSSMediaRule.h | 6 ++++-- Userland/Libraries/LibWeb/CSS/CSSMediaRule.idl | 7 +++++++ Userland/Libraries/LibWeb/Forward.h | 1 + 6 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 Userland/Libraries/LibWeb/CSS/CSSMediaRule.idl diff --git a/Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp b/Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp index 509b655eb7..6a83775427 100644 --- a/Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp +++ b/Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp @@ -7,11 +7,13 @@ #include #include #include +#include #include #include #include #include #include +#include #include namespace Web::Bindings { @@ -25,6 +27,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))); 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 e6cbeb6abd..790be85388 100644 --- a/Userland/Libraries/LibWeb/Bindings/WindowObjectHelper.h +++ b/Userland/Libraries/LibWeb/Bindings/WindowObjectHelper.h @@ -23,6 +23,8 @@ #include #include #include +#include +#include #include #include #include @@ -366,6 +368,7 @@ ADD_WINDOW_OBJECT_INTERFACE(CSSFontFaceRule) \ ADD_WINDOW_OBJECT_INTERFACE(CSSGroupingRule) \ ADD_WINDOW_OBJECT_INTERFACE(CSSImportRule) \ + ADD_WINDOW_OBJECT_INTERFACE(CSSMediaRule) \ ADD_WINDOW_OBJECT_INTERFACE(CSSRule) \ ADD_WINDOW_OBJECT_INTERFACE(CSSRuleList) \ ADD_WINDOW_OBJECT_INTERFACE(CSSStyleDeclaration) \ diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 9ccd60be65..8c6274d8c2 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -455,6 +455,7 @@ libweb_js_wrapper(CSS/CSSConditionRule) libweb_js_wrapper(CSS/CSSFontFaceRule) libweb_js_wrapper(CSS/CSSGroupingRule) libweb_js_wrapper(CSS/CSSImportRule) +libweb_js_wrapper(CSS/CSSMediaRule) libweb_js_wrapper(CSS/CSSRule) libweb_js_wrapper(CSS/CSSRuleList) libweb_js_wrapper(CSS/CSSStyleDeclaration) diff --git a/Userland/Libraries/LibWeb/CSS/CSSMediaRule.h b/Userland/Libraries/LibWeb/CSS/CSSMediaRule.h index 47b99a8ec5..23a3ff7b07 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSMediaRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSMediaRule.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Sam Atkins + * Copyright (c) 2021-2022, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ @@ -18,12 +18,14 @@ class CSSMediaRule final : public CSSConditionRule { AK_MAKE_NONMOVABLE(CSSMediaRule); public: + using WrapperType = Bindings::CSSMediaRuleWrapper; + static NonnullRefPtr create(NonnullRefPtr&& media_queries, NonnullRefPtrVector&& rules) { return adopt_ref(*new CSSMediaRule(move(media_queries), move(rules))); } - ~CSSMediaRule() = default; + virtual ~CSSMediaRule() = default; virtual StringView class_name() const override { return "CSSMediaRule"; }; virtual Type type() const override { return Type::Media; }; diff --git a/Userland/Libraries/LibWeb/CSS/CSSMediaRule.idl b/Userland/Libraries/LibWeb/CSS/CSSMediaRule.idl new file mode 100644 index 0000000000..72e3c55454 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/CSSMediaRule.idl @@ -0,0 +1,7 @@ +#import +#import + +[Exposed=Window] +interface CSSMediaRule : CSSConditionRule { + [SameObject, PutForwards=mediaText] readonly attribute MediaList media; +}; diff --git a/Userland/Libraries/LibWeb/Forward.h b/Userland/Libraries/LibWeb/Forward.h index c22f2aaedb..0f060673a6 100644 --- a/Userland/Libraries/LibWeb/Forward.h +++ b/Userland/Libraries/LibWeb/Forward.h @@ -412,6 +412,7 @@ class CSSConditionRuleWrapper; class CSSFontFaceRuleWrapper; class CSSGroupingRuleWrapper; class CSSImportRuleWrapper; +class CSSMediaRuleWrapper; class CSSRuleListWrapper; class CSSRuleWrapper; class CSSStyleDeclarationWrapper;