| <!DOCTYPE html> |
| <html> |
| <head> |
| <style> |
| #neutral { position:absolute; top:0px; left:100px; width:100px; height:100px; border:2px solid blue; } |
| #test { position:absolute; top:100px; left:100px; width:100px; height:100px; border:2px solid blue; } |
| #test div { border: 2px solid red; width: 10px; height: 10px; } |
| </style> |
| <script> |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| var outputText = ""; |
| |
| function output(text) { |
| outputText += text + '<br>'; |
| } |
| |
| var mutateOnMouseOver = false; |
| |
| function mouseOver() { |
| if (mutateOnMouseOver) |
| document.querySelector('#test').appendChild(document.createElement("div")); |
| output('mouseover'); |
| } |
| function mouseOut() { |
| output('mouseout'); |
| } |
| function mouseClick() { |
| output('mouseclick'); |
| } |
| |
| function getTapUIScript(x, y) |
| { |
| return ` |
| (function() { |
| uiController.singleTapAtPoint(${x}, ${y}, function() { |
| uiController.uiScriptComplete("Done"); |
| }); |
| })();` |
| } |
| |
| function test() { |
| if (!window.testRunner || !window.testRunner.runUIScript) |
| return; |
| // Test tapping in a div. |
| output("Tapping once"); |
| testRunner.runUIScript(getTapUIScript(150, 150), function(result) { |
| output("Tapping again"); |
| testRunner.runUIScript(getTapUIScript(150, 150), function(result) { |
| output("Tapping out"); |
| testRunner.runUIScript(getTapUIScript(150, 50), function(result) { |
| output("Enabling mutation on mouseover"); |
| mutateOnMouseOver = true; |
| output("Tapping once"); |
| testRunner.runUIScript(getTapUIScript(150, 150), function(result) { |
| output("Tapping again"); |
| testRunner.runUIScript(getTapUIScript(150, 150), function(result) { |
| document.querySelector('#output').innerHTML += outputText; |
| testRunner.notifyDone(); |
| }); |
| }); |
| }); |
| }); |
| }); |
| } |
| |
| </script> |
| </head> |
| <body onload="test()"> |
| <div>Test that if document is visibly mutated in mouseover handler then synthetic click is not generated until the next tap.</div> |
| <div id='neutral' onmouseover='' onmouseout='' onclick=''> |
| </div> |
| <div id='test' onmouseover='mouseOver()' onmouseout='mouseOut()' onclick='mouseClick()'> |
| </div> |
| <div id='output'></div> |
| </body> |
| </html> |