<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<script src="../../../resources/ui-helper.js"></script>
<style>
input {
    width: 300px;
    height: 50px;
}

body {
    margin: 0;
}
</style>
<head>
<body onload="runTest()">
<input id="input" list="fruits" type="text"/>
<datalist id="fruits">
    <option>Apple</option>
    <option>Orange</option>
    <option>Pear</option>
</datalist>
<pre>1. Is showing suggestions? <span id="before"></span></pre>
<pre>2. Is showing suggestions? <span id="after"></span></pre>
<br>
<div>This test verifies that datalist suggestions UI can be shown and hidden. To test manually:</div>
<ol>
    <li>Focus the text field; on iOS, additionally tap the suggestions dropdown button.</li>
    <li>Verify that a menu containing suggestions is shown.</li>
    <li>On iOS, tap the input field; on macOS, blur the input.</li>
    <li>Verify that the suggestions menu is no longer shown.</li>
</ol>
</body>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.dumpAsText();
}

function waitForDataListSuggestionsToChangeVisibility(visible)
{
    return new Promise(async resolve => {
        while (visible != await UIHelper.isShowingDataListSuggestions())
            continue;
        resolve();
    });
}

async function runTest() {
    await UIHelper.activateAndWaitForInputSessionAt(150, 25);

    if (UIHelper.isIOSFamily()) {
        await UIHelper.tapAt(290, 30);
        await waitForDataListSuggestionsToChangeVisibility(true);
    }

    before.textContent = await UIHelper.isShowingDataListSuggestions();

    if (UIHelper.isIOSFamily()) {
        await UIHelper.tapAt(150, 25);
        await waitForDataListSuggestionsToChangeVisibility(false);
    } else
        input.blur();

    after.textContent = await UIHelper.isShowingDataListSuggestions();

    testRunner.notifyDone();
}
</script>
</html>
