diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs
index 066a264b6531..64defdd9235f 100644
--- a/components/script/dom/htmloptionelement.rs
+++ b/components/script/dom/htmloptionelement.rs
@@ -140,11 +140,11 @@ impl HTMLOptionElementMethods for HTMLOptionElement {
self.dirtiness.set(true);
self.selectedness.set(selected);
if let Some(select) = self.upcast::().ancestors()
- .filter_map(Root::downcast::).next() {
- if selected {
- select.pick_option(self);
- }
- select.ask_for_reset();
+ .filter_map(Root::downcast::).next() {
+ if selected {
+ select.pick_option(self);
+ }
+ select.ask_for_reset();
}
}
}
@@ -198,13 +198,13 @@ impl VirtualMethods for HTMLOptionElement {
self.upcast::().check_parent_disabled_state_for_option();
- if self.Selected() {
- let node = self.upcast::();
- if let Some(select) = node.ancestors()
- .filter_map(Root::downcast::)
- .next() {
+ if let Some(select) = self.upcast::().ancestors()
+ .filter_map(Root::downcast::)
+ .next() {
+ if self.Selected() {
select.pick_option(self);
}
+ select.ask_for_reset();
}
}
diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs
index 20e473b88c9e..4fd69b390db9 100644
--- a/components/script/dom/htmlselectelement.rs
+++ b/components/script/dom/htmlselectelement.rs
@@ -64,7 +64,7 @@ impl HTMLSelectElement {
opt.set_selectedness(false);
last_selected = Some(Root::from_ref(opt.r()));
}
- let element = opt.upcast::();
+ let element = opt.upcast::();
if first_enabled.is_none() && !element.get_disabled_state() {
first_enabled = Some(Root::from_ref(opt.r()));
}
@@ -82,6 +82,7 @@ impl HTMLSelectElement {
}
}
+ // https://html.spec.whatwg.org/multipage/#concept-select-pick
pub fn pick_option(&self, picked: &HTMLOptionElement) {
if !self.Multiple() {
let node = self.upcast::();