blob: 13ba9c96a3f62e2b58e5801bf1bab525a7ad27bc [file] [log] [blame]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Testing basic video exchange from offerer to receiver</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
</head>
<body>
<script src ="routines.js"></script>
<script>
function fingerprintFromSDP(sdp)
{
var fingerprint;
sdp.split("\r\n").forEach((line) => {
if (line.startsWith("a=fingerprint"))
fingerprint = line.substring(14);
});
return fingerprint;
}
function cnameFromSDP(sdp)
{
var expression = new RegExp("^a=ssrc:(\\d+) cname:([\\w+/\\-@\\.\\{\\}]+).*$");
var cname;
sdp.split("\r\n").forEach((line) => {
let match = line.match(expression);
if (match)
cname = match[2];
});
return cname;
}
promise_test((test) => {
if (window.testRunner)
testRunner.setUserMediaPermission(true);
var offerFingerprint, answerFingerprint;
var offerCName;
return navigator.mediaDevices.getUserMedia({ video: true, audio: true}).then((stream) => {
return new Promise((resolve, reject) => {
createConnections((firstConnection) => {
firstConnection.addTrack(stream.getVideoTracks()[0], stream);
}, (secondConnection) => {
}, {observeOffer : (offer) => {
offerFingerprint = fingerprintFromSDP(offer.sdp);
offerCName = cnameFromSDP(offer.sdp);
}, observeAnswer: (answer) => {
answerFingerprint = fingerprintFromSDP(answer.sdp);
resolve();
}});
setTimeout(() => reject("Test timed out 1"), 2000);
});
}).then(() => {
return navigator.mediaDevices.getUserMedia({ video: true, audio: true}).then((stream) => {
return new Promise((resolve, reject) => {
createConnections((firstConnection) => {
firstConnection.addTrack(stream.getVideoTracks()[0], stream);
}, (secondConnection) => {
}, {observeOffer : (offer) => {
assert_not_equals(fingerprintFromSDP(offer.sdp), offerFingerprint);
assert_not_equals(cnameFromSDP(offer.sdp), offerCName);
}, observeAnswer: (answer) => {
assert_not_equals(fingerprintFromSDP(answer.sdp), answerFingerprint);
resolve();
}});
setTimeout(() => reject("Test timed out 2"), 2000);
});
});
});
}, "Ensuring certificates and cnames are ephemerals");
</script>
</body>
</html>