aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlprogresselement.rs
diff options
context:
space:
mode:
authorshanehandley <1322294+shanehandley@users.noreply.github.com>2024-05-13 18:07:48 +1000
committerGitHub <noreply@github.com>2024-05-13 08:07:48 +0000
commit8eeb888010eadfe3def85b9e1006e88a7699deb9 (patch)
treea657ed4baef95510a87e50e62bd6fc8675318869 /components/script/dom/htmlprogresselement.rs
parent3d4fd0e5507fc3b7b776fe4ad08d50335669b787 (diff)
downloadservo-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.rs23
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