layout/forms/test/test_bug644542.html
author Karl Tomlinson <karlt+@karlt.net>
Tue, 17 Apr 2012 13:00:25 +1200
changeset 91816 8bea9978c445a4a6dac7f2d05796e113746ce863
parent 74315 1188456710819d4606e74396be333ead9fe63261
child 231925 fa8bd3194aca6a90360994c17869845f7b7da5ac
permissions -rw-r--r--
b=497498 use event coordinates for source drag end point instead of new cursor position r=roc

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=644542
-->
<head>
  <title>Test for Bug 644542</title>
  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  <style type="text/css">
    select:after {
	    content: ' appended string';
    }
  </style>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=644542">Mozilla Bug 644542</a>
<p id="display">
  <form method="post" action="">
    <select id="select">
      <option value="1">1</option>
      <option value="2">2</option>
    </select>
  </form>
</p>
<div id="content" style="display: none">
  
</div>
<pre id="test">
<script type="application/javascript">

/** Test for Bug 644542 **/

var select = document.getElementById("select");

var clicks = 0;

function click() {
    synthesizeMouseAtCenter(select, { });
    ++clicks;

    // At least two clicks were required for bug 644542, sometimes more;
    // delay is long enough that this doesn't look like a double
    // click, and also allows time for popup to show and for painting.
    setTimeout(clicks < 4 ? click : done, 500);
}

function done() {
    ok(true, "No crash on opening dropdown");
    SimpleTest.finish();
}

SimpleTest.waitForExplicitFinish();
// waitForFocus is most likely not the right thing to wait for, but
// without this the first click is ineffective (even with a reflow forced
// before synthesizeMouse).
SimpleTest.waitForFocus(click);
</script>
</pre>
</body>
</html>