<html>
    <head>
        <title></title>
        <script type="text/javascript">
            var onchangeCount = 0;

            function test()
            {
                if (!window.eventSender)
                    return;

                layoutTestController.dumpAsText();

                var popup = document.getElementById("switcher");
                popup.focus();

                eventSender.keyDown("t", null);
                eventSender.keyDown("\r", null);
            }

            function changed(select)
            {
                select.blur();
                onchangeCount++;

                var result = document.getElementById("result");
                result.innerText = onchangeCount == 1 ? "SUCCESS" : "FAILURE: onchange count was " + onchangeCount;
            }
        </script>
    </head>
    <body onload="test()">
        <p>
            Test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=13857">http://bugs.webkit.org/show_bug.cgi?id=13857</a>
            REGRESSION: onChange function applied to select element executes twice when focus is set</i>.
        </p>
        <p id="result">
            To test interactively, select the other option in the pop up. This text should change to SUCCESS.
        </p>
        <select name="switcher" id="switcher" onchange="changed(this)">
            <option value="one">One</option>
            <option value="two">Two</option>
        </select>
    </body>
</html>
