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;