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

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

<script>

    if (window.internals)
        window.internals.enableMockSpeechSynthesizer();

    description("This tests that the basic mechanisms of speaking text work, including sending the job and receving the callback.");

    if (window.testRunner)
        testRunner.waitUntilDone();

    window.jsTestIsAsync = true;

    // Start a very short speaking job that will finish quickly.
    var u = new SpeechSynthesisUtterance(" ");

    u.onstart = function(event) {
       shouldBeTrue("event.elapsedTime > 0");
       shouldBeTrue("speechSynthesis.speaking");
    }

    u.addEventListener('end', function(e) { 
       shouldBeTrue("event.elapsedTime > 0");
       shouldBeFalse("speechSynthesis.speaking");
       finishJSTest();
    });

    shouldBeFalse("speechSynthesis.speaking");
    speechSynthesis.speak(u);

</script>

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