LibWeb: Limit progress element attribute values to the correct ranges

The max attribute is now clamped to ensure it is limited to positive
numbers and the value attribute is clamped to ensure it is non-negative.
This commit is contained in:
Tim Ledbetter 2024-03-18 06:13:01 +00:00 committed by Andreas Kling
parent ecbc686bc8
commit 3a7a84f39b
3 changed files with 10 additions and 2 deletions

View file

@ -6,3 +6,6 @@ value attribute after setting value attribute to 50: 1
value attribute after setting max attribute to 100: 50
max attribute after setting max attribute to 100: 100
value attribute after setting max attribute to 101: 100
value attribute after setting value attribute to -1: 0
value attribute after setting max attribute to 0: 0
max attribute after setting max attribute to 0: 1

View file

@ -16,5 +16,10 @@
println(`max attribute after setting max attribute to 100: ${progressElement.max}`);
progressElement.value = 101;
println(`value attribute after setting max attribute to 101: ${progressElement.value}`);
progressElement.value = -1;
println(`value attribute after setting value attribute to -1: ${progressElement.value}`);
progressElement.max = 0;
println(`value attribute after setting max attribute to 0: ${progressElement.value}`);
println(`max attribute after setting max attribute to 0: ${progressElement.max}`);
});
</script>

View file

@ -49,7 +49,7 @@ double HTMLProgressElement::value() const
WebIDL::ExceptionOr<void> HTMLProgressElement::set_value(double value)
{
if (value < 0)
return {};
value = 0;
TRY(set_attribute(HTML::AttributeNames::value, MUST(String::number(value))));
update_progress_value_element();
@ -69,7 +69,7 @@ double HTMLProgressElement::max() const
WebIDL::ExceptionOr<void> HTMLProgressElement::set_max(double value)
{
if (value <= 0)
return {};
value = 1;
TRY(set_attribute(HTML::AttributeNames::max, MUST(String::number(value))));
update_progress_value_element();