aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/range.rs
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <ecoal95@gmail.com>2016-02-28 18:21:08 +0100
committerEmilio Cobos Álvarez <ecoal95@gmail.com>2016-02-28 19:27:42 +0100
commit3e36739e381c99f5f10faa9bd9d31c3a4623250d (patch)
treee4d3a3eaf46367c9cc8d5e9f65e2d2575884e8e4 /components/script/dom/range.rs
parentbe6940db59a2e8bf4fac45911848edbc8cd3dd8d (diff)
downloadservo-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.rs28
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