<!DOCTYPE html>
<html>
<body>
    <a href="resources/keyboard-events-after-navigation.html" accesskey="z"></a>
    <script src="resources/keyboard-events-test.js"></script>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
            internals.settings.setShouldSuppressTextInputFromEditingDuringProvisionalNavigation(true);
        }

        runBeforeTest(window);

        waitForProvisionalNavigation(function() {
            console.log("Provisional navigation started.");
            console.log("No trusted events should be logged and the input element should have the value \"\".");
            runTest(window);

            console.log("Pressing \"z\" with access key modifiers should navigate to resources/keyboard-events-after-navigation.html.");
            eventSender.keyDown("z", internals.accessKeyModifiers());
        });
    </script>
</body>
</html>
