getdisplaymedia-restrictOwnAudio.https.html (1915B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>getDisplayMedia</title> 4 <meta name="timeout" content="long"> 5 <button id="button">User gesture</button> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="/resources/testdriver.js"></script> 9 <script src="/resources/testdriver-vendor.js"></script> 10 <script> 11 'use strict'; 12 13 const stopTracks = stream => stream.getTracks().forEach(track => track.stop()); 14 15 async function getDisplayMedia(constraints) { 16 const p = new Promise(r => button.onclick = r); 17 await test_driver.click(button); 18 await p; 19 return navigator.mediaDevices.getDisplayMedia(constraints); 20 } 21 22 test(() => { 23 const supportedConstraints = 24 navigator.mediaDevices.getSupportedConstraints(); 25 assert_true(supportedConstraints.restrictOwnAudio); 26 }, "restrictOwnAudio is supported"); 27 28 { 29 const restrictOwnAudio = [true, false]; 30 restrictOwnAudio.forEach((restrictOwnAudio) => { 31 promise_test(async (t) => { 32 const stream = await getDisplayMedia({ 33 audio: { restrictOwnAudio }, 34 }); 35 t.add_cleanup(() => stopTracks(stream)); 36 const [videoTrack] = stream.getVideoTracks(); 37 assert_false("restrictOwnAudio" in videoTrack.getSettings()); 38 const [audioTrack] = stream.getAudioTracks(); 39 const audioTrackSettings = audioTrack.getSettings(); 40 assert_true("restrictOwnAudio" in audioTrackSettings); 41 assert_equals( 42 audioTrackSettings.restrictOwnAudio, 43 restrictOwnAudio 44 ); 45 await audioTrack.applyConstraints(); 46 // Removing constraints does not change the restrictOwnAudio setting. 47 assert_true("restrictOwnAudio" in audioTrackSettings); 48 assert_equals( 49 audioTrackSettings.restrictOwnAudio, 50 restrictOwnAudio 51 ); 52 }, `getDisplayMedia({"audio":{"restrictOwnAudio":${restrictOwnAudio}}}) with getSettings`); 53 }); 54 } 55 56 </script>