Sfoglia il codice sorgente

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 anno fa
parent
commit
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();