blob: c3d7f68c64968c4bc5de23c41cdf709609b8d623 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="../../resources/js-test.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("Test to make sure left and right arrows keys behave correctly in RTL content.")
var testContainer = document.createElement("div");
testContainer.contentEditable = true;
testContainer.style.padding = "2px";
testContainer.dir = "rtl";
testContainer.innerText = 'מקור השם עברית';
document.body.insertBefore(testContainer, document.body.firstChild);
var selection = window.getSelection();
function dragSelection()
{
var text = testContainer.firstChild;
selection.setBaseAndExtent(text, 0, text, 0);
var middleY = testContainer.offsetTop + (testContainer.offsetHeight / 2);
eventSender.dragMode = false;
eventSender.mouseMoveTo(testContainer.offsetLeft, middleY);
eventSender.leapForward(200);
eventSender.mouseDown();
eventSender.leapForward(200);
for (var i = 0; i <= 10; i++) {
eventSender.mouseMoveTo(testContainer.offsetLeft + (testContainer.offsetWidth * (i /10)) - 2, middleY);
eventSender.leapForward(200);
}
eventSender.mouseUp();
eventSender.leapForward(1000);
}
function setSelection()
{
var text = testContainer.firstChild;
selection.setBaseAndExtent(text, 5, text , 8);
}
function testSelectionChange(setupFunction, mod, dir, startDelta, endDelta, testName)
{
setupFunction();
var range = window.getSelection().getRangeAt(0);
var initialStart = range.startOffset;
var initialEnd = range.endOffset;
selection.modify(mod, dir, "character");
range = window.getSelection().getRangeAt(0);
var start = range.startOffset;
var end = range.endOffset;
if (initialStart + startDelta != start)
testFailed(testName + ": Selection start is " + start + " but should be " + (startDelta + initialStart));
else if (initialEnd + endDelta != end)
testFailed(testName + ": Selection end is " + end + " but should be " + (endDelta + initialEnd));
else
testPassed(testName);
}
function runTests()
{
testSelectionChange(setSelection, "move", "right", 0, -3, "Move selection right");
testSelectionChange(setSelection, "move", "left", 3, 0, "Move selection left");
if (window.testRunner && window.internals) {
testRunner.dumpAsText();
internals.settings.setEditingBehavior("mac");
testSelectionChange(dragSelection, "extend", "right", 0, 0, "Extend dragged selection right (Mac)");
testSelectionChange(dragSelection, "extend", "left", 0, 0, "Extend dragged selection left (Mac)");
internals.settings.setEditingBehavior("win");
testSelectionChange(dragSelection, "extend", "right", 0, 0, "Extend dragged selection right (Win)");
testSelectionChange(dragSelection, "extend", "left", 1, 0, "Extend dragged selection left (Win)");
internals.settings.setEditingBehavior("unix");
testSelectionChange(dragSelection, "extend", "right", 0, 0, "Extend dragged selection right (Unix)");
testSelectionChange(dragSelection, "extend", "left", 1, 0, "Extend dragged selection left (Unix)");
internals.settings.setEditingBehavior("android");
testSelectionChange(dragSelection, "extend", "right", 0, 0, "Extend dragged selection right (Android)");
testSelectionChange(dragSelection, "extend", "left", 1, 0, "Extend dragged selection left (Android)");
}
}
runTests();
document.body.removeChild(testContainer);
</script>
</body>
</html>