mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 19:22:45 +00:00 
			
		
		
		
	LibWeb: Add the CSSStyleRule interface with some limited functionality
This commit is contained in:
		
							parent
							
								
									71087422f6
								
							
						
					
					
						commit
						6cda24097b
					
				
					 8 changed files with 84 additions and 1 deletions
				
			
		|  | @ -825,6 +825,8 @@ static bool should_emit_wrapper_factory(IDL::Interface const& interface) | ||||||
|         return false; |         return false; | ||||||
|     if (interface.name.ends_with("Element")) |     if (interface.name.ends_with("Element")) | ||||||
|         return false; |         return false; | ||||||
|  |     if (interface.name.starts_with("CSS") && interface.name.ends_with("Rule")) | ||||||
|  |         return false; | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -1492,6 +1494,7 @@ void generate_implementation(IDL::Interface const& interface) | ||||||
| #include <LibWeb/Bindings/@wrapper_class@.h> | #include <LibWeb/Bindings/@wrapper_class@.h> | ||||||
| #include <LibWeb/Bindings/CSSRuleListWrapper.h> | #include <LibWeb/Bindings/CSSRuleListWrapper.h> | ||||||
| #include <LibWeb/Bindings/CSSRuleWrapper.h> | #include <LibWeb/Bindings/CSSRuleWrapper.h> | ||||||
|  | #include <LibWeb/Bindings/CSSRuleWrapperFactory.h> | ||||||
| #include <LibWeb/Bindings/CSSStyleSheetWrapper.h> | #include <LibWeb/Bindings/CSSStyleSheetWrapper.h> | ||||||
| #include <LibWeb/Bindings/CanvasRenderingContext2DWrapper.h> | #include <LibWeb/Bindings/CanvasRenderingContext2DWrapper.h> | ||||||
| #include <LibWeb/Bindings/CommentWrapper.h> | #include <LibWeb/Bindings/CommentWrapper.h> | ||||||
|  | @ -2688,6 +2691,7 @@ void generate_prototype_implementation(IDL::Interface const& interface) | ||||||
| #include <LibWeb/Bindings/AbortSignalWrapper.h> | #include <LibWeb/Bindings/AbortSignalWrapper.h> | ||||||
| #include <LibWeb/Bindings/CSSRuleListWrapper.h> | #include <LibWeb/Bindings/CSSRuleListWrapper.h> | ||||||
| #include <LibWeb/Bindings/CSSRuleWrapper.h> | #include <LibWeb/Bindings/CSSRuleWrapper.h> | ||||||
|  | #include <LibWeb/Bindings/CSSRuleWrapperFactory.h> | ||||||
| #include <LibWeb/Bindings/CSSStyleDeclarationWrapper.h> | #include <LibWeb/Bindings/CSSStyleDeclarationWrapper.h> | ||||||
| #include <LibWeb/Bindings/CSSStyleSheetWrapper.h> | #include <LibWeb/Bindings/CSSStyleSheetWrapper.h> | ||||||
| #include <LibWeb/Bindings/CanvasRenderingContext2DWrapper.h> | #include <LibWeb/Bindings/CanvasRenderingContext2DWrapper.h> | ||||||
|  |  | ||||||
							
								
								
									
										22
									
								
								Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,22 @@ | ||||||
|  | /*
 | ||||||
|  |  * Copyright (c) 2021, Andreas Kling <kling@serenityos.org> | ||||||
|  |  * | ||||||
|  |  * SPDX-License-Identifier: BSD-2-Clause | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include <AK/TypeCasts.h> | ||||||
|  | #include <LibWeb/Bindings/CSSRuleWrapper.h> | ||||||
|  | #include <LibWeb/Bindings/CSSRuleWrapperFactory.h> | ||||||
|  | #include <LibWeb/Bindings/CSSStyleRuleWrapper.h> | ||||||
|  | #include <LibWeb/CSS/CSSStyleRule.h> | ||||||
|  | 
 | ||||||
|  | namespace Web::Bindings { | ||||||
|  | 
 | ||||||
|  | CSSRuleWrapper* wrap(JS::GlobalObject& global_object, CSS::CSSRule& rule) | ||||||
|  | { | ||||||
|  |     if (is<CSS::CSSStyleRule>(rule)) | ||||||
|  |         return static_cast<CSSRuleWrapper*>(wrap_impl(global_object, verify_cast<CSS::CSSStyleRule>(rule))); | ||||||
|  |     return static_cast<CSSRuleWrapper*>(wrap_impl(global_object, rule)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | } | ||||||
							
								
								
									
										16
									
								
								Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								Userland/Libraries/LibWeb/Bindings/CSSRuleWrapperFactory.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | ||||||
|  | /*
 | ||||||
|  |  * Copyright (c) 2021, Andreas Kling <kling@serenityos.org> | ||||||
|  |  * | ||||||
|  |  * SPDX-License-Identifier: BSD-2-Clause | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include <LibJS/Forward.h> | ||||||
|  | #include <LibWeb/Forward.h> | ||||||
|  | 
 | ||||||
|  | namespace Web::Bindings { | ||||||
|  | 
 | ||||||
|  | CSSRuleWrapper* wrap(JS::GlobalObject&, CSS::CSSRule&); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| set(SOURCES | set(SOURCES | ||||||
|  |     Bindings/CSSRuleWrapperFactory.cpp | ||||||
|     Bindings/CSSStyleDeclarationWrapperCustom.cpp |     Bindings/CSSStyleDeclarationWrapperCustom.cpp | ||||||
|     Bindings/EventListenerWrapper.cpp |     Bindings/EventListenerWrapper.cpp | ||||||
|     Bindings/EventTargetWrapperFactory.cpp |     Bindings/EventTargetWrapperFactory.cpp | ||||||
|  | @ -343,6 +344,7 @@ endfunction() | ||||||
| libweb_js_wrapper(CSS/CSSRule) | libweb_js_wrapper(CSS/CSSRule) | ||||||
| libweb_js_wrapper(CSS/CSSRuleList) | libweb_js_wrapper(CSS/CSSRuleList) | ||||||
| libweb_js_wrapper(CSS/CSSStyleDeclaration) | libweb_js_wrapper(CSS/CSSStyleDeclaration) | ||||||
|  | libweb_js_wrapper(CSS/CSSStyleRule) | ||||||
| libweb_js_wrapper(CSS/CSSStyleSheet) | libweb_js_wrapper(CSS/CSSStyleSheet) | ||||||
| libweb_js_wrapper(CSS/MediaQueryList) | libweb_js_wrapper(CSS/MediaQueryList) | ||||||
| libweb_js_wrapper(CSS/Screen) | libweb_js_wrapper(CSS/Screen) | ||||||
|  |  | ||||||
|  | @ -18,4 +18,29 @@ CSSStyleRule::~CSSStyleRule() | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // https://drafts.csswg.org/cssom/#dom-cssstylerule-selectortext
 | ||||||
|  | String CSSStyleRule::selector_text() const | ||||||
|  | { | ||||||
|  |     TODO(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // https://drafts.csswg.org/cssom/#dom-cssstylerule-selectortext
 | ||||||
|  | void CSSStyleRule::set_selector_text(StringView selector_text) | ||||||
|  | { | ||||||
|  |     // FIXME: 1. Run the parse a group of selectors algorithm on the given value.
 | ||||||
|  | 
 | ||||||
|  |     // FIXME: 2. If the algorithm returns a non-null value replace the associated group of selectors with the returned value.
 | ||||||
|  | 
 | ||||||
|  |     // FIXME: 3. Otherwise, if the algorithm returns a null value, do nothing.
 | ||||||
|  | 
 | ||||||
|  |     (void)selector_text; | ||||||
|  |     TODO(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // https://drafts.csswg.org/cssom/#dom-cssstylerule-style
 | ||||||
|  | CSSStyleDeclaration* CSSStyleRule::style() | ||||||
|  | { | ||||||
|  |     return m_declaration; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -20,6 +20,8 @@ class CSSStyleRule : public CSSRule { | ||||||
|     AK_MAKE_NONMOVABLE(CSSStyleRule); |     AK_MAKE_NONMOVABLE(CSSStyleRule); | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|  |     using WrapperType = Bindings::CSSStyleRuleWrapper; | ||||||
|  | 
 | ||||||
|     static NonnullRefPtr<CSSStyleRule> create(NonnullRefPtrVector<Selector>&& selectors, NonnullRefPtr<CSSStyleDeclaration>&& declaration) |     static NonnullRefPtr<CSSStyleRule> create(NonnullRefPtrVector<Selector>&& selectors, NonnullRefPtr<CSSStyleDeclaration>&& declaration) | ||||||
|     { |     { | ||||||
|         return adopt_ref(*new CSSStyleRule(move(selectors), move(declaration))); |         return adopt_ref(*new CSSStyleRule(move(selectors), move(declaration))); | ||||||
|  | @ -33,6 +35,11 @@ public: | ||||||
|     virtual StringView class_name() const { return "CSSStyleRule"; }; |     virtual StringView class_name() const { return "CSSStyleRule"; }; | ||||||
|     virtual Type type() const { return Type::Style; }; |     virtual Type type() const { return Type::Style; }; | ||||||
| 
 | 
 | ||||||
|  |     String selector_text() const; | ||||||
|  |     void set_selector_text(StringView); | ||||||
|  | 
 | ||||||
|  |     CSSStyleDeclaration* style(); | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
|     CSSStyleRule(NonnullRefPtrVector<Selector>&&, NonnullRefPtr<CSSStyleDeclaration>&&); |     CSSStyleRule(NonnullRefPtrVector<Selector>&&, NonnullRefPtr<CSSStyleDeclaration>&&); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								Userland/Libraries/LibWeb/CSS/CSSStyleRule.idl
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								Userland/Libraries/LibWeb/CSS/CSSStyleRule.idl
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | interface CSSStyleRule { | ||||||
|  | 
 | ||||||
|  |     attribute CSSOMString selectorText; | ||||||
|  |     [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; | ||||||
|  | 
 | ||||||
|  | }; | ||||||
|  | @ -262,9 +262,10 @@ class URLSearchParamsIterator; | ||||||
| namespace Web::Bindings { | namespace Web::Bindings { | ||||||
| class AbortControllerWrapper; | class AbortControllerWrapper; | ||||||
| class AbortSignalWrapper; | class AbortSignalWrapper; | ||||||
| class CSSRuleWrapper; |  | ||||||
| class CSSRuleListWrapper; | class CSSRuleListWrapper; | ||||||
|  | class CSSRuleWrapper; | ||||||
| class CSSStyleDeclarationWrapper; | class CSSStyleDeclarationWrapper; | ||||||
|  | class CSSStyleRuleWrapper; | ||||||
| class CSSStyleSheetWrapper; | class CSSStyleSheetWrapper; | ||||||
| class CanvasRenderingContext2DWrapper; | class CanvasRenderingContext2DWrapper; | ||||||
| class CharacterDataWrapper; | class CharacterDataWrapper; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling