| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>Setting a blob through srcObject after a MediaStream</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <video id="video1" controls autoplay playsInline></video> |
| <video id="video2" controls autoplay playsInline></video> |
| <script> |
| function waitFor(duration) |
| { |
| return new Promise((resolve) => setTimeout(resolve, duration)); |
| } |
| |
| promise_test(async (test) => { |
| const stream = await navigator.mediaDevices.getUserMedia({ video: true }); |
| video1.srcObject = stream; |
| await video1.play(); |
| |
| const recorder = new MediaRecorder(stream); |
| const dataPromise = new Promise(resolve => recorder.ondataavailable = (e) => resolve(e.data)); |
| |
| const startPromise = new Promise(resolve => recorder.onstart = resolve); |
| recorder.start(); |
| await startPromise; |
| |
| await waitFor(100); |
| recorder.stop(); |
| const blob = await dataPromise; |
| |
| video1.srcObject = blob; |
| video2.srcObject = blob; |
| await video1.play(); |
| await video2.play(); |
| |
| assert_equals(video1.duration, video2.duration); |
| }, "Setting srcObject to MediaStream and then Blob"); |
| |
| </script> |
| </body> |
| </html> |