| <!DOCTYPE html> |
| <html> |
| <title>Simple MediaSource-in-Worker playback test case</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="mediasource-message-util.js"></script> |
| <body> |
| <script> |
| |
| async_test(t => { |
| // Fail fast if MSE-in-Workers is not supported. |
| assert_true( |
| MediaSource.hasOwnProperty('canConstructInDedicatedWorker'), |
| 'MediaSource hasOwnProperty \'canConstructInDedicatedWorker\''); |
| assert_true( |
| MediaSource.canConstructInDedicatedWorker, |
| 'MediaSource.canConstructInDedicatedWorker'); |
| |
| const video = document.createElement('video'); |
| document.body.appendChild(video); |
| video.onerror = t.unreached_func('video element error'); |
| video.onended = t.step_func_done(); |
| |
| let worker = new Worker('mediasource-worker-play.js'); |
| worker.onerror = t.unreached_func('worker error'); |
| worker.onmessage = t.step_func(e => { |
| let subject = e.data.subject; |
| assert_true(subject != undefined, 'message must have a subject field'); |
| switch (subject) { |
| case messageSubject.ERROR: |
| assert_unreached('Worker error: ' + e.data.info); |
| break; |
| case messageSubject.HANDLE: |
| const handle = e.data.info; |
| video.srcObject = handle; |
| video.play(); |
| break; |
| default: |
| assert_unreached('Unexpected message subject: ' + subject); |
| } |
| }); |
| }, 'Test worker MediaSource construction, attachment, buffering and basic playback'); |
| |
| // See mediasource-worker-handle-transfer.html for a case that tests race of |
| // multiple simultaneous attachments of same handle to multiple elements. |
| |
| </script> |
| </body> |
| </html> |