diff options
author | Emilio Cobos Álvarez <ecoal95@gmail.com> | 2016-02-28 18:21:08 +0100 |
---|---|---|
committer | Emilio Cobos Álvarez <ecoal95@gmail.com> | 2016-02-28 19:27:42 +0100 |
commit | 3e36739e381c99f5f10faa9bd9d31c3a4623250d (patch) | |
tree | e4d3a3eaf46367c9cc8d5e9f65e2d2575884e8e4 /components/script/dom/range.rs | |
parent | be6940db59a2e8bf4fac45911848edbc8cd3dd8d (diff) | |
download | servo-3e36739e381c99f5f10faa9bd9d31c3a4623250d.tar.gz servo-3e36739e381c99f5f10faa9bd9d31c3a4623250d.zip |
script: Fix remaining bugs from Range.deleteContents
Diffstat (limited to 'components/script/dom/range.rs')
-rw-r--r-- | components/script/dom/range.rs | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/components/script/dom/range.rs b/components/script/dom/range.rs index 88fc9ad35bc..df3d0d35883 100644 --- a/components/script/dom/range.rs +++ b/components/script/dom/range.rs @@ -750,7 +750,7 @@ impl RangeMethods for Range { if let Some(text) = start_node.downcast::<CharacterData>() { return text.ReplaceData(start_offset, end_offset - start_offset, - DOMString::from("")); + DOMString::new()); } } @@ -758,10 +758,15 @@ impl RangeMethods for Range { let mut contained_children: RootedVec<JS<Node>> = RootedVec::new(); let ancestor = self.CommonAncestorContainer(); - for child in start_node.following_nodes(ancestor.r()) { - if self.contains(child.r()) && - !contained_children.contains(&JS::from_ref(child.GetParentNode().unwrap().r())) { + let mut iter = start_node.following_nodes(ancestor.r()); + + let mut next = iter.next(); + while let Some(child) = next { + if self.contains(child.r()) { contained_children.push(JS::from_ref(child.r())); + next = iter.next_skipping_children(); + } else { + next = iter.next(); } } @@ -778,7 +783,7 @@ impl RangeMethods for Range { } reference_node = parent; } - panic!() + unreachable!() } compute_reference(start_node.r(), end_node.r()) @@ -786,9 +791,9 @@ impl RangeMethods for Range { // Step 7. if let Some(text) = start_node.downcast::<CharacterData>() { - try!(text.ReplaceData(start_offset, - start_node.len() - start_offset, - DOMString::from(""))); + text.ReplaceData(start_offset, + start_node.len() - start_offset, + DOMString::new()).unwrap(); } // Step 8. @@ -798,12 +803,13 @@ impl RangeMethods for Range { // Step 9. if let Some(text) = end_node.downcast::<CharacterData>() { - try!(text.ReplaceData(0, end_offset, DOMString::from(""))); + text.ReplaceData(0, end_offset, DOMString::new()).unwrap(); } // Step 10. - try!(self.SetStart(new_node.r(), new_offset)); - self.SetEnd(new_node.r(), new_offset) + self.SetStart(new_node.r(), new_offset).unwrap(); + self.SetEnd(new_node.r(), new_offset).unwrap(); + Ok(()) } // https://dom.spec.whatwg.org/#dom-range-surroundcontents |