gecko-dev/testing/web-platform/tests/speech-api/SpeechSynthesisErrorEvent-constructor.html
Charlie Harrison eb157b9add Bug 1492283 [wpt PR 13057] - Add SpeechSynthesisErrorEvent IDL interface, a=testonly
Automatic update from web-platform-testsAdd SpeechSynthesisErrorEvent IDL interface

See spec:
https://w3c.github.io/speech-api/#speechsynthesiserrorevent

and discussion on i2s on blink-dev:
https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/8_H3FUZm23g

Previously, errors were just going through as SpeechSynthesisEvents.
This CL now dispatches errors as SpeechSynthesisErrorEvents with an
empty "error" method.

This CL also adds constructors on both SpeechSynthesisEvent and
SpeechSynthesisErrorEvent.

Bug: 885297
Change-Id: I70ba998182943a50e17f2fc11eb7e163d8289e94
Reviewed-on: https://chromium-review.googlesource.com/1231839
Commit-Queue: Charlie Harrison <csharrison@chromium.org>
Reviewed-by: Dominic Mazzoni <dmazzoni@chromium.org>
Reviewed-by: Philip Jägenstedt <foolip@chromium.org>
Cr-Commit-Position: refs/heads/master@{#595128}

--

wpt-commits: 95b97e23ea267ac700cfa5f3a131581203f15c62
wpt-pr: 13057
2018-10-08 16:45:31 +00:00

88 lines
2.8 KiB
HTML

<!DOCTYPE html>
<meta charset="utf-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
/*
[Exposed=Window,
Constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict)]
interface SpeechSynthesisErrorEvent : SpeechSynthesisErrorEvent {
readonly attribute SpeechSynthesisErrorCode error;
};
*/
test(() => {
assert_throws(new TypeError(), () => {
new SpeechSynthesisErrorEvent();
});
}, "SpeechSynthesisErrorEvent with no arguments throws TypeError");
test(() => {
assert_throws(new TypeError(), () => {
new SpeechSynthesisErrorEvent("type");
});
}, "SpeechSynthesisErrorEvent with no eventInitDict throws TypeError");
test(() => {
assert_throws(new TypeError(), () => {
new SpeechSynthesisErrorEvent("type", {});
});
}, `SpeechSynthesisErrorEvent with empty eventInitDict throws TypeError (requires
utterance and error)`);
test(() => {
assert_throws(new TypeError(), () => {
new SpeechSynthesisErrorEvent("type", {error:"not-allowed"});
});
}, `SpeechSynthesisErrorEvent with eventInitDict without utterance throws
TypeError`);
test(() => {
assert_throws(new TypeError(), () => {
new SpeechSynthesisErrorEvent("type", {utterance: new SpeechSynthesisUtterance()});
});
}, `SpeechSynthesisErrorEvent with eventInitDict without error throws
TypeError`);
test(() => {
const utterance = new SpeechSynthesisUtterance("foo");
const event = new SpeechSynthesisErrorEvent("type", {utterance: utterance, error:"not-allowed"});
assert_equals(event.utterance, utterance);
assert_equals(event.error, "not-allowed");
assert_equals(event.charIndex, 0);
assert_equals(event.elapsedTime, 0);
assert_equals(event.name, "");
}, "SpeechSynthesisErrorEvent with eventInitDict having utterance and error");
test(() => {
const utterance = new SpeechSynthesisUtterance("foo");
const event = new SpeechSynthesisErrorEvent("type", {
utterance: utterance,
charIndex: 5,
elapsedTime: 100,
name: "foo",
error: "synthesis-failed"
});
assert_equals(event.bubbles, false);
assert_equals(event.cancelable, false);
assert_equals(event.type, "type");
assert_equals(event.utterance, utterance);
assert_equals(event.charIndex, 5);
assert_equals(event.elapsedTime, 100);
assert_equals(event.name, "foo");
assert_equals(event.error, "synthesis-failed");
}, "SpeechSynthesisErrorEvent with custom eventInitDict");
test(() => {
function createEventFunc(error) {
return () => {
new SpeechSynthesisErrorEvent("type", {
utterance: new SpeechSynthesisUtterance(),
error: error
});
};
};
assert_throws(new TypeError(), createEventFunc(""));
assert_throws(new TypeError(), createEventFunc("foo"));
assert_throws(new TypeError(), createEventFunc("bar"));
}, "SpeechSynthesisErrorEvent with wrong error enum");
</script>