MediaStreamTrack-applyConstraints-fast.html (2473B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <body> 5 <canvas id='canvas' width=10 height=10></canvas> 6 </body> 7 <script> 8 9 // This test verifies that MediaStreamTrack.applyConstraints() exists and that, 10 // when called with no parameters, returns a Promise that is resolved. This 11 // might not make sense: https://github.com/w3c/mediacapture-main/issues/438 . 12 // Other tests go deeper. 13 promise_test(function(t) { 14 var canvas = document.getElementById('canvas'); 15 var context = canvas.getContext("2d"); 16 context.fillStyle = "red"; 17 context.fillRect(0, 0, 10, 10); 18 19 var stream = canvas.captureStream(); 20 assert_equals(stream.getAudioTracks().length, 0); 21 assert_equals(stream.getVideoTracks().length, 1); 22 23 var videoTrack = stream.getVideoTracks()[0]; 24 return videoTrack.applyConstraints(); 25 }, 'MediaStreamTrack.applyConstraints()'); 26 27 // This test verifies that MediaStreamTrack.applyConstraints() exists and that, 28 // when called with an empty advanced constraint set, returns a Promise that is 29 // resolved. 30 promise_test(function(t) { 31 var canvas = document.getElementById('canvas'); 32 var context = canvas.getContext("2d"); 33 context.fillStyle = "red"; 34 context.fillRect(0, 0, 10, 10); 35 36 var stream = canvas.captureStream(); 37 assert_equals(stream.getAudioTracks().length, 0); 38 assert_equals(stream.getVideoTracks().length, 1); 39 40 var videoTrack = stream.getVideoTracks()[0]; 41 return videoTrack.applyConstraints({advanced: []}); 42 }, 'MediaStreamTrack.applyConstraints({advanced: []})'); 43 44 // This test verifies that applyConstraints() rejects the returned Promise if 45 // passed a non-supported image-capture constraint (https://crbug.com/711694). 46 promise_test(async function(t) { 47 var canvas = document.getElementById('canvas'); 48 var context = canvas.getContext("2d"); 49 context.fillStyle = "red"; 50 context.fillRect(0, 0, 10, 10); 51 52 var stream = canvas.captureStream(); 53 var videoTrack = stream.getVideoTracks()[0]; 54 55 // Use e.g. |torch| as an example of unsupported constraint. 56 assert_false("torch" in videoTrack.getCapabilities()); 57 try { 58 await videoTrack.applyConstraints({torch: {exact: true}}); 59 } catch (error) { 60 assert_equals(error.name, 'OverconstrainedError'); 61 assert_equals(error.constraint, 'torch'); 62 return; 63 } 64 assert_unreached('expected applyConstraints to reject'); 65 }, 'MediaStreamTrack.applyConstraints() with unsupported constraint'); 66 67 </script>