chromium/content/test/data/gpu/webgl_with_select_element.html

<html>
<head>
<script type="text/javascript">
var gl;
// For some reason, when running this test in automated fashion, it
// triggers the bug reliably if the first frame with back-to-back
// events happens a certain number of frames into the test execution.
var numFrames = 202;
var intensity = 255;
var contextWasLost = false;

function contextLostHandler(e) {
  contextWasLost = true;
}

function draw() {
  if (--intensity == 0) {
    intensity = 255;
  }

  gl.clearColor(intensity / 255.0, 0, 0, 1);
  gl.clear(gl.COLOR_BUFFER_BIT);

  if (numFrames % 2 == 0) {
    // Toggle the state of the drop-down every other frame. Every now
    // and then, dispatch two events back to back. This really seems to
    // trigger the bug.
    var maxIteration = 1;
    if (numFrames % 6 == 0) {
      maxIteration = 2;
    }
    for (var ii = 0; ii < maxIteration; ++ii) {
      var e = document.createEvent('MouseEvent');
      e.initMouseEvent('mousedown', true, true, window);
      var s = document.getElementById('dropdown');
      s.dispatchEvent(e);
    }
  }

  if (--numFrames > 0) {
    requestAnimationFrame(draw);
  } else {
    if (contextWasLost) {
      window.domAutomationController.send("FAILED");
    } else {
      window.domAutomationController.send("SUCCESS");
    }
  }
}

function onLoad() {
  window.domAutomationController.send("LOADED");

  var canvas = document.getElementById("canvas1");
  if (!canvas)
    return;
  canvas.addEventListener("webglcontextlost", contextLostHandler, false);

  gl = canvas.getContext("webgl");
  if (!gl)
    return;

  requestAnimationFrame(draw);
}
</script>
</head>
<body onload="onLoad()">
<select id="dropdown">
  <option value="option1">option1</option>
  <option value="option2">option2</option>
  <option value="option3">option3</option>
  <option value="option4">option4</option>
</select>
<canvas id="canvas1" width="32px" height="32px">
</canvas>
</body>
</html>