浏览代码

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.
Tim Ledbetter 1 年之前
父节点
当前提交
3a7a84f39b

+ 3 - 0
Tests/LibWeb/Text/expected/HTML/HTMLProgressElement-set-attributes.txt

@@ -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

+ 5 - 0
Tests/LibWeb/Text/input/HTML/HTMLProgressElement-set-attributes.html

@@ -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>

+ 2 - 2
Userland/Libraries/LibWeb/HTML/HTMLProgressElement.cpp

@@ -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();