mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 965656 - wait for the close of PC in all tests. r=jesup
This commit is contained in:
parent
5f3c045aca
commit
bb2fc762b3
@ -493,24 +493,70 @@ function PeerConnectionTest(options) {
|
|||||||
PeerConnectionTest.prototype.close = function PCT_close(onSuccess) {
|
PeerConnectionTest.prototype.close = function PCT_close(onSuccess) {
|
||||||
info("Closing peer connections. Connection state=" + this.connected);
|
info("Closing peer connections. Connection state=" + this.connected);
|
||||||
|
|
||||||
function signalingstatechangeClose(state) {
|
var self = this;
|
||||||
|
var closeTimeout = null;
|
||||||
|
var waitingForLocal = false;
|
||||||
|
var waitingForRemote = false;
|
||||||
|
var everythingClosed = false;
|
||||||
|
|
||||||
|
function verifyClosed() {
|
||||||
|
if ((self.waitingForLocal || self.waitingForRemote) ||
|
||||||
|
(self.pcLocal && (self.pcLocal.signalingState !== "closed")) ||
|
||||||
|
(self.pcRemote && (self.pcRemote.signalingState !== "closed"))) {
|
||||||
|
info("still waiting for closure");
|
||||||
|
}
|
||||||
|
else if (!everythingClosed) {
|
||||||
|
info("No closure pending");
|
||||||
|
if (self.pcLocal) {
|
||||||
|
is(self.pcLocal.signalingState, "closed", "pcLocal is in 'closed' state");
|
||||||
|
}
|
||||||
|
if (self.pcRemote) {
|
||||||
|
is(self.pcRemote.signalingState, "closed", "pcRemote is in 'closed' state");
|
||||||
|
}
|
||||||
|
clearTimeout(closeTimeout);
|
||||||
|
self.connected = false;
|
||||||
|
everythingClosed = true;
|
||||||
|
onSuccess();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function signalingstatechangeLocalClose(state) {
|
||||||
info("'onsignalingstatechange' event '" + state + "' received");
|
info("'onsignalingstatechange' event '" + state + "' received");
|
||||||
is(state, "closed", "onsignalingstatechange event is closed");
|
is(state, "closed", "onsignalingstatechange event is closed");
|
||||||
|
self.waitingForLocal = false;
|
||||||
|
verifyClosed();
|
||||||
}
|
}
|
||||||
|
|
||||||
// There is no onclose event for the remote peer existent yet. So close it
|
function signalingstatechangeRemoteClose(state) {
|
||||||
// side-by-side with the local peer.
|
info("'onsignalingstatechange' event '" + state + "' received");
|
||||||
if (this.pcLocal) {
|
is(state, "closed", "onsignalingstatechange event is closed");
|
||||||
this.pcLocal.onsignalingstatechange = signalingstatechangeClose;
|
self.waitingForRemote = false;
|
||||||
this.pcLocal.close();
|
verifyClosed();
|
||||||
}
|
}
|
||||||
if (this.pcRemote) {
|
|
||||||
this.pcRemote.onsignalingstatechange = signalingstatechangeClose;
|
|
||||||
this.pcRemote.close();
|
|
||||||
}
|
|
||||||
this.connected = false;
|
|
||||||
|
|
||||||
onSuccess();
|
function closeEverything() {
|
||||||
|
if ((self.pcLocal) && (self.pcLocal.signalingState !== "closed")) {
|
||||||
|
info("Closing pcLocal");
|
||||||
|
self.pcLocal.onsignalingstatechange = signalingstatechangeLocalClose;
|
||||||
|
self.waitingForLocal = true;
|
||||||
|
self.pcLocal.close();
|
||||||
|
}
|
||||||
|
if ((self.pcRemote) && (self.pcRemote.signalingState !== "closed")) {
|
||||||
|
info("Closing pcRemote");
|
||||||
|
self.pcRemote.onsignalingstatechange = signalingstatechangeRemoteClose;
|
||||||
|
self.waitingForRemote = true;
|
||||||
|
self.pcRemote.close();
|
||||||
|
}
|
||||||
|
verifyClosed();
|
||||||
|
}
|
||||||
|
|
||||||
|
closeTimeout = setTimeout(function() {
|
||||||
|
ok(false, "Closing PeerConnections timed out!");
|
||||||
|
// it is not a success, but the show must go on
|
||||||
|
onSuccess();
|
||||||
|
}, 60000);
|
||||||
|
|
||||||
|
closeEverything();
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -595,7 +641,6 @@ function PCT_setLocalDescription(peer, desc, stateExpected, onSuccess) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
peer.onsignalingstatechange = function (state) {
|
peer.onsignalingstatechange = function (state) {
|
||||||
//info(peer + ": 'onsignalingstatechange' event registered, signalingState: " + peer.signalingState);
|
|
||||||
info(peer + ": 'onsignalingstatechange' event '" + state + "' received");
|
info(peer + ": 'onsignalingstatechange' event '" + state + "' received");
|
||||||
if(stateExpected === state && eventFired == false) {
|
if(stateExpected === state && eventFired == false) {
|
||||||
eventFired = true;
|
eventFired = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user