mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 19:32:45 +00:00 
			
		
		
		
	LibWeb: Make CSSConditionRule.conditionText read-only
				
					
				
			Previously @media rule conditions could be updated by assigning to `conditionText`. This change aligns our implementation with the CSSOM specification, which says `CSSConditionRule.conditionText` should be read-only.
This commit is contained in:
		
							parent
							
								
									b08fd1b9ae
								
							
						
					
					
						commit
						4646a87eba
					
				
					 8 changed files with 29 additions and 15 deletions
				
			
		|  | @ -0,0 +1,4 @@ | |||
|    @media rule conditionText initial value: not all | ||||
| @media rule conditionText value after assignment: not all | ||||
| @supports rule conditionText initial value: not (unsupported-property: unsupported-value) | ||||
| @supports rule conditionText value after assignment: not (unsupported-property: unsupported-value) | ||||
|  | @ -0,0 +1,24 @@ | |||
| <!DOCTYPE html> | ||||
| <style> | ||||
|     @media not all { | ||||
|       div { color: red; } | ||||
|     } | ||||
|     @supports not (unsupported-property: unsupported-value) { | ||||
|         div { display: none; } | ||||
|     } | ||||
| </style> | ||||
| <div>This text shouldn't be visible</div> | ||||
| <script src="../include.js"></script> | ||||
| <script> | ||||
|     test(() => { | ||||
|         const mediaRule = document.styleSheets[0].cssRules[0]; | ||||
|         println(`@media rule conditionText initial value: ${mediaRule.conditionText}`); | ||||
|         mediaRule.conditionText = "all"; | ||||
|         println(`@media rule conditionText value after assignment: ${mediaRule.conditionText}`); | ||||
| 
 | ||||
|         const supportsRule = document.styleSheets[0].cssRules[1]; | ||||
|         println(`@supports rule conditionText initial value: ${supportsRule.conditionText}`); | ||||
|         mediaRule.conditionText = "(unsupported-property: unsupported-value)"; | ||||
|         println(`@supports rule conditionText value after assignment: ${supportsRule.conditionText}`); | ||||
|     }); | ||||
| </script> | ||||
|  | @ -19,7 +19,6 @@ public: | |||
|     virtual ~CSSConditionRule() = default; | ||||
| 
 | ||||
|     virtual String condition_text() const = 0; | ||||
|     virtual void set_condition_text(String const&) = 0; | ||||
|     virtual bool condition_matches() const = 0; | ||||
| 
 | ||||
|     virtual void for_each_effective_style_rule(Function<void(CSSStyleRule const&)> const& callback) const override; | ||||
|  |  | |||
|  | @ -3,5 +3,5 @@ | |||
| // https://drafts.csswg.org/css-conditional-3/#the-cssconditionrule-interface | ||||
| [Exposed=Window] | ||||
| interface CSSConditionRule : CSSGroupingRule { | ||||
|     attribute CSSOMString conditionText; | ||||
|     readonly attribute CSSOMString conditionText; | ||||
| }; | ||||
|  |  | |||
|  | @ -42,11 +42,6 @@ String CSSMediaRule::condition_text() const | |||
|     return m_media->media_text(); | ||||
| } | ||||
| 
 | ||||
| void CSSMediaRule::set_condition_text(String const& text) | ||||
| { | ||||
|     m_media->set_media_text(text); | ||||
| } | ||||
| 
 | ||||
| // https://www.w3.org/TR/cssom-1/#serialize-a-css-rule
 | ||||
| String CSSMediaRule::serialized() const | ||||
| { | ||||
|  |  | |||
|  | @ -26,7 +26,6 @@ public: | |||
|     virtual Type type() const override { return Type::Media; } | ||||
| 
 | ||||
|     virtual String condition_text() const override; | ||||
|     virtual void set_condition_text(String const&) override; | ||||
|     virtual bool condition_matches() const override { return m_media->matches(); } | ||||
| 
 | ||||
|     MediaList* media() const { return m_media; } | ||||
|  |  | |||
|  | @ -35,12 +35,6 @@ String CSSSupportsRule::condition_text() const | |||
|     return m_supports->to_string(); | ||||
| } | ||||
| 
 | ||||
| void CSSSupportsRule::set_condition_text(String const& text) | ||||
| { | ||||
|     if (auto new_supports = parse_css_supports(Parser::ParsingContext { realm() }, text)) | ||||
|         m_supports = new_supports.release_nonnull(); | ||||
| } | ||||
| 
 | ||||
| // https://www.w3.org/TR/cssom-1/#serialize-a-css-rule
 | ||||
| String CSSSupportsRule::serialized() const | ||||
| { | ||||
|  |  | |||
|  | @ -27,7 +27,6 @@ public: | |||
|     virtual Type type() const override { return Type::Supports; } | ||||
| 
 | ||||
|     String condition_text() const override; | ||||
|     void set_condition_text(String const&) override; | ||||
|     virtual bool condition_matches() const override { return m_supports->matches(); } | ||||
| 
 | ||||
| private: | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Tim Ledbetter
						Tim Ledbetter