<html><head>
<script>
function test()
{
    if (!window.eventSender)
        return;

    var onMacPlatform = false;
    if (navigator.userAgent.search(/\bMac OS X\b/) != -1)
        onMacPlatform = true;

    if (window.layoutTestController) {
        layoutTestController.dumpAsText();
    }

    document.body.focus();

    if (onMacPlatform)
        eventSender.keyDown('a', ["ctrlKey"]);
    else
        eventSender.keyDown('a', ["metaKey"]);

    document.getElementById("console").innerHTML = getSelection().baseNode ? "FAIL" : "PASS";
}

</script>
</head>
<body onload="test();">
<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=34615">bug 34615</a>. Trying to do a keyboard "select all" using the wrong modifier (e.g. Control on the Mac) should not do anything.
<div id="console">
NOT DONE YET
</div>
</body>
</html>
