RTCPeerConnection-remote-track-properties.https.html (2631B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <script src="RTCPeerConnection-helper.js"></script> 6 <script> 7 'use strict'; 8 9 async function setupPeerConnectionAndWaitForTrack(t, localTrack, localStream) { 10 const pc1 = createPeerConnectionWithCleanup(t); 11 pc1.addTrack(localTrack, localStream); 12 const pc2 = createPeerConnectionWithCleanup(t); 13 14 const haveTrackEvent = waitUntilEvent(pc2, "track"); 15 await exchangeOfferAnswer(pc1, pc2); 16 const trackEvent = await haveTrackEvent; 17 return [ trackEvent.track, trackEvent.streams[0] ]; 18 } 19 20 function testStreamId(localStream, remoteStream, kind) 21 { 22 test(() => { 23 assert_equals(localStream.id, remoteStream.id); 24 }, "Stream id for " + kind); 25 } 26 27 function testTrackLabel(remoteTrack, kind) 28 { 29 test(() => { 30 assert_equals(remoteTrack.label, "remote " + kind); 31 }, "Track label for " + kind); 32 } 33 34 promise_test(async t => { 35 const [localTrack, localStream] = await createTrackAndStreamWithCleanup(t, "video"); 36 const [remoteTrack, remoteStream] = await setupPeerConnectionAndWaitForTrack(t, localTrack, localStream); 37 38 testStreamId(localStream, remoteStream, "video"); 39 testTrackLabel(remoteTrack, "video"); 40 }, 'Remote video track and stream'); 41 42 promise_test(async t => { 43 const [localTrack, localStream] = await createTrackAndStreamWithCleanup(t, "audio"); 44 const [remoteTrack, remoteStream] = await setupPeerConnectionAndWaitForTrack(t, localTrack, localStream); 45 46 testStreamId(localStream, remoteStream, "audio"); 47 testTrackLabel(remoteTrack, "audio"); 48 }, 'Remote audio track and stream'); 49 50 promise_test(async t => { 51 const [localTrack, localStream] = await createTrackAndStreamWithCleanup(t, "audio"); 52 const remoteTrackIds = new Set(); 53 for (let i = 0; i < 10; ++i) { 54 const [remoteTrack, remoteStream] = await setupPeerConnectionAndWaitForTrack(t, localTrack, localStream); 55 remoteTrackIds.add(remoteTrack.id); 56 } 57 58 assert_greater_than(remoteTrackIds.size, 1, "Remote tracks should have their own id"); 59 }, 'Remote audio track ID is different on different PCs'); 60 61 promise_test(async t => { 62 const [localTrack, localStream] = await createTrackAndStreamWithCleanup(t, "video"); 63 const remoteTrackIds = new Set(); 64 for (let i = 0; i < 10; ++i) { 65 const [remoteTrack, remoteStream] = await setupPeerConnectionAndWaitForTrack(t, localTrack, localStream); 66 remoteTrackIds.add(remoteTrack.id); 67 } 68 69 assert_greater_than(remoteTrackIds.size, 1, "Remote tracks should have their own id"); 70 }, 'Remote video track ID is different on different PCs'); 71 72 </script>