Bug 1425618 - Part 1: Test-cases for offerToReceiveX: false. r=jib draft
authorByron Campen [:bwc] <docfaraday@gmail.com>
Mon, 18 Dec 2017 11:44:45 -0600
changeset 714125 6a42d3e352f79e811823b2ff19066bb0a9bc752e
parent 714124 0843e4e6cb1d6e32a35ce4d7014bd250c24f74fa
child 714126 5a2f85552ce388edccfe9c74ce1f3157758e17f0
push id93856
push userbcampen@mozilla.com
push dateThu, 21 Dec 2017 19:06:40 +0000
reviewersjib
bugs1425618
milestone59.0a1
Bug 1425618 - Part 1: Test-cases for offerToReceiveX: false. r=jib MozReview-Commit-ID: FGkD1QJ9Us2
dom/media/tests/mochitest/test_peerConnection_transceivers.html
--- a/dom/media/tests/mochitest/test_peerConnection_transceivers.html
+++ b/dom/media/tests/mochitest/test_peerConnection_transceivers.html
@@ -351,24 +351,28 @@
 
     pc.close();
     stopTracks(audioStream, videoStream);
   };
 
   let checkAddTransceiverWithOfferToReceive = async kinds => {
     let pc = new RTCPeerConnection();
 
+    let propsToSet = kinds.map(kind => {
+      if (kind == "audio") {
+        return "offerToReceiveAudio";
+      } else if (kind == "video") {
+        return "offerToReceiveVideo";
+      }
+    });
+
     let options = {};
 
-    for (let kind of kinds) {
-      if (kind == "audio") {
-        options.offerToReceiveAudio = true;
-      } else if (kind == "video") {
-        options.offerToReceiveVideo = true;
-      }
+    for (let prop of propsToSet) {
+      options[prop] = true;
     }
 
     let offer = await pc.createOffer(options);
 
     let expected = [];
 
     // NOTE: The ordering here is not laid out in the spec at all, this is
     // firefox specific.
@@ -393,16 +397,45 @@
           mid: null,
           currentDirection: null,
           stopped: false
         });
     }
 
     hasProps(pc.getTransceivers(), expected);
 
+    // Test offerToReceive: false
+    for (let prop of propsToSet) {
+      options[prop] = false;
+    }
+
+    // Check that sendrecv goes to sendonly
+    for (let transceiver of pc.getTransceivers()) {
+      transceiver.direction = "sendrecv";
+    }
+
+    for (let transceiverCheck of expected) {
+      transceiverCheck.direction = "sendonly";
+    }
+
+    offer = await pc.createOffer(options);
+    hasProps(pc.getTransceivers(), expected);
+
+    // Check that recvonly goes to inactive
+    for (let transceiver of pc.getTransceivers()) {
+      transceiver.direction = "recvonly";
+    }
+
+    for (let transceiverCheck of expected) {
+      transceiverCheck.direction = "inactive";
+    }
+
+    offer = await pc.createOffer(options);
+    hasProps(pc.getTransceivers(), expected);
+
     pc.close();
   };
 
   let checkAddTransceiverWithSetRemoteOfferSending = async () => {
     let pc1 = new RTCPeerConnection();
     let pc2 = new RTCPeerConnection();
 
     let stream = await getUserMedia({audio: true});