<!DOCTYPE html>
<html>
<head>
<script src="resources/link-highlight-helper.js"></script>
<link rel="stylesheet" type="text/css" href="resources/link-highlight-style.css">
</head>
<body onload="runTest();">
<div style="will-change: transform; padding: 20px;">
<a href="" id="targetLink" class="opaqueHighlight"><img style="vertical-align: bottom" width="320" height="240" src="resources/dice.png"></a>
</div>
<script>
function runTest() {
    useMockHighlight();
    var clientRect = document.getElementById('targetLink').getBoundingClientRect();
    x = (clientRect.left + clientRect.right) / 2;
    y = (clientRect.top + clientRect.bottom) / 2;
    if (window.testRunner)
        testRunner.waitUntilDone();

    if (window.eventSender) {
        eventSender.gestureShowPress(x, y);
        window.setTimeout(function() { testRunner.notifyDone(); }, 0);
    } else {
        debug("This test requires DumpRenderTree.");
        debug("This test is successful if the image below is covered in a green rectangle.");
    }
}
</script>
</script>
</body>
</html>
