You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
4.1 KiB
119 lines
4.1 KiB
10 months ago
|
/*
|
||
|
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
||
|
*
|
||
|
* Use of this source code is governed by a BSD-style license
|
||
|
* that can be found in the LICENSE file in the root of the source
|
||
|
* tree.
|
||
|
*/
|
||
|
/* eslint-env node */
|
||
|
'use strict';
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.shimGetDisplayMedia = exports.shimGetUserMedia = undefined;
|
||
|
|
||
|
var _getusermedia = require('./getusermedia');
|
||
|
|
||
|
Object.defineProperty(exports, 'shimGetUserMedia', {
|
||
|
enumerable: true,
|
||
|
get: function get() {
|
||
|
return _getusermedia.shimGetUserMedia;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var _getdisplaymedia = require('./getdisplaymedia');
|
||
|
|
||
|
Object.defineProperty(exports, 'shimGetDisplayMedia', {
|
||
|
enumerable: true,
|
||
|
get: function get() {
|
||
|
return _getdisplaymedia.shimGetDisplayMedia;
|
||
|
}
|
||
|
});
|
||
|
exports.shimPeerConnection = shimPeerConnection;
|
||
|
exports.shimReplaceTrack = shimReplaceTrack;
|
||
|
|
||
|
var _utils = require('../utils');
|
||
|
|
||
|
var utils = _interopRequireWildcard(_utils);
|
||
|
|
||
|
var _filtericeservers = require('./filtericeservers');
|
||
|
|
||
|
var _rtcpeerconnectionShim = require('rtcpeerconnection-shim');
|
||
|
|
||
|
var _rtcpeerconnectionShim2 = _interopRequireDefault(_rtcpeerconnectionShim);
|
||
|
|
||
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
|
||
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
||
|
|
||
|
function shimPeerConnection(window) {
|
||
|
var browserDetails = utils.detectBrowser(window);
|
||
|
|
||
|
if (window.RTCIceGatherer) {
|
||
|
if (!window.RTCIceCandidate) {
|
||
|
window.RTCIceCandidate = function RTCIceCandidate(args) {
|
||
|
return args;
|
||
|
};
|
||
|
}
|
||
|
if (!window.RTCSessionDescription) {
|
||
|
window.RTCSessionDescription = function RTCSessionDescription(args) {
|
||
|
return args;
|
||
|
};
|
||
|
}
|
||
|
// this adds an additional event listener to MediaStrackTrack that signals
|
||
|
// when a tracks enabled property was changed. Workaround for a bug in
|
||
|
// addStream, see below. No longer required in 15025+
|
||
|
if (browserDetails.version < 15025) {
|
||
|
var origMSTEnabled = Object.getOwnPropertyDescriptor(window.MediaStreamTrack.prototype, 'enabled');
|
||
|
Object.defineProperty(window.MediaStreamTrack.prototype, 'enabled', {
|
||
|
set: function set(value) {
|
||
|
origMSTEnabled.set.call(this, value);
|
||
|
var ev = new Event('enabled');
|
||
|
ev.enabled = value;
|
||
|
this.dispatchEvent(ev);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ORTC defines the DTMF sender a bit different.
|
||
|
// https://github.com/w3c/ortc/issues/714
|
||
|
if (window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) {
|
||
|
Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', {
|
||
|
get: function get() {
|
||
|
if (this._dtmf === undefined) {
|
||
|
if (this.track.kind === 'audio') {
|
||
|
this._dtmf = new window.RTCDtmfSender(this);
|
||
|
} else if (this.track.kind === 'video') {
|
||
|
this._dtmf = null;
|
||
|
}
|
||
|
}
|
||
|
return this._dtmf;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
// Edge currently only implements the RTCDtmfSender, not the
|
||
|
// RTCDTMFSender alias. See http://draft.ortc.org/#rtcdtmfsender2*
|
||
|
if (window.RTCDtmfSender && !window.RTCDTMFSender) {
|
||
|
window.RTCDTMFSender = window.RTCDtmfSender;
|
||
|
}
|
||
|
|
||
|
var RTCPeerConnectionShim = (0, _rtcpeerconnectionShim2.default)(window, browserDetails.version);
|
||
|
window.RTCPeerConnection = function RTCPeerConnection(config) {
|
||
|
if (config && config.iceServers) {
|
||
|
config.iceServers = (0, _filtericeservers.filterIceServers)(config.iceServers, browserDetails.version);
|
||
|
utils.log('ICE servers after filtering:', config.iceServers);
|
||
|
}
|
||
|
return new RTCPeerConnectionShim(config);
|
||
|
};
|
||
|
window.RTCPeerConnection.prototype = RTCPeerConnectionShim.prototype;
|
||
|
}
|
||
|
|
||
|
function shimReplaceTrack(window) {
|
||
|
// ORTC has replaceTrack -- https://github.com/w3c/ortc/issues/614
|
||
|
if (window.RTCRtpSender && !('replaceTrack' in window.RTCRtpSender.prototype)) {
|
||
|
window.RTCRtpSender.prototype.replaceTrack = window.RTCRtpSender.prototype.setTrack;
|
||
|
}
|
||
|
}
|