tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

SpeechSynthesis-pause-resume.tentative.html (1845B)


      1 <!doctype html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <script src="/resources/testdriver.js"></script>
      5 <script src="/resources/testdriver-vendor.js"></script>
      6 <body>
      7 <script>
      8 // This test is tentative because timing isn't defined:
      9 // https://github.com/w3c/speech-api/issues/39
     10 // https://github.com/w3c/speech-api/issues/40
     11 async_test(t => {
     12  assert_false(speechSynthesis.paused, 'initial paused state');
     13 
     14  test_driver.bless('speechSynthesis.speak', t.step_func(() => {
     15    const sentence = `long sentence which will take at least a few seconds to
     16      utter so that it's possible to pause and resume before the end`;
     17    const utter = new SpeechSynthesisUtterance(sentence);
     18    t.add_cleanup(() => speechSynthesis.pause());
     19    utter.onerror = t.unreached_func('error event');
     20 
     21    speechSynthesis.speak(utter);
     22 
     23    assert_false(speechSynthesis.paused, 'paused state after speak()');
     24 
     25    utter.onstart = t.step_func(() => {
     26      utter.onstart = null;
     27      assert_false(speechSynthesis.paused, 'paused state at start event');
     28 
     29      speechSynthesis.pause();
     30 
     31      // paused state changes async, right before the pause event
     32      assert_false(speechSynthesis.paused, 'paused state after pause()');
     33 
     34      utter.onpause = t.step_func(() => {
     35        utter.onpause = null;
     36        assert_true(speechSynthesis.paused, 'paused state at pause event');
     37 
     38        speechSynthesis.resume();
     39 
     40        // paused state changes async, right before the resume event
     41        assert_true(speechSynthesis.paused, 'paused state after resume()');
     42 
     43        utter.onresume = t.step_func_done(() => {
     44          assert_false(speechSynthesis.paused, 'paused state at resume event');
     45        });
     46      });
     47    });
     48  }));
     49 }, 'speechSynthesis.pause() and resume() state and events');
     50 </script>