tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>