<html>
<body>
<script>
 if (window.testRunner)
    testRunner.dumpAsText();

function test(ul) {
ul.document.getElementById('sourceViewDiv').innerHTML=' This test: PASSED!'
}
</script>

<form action="javascript: test(this)" method="get" >

<select onChange="submit();">
  <option >A</option>
  <option >B</option>
  <option >C</option>
</select>

<div id='sourceViewDiv'>This test: FAILED</div>

<script>
var x=document.getElementsByTagName('select')[0];
x.options[2].selected=true;
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", true, true);
x.dispatchEvent(evt);
</script>

</form>

</body>
</html>
