tor-browser

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

mediasource-worker-play.html (1673B)


      1 <!DOCTYPE html>
      2 <html>
      3 <title>Simple MediaSource-in-Worker playback test case</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="mediasource-message-util.js"></script>
      7 <body>
      8 <script>
      9 
     10 async_test(t => {
     11  // Fail fast if MSE-in-Workers is not supported.
     12  assert_true(
     13      MediaSource.hasOwnProperty('canConstructInDedicatedWorker'),
     14      'MediaSource hasOwnProperty \'canConstructInDedicatedWorker\'');
     15  assert_true(
     16      MediaSource.canConstructInDedicatedWorker,
     17      'MediaSource.canConstructInDedicatedWorker');
     18 
     19  const video = document.createElement('video');
     20  document.body.appendChild(video);
     21  video.onerror = t.unreached_func('video element error');
     22  video.onended = t.step_func_done();
     23 
     24  let worker = new Worker('mediasource-worker-play.js');
     25  worker.onerror = t.unreached_func('worker error');
     26  worker.onmessage = t.step_func(e => {
     27    let subject = e.data.subject;
     28    assert_true(subject != undefined, 'message must have a subject field');
     29    switch (subject) {
     30      case messageSubject.ERROR:
     31        assert_unreached('Worker error: ' + e.data.info);
     32        break;
     33      case messageSubject.HANDLE:
     34        const handle = e.data.info;
     35        video.srcObject = handle;
     36        video.play();
     37        break;
     38      default:
     39        assert_unreached('Unexpected message subject: ' + subject);
     40    }
     41  });
     42 }, 'Test worker MediaSource construction, attachment, buffering and basic playback');
     43 
     44 // See mediasource-worker-handle-transfer.html for a case that tests race of
     45 // multiple simultaneous attachments of same handle to multiple elements.
     46 
     47 </script>
     48 </body>
     49 </html>