<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script>
var successfullyParsed = false;
</script>
</head>
<body id="body">

<div id="content">
<iframe id="iframe" onload="startTest();" src="data:text/html,<body><input type='text' name='foo' id='input' aria-label='label'></body>"></iframe>
</div>

<p id="description"></p>
<div id="console"></div>

<script>

    description("This makes sure that in WK1 after setting selection of an input element on a different webarea, the input element is still editable.");

    window.jsTestIsAsync = true;
    function startTest() {

        if (window.accessibilityController) { 
            accessibilityController.enableEnhancedAccessibility(true);
            var input = accessibilityController.accessibleElementById("input");
            var selectedRange = input.textMarkerRangeForElement(input);
            var webArea = accessibilityController.rootElement.childAtIndex(0);
            
            var iframe = document.getElementById("iframe");
            iframe.contentDocument.getElementById("input").focus();
            webArea.setSelectedVisibleTextRange(selectedRange);
            eventSender.keyDown("1");
            debug(input.stringValue);
            finishJSTest();
        }
    }

    successfullyParsed = true;
</script>

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

