Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!DOCTYPE html>
<title>SpeechRecognition installOnDevice</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
promise_test(async (t) => {
const validLang = "en-US";
const invalidLang = "invalid language code";
window.SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
// Test that it returns a promise.
const validResultPromise = SpeechRecognition.installOnDevice(validLang);
assert_true(
validResultPromise instanceof Promise,
"installOnDevice should return a Promise."
);
// Verify the resolved value is a boolean.
const validResult = await validResultPromise;
assert_true(
typeof validResult === "boolean",
"The resolved value of the installOnDevice promise should be a boolean."
);
// Verify that the method returns true when called with a supported language code.
assert_equals(
validResult,
true,
"installOnDevice should resolve with `true` when called with a supported language code."
);
// Test that it returns a promise.
const invalidResultPromise = SpeechRecognition.installOnDevice(invalidLang);
const invalidResult = await invalidResultPromise;
assert_equals(
invalidResult,
false,
"installOnDevice should resolve with `false` when called with an unsupported language code."
);
}, "SpeechRecognition.installOnDevice resolves with a boolean value.");
promise_test(async (t) => {
const iframe = document.createElement("iframe");
document.body.appendChild(iframe);
const frameWindow = iframe.contentWindow;
const frameDOMException = frameWindow.DOMException;
const frameSpeechRecognition =
frameWindow.SpeechRecognition || frameWindow.webkitSpeechRecognition;
iframe.remove();
await promise_rejects_dom(
t,
"InvalidStateError",
frameDOMException,
frameSpeechRecognition.installOnDevice("en-US"),
);
}, "SpeechRecognition.installOnDevice rejects in a detached context.");
</script>