mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 15:28:11 +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