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>