<!DOCTYPE HTML>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body onload="onLoad()">
<p id="description"></p>
<input type="button" onfocus="log('focused first button')" value="1">
<input type="text" onfocus="log('focused text field')" value="2">
<input type="button" onfocus="log('focused second button')" value="3">
<div id="console"></div>
<script>
description('https://bugs.webkit.org/show_bug.cgi?id=68412 - This test checks to see if option(alt)-tabbing properly focuses form elements that are normally not focused. For testing, the assumption is that by default pressing tab will skip over buttons, and option-tab will include buttons.');

var iteration = 0;
var modifiers;
var result;
function startTest() {
    debug("Pressing tab 4 times:");
    modifiers = undefined;
    testRunner.focusWebView(runKeyPresses);
}

function runKeyPresses() {
    result = '';
    for (var i = 0; i < 4; ++i) {
        result += ' /' + (i + 1) + ':';
        eventSender.keyDown("\t", modifiers);
    }
    iteration++;
    switch (iteration) {
        case 1:
            shouldBe('result', '" /1:focused text field /2: /3:focused text field /4:"');
            debug("Pressing shift-tab 4 times:");
            modifiers = ["shiftKey"];
            testRunner.focusWebView(runKeyPresses);
            break;
        case 2:
            shouldBe('result', '" /1:focused text field /2: /3:focused text field /4:"');
            debug("Pressing option-tab 4 times:");
            modifiers = ["altKey"];
            testRunner.focusWebView(runKeyPresses);
            break;
        case 3:
            shouldBe('result', '" /1:focused first button /2:focused text field /3:focused second button /4:"');
            debug("Pressing shift-option-tab 4 times:");
            modifiers = ["shiftKey", "altKey"];
            testRunner.focusWebView(runKeyPresses);
            break;
        case 4:
            shouldBe('result', '" /1:focused second button /2:focused text field /3:focused first button /4:"');
            testRunner.removeChromeInputField(notifyDone);
            break;
    }
}

function notifyDone() {
    setTimeout(function() { testRunner.notifyDone(); }, 0);
}

function log(val) {
    result += val;
}

function onLoad() {
    if (window.testRunner && window.eventSender && testRunner.addChromeInputField) {
        testRunner.addChromeInputField(startTest);
    } else
        finishJSTest();

    var successfullyParsed = true;
}

window.jsTestIsAsync = true;

</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
