diff options
author | shanehandley <1322294+shanehandley@users.noreply.github.com> | 2024-05-13 18:07:48 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-13 08:07:48 +0000 |
commit | 8eeb888010eadfe3def85b9e1006e88a7699deb9 (patch) | |
tree | a657ed4baef95510a87e50e62bd6fc8675318869 /components/script/dom/htmlprogresselement.rs | |
parent | 3d4fd0e5507fc3b7b776fe4ad08d50335669b787 (diff) | |
download | servo-8eeb888010eadfe3def85b9e1006e88a7699deb9.tar.gz servo-8eeb888010eadfe3def85b9e1006e88a7699deb9.zip |
fix: Implement additional logic in DOMString::set_best_representation_of_the_floating_point_number in order to correct some failing tests related to -0 values. (#32272)
Diffstat (limited to 'components/script/dom/htmlprogresselement.rs')
-rw-r--r-- | components/script/dom/htmlprogresselement.rs | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/components/script/dom/htmlprogresselement.rs b/components/script/dom/htmlprogresselement.rs index 62f05a5c7db..a4c39f3e9ec 100644 --- a/components/script/dom/htmlprogresselement.rs +++ b/components/script/dom/htmlprogresselement.rs @@ -10,6 +10,7 @@ use crate::dom::bindings::codegen::Bindings::HTMLProgressElementBinding::HTMLPro use crate::dom::bindings::inheritance::Castable; use crate::dom::bindings::num::Finite; use crate::dom::bindings::root::{DomRoot, MutNullableDom}; +use crate::dom::bindings::str::DOMString; use crate::dom::document::Document; use crate::dom::element::Element; use crate::dom::htmlelement::HTMLElement; @@ -75,11 +76,15 @@ impl HTMLProgressElementMethods for HTMLProgressElement { }) } - // https://html.spec.whatwg.org/multipage/#dom-progress-value + /// <https://html.spec.whatwg.org/multipage/#dom-progress-value> fn SetValue(&self, new_val: Finite<f64>) { - if 0.0 <= *new_val { + if *new_val >= 0.0 { + let mut string_value = DOMString::from_string((*new_val).to_string()); + + string_value.set_best_representation_of_the_floating_point_number(); + self.upcast::<Element>() - .set_string_attribute(&local_name!("value"), (*new_val).to_string().into()); + .set_string_attribute(&local_name!("value"), string_value); } } @@ -100,10 +105,16 @@ impl HTMLProgressElementMethods for HTMLProgressElement { }) } - // https://html.spec.whatwg.org/multipage/#dom-progress-max + /// <https://html.spec.whatwg.org/multipage/#dom-progress-max> fn SetMax(&self, new_val: Finite<f64>) { - self.upcast::<Element>() - .set_string_attribute(&local_name!("max"), (*new_val).to_string().into()); + if *new_val > 0.0 { + let mut string_value = DOMString::from_string((*new_val).to_string()); + + string_value.set_best_representation_of_the_floating_point_number(); + + self.upcast::<Element>() + .set_string_attribute(&local_name!("max"), string_value); + } } // https://html.spec.whatwg.org/multipage/#dom-progress-position |