<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<html>
<head>
<script src="../../../resources/ui-helper.js"></script>
<script src="../../../resources/js-test.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<style>
body, html {
    margin: 0;
}

div[contenteditable] {
    border: 2px solid tomato;
    width: 300px;
    height: 300px;
    box-sizing: border-box;
    font-size: 32px;
    padding: 10px;
}

#console, #description {
    width: 300px;
    height: 100px;
    overflow: scroll;
}
</style>
<script>
jsTestIsAsync = true;

async function waitUntilMenuContains(action) {
    while (true) {
        if (await UIHelper.rectForMenuAction(action))
            break;
        await UIHelper.delayFor(100);
    }
}

addEventListener("load", async () => {
    if (!window.testRunner)
        return;

    description("This test verifies that the callout bar is shown after selecting a word in an editable element using the callout bar. To test manually, focus the editable area and tap 'Select' in the callout bar; the callout bar should appear again, with an option to 'Copy'. The 'Select All' action should not be shown.");

    const editor = document.querySelector("div[contenteditable]");

    await UIHelper.activateElementAndWaitForInputSession(editor);
    await UIHelper.activateAt(250, 250);
    await UIHelper.waitForMenuToShow();
    testPassed("Showed menu by tapping");

    await waitUntilMenuContains("Select");
    await UIHelper.chooseMenuAction("Select");
    await UIHelper.waitForSelectionToAppear();
    testPassed("Selected word using menu action");

    await waitUntilMenuContains("Copy");
    testPassed("Callout bar contains 'Copy' action");

    selectAllItemRect = await UIHelper.rectForMenuAction("Select All");
    shouldBeNull("selectAllItemRect");

    editor.remove();
    finishJSTest();
});
</script>
</head>
<body>
<div contenteditable>WebKit</div>
<div id="description"></div>
<div id="console"></div>
</body>
</html>
