blob: bd1a4075080cdb5e97d05c96d1c517ad0c5607ad [file] [log] [blame]
<p>This tests for a bug where extending a selection created with the mouse would blow it away before extending it.</p>
<div id="div" contenteditable="true">There <span id="select" style="color:green">should be</span> six characters selected in this sentence on Mac and four characters selected on Win/Linux.</div>
<ul id="console"></ul>
<script>
function log(str)
{
console = document.getElementById("console");
li = document.createElement("li");
text = document.createTextNode(str);
console.appendChild(li);
li.appendChild(text);
}
function runTest(platform, expectedText)
{
internals.settings.setEditingBehavior(platform);
var target = document.getElementById('select');
var startX = target.offsetLeft + target.offsetWidth;
var y = target.offsetTop + target.offsetHeight / 2;
var endX = target.offsetLeft;
// Select all the green text using the mouse.
// Use a word-granularity selection to avoid eventSender bug.
// Using just a single-click would not act is if the initial
// mouseDown was at (endX, y), resulting in a collapsed selection.
eventSender.mouseMoveTo(startX, y);
eventSender.mouseDown();
eventSender.mouseUp();
eventSender.mouseDown();
eventSender.mouseMoveTo(endX, y);
eventSender.mouseUp();
// Extending this 5 character selection will select 6 characters on mac,
// but shrink the selection on win/linux.
testRunner.execCommand("MoveForwardAndModifySelection");
// Extending it in this way flips the anchor and the focus on Mac.
var selectedText = window.getSelection().toString();
if (selectedText != expectedText)
log("Failure: Selected text was \"" + selectedText + "\" and should be \"" + expectedText + "\"");
else
log("Success");
}
if (window.testRunner && window.internals) {
testRunner.dumpAsText()
runTest('mac', 'should be s');
runTest('win', 'hould be ');
} else {
log("Failure: To test manually, select the green text " +
"starting at the end via double-click (i.e. word granularity), then shift+right-arrow. " +
"On Win/Linux you should see 'hould be ' selected. On Mac, you should see 'should be s' selected." +
"There's currently a bug that selects the space " +
"after 'should be' during the initial selection (https://bugs.webkit.org/show_bug.cgi?id=36256). " +
"Once that's fixed, it the final selected text should be 'should be ' on Mac and 'hould be' on Win/Linux.")
}
</script>