<html>
<head>
<script>
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    function test()
    {
        var el = document.getElementById('cont');
        el.lastChild.focus();
        el.style.display = 'none';
        window.setTimeout(contextClick, 0);
    }

    function contextClick()
    {
        if (window.eventSender)
            eventSender.keyDown("menu");
        testRunner.notifyDone();
    }
</script>
</head>
<body onload="test()">
    This tests that context menu key events are handled properly on elements that
    are not visible.
    <div id="cont" tabindex="0">element <a href="#">link</a></div>
</body>
</html>
