Skip to content

Commit

Permalink
Adapt Chrome's getStats to match the standard.
Browse files Browse the repository at this point in the history
  • Loading branch information
bemasc committed Oct 23, 2014
1 parent a136eb8 commit 71a5837
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
32 changes: 31 additions & 1 deletion adapter.js
Expand Up @@ -22,6 +22,24 @@ var renameIceURLs = function (config) {
return config;
};

var fixChromeStatsResponse = function(response) {
var standardReport = {};
var reports = response.result();
reports.forEach(function(report) {
var standardStats = {};
standardStats.id = report.id;
standardStats.timestamp = report.timestamp;
standardStats.type = report.type;
var names = report.names();
names.forEach(function(name) {
standardStats[name] = report.stat(name);
});
standardReport[standardStats.id] = standardStats;
});

return standardReport;
};

// Unify PeerConnection Object.
if (typeof RTCPeerConnection !== 'undefined') {
myRTCPeerConnection = RTCPeerConnection;
Expand All @@ -31,7 +49,19 @@ if (typeof RTCPeerConnection !== 'undefined') {
return new mozRTCPeerConnection(renameIceURLs(configuration), constraints);
};
} else if (typeof webkitRTCPeerConnection !== 'undefined') {
myRTCPeerConnection = webkitRTCPeerConnection;
// Chrome returns a nonstandard, non-JSON-ifiable response from getStats.
myRTCPeerConnection = function(configuration, constraints) {
var pc = new webkitRTCPeerConnection(configuration, constraints);
var boundGetStats = pc.getStats.bind(pc);
pc.getStats = function(selector, successCallback, failureCallback) {
var successCallbackWrapper = function(chromeStatsResponse) {
successCallback(fixChromeStatsResponse(chromeStatsResponse));
};
// Chrome also takes its arguments in the wrong order.
boundGetStats(successCallbackWrapper, failureCallback, selector);
};
return pc;
};
}

// Unify SessionDescrption Object.
Expand Down
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "webrtc-adapter",
"version": "0.0.3",
"version": "0.0.4",
"description": "Commonjs adapter.js browser compatibility shim for webRTC",
"main": "adapter.js",
"scripts": {
Expand Down

0 comments on commit 71a5837

Please sign in to comment.