| <!doctype html> |
| <title>non-applicable constraint in getUserMedia</title> |
| <link rel="author" title="Intel" href="http://www.intel.com"/> |
| <link rel="help" href="https://w3c.github.io/mediacapture-main/#methods-5"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <p class="instructions">When prompted, accept to share your audio and video stream.</p> |
| |
| <script> |
| |
| let video_only_valid_constraints = { |
| width: {min: 0}, |
| height: {min: 0}, |
| frameRate: {min: 0}, |
| aspectRatio: {min: 0}, |
| facingMode: {ideal: 'environment'}, |
| resizeMode: {ideal: 'none'} |
| } |
| |
| let video_only_invalid_constraints = { |
| width: {min: 100000000}, |
| height: {min: 100000000}, |
| frameRate: {min: 100000000}, |
| aspectRatio: {min: 100000000}, |
| facingMode: {exact: 'invalid'}, |
| resizeMode: {exact: 'invalid'} |
| } |
| |
| let audio_only_valid_constraints = { |
| volume: {min: 0}, |
| sampleRate: {min: 0}, |
| sampleSize: {min: 0}, |
| echoCancellation: {ideal: true}, |
| autoGainControl: {ideal: true}, |
| noiseSuppression: {ideal: true}, |
| latency: {min: 0}, |
| channelCount: {min: 0} |
| } |
| |
| let audio_only_invalid_constraints = { |
| volume: {min: 2}, |
| sampleRate: {min: 100000000}, |
| sampleSize: {min: 100000000}, |
| echoCancellation: {exact: true}, |
| autoGainControl: {exact: true}, |
| noiseSuppression: {exact: true}, |
| latency: {max: 0}, |
| channelCount: {max: 0} |
| } |
| |
| promise_test(async () => { |
| let stream = await navigator.mediaDevices.getUserMedia({audio: video_only_valid_constraints}) |
| assert_equals(stream.getAudioTracks().length, 1, "the media stream has exactly one audio track"); |
| }, 'Test that setting video-only valid constraints inside of "audio" is simply ignored'); |
| |
| promise_test(async () => { |
| let stream = await navigator.mediaDevices.getUserMedia({audio: video_only_invalid_constraints}) |
| assert_equals(stream.getAudioTracks().length, 1, "the media stream has exactly one audio track"); |
| }, 'Test that setting video-only invalid constraints inside of "audio" is simply ignored'); |
| |
| promise_test(async () => { |
| let stream = await navigator.mediaDevices.getUserMedia({video: audio_only_valid_constraints}) |
| assert_equals(stream.getVideoTracks().length, 1, "the media stream has exactly one video track"); |
| }, 'Test that setting audio-only valid constraints inside of "video" is simply ignored'); |
| |
| promise_test(async () => { |
| let stream = await navigator.mediaDevices.getUserMedia({video: audio_only_invalid_constraints}) |
| assert_equals(stream.getVideoTracks().length, 1, "the media stream has exactly one video track"); |
| }, 'Test that setting audio-only invalid constraints inside of "video" is simply ignored'); |
| |
| </script> |