From 159194b0f900c4ef126a2db9897e052cf7582186 Mon Sep 17 00:00:00 2001 From: Anshul Jethvani Date: Fri, 6 Dec 2019 01:24:52 -0500 Subject: [PATCH] run tidy check and added comments --- components/script/dom/htmlformelement.rs | 40 +++++++++++------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index ba352511bf86..b39bc1cf58a4 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -67,8 +67,7 @@ use style::str::split_html_space_chars; use crate::dom::bindings::codegen::UnionTypes::RadioNodeListOrElement; use crate::dom::radionodelist::RadioNodeList; use std::collections::HashMap; -use time::{now, Tm, Duration}; - +use time::{now, Duration, Tm}; #[derive(Clone, Copy, JSTraceable, MallocSizeOf, PartialEq)] pub struct GenerationId(u32); @@ -264,12 +263,10 @@ impl HTMLFormElementMethods for HTMLFormElement { // https://html.spec.whatwg.org/multipage/#the-form-element%3Adetermine-the-value-of-a-named-property fn NamedGetter(&self, name: DOMString) -> Option { - let window = window_from_node(self); - let mut candidates: Vec> = Vec::new(); let controls = self.controls.borrow(); - + // Step 1 for child in controls.iter() { if child .downcast::() @@ -283,7 +280,7 @@ impl HTMLFormElementMethods for HTMLFormElement { } } } - + // Step 2 if candidates.len() == 0 { for child in controls.iter() { if child.is::() { @@ -299,6 +296,7 @@ impl HTMLFormElementMethods for HTMLFormElement { let mut past_names_map = self.past_names_map.borrow_mut(); + // Step 3 if candidates.len() == 0 { if past_names_map.contains_key(&name) { return Some(RadioNodeListOrElement::Element(DomRoot::from_ref( @@ -308,18 +306,26 @@ impl HTMLFormElementMethods for HTMLFormElement { return None; } + // Step 4 if candidates.len() > 1 { + let window = window_from_node(self); + return Some(RadioNodeListOrElement::RadioNodeList( RadioNodeList::new_simple_list(&window, candidates.into_iter()), )); } + // Step 5 let element_node = &candidates[0]; past_names_map.insert( name, - (Dom::from_ref(&*element_node.downcast::().unwrap()), now()), + ( + Dom::from_ref(&*element_node.downcast::().unwrap()), + now(), + ), ); + // Step 6 return Some(RadioNodeListOrElement::Element(DomRoot::from_ref( &*element_node.downcast::().unwrap(), ))); @@ -327,6 +333,7 @@ impl HTMLFormElementMethods for HTMLFormElement { // https://html.spec.whatwg.org/multipage/#the-form-element:supported-property-names fn SupportedPropertyNames(&self) -> Vec { + // Step 1 enum SourcedNameSource { Id, Name, @@ -339,23 +346,17 @@ impl HTMLFormElementMethods for HTMLFormElement { source: SourcedNameSource, } - // vector to store sourced names tuple information let mut sourcedNamesVec: Vec = Vec::new(); - // let controls = self.controls.borrow_mut(); - line 849 → unsure of which "borrow" to use - let controls = self.controls.borrow(); // line 807 in this file + let controls = self.controls.borrow(); - // controls - list of form elements - // check all listed elements first, push to sourcedNamesVec as per spec + // Step 2 for child in controls.iter() { if child .downcast::() .map_or(false, |c| c.is_listed_element()) { - // if child.is_listed() - if child.has_attribute(&local_name!("id")) { - // https://learning-rust.github.io/docs/b2.structs.html let entry = SourcedName { name: child.get_string_attribute(&local_name!("id")), element: DomRoot::from_ref(&*child), @@ -373,15 +374,10 @@ impl HTMLFormElementMethods for HTMLFormElement { } } - // check img elements now, push to sourcedNamesVec as per spec + // Step 3 for child in controls.iter() { - // https://doc.servo.org/src/script/dom/htmlelement.rs.html#645-665 - // if child.get_string_attribute(&local_name!("type")) == "image" { - - // https://users.rust-lang.org/t/how-check-type-of-variable/33845/7 if child.is::() { if child.has_attribute(&local_name!("id")) { - // https://learning-rust.github.io/docs/b2.structs.html let entry = SourcedName { name: child.get_string_attribute(&local_name!("id")), element: DomRoot::from_ref(&*child), @@ -399,7 +395,7 @@ impl HTMLFormElementMethods for HTMLFormElement { } } - // return list of names + // Step 8 let mut namesVec: Vec = Vec::new(); for elem in sourcedNamesVec.iter() { namesVec.push(elem.name.clone());