mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-26 13:27:27 +00:00
107 lines
4.4 KiB
HTML
107 lines
4.4 KiB
HTML
<!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>
|