| <!doctype html> |
| <html> |
| <head> |
| <title>MediaRecorder Disabled Tracks</title> |
| <link rel="help" href="https://w3c.github.io/mediacapture-record/MediaRecorder.html#mediarecorder"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| </head> |
| <script> |
| |
| // This test verifies that MediaStream with disabled tracks can be correctly |
| // recorded. See crbug.com/878255 for more context. |
| |
| [ ["video-only", {video: true, audio: false}], |
| ["audio-only", {video: false, audio: true}], |
| ["audio-video", {video: true, audio: true}]] |
| .forEach( function(args) { |
| async_test(function(test) { |
| let recorder; |
| const recorderOnDataAvailable = test.step_func(function(event) { |
| if (recorder.state != "recording") |
| return; |
| |
| recorder.onstop = recorderOnStopExpected; |
| recorder.stop(); |
| }); |
| |
| const recorderOnStopExpected = test.step_func_done(); |
| const recorderOnStopUnexpected = test.unreached_func('Recording stopped.'); |
| const recorderOnError = test.unreached_func('Recording error.'); |
| |
| const gotStream = test.step_func(function(stream) { |
| for (track of stream.getTracks()) |
| track.enabled = false; |
| |
| recorder = new MediaRecorder(stream); |
| |
| assert_equals(recorder.state, "inactive"); |
| recorder.ondataavailable = recorderOnDataAvailable; |
| recorder.onstop = recorderOnStopUnexpected; |
| recorder.onerror = recorderOnError; |
| recorder.start(); |
| |
| assert_equals(recorder.state, "recording"); |
| recorder.requestData(); |
| }); |
| |
| const onError = test.unreached_func('Error creating MediaStream.'); |
| navigator.mediaDevices.getUserMedia(args[1]).then(gotStream, onError); |
| }, args[0]); |
| }); |
| |
| </script> |