aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlselectelement.rs
diff options
context:
space:
mode:
authorCorey Farwell <coreyf@rwell.org>2016-10-13 23:34:55 -0400
committerCorey Farwell <coreyf@rwell.org>2016-10-19 23:35:19 -0400
commita45e1d9d95831077d3dcaf2cec696c43720a7bd5 (patch)
treea594c2a1112fe84d17f0213c4c7aeec9289e42c4 /components/script/dom/htmlselectelement.rs
parent6c28d4446a07fe5f2a6ae90e41ce21b02a04a6a0 (diff)
downloadservo-a45e1d9d95831077d3dcaf2cec696c43720a7bd5.tar.gz
servo-a45e1d9d95831077d3dcaf2cec696c43720a7bd5.zip
Implement "reset algorithm" for `<select>`.
Diffstat (limited to 'components/script/dom/htmlselectelement.rs')
-rw-r--r--components/script/dom/htmlselectelement.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs
index 34c9187b644..03d10e117f4 100644
--- a/components/script/dom/htmlselectelement.rs
+++ b/components/script/dom/htmlselectelement.rs
@@ -84,6 +84,16 @@ impl HTMLSelectElement {
HTMLSelectElementBinding::Wrap)
}
+ // https://html.spec.whatwg.org/multipage/#the-select-element:concept-form-reset-control
+ pub fn reset(&self) {
+ let node = self.upcast::<Node>();
+ for opt in node.traverse_preorder().filter_map(Root::downcast::<HTMLOptionElement>) {
+ opt.set_selectedness(opt.DefaultSelected());
+ opt.set_dirtiness(false);
+ }
+ self.ask_for_reset();
+ }
+
// https://html.spec.whatwg.org/multipage/#ask-for-a-reset
pub fn ask_for_reset(&self) {
if self.Multiple() {