142 lines
7.5 KiB
JavaScript
142 lines
7.5 KiB
JavaScript
"use strict";
|
|
|
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.adapterFactory = adapterFactory;
|
|
var utils = _interopRequireWildcard(require("./utils"));
|
|
var chromeShim = _interopRequireWildcard(require("./chrome/chrome_shim"));
|
|
var firefoxShim = _interopRequireWildcard(require("./firefox/firefox_shim"));
|
|
var safariShim = _interopRequireWildcard(require("./safari/safari_shim"));
|
|
var commonShim = _interopRequireWildcard(require("./common_shim"));
|
|
var sdp = _interopRequireWildcard(require("sdp"));
|
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
/*
|
|
* 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.
|
|
*/
|
|
|
|
// Browser shims.
|
|
|
|
// Shimming starts here.
|
|
function adapterFactory() {
|
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
window = _ref.window;
|
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
shimChrome: true,
|
|
shimFirefox: true,
|
|
shimSafari: true
|
|
};
|
|
// Utils.
|
|
var logging = utils.log;
|
|
var browserDetails = utils.detectBrowser(window);
|
|
var adapter = {
|
|
browserDetails: browserDetails,
|
|
commonShim: commonShim,
|
|
extractVersion: utils.extractVersion,
|
|
disableLog: utils.disableLog,
|
|
disableWarnings: utils.disableWarnings,
|
|
// Expose sdp as a convenience. For production apps include directly.
|
|
sdp: sdp
|
|
};
|
|
|
|
// Shim browser if found.
|
|
switch (browserDetails.browser) {
|
|
case 'chrome':
|
|
if (!chromeShim || !chromeShim.shimPeerConnection || !options.shimChrome) {
|
|
logging('Chrome shim is not included in this adapter release.');
|
|
return adapter;
|
|
}
|
|
if (browserDetails.version === null) {
|
|
logging('Chrome shim can not determine version, not shimming.');
|
|
return adapter;
|
|
}
|
|
logging('adapter.js shimming chrome.');
|
|
// Export to the adapter global object visible in the browser.
|
|
adapter.browserShim = chromeShim;
|
|
|
|
// Must be called before shimPeerConnection.
|
|
commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);
|
|
commonShim.shimParameterlessSetLocalDescription(window, browserDetails);
|
|
chromeShim.shimGetUserMedia(window, browserDetails);
|
|
chromeShim.shimMediaStream(window, browserDetails);
|
|
chromeShim.shimPeerConnection(window, browserDetails);
|
|
chromeShim.shimOnTrack(window, browserDetails);
|
|
chromeShim.shimAddTrackRemoveTrack(window, browserDetails);
|
|
chromeShim.shimGetSendersWithDtmf(window, browserDetails);
|
|
chromeShim.shimGetStats(window, browserDetails);
|
|
chromeShim.shimSenderReceiverGetStats(window, browserDetails);
|
|
chromeShim.fixNegotiationNeeded(window, browserDetails);
|
|
commonShim.shimRTCIceCandidate(window, browserDetails);
|
|
commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails);
|
|
commonShim.shimConnectionState(window, browserDetails);
|
|
commonShim.shimMaxMessageSize(window, browserDetails);
|
|
commonShim.shimSendThrowTypeError(window, browserDetails);
|
|
commonShim.removeExtmapAllowMixed(window, browserDetails);
|
|
break;
|
|
case 'firefox':
|
|
if (!firefoxShim || !firefoxShim.shimPeerConnection || !options.shimFirefox) {
|
|
logging('Firefox shim is not included in this adapter release.');
|
|
return adapter;
|
|
}
|
|
logging('adapter.js shimming firefox.');
|
|
// Export to the adapter global object visible in the browser.
|
|
adapter.browserShim = firefoxShim;
|
|
|
|
// Must be called before shimPeerConnection.
|
|
commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);
|
|
commonShim.shimParameterlessSetLocalDescription(window, browserDetails);
|
|
firefoxShim.shimGetUserMedia(window, browserDetails);
|
|
firefoxShim.shimPeerConnection(window, browserDetails);
|
|
firefoxShim.shimOnTrack(window, browserDetails);
|
|
firefoxShim.shimRemoveStream(window, browserDetails);
|
|
firefoxShim.shimSenderGetStats(window, browserDetails);
|
|
firefoxShim.shimReceiverGetStats(window, browserDetails);
|
|
firefoxShim.shimRTCDataChannel(window, browserDetails);
|
|
firefoxShim.shimAddTransceiver(window, browserDetails);
|
|
firefoxShim.shimGetParameters(window, browserDetails);
|
|
firefoxShim.shimCreateOffer(window, browserDetails);
|
|
firefoxShim.shimCreateAnswer(window, browserDetails);
|
|
commonShim.shimRTCIceCandidate(window, browserDetails);
|
|
commonShim.shimConnectionState(window, browserDetails);
|
|
commonShim.shimMaxMessageSize(window, browserDetails);
|
|
commonShim.shimSendThrowTypeError(window, browserDetails);
|
|
break;
|
|
case 'safari':
|
|
if (!safariShim || !options.shimSafari) {
|
|
logging('Safari shim is not included in this adapter release.');
|
|
return adapter;
|
|
}
|
|
logging('adapter.js shimming safari.');
|
|
// Export to the adapter global object visible in the browser.
|
|
adapter.browserShim = safariShim;
|
|
|
|
// Must be called before shimCallbackAPI.
|
|
commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);
|
|
commonShim.shimParameterlessSetLocalDescription(window, browserDetails);
|
|
safariShim.shimRTCIceServerUrls(window, browserDetails);
|
|
safariShim.shimCreateOfferLegacy(window, browserDetails);
|
|
safariShim.shimCallbacksAPI(window, browserDetails);
|
|
safariShim.shimLocalStreamsAPI(window, browserDetails);
|
|
safariShim.shimRemoteStreamsAPI(window, browserDetails);
|
|
safariShim.shimTrackEventTransceiver(window, browserDetails);
|
|
safariShim.shimGetUserMedia(window, browserDetails);
|
|
safariShim.shimAudioContext(window, browserDetails);
|
|
commonShim.shimRTCIceCandidate(window, browserDetails);
|
|
commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails);
|
|
commonShim.shimMaxMessageSize(window, browserDetails);
|
|
commonShim.shimSendThrowTypeError(window, browserDetails);
|
|
commonShim.removeExtmapAllowMixed(window, browserDetails);
|
|
break;
|
|
default:
|
|
logging('Unsupported browser!');
|
|
break;
|
|
}
|
|
return adapter;
|
|
}
|