From 8b33e0f60e4bb2f089f93412bf84fe17c38e714b Mon Sep 17 00:00:00 2001 From: sendilkumarn Date: Wed, 9 Aug 2017 11:18:20 +0800 Subject: moving to oncecell adding oncecell for JS references removing option> to > changing return types removing get method and refactoring the function changing getElements method lint fixes moving to default simplifying return ordering Removing elements linting --- components/script/dom/htmlformelement.rs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'components/script/dom/htmlformelement.rs') diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 34ce7c25ec1..c3a56954ea5 100755 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -13,7 +13,7 @@ use dom::bindings::codegen::Bindings::HTMLFormElementBinding::HTMLFormElementMet use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods; use dom::bindings::codegen::Bindings::HTMLTextAreaElementBinding::HTMLTextAreaElementMethods; use dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, NodeTypeId}; -use dom::bindings::js::{JS, MutNullableJS, Root, RootedReference}; +use dom::bindings::js::{JS, OnceCellJS, Root, RootedReference}; use dom::bindings::refcounted::Trusted; use dom::bindings::reflector::DomObject; use dom::bindings::str::DOMString; @@ -66,7 +66,7 @@ pub struct GenerationId(u32); pub struct HTMLFormElement { htmlelement: HTMLElement, marked_for_reset: Cell, - elements: MutNullableJS, + elements: OnceCellJS, generation_id: Cell, controls: DOMRefCell>>, } @@ -168,10 +168,6 @@ impl HTMLFormElementMethods for HTMLFormElement { // https://html.spec.whatwg.org/multipage/#dom-form-elements fn Elements(&self) -> Root { - if let Some(elements) = self.elements.get() { - return elements; - } - #[derive(HeapSizeOf, JSTraceable)] struct ElementsFilter { form: Root @@ -222,11 +218,11 @@ impl HTMLFormElementMethods for HTMLFormElement { } } } - let filter = box ElementsFilter { form: Root::from_ref(self) }; - let window = window_from_node(self); - let elements = HTMLFormControlsCollection::new(&window, self.upcast(), filter); - self.elements.set(Some(&elements)); - elements + Root::from_ref(self.elements.init_once(|| { + let filter = box ElementsFilter { form: Root::from_ref(self) }; + let window = window_from_node(self); + HTMLFormControlsCollection::new(&window, self.upcast(), filter) + })) } // https://html.spec.whatwg.org/multipage/#dom-form-length -- cgit v1.2.3