1<html> 2<head> 3<script type="text/javascript"> 4var gl; 5// For some reason, when running this test in automated fashion, it 6// triggers the bug reliably if the first frame with back-to-back 7// events happens a certain number of frames into the test execution. 8var numFrames = 202; 9var intensity = 255; 10var contextWasLost = false; 11 12function contextLostHandler(e) { 13 contextWasLost = true; 14} 15 16function draw() { 17 if (--intensity == 0) { 18 intensity = 255; 19 } 20 21 gl.clearColor(intensity / 255.0, 0, 0, 1); 22 gl.clear(gl.COLOR_BUFFER_BIT); 23 24 if (numFrames % 2 == 0) { 25 // Toggle the state of the drop-down every other frame. Every now 26 // and then, dispatch two events back to back. This really seems to 27 // trigger the bug. 28 var maxIteration = 1; 29 if (numFrames % 6 == 0) { 30 maxIteration = 2; 31 } 32 for (var ii = 0; ii < maxIteration; ++ii) { 33 var e = document.createEvent('MouseEvent'); 34 e.initMouseEvent('mousedown', true, true, window); 35 var s = document.getElementById('dropdown'); 36 s.dispatchEvent(e); 37 } 38 } 39 40 if (--numFrames > 0) { 41 requestAnimationFrame(draw); 42 } else { 43 if (contextWasLost) { 44 window.domAutomationController.send("FAILED"); 45 } else { 46 window.domAutomationController.send("SUCCESS"); 47 } 48 } 49} 50 51function onLoad() { 52 window.domAutomationController.send("LOADED"); 53 54 var canvas = document.getElementById("canvas1"); 55 if (!canvas) 56 return; 57 canvas.addEventListener("webglcontextlost", contextLostHandler, false); 58 59 gl = canvas.getContext("webgl"); 60 if (!gl) 61 return; 62 63 requestAnimationFrame(draw); 64} 65</script> 66</head> 67<body onload="onLoad()"> 68<select id="dropdown"> 69 <option value="option1">option1</option> 70 <option value="option2">option2</option> 71 <option value="option3">option3</option> 72 <option value="option4">option4</option> 73</select> 74<canvas id="canvas1" width="32px" height="32px"> 75</canvas> 76</body> 77</html> 78