test_setSinkId_default_addTrack.html (1419B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <script type="application/javascript" src="mediaStreamPlayback.js"></script> 5 </head> 6 <body> 7 <pre id="test"> 8 9 <script> 10 createHTML({ 11 title: "HTMLMediaElement.setSinkId with default device and adding a track", 12 bug: "1661649", 13 }); 14 15 /** 16 * Run a test to verify set sink id in audio element. 17 */ 18 runTest(async () => { 19 await pushPrefs(["media.setsinkid.enabled", true]); 20 21 // Expose an audio output device. 22 SpecialPowers.wrap(document).notifyUserGestureActivation(); 23 await navigator.mediaDevices.selectAudioOutput(); 24 25 const allDevices = await navigator.mediaDevices.enumerateDevices(); 26 const audioDevices = allDevices.filter(({kind}) => kind == 'audiooutput'); 27 info(`Found ${audioDevices.length} output devices`); 28 isnot(audioDevices.length, 0, "Found output devices"); 29 30 const audio = createMediaElement("audio", "audio"); 31 document.body.appendChild(audio); 32 33 audio.srcObject = await navigator.mediaDevices.getUserMedia({audio: true}); 34 audio.play(); 35 36 await audio.setSinkId(audioDevices[0].deviceId); 37 await audio.setSinkId(""); 38 is(audio.sinkId, "", "sinkId restored to default"); 39 40 audio.srcObject.addTrack((await navigator.mediaDevices.getUserMedia({audio: true})).getTracks()[0]); 41 42 await wait(0); 43 44 for (let t of audio.srcObject.getTracks()) { 45 t.stop(); 46 } 47 }); 48 49 </script> 50 </pre> 51 </body> 52 </html>