<html>
    <head>
        <script>
            function test() {
                if (window.layoutTestController)
                    layoutTestController.waitUntilDone();
                    
                setTimeout('addLongOption();', 100);
            }
            function addLongOption()
            {
                var newOpt = document.createElement("option");
                newOpt.appendChild(document.createTextNode("I require more room"));
                var sl = document.getElementById("t");
                sl.appendChild(newOpt);
                                
                if (window.layoutTestController)
                    layoutTestController.notifyDone();
            }
        </script>
    </head>
    <body onload="test()">
    This tests that when an option is dynamically added to a menu list, and it is too long for the current width,<br>
    that the select automatically recalculates the correct width.<br>
    <select id="t">
        <option id="short">Short</option>
        <option id="medium">Medium</option>
    </select>
    <div id="res"></div>
    </body>
</html>
