| <!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_js(TypeError, () => { | |
| new SpeechSynthesisErrorEvent(); | |
| }); | |
| }, "SpeechSynthesisErrorEvent with no arguments throws TypeError"); | |
| test(() => { | |
| assert_throws_js(TypeError, () => { | |
| new SpeechSynthesisErrorEvent("type"); | |
| }); | |
| }, "SpeechSynthesisErrorEvent with no eventInitDict throws TypeError"); | |
| test(() => { | |
| assert_throws_js(TypeError, () => { | |
| new SpeechSynthesisErrorEvent("type", {}); | |
| }); | |
| }, `SpeechSynthesisErrorEvent with empty eventInitDict throws TypeError (requires | |
| utterance and error)`); | |
| test(() => { | |
| assert_throws_js(TypeError, () => { | |
| new SpeechSynthesisErrorEvent("type", {error:"not-allowed"}); | |
| }); | |
| }, `SpeechSynthesisErrorEvent with eventInitDict without utterance throws | |
| TypeError`); | |
| test(() => { | |
| assert_throws_js(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_js(TypeError, createEventFunc("")); | |
| assert_throws_js(TypeError, createEventFunc("foo")); | |
| assert_throws_js(TypeError, createEventFunc("bar")); | |
| }, "SpeechSynthesisErrorEvent with wrong error enum"); | |
| </script> |