mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-01 13:49:16 +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: 18cccd7633
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);
|
auto maybe_dimension = parse_length_percentage(tokens);
|
||||||
if (!maybe_dimension.has_value())
|
if (!maybe_dimension.has_value())
|
||||||
return nullptr;
|
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) {
|
if (reading_vertical) {
|
||||||
vertical_radii.append(maybe_dimension.release_value());
|
vertical_radii.append(maybe_dimension.release_value());
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -615,6 +615,10 @@
|
||||||
"border-bottom-left-radius",
|
"border-bottom-left-radius",
|
||||||
"border-bottom-right-radius"
|
"border-bottom-right-radius"
|
||||||
],
|
],
|
||||||
|
"valid-types": [
|
||||||
|
"length [0,∞]",
|
||||||
|
"percentage [0,∞]"
|
||||||
|
],
|
||||||
"percentages-resolve-to": "length"
|
"percentages-resolve-to": "length"
|
||||||
},
|
},
|
||||||
"border-right": {
|
"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
Add a link
Reference in a new issue