blob: 5494784393b1d3f79f6a4095ba00bef49410d155 [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 getTrackStats(connection)
{
return connection.getStats().then((report) => {
var stats;
report.forEach((statItem) => {
if (statItem.type === "track") {
stats = statItem;
}
});
return stats;
});
}
var firstConnection, secondConnection;
promise_test((test) => {
if (window.testRunner)
testRunner.setUserMediaPermission(true);
var localStream, remoteStream;
return navigator.mediaDevices.getUserMedia({ video: true}).then((stream) => {
localStream = stream;
return new Promise((resolve, reject) => {
createConnections((connection) => {
firstConnection = connection;
firstConnection.addTrack(stream.getVideoTracks()[0], stream);
}, (connection) => {
secondConnection = connection;
secondConnection.ontrack = (trackEvent) => {
remoteStream = trackEvent.streams[0];
resolve();
};
});
setTimeout(() => reject("Test timed out"), 5000);
});
}).then(() => {
return getTrackStats(secondConnection);
}).then((stats) => {
assert_true(!!stats, "tracks stats should not be null or undefined");
stats.id = "id";
stats.timestamp = 1;
stats.trackIdentifier = "trackid";
assert_equals(JSON.stringify(stats), '{"id":"id","timestamp":1,"type":"track","detached":false,"ended":false,"framesDecoded":0,"framesDropped":0,"framesReceived":0,"remoteSource":true,"trackIdentifier":"trackid"}');
return waitFor(1000);
}).then(() => {
return getTrackStats(secondConnection);
}).then((stats) => {
assert_equals(stats.frameHeight, 480);
assert_equals(stats.frameWidth, 640);
assert_true(stats.framesDecoded > 0);
assert_true(stats.framesReceived > 0);
});
}, "Basic video media stream track stats");
</script>
</body>
</html>