mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 04:25:13 +00:00
LibWeb/CSS: Don't allow negative values in border-radius
property
This commit is contained in:
parent
632fc73643
commit
18cccd7633
Notes:
github-actions[bot]
2025-03-14 15:09:00 +00:00
Author: https://github.com/tcl3 Commit: https://github.com/LadybirdBrowser/ladybird/commit/18cccd76334 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3916 Reviewed-by: https://github.com/AtkinsSJ ✅
4 changed files with 53 additions and 0 deletions
|
@ -1659,6 +1659,10 @@ RefPtr<CSSStyleValue> Parser::parse_border_radius_shorthand_value(TokenStream<Co
|
|||
auto maybe_dimension = parse_length_percentage(tokens);
|
||||
if (!maybe_dimension.has_value())
|
||||
return nullptr;
|
||||
if (maybe_dimension->is_length() && !property_accepts_length(PropertyID::BorderRadius, maybe_dimension->length()))
|
||||
return nullptr;
|
||||
if (maybe_dimension->is_percentage() && !property_accepts_percentage(PropertyID::BorderRadius, maybe_dimension->percentage()))
|
||||
return nullptr;
|
||||
if (reading_vertical) {
|
||||
vertical_radii.append(maybe_dimension.release_value());
|
||||
} else {
|
||||
|
|
|
@ -615,6 +615,10 @@
|
|||
"border-bottom-left-radius",
|
||||
"border-bottom-right-radius"
|
||||
],
|
||||
"valid-types": [
|
||||
"length [0,∞]",
|
||||
"percentage [0,∞]"
|
||||
],
|
||||
"percentages-resolve-to": "length"
|
||||
},
|
||||
"border-right": {
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
Harness status: OK
|
||||
|
||||
Found 11 tests
|
||||
|
||||
11 Pass
|
||||
Pass e.style['border-radius'] = "auto" should not set the property value
|
||||
Pass e.style['border-radius'] = "none" should not set the property value
|
||||
Pass e.style['border-radius'] = "1px 2px 3px 4px 5px" should not set the property value
|
||||
Pass e.style['border-radius'] = "-1px" should not set the property value
|
||||
Pass e.style['border-radius'] = "1px -2px" should not set the property value
|
||||
Pass e.style['border-radius'] = "1em /" should not set the property value
|
||||
Pass e.style['border-radius'] = "1px / 2px / 3px" should not set the property value
|
||||
Pass e.style['border-radius'] = "4 / 5" should not set the property value
|
||||
Pass e.style['border-radius'] = "5em 1px 5em 2% 5em 3px 5em 4%" should not set the property value
|
||||
Pass e.style['border-radius'] = "1px 5em 2% 5em 3px 5em 4% 5em" should not set the property value
|
||||
Pass e.style['border-top-left-radius'] = "10px 20px 30px" should not set the property value
|
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Backgrounds and Borders Module Level 3: parsing border-radius with invalid values</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-radius">
|
||||
<meta name="assert" content="border-radius supports only the grammar '<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?'.">
|
||||
<script src="../../../resources/testharness.js"></script>
|
||||
<script src="../../../resources/testharnessreport.js"></script>
|
||||
<script src="../../../css/support/parsing-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("border-radius", "auto");
|
||||
test_invalid_value("border-radius", "none");
|
||||
test_invalid_value("border-radius", "1px 2px 3px 4px 5px");
|
||||
test_invalid_value("border-radius", "-1px");
|
||||
test_invalid_value("border-radius", "1px -2px");
|
||||
test_invalid_value("border-radius", "1em /");
|
||||
test_invalid_value("border-radius", "1px / 2px / 3px");
|
||||
test_invalid_value("border-radius", "4 / 5");
|
||||
|
||||
test_invalid_value("border-radius", "5em 1px 5em 2% 5em 3px 5em 4%");
|
||||
test_invalid_value("border-radius", "1px 5em 2% 5em 3px 5em 4% 5em");
|
||||
|
||||
test_invalid_value("border-top-left-radius", "10px 20px 30px");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Reference in a new issue