diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-02-29 05:11:28 +0530 |
---|---|---|
committer | bors-servo <lbergstrom+bors@mozilla.com> | 2016-02-29 05:11:28 +0530 |
commit | dfdeabf57df02cf4b8a878b3b9933a08d156082d (patch) | |
tree | b8843d076f316fe9607acd1820dfac905de573de /components/script | |
parent | b3964a89585539082982160f5f4fb4bd05ddac2f (diff) | |
parent | c0d79062b5bb34ee3c28e7c591c2b22d361830b9 (diff) | |
download | servo-dfdeabf57df02cf4b8a878b3b9933a08d156082d.tar.gz servo-dfdeabf57df02cf4b8a878b3b9933a08d156082d.zip |
Auto merge of #9799 - nox:range-extractcontents, r=KiChjang
Fix step 14.2 of Range::ExtractContents
We need the last inclusive ancestor of start node that is not an inclusive ancestor
of end node, not the first that is an inclusive ancestor of it.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9799)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/range.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/components/script/dom/range.rs b/components/script/dom/range.rs index 7044746ddf1..235a4dbcc9b 100644 --- a/components/script/dom/range.rs +++ b/components/script/dom/range.rs @@ -564,8 +564,9 @@ impl RangeMethods for Range { } else { // Step 14.1-2. let reference_node = start_node.ancestors() - .find(|n| n.is_inclusive_ancestor_of(end_node.r())) - .unwrap(); + .take_while(|n| !n.is_inclusive_ancestor_of(&end_node)) + .last() + .unwrap_or(Root::from_ref(&start_node)); // Step 14.3. (reference_node.GetParentNode().unwrap(), reference_node.index() + 1) }; |