<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test.js"></script>
<link rel="stylesheet" type="text/css" href="resources/link-highlight-style.css">
</head>
<body onload="runTest();">
<a href="" id="link1">Link 1</a><br>
<a href="" id="targetLink" class="transparentHighlight">Target Link.</a><br>
<a href="" id="link2">Link 2</a>
<div style="position: relative; left: 0px; top: 200px; will-change: transform;">
This test is successful if "Target Link" above is covered in a transparent green rectangle with rounded corners.
</div>
<script>
function runTest() {
    var clientRect = document.getElementById('targetLink').getBoundingClientRect();
    x = (clientRect.left + clientRect.right) / 2;
    y = (clientRect.top + clientRect.bottom) / 2;
    if (window.testRunner) {
        testRunner.dumpAsTextWithPixelResults();
        testRunner.waitUntilDone();
    }

    if (window.eventSender) {
        eventSender.gestureShowPress(x, y);
        window.setTimeout(function() { testRunner.notifyDone(); }, 0);
    } else {
        debug("This test requires DumpRenderTree.");
    }
}
</script>
</script>
</body>
</html>
