| <!DOCTYPE html> |
| <title>SpeechSynthesisUtterance voice attribute</title> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script> |
| test(() => { |
| const u = new SpeechSynthesisUtterance(); |
| assert_equals(u.voice, null); |
| }, 'initial state'); |
| |
| test(() => { |
| const u = new SpeechSynthesisUtterance(); |
| u.voice = null; |
| assert_equals(u.voice, null); |
| u.voice = undefined; |
| assert_equals(u.voice, null); |
| }, 'setting to null/undefined'); |
| |
| test(() => { |
| const u = new SpeechSynthesisUtterance(); |
| for (const value of [{}, "", window]) { |
| assert_throws_js(TypeError, () => { u.voice = value; } ); |
| assert_equals(u.voice, null); |
| } |
| }, 'setting to non-SpeechSynthesisVoice values'); |
| |
| async_test((test) => { |
| internals.enableMockSpeechSynthesizer(window); |
| speechSynthesis.onvoiceschanged = function() { |
| const u = new SpeechSynthesisUtterance(); |
| const voice = speechSynthesis.getVoices()[0]; |
| // TODO(foolip): This should test instanceof SpeechSynthesisVoice when that |
| // interface is exposed. |
| assert_equals(typeof voice, "object"); |
| u.voice = voice; |
| assert_equals(u.voice, voice); |
| test.done(); |
| }; |
| }, 'setting to SpeechSynthesisVoice'); |
| </script> |