| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| /* |
| [Exposed=Window, |
| Constructor(DOMString type, SpeechSynthesisEventInit eventInitDict)] |
| interface SpeechSynthesisEvent : Event { |
| readonly attribute SpeechSynthesisUtterance utterance; |
| readonly attribute unsigned long charIndex; |
| readonly attribute float elapsedTime; |
| readonly attribute DOMString name; |
| }; |
| */ |
| test(() => { |
| assert_throws_js(TypeError, () => { |
| new SpeechSynthesisEvent(); |
| }); |
| }, "SpeechSynthesisEvent with no arguments throws TypeError"); |
| |
| test(() => { |
| assert_throws_js(TypeError, () => { |
| new SpeechSynthesisEvent("type"); |
| }); |
| }, "SpeechSynthesisEvent with no eventInitDict throws TypeError"); |
| |
| test(() => { |
| assert_throws_js(TypeError, () => { |
| new SpeechSynthesisEvent("type", {}); |
| }); |
| }, `SpeechSynthesisEvent with empty eventInitDict throws TypeError (requires |
| utterance)`); |
| |
| test(() => { |
| assert_throws_js(TypeError, () => { |
| new SpeechSynthesisEvent("type", {charIndex: 10, elapsedTime: 50, name:"foo"}); |
| }); |
| }, `SpeechSynthesisEvent with eventInitDict not having utterance throws |
| TypeError`); |
| |
| test(() => { |
| const utterance = new SpeechSynthesisUtterance("foo"); |
| const event = new SpeechSynthesisEvent("type", {utterance: utterance}); |
| assert_equals(event.utterance, utterance); |
| assert_equals(event.charIndex, 0); |
| assert_equals(event.charLength, 0); |
| assert_equals(event.elapsedTime, 0); |
| assert_equals(event.name, ""); |
| }, "SpeechSynthesisEvent with eventInitDict having an utterance"); |
| |
| test(() => { |
| const utterance = new SpeechSynthesisUtterance("foo"); |
| const event = new SpeechSynthesisEvent("type", { |
| utterance: utterance, |
| charIndex: 5, |
| charLength: 3, |
| elapsedTime: 100, |
| name: "foo" |
| }); |
| 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.charLength, 3); |
| assert_equals(event.elapsedTime, 100); |
| assert_equals(event.name, "foo"); |
| }, "SpeechSynthesisEvent with custom eventInitDict"); |
| </script> |