From 4849033297815625939d2f7d8f68a14adfaa5477 Mon Sep 17 00:00:00 2001 From: Dongie Agnir Date: Tue, 27 Oct 2015 15:20:35 -1000 Subject: [PATCH] Add fixes based on review. - Use if let instead of match for Option - Refactor common code into pick_if_selected_and_reset --- components/script/dom/htmloptionelement.rs | 28 ++++++++++------------ components/script/dom/htmlselectelement.rs | 13 +++++----- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs index 64defdd9235..8c7dea8ac1e 100644 --- a/components/script/dom/htmloptionelement.rs +++ b/components/script/dom/htmloptionelement.rs @@ -56,6 +56,17 @@ impl HTMLOptionElement { pub fn set_selectedness(&self, selected: bool) { self.selectedness.set(selected); } + + fn pick_if_selected_and_reset(&self) { + if let Some(select) = self.upcast::().ancestors() + .filter_map(Root::downcast::) + .next() { + if self.Selected() { + select.pick_option(self); + } + select.ask_for_reset(); + } + } } fn collect_text(element: &Element, value: &mut DOMString) { @@ -139,13 +150,7 @@ impl HTMLOptionElementMethods for HTMLOptionElement { fn SetSelected(&self, selected: bool) { 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(); - } + self.pick_if_selected_and_reset(); } } @@ -198,14 +203,7 @@ impl VirtualMethods for HTMLOptionElement { self.upcast::().check_parent_disabled_state_for_option(); - if let Some(select) = self.upcast::().ancestors() - .filter_map(Root::downcast::) - .next() { - if self.Selected() { - select.pick_option(self); - } - select.ask_for_reset(); - } + self.pick_if_selected_and_reset(); } fn unbind_from_tree(&self, tree_in_doc: bool) { diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index 4fd69b390db..04a3d174108 100644 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -70,13 +70,12 @@ impl HTMLSelectElement { } } - match last_selected { - Some(last_selected) => last_selected.set_selectedness(true), - None => { - if self.display_size() == 1 { - if let Some(first_enabled) = first_enabled { - first_enabled.set_selectedness(true); - } + if let Some(last_selected) = last_selected { + last_selected.set_selectedness(true); + } else { + if self.display_size() == 1 { + if let Some(first_enabled) = first_enabled { + first_enabled.set_selectedness(true); } } }