<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<html>
<head>
<script src="../../../resources/ui-helper.js"></script>
<script src="../../../resources/basic-gestures.js"></script>
<meta name=viewport content="width=device-width">
<style>
body, html {
    width: 100%;
    height: 100%;
    margin: 0;
}

#output {
    width: 320px;
    height: 160px;
    overflow: scroll;
    color: green;
    border: 1px green solid;
}

input {
    font-size: 150px;
    width: 300px;
    height: 100px;
    padding-left: 0;
}
</style>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function appendOutput(s) {
    const paragraph = document.createElement("div");
    paragraph.textContent = s;
    output.appendChild(paragraph);
}

async function runTest() {
    // First, focus the readonly input.
    await UIHelper.activateAt(100, 50);
    await UIHelper.waitForDoubleTapDelay();

    // Then, select 'aa' with a tap-and-half gesture.
    await UIHelper.activateAt(100, 50);
    await longPressAtPoint(100, 50);

    let grabberEndRect = null;
    while (!grabberEndRect || !grabberEndRect.width || !grabberEndRect.height)
        grabberEndRect = await UIHelper.getSelectionEndGrabberViewRect();

    const [midX, midY] = [grabberEndRect.left + (grabberEndRect.width / 2), grabberEndRect.top + (grabberEndRect.height / 2)];
    appendOutput(`Initial selected range: (${input.selectionStart}, ${input.selectionEnd})`);
    await touchAndDragFromPointToPoint(midX, midY, midX + 25, midY + 150);
    await liftUpAtPoint(midX + 25, midY + 150);
    appendOutput(`Final selected range: (${input.selectionStart}, ${input.selectionEnd})`);
    testRunner.notifyDone();
}
</script>
</head>

<body onload="runTest()">
<input id="input" readonly value="aa">
<pre id="output"></pre>
<p>Verifies that dragging a selection handle outside of a readonly input does not cause the selection to jump outside of the input.</p>
<p>To manually test, double-tap to select the word "aa", drag the selection end handle out of the bounds of the input, and then drag the selection handle back in.</p>
<p>"aa" should remain selected.</p>
<p>This test is best run under WebKitTestRunner.</p></body>
</html>