<!DOCTYPE HTML>
<html>
<head>
<script src="../resources/js-test.js"></script>
</head>
<body id="static_eventTarget">

<p id="p">One paragraph in the document</p>

<div id="console"></div>
<script>
description("Tests that a 'selected text changed' notification fires on a contentEditable element when the user moves the cursor within it.");
window.jsTestIsAsync = true;

function runTest() {
    // This forces building the accessibility tree, because selection change
    // events only fire on elements that already exist.
    accessibilityController.accessibleElementById('dummy');

    var axElement = accessibilityController.rootElement;

    axElement.addNotificationListener(function(notification) {
        if (notification == 'SelectedTextChanged') {
            debug('Got SelectedTextChanged notification on root element.');
            axElement.removeNotificationListener();
            finishJSTest();
        }
    });

    var p = document.getElementById('p');
    var range = document.createRange();
    range.setStart(p.firstChild, 0);
    range.setEnd(p.firstChild, 1);
    window.getSelection().removeAllRanges();
    window.getSelection().addRange(range);
}

if (window.testRunner && window.accessibilityController) {
    testRunner.dumpAsText();
    window.onload = runTest();
}

</script>

</body>
</html>
