Bug 1425618 - Part 1: Test-cases for offerToReceiveX: false. r=jib
MozReview-Commit-ID: FGkD1QJ9Us2
--- 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});