<!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.setSelectedTextMarkerRange(selectedRange);
            eventSender.keyDown("1");
            debug(input.stringValue);
            finishJSTest();
        }
    }

    successfullyParsed = true;
</script>

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

