mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 11:52:44 +00:00 
			
		
		
		
	LibWeb: Implement CSS.supports(string) function :^)
				
					
				
			Websites being able to query whether we support a given CSS feature should prevent them from loading unnecessary polyfills for things we already support! Or at least, that's the nice theory. :^)
This commit is contained in:
		
							parent
							
								
									b1f8a73a05
								
							
						
					
					
						commit
						bc0ef5f69d
					
				
					 1 changed files with 13 additions and 6 deletions
				
			
		|  | @ -79,12 +79,19 @@ JS_DEFINE_NATIVE_FUNCTION(CSSNamespace::supports) | |||
|         return JS::Value(false); | ||||
|     } else { | ||||
|         // When the supports(conditionText) method is invoked with a single conditionText argument:
 | ||||
|         //
 | ||||
|         //    If conditionText, parsed and evaluated as a <supports-condition>, would return true, return true.
 | ||||
|         //
 | ||||
|         //    Otherwise, If conditionText, wrapped in parentheses and then parsed and evaluated as a <supports-condition>, would return true, return true.
 | ||||
|         //
 | ||||
|         //    Otherwise, return false.
 | ||||
|         String supports_text = vm.argument(0).to_string(global_object); | ||||
|         if (vm.exception()) | ||||
|             return {}; | ||||
| 
 | ||||
|         // If conditionText, parsed and evaluated as a <supports-condition>, would return true, return true.
 | ||||
|         if (auto supports = parse_css_supports({}, supports_text); supports && supports->matches()) | ||||
|             return JS::Value(true); | ||||
| 
 | ||||
|         // Otherwise, If conditionText, wrapped in parentheses and then parsed and evaluated as a <supports-condition>, would return true, return true.
 | ||||
|         if (auto supports = parse_css_supports({}, String::formatted("({})", supports_text)); supports && supports->matches()) | ||||
|             return JS::Value(true); | ||||
| 
 | ||||
|         // Otherwise, return false.
 | ||||
|         return JS::Value(false); | ||||
|     } | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Sam Atkins
						Sam Atkins