Browse Source

Moved browser-specific code to separate adapter.

pull/134/head
Joachim Bauch 12 years ago
parent
commit
83d7907dcd
  1. 67
      static/js/libs/webrtc.getstats.js
  2. 4
      static/js/main.js
  3. 40
      static/js/mediastream/peerconnection.js

67
static/js/libs/webrtc.getstats.js

@ -0,0 +1,67 @@ @@ -0,0 +1,67 @@
/*
* Spreed WebRTC.
* Copyright (C) 2013-2014 struktur AG
*
* This file is part of Spreed WebRTC.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
var getRTCStats = null;
define(['webrtc.adapter'], function() {
switch (webrtcDetectedBrowser) {
case "firefox":
getRTCStats = function(peerconnection, callback) {
peerconnection.getStats(
null,
function (res) {
var items = [];
res.forEach(function(result) {
items.push(result);
});
callback(items);
},
callback
);
};
break;
case "chrome":
getRTCStats = function(peerconnection, callback) {
peerconnection.getStats(function(res) {
var items = [];
res.result().forEach(function(result) {
var item = {};
result.names().forEach(function(name) {
item[name] = result.stat(name);
});
item.id = result.id;
item.type = result.type;
item.timestamp = result.timestamp;
items.push(item);
});
callback(items);
});
};
break;
default:
// browser doesn't support WebRTC
break;
}
});

4
static/js/main.js

@ -27,6 +27,7 @@ require.config({ @@ -27,6 +27,7 @@ require.config({
"underscore": 'libs/lodash.min', // alternative to underscore
"modernizr": 'libs/modernizr',
'webrtc.adapter': 'libs/webrtc.adapter',
'webrtc.getstats': 'libs/webrtc.getstats',
'angular': 'libs/angular/angular.min',
'ui-bootstrap': 'libs/angular/ui-bootstrap-tpls.min',
'ua-parser': 'libs/ua-parser',
@ -133,6 +134,9 @@ require.config({ @@ -133,6 +134,9 @@ require.config({
deps: ['jquery'],
exports: '$'
},
'webrtc.getstats': {
deps: ['webrtc.adapter']
}
}
});

40
static/js/mediastream/peerconnection.js

@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
define(['jquery', 'underscore', 'webrtc.adapter'], function($, _) {
define(['jquery', 'underscore', 'webrtc.adapter', 'webrtc.getstats'], function($, _) {
var count = 0;
var dataChannelDefaultLabel = "default";
@ -207,44 +207,8 @@ define(['jquery', 'underscore', 'webrtc.adapter'], function($, _) { @@ -207,44 +207,8 @@ define(['jquery', 'underscore', 'webrtc.adapter'], function($, _) {
};
PeerConnection.prototype.getStatistics = function(callback) {
if (!this.pc) {
callback([]);
return;
}
if (!!navigator.mozGetUserMedia) {
this.getStats(
null,
function (res) {
var items = [];
res.forEach(function(result) {
items.push(result);
});
callback(items);
},
callback
);
} else {
this.getStats(function(res) {
var items = [];
res.result().forEach(function(result) {
var item = {};
result.names().forEach(function(name) {
item[name] = result.stat(name);
});
item.id = result.id;
item.type = result.type;
item.timestamp = result.timestamp;
items.push(item);
});
callback(items);
});
}
};
PeerConnection.prototype.updateStatistics = function(callback) {
this.getStatistics(_.bind(function(stats) {
getRTCStats(this.pc, _.bind(function(stats) {
if (!this.localCertificate || !this.remoteCertificate || !this.dtlsCipher || !this.srtpCipher) {
var certificates = {};
var dtlsCiphers = {};

Loading…
Cancel
Save