diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs index 5cb0ae0fc51..1b27a10b311 100644 --- a/components/script/dom/htmloptionelement.rs +++ b/components/script/dom/htmloptionelement.rs @@ -64,6 +64,10 @@ impl HTMLOptionElement { self.selectedness.set(selected); } + pub fn set_dirtiness(&self, dirtiness: bool) { + self.dirtiness.set(dirtiness); + } + fn pick_if_selected_and_reset(&self) { if let Some(select) = self.upcast::().ancestors() .filter_map(Root::downcast::) diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index 4825ce6a2a8..34c9187b644 100644 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -258,6 +258,37 @@ impl HTMLSelectElementMethods for HTMLSelectElement { fn Remove(&self) { self.upcast::().Remove() } + + // https://html.spec.whatwg.org/multipage/#dom-select-value + fn Value(&self) -> DOMString { + self.upcast::() + .traverse_preorder() + .filter_map(Root::downcast::) + .filter(|opt_elem| opt_elem.Selected()) + .map(|opt_elem| opt_elem.Value()) + .next() + .unwrap_or_default() + } + + // https://html.spec.whatwg.org/multipage/#dom-select-value + fn SetValue(&self, value: DOMString) { + let mut opt_iter = self.upcast::() + .traverse_preorder() + .filter_map(Root::downcast::); + // Reset until we find an into ] - expected: FAIL - - [Insert into