adapter_factory.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. "use strict";
  2. 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); }
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.adapterFactory = adapterFactory;
  7. var utils = _interopRequireWildcard(require("./utils"));
  8. var chromeShim = _interopRequireWildcard(require("./chrome/chrome_shim"));
  9. var firefoxShim = _interopRequireWildcard(require("./firefox/firefox_shim"));
  10. var safariShim = _interopRequireWildcard(require("./safari/safari_shim"));
  11. var commonShim = _interopRequireWildcard(require("./common_shim"));
  12. var sdp = _interopRequireWildcard(require("sdp"));
  13. 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); }
  14. 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; }
  15. /*
  16. * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
  17. *
  18. * Use of this source code is governed by a BSD-style license
  19. * that can be found in the LICENSE file in the root of the source
  20. * tree.
  21. */
  22. // Browser shims.
  23. // Shimming starts here.
  24. function adapterFactory() {
  25. var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  26. window = _ref.window;
  27. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
  28. shimChrome: true,
  29. shimFirefox: true,
  30. shimSafari: true
  31. };
  32. // Utils.
  33. var logging = utils.log;
  34. var browserDetails = utils.detectBrowser(window);
  35. var adapter = {
  36. browserDetails: browserDetails,
  37. commonShim: commonShim,
  38. extractVersion: utils.extractVersion,
  39. disableLog: utils.disableLog,
  40. disableWarnings: utils.disableWarnings,
  41. // Expose sdp as a convenience. For production apps include directly.
  42. sdp: sdp
  43. };
  44. // Shim browser if found.
  45. switch (browserDetails.browser) {
  46. case 'chrome':
  47. if (!chromeShim || !chromeShim.shimPeerConnection || !options.shimChrome) {
  48. logging('Chrome shim is not included in this adapter release.');
  49. return adapter;
  50. }
  51. if (browserDetails.version === null) {
  52. logging('Chrome shim can not determine version, not shimming.');
  53. return adapter;
  54. }
  55. logging('adapter.js shimming chrome.');
  56. // Export to the adapter global object visible in the browser.
  57. adapter.browserShim = chromeShim;
  58. // Must be called before shimPeerConnection.
  59. commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);
  60. commonShim.shimParameterlessSetLocalDescription(window, browserDetails);
  61. chromeShim.shimGetUserMedia(window, browserDetails);
  62. chromeShim.shimMediaStream(window, browserDetails);
  63. chromeShim.shimPeerConnection(window, browserDetails);
  64. chromeShim.shimOnTrack(window, browserDetails);
  65. chromeShim.shimAddTrackRemoveTrack(window, browserDetails);
  66. chromeShim.shimGetSendersWithDtmf(window, browserDetails);
  67. chromeShim.shimGetStats(window, browserDetails);
  68. chromeShim.shimSenderReceiverGetStats(window, browserDetails);
  69. chromeShim.fixNegotiationNeeded(window, browserDetails);
  70. commonShim.shimRTCIceCandidate(window, browserDetails);
  71. commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails);
  72. commonShim.shimConnectionState(window, browserDetails);
  73. commonShim.shimMaxMessageSize(window, browserDetails);
  74. commonShim.shimSendThrowTypeError(window, browserDetails);
  75. commonShim.removeExtmapAllowMixed(window, browserDetails);
  76. break;
  77. case 'firefox':
  78. if (!firefoxShim || !firefoxShim.shimPeerConnection || !options.shimFirefox) {
  79. logging('Firefox shim is not included in this adapter release.');
  80. return adapter;
  81. }
  82. logging('adapter.js shimming firefox.');
  83. // Export to the adapter global object visible in the browser.
  84. adapter.browserShim = firefoxShim;
  85. // Must be called before shimPeerConnection.
  86. commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);
  87. commonShim.shimParameterlessSetLocalDescription(window, browserDetails);
  88. firefoxShim.shimGetUserMedia(window, browserDetails);
  89. firefoxShim.shimPeerConnection(window, browserDetails);
  90. firefoxShim.shimOnTrack(window, browserDetails);
  91. firefoxShim.shimRemoveStream(window, browserDetails);
  92. firefoxShim.shimSenderGetStats(window, browserDetails);
  93. firefoxShim.shimReceiverGetStats(window, browserDetails);
  94. firefoxShim.shimRTCDataChannel(window, browserDetails);
  95. firefoxShim.shimAddTransceiver(window, browserDetails);
  96. firefoxShim.shimGetParameters(window, browserDetails);
  97. firefoxShim.shimCreateOffer(window, browserDetails);
  98. firefoxShim.shimCreateAnswer(window, browserDetails);
  99. commonShim.shimRTCIceCandidate(window, browserDetails);
  100. commonShim.shimConnectionState(window, browserDetails);
  101. commonShim.shimMaxMessageSize(window, browserDetails);
  102. commonShim.shimSendThrowTypeError(window, browserDetails);
  103. break;
  104. case 'safari':
  105. if (!safariShim || !options.shimSafari) {
  106. logging('Safari shim is not included in this adapter release.');
  107. return adapter;
  108. }
  109. logging('adapter.js shimming safari.');
  110. // Export to the adapter global object visible in the browser.
  111. adapter.browserShim = safariShim;
  112. // Must be called before shimCallbackAPI.
  113. commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails);
  114. commonShim.shimParameterlessSetLocalDescription(window, browserDetails);
  115. safariShim.shimRTCIceServerUrls(window, browserDetails);
  116. safariShim.shimCreateOfferLegacy(window, browserDetails);
  117. safariShim.shimCallbacksAPI(window, browserDetails);
  118. safariShim.shimLocalStreamsAPI(window, browserDetails);
  119. safariShim.shimRemoteStreamsAPI(window, browserDetails);
  120. safariShim.shimTrackEventTransceiver(window, browserDetails);
  121. safariShim.shimGetUserMedia(window, browserDetails);
  122. safariShim.shimAudioContext(window, browserDetails);
  123. commonShim.shimRTCIceCandidate(window, browserDetails);
  124. commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails);
  125. commonShim.shimMaxMessageSize(window, browserDetails);
  126. commonShim.shimSendThrowTypeError(window, browserDetails);
  127. commonShim.removeExtmapAllowMixed(window, browserDetails);
  128. break;
  129. default:
  130. logging('Unsupported browser!');
  131. break;
  132. }
  133. return adapter;
  134. }