mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-10 21:28:04 +02:00
Automatic update from web-platform-tests Add long timeout to speech-api/idlharness.window.js Rebaseline, and delete the expectation line. Fixed: 953153 Change-Id: I71f9889ff8ba17d826e8d98e983d8f6cb6c3ec25 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2112958 Auto-Submit: Robert Ma <robertma@chromium.org> Commit-Queue: Stephen McGruer <smcgruer@chromium.org> Reviewed-by: Stephen McGruer <smcgruer@chromium.org> Cr-Commit-Position: refs/heads/master@{#752432} -- wpt-commits: 03c0bba5f1453eefc941f57200d5598b8915556a wpt-pr: 22370
51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
// META: script=/resources/WebIDLParser.js
|
|
// META: script=/resources/idlharness.js
|
|
// META: timeout=long
|
|
|
|
'use strict';
|
|
|
|
// https://w3c.github.io/speech-api/#dom-speechsynthesis-getvoices can
|
|
// return an empty list and a voiceschanged event is fired if the list of
|
|
// voices is determined asynchronously.
|
|
function getVoices() {
|
|
return new Promise(resolve => {
|
|
const voices = speechSynthesis.getVoices();
|
|
if (voices.length) {
|
|
resolve(voices);
|
|
} else {
|
|
// wait for voiceschanged event
|
|
speechSynthesis.addEventListener('voiceschanged', () => {
|
|
resolve(speechSynthesis.getVoices());
|
|
}, { once: true });
|
|
}
|
|
});
|
|
}
|
|
|
|
idl_test(
|
|
['speech-api'],
|
|
['dom', 'html'],
|
|
(idl_array, t) => {
|
|
idl_array.add_objects({
|
|
SpeechGrammar: ['new SpeechGrammar()'],
|
|
SpeechGrammarList: ['new SpeechGrammarList()'],
|
|
SpeechRecognition: ['new SpeechRecognition()'],
|
|
// TODO: SpeechRecognitionAlternative
|
|
// TODO: SpeechRecognitionErrorEvent
|
|
// TODO: SpeechRecognitionEvent
|
|
// TODO: SpeechRecognitionResult
|
|
// TODO: SpeechRecognitionResultList
|
|
SpeechSynthesis: ['speechSynthesis'],
|
|
// TODO: SpeechSynthesisErrorEvent
|
|
// TODO: SpeechSynthesisEvent
|
|
SpeechSynthesisUtterance: ['new SpeechSynthesisUtterance()'],
|
|
SpeechSynthesisVoice: ['voice'],
|
|
Window: ['self'],
|
|
});
|
|
|
|
const awaitVoice = getVoices().then(voices => self.voice = voices[0]);
|
|
const timeout = new Promise((_, reject) => {
|
|
t.step_timeout(() => reject('Timed out waiting for voice'), 3000);
|
|
});
|
|
return Promise.race([awaitVoice, timeout]);
|
|
}
|
|
);
|