<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/accessibility-helper.js"></script>
<script src="../resources/js-test.js"></script>
<style>
select, select::picker(select) {
    appearance: base-select;
}
</style>
</head>
<body>

<select id="select">
    <option id="option1">Apple</option>
    <option id="option2" selected>Banana</option>
    <option id="option3">Cherry</option>
</select>

<script>
var output = "This test verifies basic accessibility properties of base-appearance selects (appearance: base-select).\n\n";

function expectMenuItem(axElement, expectedText) {
    var result = "";
    result += expect("(" + axElement + ").role.toLowerCase().includes('menuitem')", "true");
    window._menuItemText = platformTextAlternatives(eval(axElement));
    result += _menuItemText + "\n";
    result += expect("_menuItemText.includes('" + expectedText + "')", "true");
    return result;
}

if (window.accessibilityController) {
    window.jsTestIsAsync = true;

    var select = accessibilityController.accessibleElementById("select");

    output += "--- Select role and value ---\n";
    output += expect("select.role.toLowerCase().includes('popup')", "true");
    output += expect("select.stringValue.includes('Banana')", "true");
    output += expect("select.isExpanded", "false");

    setTimeout(async function() {
        select.press();
        output += await expectAsync("select.isExpanded", "true");

        // The select should contain a Menu which wraps the MenuItems.
        output += expect("select.childrenCount", "1");
        window.menu = select.childAtIndex(0);
        output += expect("menu.role.toLowerCase().includes('menu')", "true");
        output += expect("menu.childrenCount", "3");

        output += expectMenuItem("menu.childAtIndex(0)", "Apple");
        output += expectMenuItem("menu.childAtIndex(1)", "Banana");
        output += expectMenuItem("menu.childAtIndex(2)", "Cherry");

        output += expect("menu.childAtIndex(0).isSelected", "false");
        output += expect("menu.childAtIndex(1).isSelected", "true");
        output += expect("menu.childAtIndex(2).isSelected", "false");

        output += expect("menu.selectedChildrenCount", "1");
        output += expectMenuItem("menu.selectedChildAtIndex(0)", "Banana");

        // Press to close the picker.
        select.press();
        output += await expectAsync("select.isExpanded", "false");

        debug(output);
        finishJSTest();
    }, 0);
}
</script>
</body>
</html>
