blob: 722773f1038d00d814310a5ef256a21c98db338d [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<script>
description("Tests RTCPeerConnection remoteDescription.");
var pc = null;
function requestFailed2()
{
testPassed('requestFailed was called.');
shouldBeEqualToString('pc.remoteDescription.type', "answer");
shouldBeEqualToString('pc.remoteDescription.sdp', "remote");
pc.close();
shouldBeEqualToString('pc.remoteDescription.type', "answer");
shouldBeEqualToString('pc.remoteDescription.sdp', "remote");
finishJSTest();
}
function requestSucceeded1()
{
testPassed('requestSucceeded was called.');
sessionDescription = new RTCSessionDescription({type:"offer", sdp:"local"});
shouldNotThrow('pc.setRemoteDescription(sessionDescription, unexpectedCallback, requestFailed2);');
}
function unexpectedCallback()
{
testFailed('unexpectedCallback was called.');
finishJSTest();
}
function expectedTypeError(error)
{
window.error = error;
shouldBe('error.name', '"TypeError"');
testPassed('expectedTypeError was called.');
}
function expectedInvalidSessionDescription(error)
{
window.error = error;
shouldBe('error.name', '"OperationError"');
testPassed('expectedInvalidSessionDescription was called.');
}
function testExecutionOrderClosedConnection()
{
var localPeerConnection = new RTCPeerConnection();
localPeerConnection.close();
var counter = 0;
window.events = [];
Promise.resolve().then(_ => events[counter++] = 1);
var sessionDescription = new RTCSessionDescription({type:"answer", sdp:"remote"});
localPeerConnection.setRemoteDescription(sessionDescription, unexpectedCallback, error => {
window.error = error;
shouldBe('error.name', '"InvalidStateError"');
shouldBe('error.toString()', '"InvalidStateError: The RTCPeerConnection\'s signalingState is \'closed\'."');
events[counter++] = 2;
});
Promise.resolve().then(_ => {
events[counter++] = 3;
shouldBe('events', '[1,2,3]');
});
}
shouldNotThrow('testExecutionOrderClosedConnection()');
pc = new RTCPeerConnection();
shouldNotThrow('pc.setRemoteDescription().catch(expectedTypeError)');
shouldNotThrow('pc.setRemoteDescription(null).catch(expectedInvalidSessionDescription)');
var sessionDescription = new RTCSessionDescription({type:"answer", sdp:"remote"});
shouldNotThrow('pc.setRemoteDescription(sessionDescription, requestSucceeded1, unexpectedCallback);');
window.jsTestIsAsync = true;
window.successfullyParsed = true;
</script>
</body>
</html>