50 lines
1.8 KiB
HTML
50 lines
1.8 KiB
HTML
<!doctype html>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/resources/testdriver.js"></script>
|
|
<script src="/resources/testdriver-vendor.js"></script>
|
|
<body>
|
|
<script>
|
|
// This test is tentative because timing isn't defined:
|
|
// https://github.com/w3c/speech-api/issues/39
|
|
// https://github.com/w3c/speech-api/issues/40
|
|
async_test(t => {
|
|
assert_false(speechSynthesis.paused, 'initial paused state');
|
|
|
|
test_driver.bless('speechSynthesis.speak', t.step_func(() => {
|
|
const sentence = `long sentence which will take at least a few seconds to
|
|
utter so that it's possible to pause and resume before the end`;
|
|
const utter = new SpeechSynthesisUtterance(sentence);
|
|
t.add_cleanup(() => speechSynthesis.pause());
|
|
utter.onerror = t.unreached_func('error event');
|
|
|
|
speechSynthesis.speak(utter);
|
|
|
|
assert_false(speechSynthesis.paused, 'paused state after speak()');
|
|
|
|
utter.onstart = t.step_func(() => {
|
|
utter.onstart = null;
|
|
assert_false(speechSynthesis.paused, 'paused state at start event');
|
|
|
|
speechSynthesis.pause();
|
|
|
|
// paused state changes async, right before the pause event
|
|
assert_false(speechSynthesis.paused, 'paused state after pause()');
|
|
|
|
utter.onpause = t.step_func(() => {
|
|
utter.onpause = null;
|
|
assert_true(speechSynthesis.paused, 'paused state at pause event');
|
|
|
|
speechSynthesis.resume();
|
|
|
|
// paused state changes async, right before the resume event
|
|
assert_true(speechSynthesis.paused, 'paused state after resume()');
|
|
|
|
utter.onresume = t.step_func_done(() => {
|
|
assert_false(speechSynthesis.paused, 'paused state at resume event');
|
|
});
|
|
});
|
|
});
|
|
}));
|
|
}, 'speechSynthesis.pause() and resume() state and events');
|
|
</script>
|