'use strict';
// Construct an RTCIceTransport instance. The instance will automatically be
// cleaned up when the test finishes.
function makeIceTransport(t) {
const iceTransport = new RTCIceTransport();
t.add_cleanup(() => iceTransport.stop());
return iceTransport;
}
// Construct two RTCIceTransport instances, configure them to exchange
// candidates, then gather() them.
// Returns a 2-list: [ RTCIceTransport, RTCIceTransport ]
function makeAndGatherTwoIceTransports(t) {
const localTransport = makeIceTransport(t);
const remoteTransport = makeIceTransport(t);
localTransport.onicecandidate = e => {
if (e.candidate) {
remoteTransport.addRemoteCandidate(e.candidate);
}
};
remoteTransport.onicecandidate = e => {
if (e.candidate) {
localTransport.addRemoteCandidate(e.candidate);
}
};
localTransport.gather({});
remoteTransport.gather({});
return [ localTransport, remoteTransport ];
}
// Construct two RTCIceTransport instances, configure them to exchange
// candidates and parameters, then gather() and start() them.
// Returns a 2-list:
// [ controlling RTCIceTransport,
// controlled RTCIceTransport ]
function makeGatherAndStartTwoIceTransports(t) {
const [ localTransport, remoteTransport ] = makeAndGatherTwoIceTransports(t);
localTransport.start(remoteTransport.getLocalParameters(), 'controlling');
remoteTransport.start(localTransport.getLocalParameters(), 'controlled');
return [ localTransport, remoteTransport ];
}