Index: LayoutTests/editing/selection/no-range-canonicalization.html |
diff --git a/LayoutTests/editing/selection/no-range-canonicalization.html b/LayoutTests/editing/selection/no-range-canonicalization.html |
index 31ad3245fc487f6f714f579b1b1461f173adf9ad..ed69c2ffa131e2cda4313489678a866c0c32270c 100644 |
--- a/LayoutTests/editing/selection/no-range-canonicalization.html |
+++ b/LayoutTests/editing/selection/no-range-canonicalization.html |
@@ -6,7 +6,7 @@ |
</head> |
<body> |
<script> |
-description('Ranges set by Selection.addRange() and returned by Selection.getRangeAt() should be identical.'); |
+description('Ranges/Nodes set by a Selection method and returned by a corresoponding Selection method should be identical.'); |
var sandboxRoot = document.createElement('div'); |
sandboxRoot.innerHTML = |
@@ -33,10 +33,10 @@ function collapsedRangeAt(anchorNode, offset) |
var originalRange; |
var gotRange; |
-function testSingleRange(range) |
+function testAddRange() |
{ |
- originalRange = range; |
- selectRange(range); |
+ originalRange = collapsedRangeAt(originalAnchorNode, originalAnchorOffset); |
+ selectRange(originalRange); |
gotRange = selection.getRangeAt(0); |
shouldBeTrue('gotRange.startContainer === originalRange.startContainer'); |
@@ -45,6 +45,27 @@ function testSingleRange(range) |
shouldBe('gotRange.endOffset', 'originalRange.endOffset'); |
} |
+function testCollapse() |
+{ |
+ selection.collapse(originalAnchorNode, originalAnchorOffset); |
+ gotRange = selection.getRangeAt(0); |
+ shouldBeTrue('gotRange.startContainer === originalAnchorNode'); |
+ shouldBe('gotRange.startOffset', 'originalAnchorOffset'); |
+ shouldBeTrue('gotRange.endContainer === originalAnchorNode'); |
+ shouldBe('gotRange.endOffset', 'originalAnchorOffset'); |
+} |
+ |
+var originalAnchorNode; |
+var originalAnchorOffset; |
+function testSingleRange(anchorNode, anchorOffset) |
+{ |
+ originalAnchorNode = anchorNode; |
+ originalAnchorOffset = anchorOffset; |
+ |
+ testAddRange(); |
+ testCollapse(); |
+} |
+ |
function runTest(rootElement) |
{ |
var span1 = rootElement.childNodes[0]; |
@@ -55,19 +76,19 @@ function runTest(rootElement) |
// These positions are all visually equivalent, and should not mutate when obtained by getRangeAt(). |
debug('position = [text1, 1]'); |
- testSingleRange(collapsedRangeAt(text1, 1)); |
+ testSingleRange(text1, 1); |
debug('position = [span1, 1]'); |
- testSingleRange(collapsedRangeAt(span1, 1)); |
+ testSingleRange(span1, 1); |
debug('position = [rootElement, 1]'); |
- testSingleRange(collapsedRangeAt(rootElement, 1)); |
+ testSingleRange(rootElement, 1); |
debug('position = [span2, 0]'); |
- testSingleRange(collapsedRangeAt(span2, 0)); |
+ testSingleRange(span2, 0); |
debug('position = [rootElement, 2]'); |
- testSingleRange(collapsedRangeAt(rootElement, 2)); |
+ testSingleRange(rootElement, 2); |
debug('position = [span3, 0]'); |
- testSingleRange(collapsedRangeAt(span3, 0)); |
+ testSingleRange(span3, 0); |
debug('position = [text2, 0]'); |
- testSingleRange(collapsedRangeAt(text2, 0)); |
+ testSingleRange(text2, 0); |
} |
debug('Testing selection on non-editable nodes...'); |