tor-browser

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

test_peerConnection_addtrack_removetrack_events.html (2565B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <script type="application/javascript" src="pc.js"></script>
      5 </head>
      6 <body>
      7 <pre id="test">
      8 <script type="application/javascript">
      9 "use strict";
     10 
     11 createHTML({
     12  title: "MediaStream's 'addtrack' and 'removetrack' events with gUM",
     13  bug: "1208328"
     14 });
     15 
     16 runNetworkTest(function (options) {
     17  let test = new PeerConnectionTest(options);
     18  let eventsPromise;
     19  addRenegotiation(test.chain,
     20    [
     21      function PC_LOCAL_SWAP_VIDEO_TRACKS(test) {
     22        return getUserMedia({video: true}).then(stream => {
     23          var videoTransceiver = test.pcLocal._pc.getTransceivers()[1];
     24          is(videoTransceiver.currentDirection, "sendonly",
     25             "Video transceiver's current direction is sendonly");
     26          is(videoTransceiver.direction, "sendrecv",
     27             "Video transceiver's desired direction is sendrecv");
     28 
     29          const localStream = test.pcLocal._pc.getLocalStreams()[0];
     30          ok(localStream, "Should have local stream");
     31 
     32          const remoteStream = test.pcRemote._pc.getRemoteStreams()[0];
     33          ok(remoteStream, "Should have remote stream");
     34 
     35          const newTrack = stream.getTracks()[0];
     36 
     37          const videoSenderIndex =
     38            test.pcLocal._pc.getSenders().findIndex(s => s.track.kind == "video");
     39          isnot(videoSenderIndex, -1, "Should have video sender");
     40 
     41          test.pcLocal.removeSender(videoSenderIndex);
     42          is(videoTransceiver.direction, "recvonly",
     43             "Video transceiver should be recvonly after removeTrack");
     44          test.pcLocal.attachLocalTrack(stream.getTracks()[0], localStream);
     45          is(videoTransceiver.direction, "recvonly",
     46             "Video transceiver should be recvonly after addTrack");
     47 
     48          eventsPromise = haveEvent(remoteStream, "addtrack",
     49              wait(50000, new Error("No addtrack event for " + newTrack.id)))
     50            .then(trackEvent => {
     51              ok(trackEvent instanceof MediaStreamTrackEvent,
     52                 "Expected event to be instance of MediaStreamTrackEvent");
     53              is(trackEvent.type, "addtrack",
     54                 "Expected addtrack event type");
     55              is(trackEvent.track.readyState, "live",
     56                 "added track should be live");
     57            })
     58            .then(() => haveNoEvent(remoteStream, "addtrack"));
     59        });
     60      },
     61    ],
     62    [
     63      function PC_REMOTE_CHECK_EVENTS(test) {
     64        return eventsPromise;
     65      },
     66    ]
     67  );
     68 
     69  test.setMediaConstraints([{audio: true, video: true}], []);
     70  return test.run();
     71 });
     72 </script>
     73 </pre>
     74 </body>
     75 </html>