Index: third_party/WebKit/LayoutTests/imported/wpt/selection/dir-manual.html |
diff --git a/third_party/WebKit/LayoutTests/imported/wpt/selection/dir-manual.html b/third_party/WebKit/LayoutTests/imported/wpt/selection/dir-manual.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..39cf6555234b7b2e189412e97aed5a93b19ccea2 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/imported/wpt/selection/dir-manual.html |
@@ -0,0 +1,106 @@ |
+<!doctype html> |
+<title>Selection direction tests</title> |
+<meta charset=utf-8> |
+<div id=test> |
+ <p>This is a manual test, since there's no way to synthesize keyboard or |
+ mouse input. Click after the letter "c" in the following paragraph and |
+ drag backwards so that both the "b" and the "c" are highlighted, then click |
+ the "Test" button: |
+ |
+ <p>abcd <button onclick=testDirection()>Test</button> |
+ |
+ <p>efghi |
+</div> |
+<div id=log></div> |
+<script src=/resources/testharness.js></script> |
+<script src=/resources/testharnessreport.js></script> |
+<script> |
+setup({explicit_done: true}); |
+ |
+function testDirection() { |
+ var testDiv = document.getElementById("test"); |
+ var p = testDiv.getElementsByTagName("p")[1].firstChild; |
+ var selection = getSelection(); |
+ var range = selection.getRangeAt(0); |
+ test(function() { |
+ assert_equals(range.toString(), "bc"); |
+ }, "The expected range is selected"); |
+ test(function() { |
+ assert_equals(selection.anchorNode, p); |
+ assert_equals(selection.focusNode, p); |
+ }, "Expected node is initially selected"); |
+ test(function() { |
+ assert_array_equals([selection.anchorOffset, selection.focusOffset].sort(), [1, 3]); |
+ }, "Expected offsets are initially selected (maybe not in order)"); |
+ test(function() { |
+ assert_equals(selection.anchorOffset, 3); |
+ assert_equals(selection.focusOffset, 1); |
+ }, "Offsets are backwards for initial selection"), |
+ test(function() { |
+ assert_equals(selection.anchorNode, range.endContainer); |
+ assert_equals(selection.anchorOffset, range.endOffset); |
+ assert_equals(selection.focusNode, range.startContainer); |
+ assert_equals(selection.focusOffset, range.startOffset); |
+ }, "Offsets match the range for initial selection"); |
+ |
+ // Per spec, the direction of the selection remains even if you zap a range |
+ // and add a new one. |
+ test(function() { |
+ selection.removeRange(range); |
+ range = document.createRange(); |
+ p = testDiv.getElementsByTagName("p")[0].firstChild; |
+ range.setStart(p, 0); |
+ range.setEnd(p, 4); |
+ assert_equals(range.toString(), "This"); |
+ selection.addRange(range); |
+ }, "removeRange()/addRange() successful"); |
+ test(function() { |
+ assert_equals(selection.anchorNode, p); |
+ assert_equals(selection.focusNode, p); |
+ }, "Expected node is selected after remove/addRange()"); |
+ test(function() { |
+ assert_array_equals([selection.anchorOffset, selection.focusOffset].sort(), [0, 4]); |
+ }, "Expected offsets are selected after remove/addRange() (maybe not in order)"); |
+ test(function() { |
+ assert_equals(selection.anchorOffset, 4); |
+ assert_equals(selection.focusOffset, 0); |
+ }, "Offsets are backwards after remove/addRange()"), |
+ test(function() { |
+ assert_equals(selection.anchorNode, range.endContainer); |
+ assert_equals(selection.anchorOffset, range.endOffset); |
+ assert_equals(selection.focusNode, range.startContainer); |
+ assert_equals(selection.focusOffset, range.startOffset); |
+ }, "Offsets match the range after remove/addRange()"); |
+ |
+ // But if you call removeAllRanges(), the direction should reset to |
+ // forwards. |
+ test(function() { |
+ selection.removeAllRanges(); |
+ range = document.createRange(); |
+ p = testDiv.getElementsByTagName("p")[2].firstChild; |
+ range.setStart(p, 2); |
+ range.setEnd(p, 5); |
+ assert_equals(range.toString(), "ghi"); |
+ selection.addRange(range); |
+ }, "removeAllRanges() successful"); |
+ test(function() { |
+ assert_equals(selection.anchorNode, p); |
+ assert_equals(selection.focusNode, p); |
+ }, "Expected node is selected after removeAllRanges()"); |
+ test(function() { |
+ assert_array_equals([selection.anchorOffset, selection.focusOffset].sort(), [2, 5]); |
+ }, "Expected offsets are selected after removeAllRanges() (maybe not in order)"); |
+ test(function() { |
+ assert_equals(selection.anchorOffset, 2); |
+ assert_equals(selection.focusOffset, 5); |
+ }, "Offsets are forwards after removeAllRanges()"); |
+ test(function() { |
+ assert_equals(selection.anchorNode, range.startContainer); |
+ assert_equals(selection.anchorOffset, range.startOffset); |
+ assert_equals(selection.focusNode, range.endContainer); |
+ assert_equals(selection.focusOffset, range.endOffset); |
+ }, "Offsets match the range after removeAllRanges()"); |
+ |
+ done(); |
+} |
+</script> |