| <!DOCTYPE HTML> |
| <html> |
| <head> |
| <script src="../../resources/js-test.js"></script> |
| </head> |
| <body> |
| <script> |
| description("This tests that multiple speak utterances are handled in sequence."); |
| |
| if (window.internals) |
| internals.enableMockSpeechSynthesizer(window); |
| |
| if (window.testRunner) |
| testRunner.waitUntilDone(); |
| |
| window.jsTestIsAsync = true; |
| |
| var count = 3; |
| var i = 0; |
| |
| // Start a very short speaking job that will finish quickly. |
| var u = new SpeechSynthesisUtterance(" "); |
| u.onstart = function(event) { |
| shouldBeTrue("event.elapsedTime >= 0"); |
| shouldBeTrue("event.elapsedTime < 1000"); |
| shouldBeTrue("speechSynthesis.speaking"); |
| }; |
| u.onend = function(event) { |
| shouldBeGreaterThanOrEqual("count", "i"); |
| shouldBeTrue("event.elapsedTime > 0"); |
| shouldBeTrue("event.elapsedTime < 10000"); |
| shouldBeTrue("speechSynthesis.speaking"); |
| if (++i == count) { |
| speechSynthesis.cancel(); |
| // Add a new utterance just after the cancel() to signal test completion. |
| speechSynthesis.speak(finishingUtterance); |
| } |
| }; |
| |
| var finishingUtterance = new SpeechSynthesisUtterance(" "); |
| finishingUtterance.onend = finishJSTest; |
| |
| shouldBeFalse("speechSynthesis.speaking"); |
| // Issue more utterances than where we break off. |
| for (var j = 0; j < count + 2; ++j) |
| speechSynthesis.speak(u); |
| </script> |
| </body> |
| </html> |