From 557382d3c052d9182e1aee802bd0b779f4dcf930 Mon Sep 17 00:00:00 2001 From: Paul Berberian Date: Tue, 22 Aug 2023 16:06:31 +0200 Subject: [PATCH] Remove dist folder and its content from git for the v4 This is a proposal for something I wanted to do for a long time but didn't for legacy reasons. Today builds, which are parts of the `dist/` folder at the root of this repository, are stored and its update committed through git, alongside the rest of the code. This means that people cloning or even just browsing the repo is going to be polutted by megabytes and megabytes of uninteresting bundled code which can already be built on demand through our bundling dependencies (I hope deterministically? Or at least not different in ways that matters?). Removing the dist folder completely would have the following pros, at least to me: - no need to store the bundle through git and its mostly uninteresting and large diffs, which may lead to a future gain in storage space, though I don't know what the proportions are (chances are they're very small, but still). - When using git tools or tools relying on files like `.gitignore` (e.g. the searching tool ripgrep - which I use daily. I think that VSCode also rely on it or at least it could last time I read about it - for the lost and sad people that are not on vim/neovim yet). Before, using those tools on the whole repo without explicitely discarding the `dist` directory would lead to a lot of polution, especially in search. - It un-clutters the repository. I like the idea of being able to understand its structure just by browsing it and one less directory is a nice step towards that goal. Yet it has the following cons I can think of: - It removes the previous possibility of just looking at the build on github and copy-pasting the bundle's code. Which some did on very fast tests in the past. - It leads to the necessity of first bundling the rx-player before doing things like `npm link`/`yarn link` or other tools/scripts that I'm not thinking of right now. --- .gitignore | 3 +- README.md | 4 - dist/mpd-parser.wasm | Bin 118330 -> 0 bytes dist/rx-player.d.ts | 3 - dist/rx-player.js | 53659 -------------------- dist/rx-player.min.d.ts | 3 - dist/rx-player.min.js | 2 - dist/rx-player.min.js.LICENSE.txt | 1 - doc/api/Miscellaneous/DASH_WASM_Parser.md | 5 +- 9 files changed, 2 insertions(+), 53678 deletions(-) delete mode 100644 dist/mpd-parser.wasm delete mode 100644 dist/rx-player.d.ts delete mode 100644 dist/rx-player.js delete mode 100644 dist/rx-player.min.d.ts delete mode 100644 dist/rx-player.min.js delete mode 100644 dist/rx-player.min.js.LICENSE.txt diff --git a/.gitignore b/.gitignore index 651702e49b..0e6ff967f5 100644 --- a/.gitignore +++ b/.gitignore @@ -22,8 +22,7 @@ /tests/performance/package.json /tests/performance/package-lock.json -/dist/_esm5.processed -/dist/_esm5.raw +/dist/ /doc/generated diff --git a/README.md b/README.md index 3fd88bd9ff..5b4e18a663 100644 --- a/README.md +++ b/README.md @@ -225,10 +225,6 @@ npm run test npm run list ``` -Builds are included in the ``dist/`` directory (builds based on the last version -are already included there). - - ## Why a new player? ########################################################### diff --git a/dist/mpd-parser.wasm b/dist/mpd-parser.wasm deleted file mode 100644 index 8d406bd689700c61a893a475d5215972061bf364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118330 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 & 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 0 || ((_b = (_a = window.safari) === null || _a === void 0 ? void 0 : _a.pushNotification) === null || _b === void 0 ? void 0 : _b.toString()) === "[object SafariRemoteNotification]") { - isSafariDesktop = true; - } - // 2 - Find out specific device/platform information - // Samsung browser e.g. on Android - if (/SamsungBrowser/.test(navigator.userAgent)) { - isSamsungBrowser = true; - } - if (navigator.userAgent.indexOf("PlayStation 5") !== -1) { - isPlayStation5 = true; - } else if (/Tizen/.test(navigator.userAgent)) { - isTizen = true; - // Inspired form: http://webostv.developer.lge.com/discover/specifications/web-engine/ - // Note: even that page doesn't correspond to what we've actually seen in the - // wild - } else if (/[Ww]eb[O0]S/.test(navigator.userAgent)) { - isWebOs = true; - if (/[Ww]eb[O0]S.TV-2022/.test(navigator.userAgent) || /[Cc]hr[o0]me\/87/.test(navigator.userAgent)) { - isWebOs2022 = true; - } else if (/[Ww]eb[O0]S.TV-2021/.test(navigator.userAgent) || /[Cc]hr[o0]me\/79/.test(navigator.userAgent)) { - isWebOs2021 = true; - } - } else if (/[Pp]anasonic/.test(navigator.userAgent)) { - isPanasonic = true; - } -})(); - - -/***/ }), - -/***/ 5767: -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Z: function() { return /* binding */ clearElementSrc; } -/* harmony export */ }); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3887); -/* harmony import */ var _utils_is_null_or_undefined__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1946); -/** - * Copyright 2015 CANAL+ Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/** - * Clear element's src attribute. - * @param {HTMLMediaElement} element - */ -function clearElementSrc(element) { - // On some browsers, we first have to make sure the textTracks elements are - // both disabled and removed from the DOM. - // If we do not do that, we may be left with displayed text tracks on the - // screen, even if the track elements are properly removed, due to browser - // issues. - // Bug seen on Firefox (I forgot which version) and Chrome 96. - var textTracks = element.textTracks; - if (!(0,_utils_is_null_or_undefined__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z)(textTracks)) { - for (var i = 0; i < textTracks.length; i++) { - textTracks[i].mode = "disabled"; - } - if (element.hasChildNodes()) { - var childNodes = element.childNodes; - for (var j = childNodes.length - 1; j >= 0; j--) { - if (childNodes[j].nodeName === "track") { - try { - element.removeChild(childNodes[j]); - } catch (err) { - _log__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z.warn("Compat: Could not remove text track child from element."); - } - } - } - } - } - element.src = ""; - // On IE11, element.src = "" is not sufficient as it - // does not clear properly the current MediaKey Session. - // Microsoft recommended to use element.removeAttr("src"). - element.removeAttribute("src"); -} - -/***/ }), - -/***/ 6139: -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; - -// EXPORTS -__webpack_require__.d(__webpack_exports__, { - N: function() { return /* binding */ requestMediaKeySystemAccess; }, - Y: function() { return /* binding */ setMediaKeys; } -}); - -// EXTERNAL MODULE: ./src/errors/media_error.ts -var media_error = __webpack_require__(3714); -// EXTERNAL MODULE: ./src/utils/assert.ts -var assert = __webpack_require__(811); -// EXTERNAL MODULE: ./src/compat/browser_detection.ts -var browser_detection = __webpack_require__(3666); -// EXTERNAL MODULE: ./src/compat/is_node.ts -var is_node = __webpack_require__(2203); -// EXTERNAL MODULE: ./src/compat/should_favour_custom_safari_EME.ts -var should_favour_custom_safari_EME = __webpack_require__(5059); -// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js + 3 modules -var createClass = __webpack_require__(1656); -;// CONCATENATED MODULE: ./src/compat/eme/custom_key_system_access.ts - -/** - * Simple implementation of the MediaKeySystemAccess EME API. - * - * All needed arguments are given to the constructor - * @class CustomMediaKeySystemAccess - */ -var CustomMediaKeySystemAccess = /*#__PURE__*/function () { - /** - * @param {string} _keyType - type of key system (e.g. "widevine" or - * "com.widevine.alpha"). - * @param {Object} _mediaKeys - MediaKeys implementation - * @param {Object} _configuration - Configuration accepted for this - * MediaKeySystemAccess. - */ - function CustomMediaKeySystemAccess(_keyType, _mediaKeys, _configuration) { - this._keyType = _keyType; - this._mediaKeys = _mediaKeys; - this._configuration = _configuration; - } - /** - * @returns {string} - current key system type (e.g. "widevine" or - * "com.widevine.alpha"). - */ - var _proto = CustomMediaKeySystemAccess.prototype; - /** - * @returns {Promise.} - Promise wrapping the MediaKeys for this - * MediaKeySystemAccess. Never rejects. - */ - _proto.createMediaKeys = function createMediaKeys() { - var _this = this; - return new Promise(function (res) { - return res(_this._mediaKeys); - }); - } - /** - * @returns {Object} - Configuration accepted for this MediaKeySystemAccess. - */; - _proto.getConfiguration = function getConfiguration() { - return this._configuration; - }; - (0,createClass/* default */.Z)(CustomMediaKeySystemAccess, [{ - key: "keySystem", - get: function get() { - return this._keyType; - } - }]); - return CustomMediaKeySystemAccess; -}(); - -;// CONCATENATED MODULE: ./src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts -/** - * Copyright 2015 CANAL+ Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var MSMediaKeysConstructor; -if (!is_node/* default */.Z) { - var _window = window, - MSMediaKeys = _window.MSMediaKeys; - if (MSMediaKeys !== undefined && MSMediaKeys.prototype !== undefined && typeof MSMediaKeys.isTypeSupported === "function" && /* eslint-disable @typescript-eslint/no-unsafe-member-access */ - typeof MSMediaKeys.prototype.createSession === "function" - /* eslint-enable @typescript-eslint/no-unsafe-member-access */) { - MSMediaKeysConstructor = MSMediaKeys; - } -} - -// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js -var inheritsLoose = __webpack_require__(4578); -// EXTERNAL MODULE: ./src/utils/event_emitter.ts -var event_emitter = __webpack_require__(1959); -// EXTERNAL MODULE: ./src/utils/task_canceller.ts -var task_canceller = __webpack_require__(288); -// EXTERNAL MODULE: ./src/compat/event_listeners.ts -var event_listeners = __webpack_require__(3038); -;// CONCATENATED MODULE: ./src/compat/eme/custom_media_keys/ie11_media_keys.ts - - -/** - * Copyright 2015 CANAL+ Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -var IE11MediaKeySession = /*#__PURE__*/function (_EventEmitter) { - (0,inheritsLoose/* default */.Z)(IE11MediaKeySession, _EventEmitter); - function IE11MediaKeySession(mk) { - var _this; - _this = _EventEmitter.call(this) || this; - _this.expiration = NaN; - _this.keyStatuses = new Map(); - _this._mk = mk; - _this._sessionClosingCanceller = new task_canceller/* default */.ZP(); - _this.closed = new Promise(function (resolve) { - _this._sessionClosingCanceller.signal.register(function () { - return resolve(); - }); - }); - _this.update = function (license) { - return new Promise(function (resolve, reject) { - if (_this._ss === undefined) { - return reject("MediaKeySession not set."); - } - try { - resolve(_this._ss.update(license, "")); - } catch (err) { - reject(err); - } - }); - }; - return _this; - } - var _proto = IE11MediaKeySession.prototype; - _proto.generateRequest = function generateRequest(_initDataType, initData) { - var _this2 = this; - return new Promise(function (resolve) { - var initDataU8 = initData instanceof Uint8Array ? initData : initData instanceof ArrayBuffer ? new Uint8Array(initData) : new Uint8Array(initData.buffer); - _this2._ss = _this2._mk.createSession("video/mp4", initDataU8); - event_listeners/* onKeyMessage */.RV(_this2._ss, function (evt) { - var _a; - _this2.trigger((_a = evt.type) !== null && _a !== void 0 ? _a : "message", evt); - }, _this2._sessionClosingCanceller.signal); - event_listeners/* onKeyAdded */.kk(_this2._ss, function (evt) { - var _a; - _this2.trigger((_a = evt.type) !== null && _a !== void 0 ? _a : "keyadded", evt); - }, _this2._sessionClosingCanceller.signal); - event_listeners/* onKeyError */.Dl(_this2._ss, function (evt) { - var _a; - _this2.trigger((_a = evt.type) !== null && _a !== void 0 ? _a : "keyerror", evt); - }, _this2._sessionClosingCanceller.signal); - resolve(); - }); - }; - _proto.close = function close() { - var _this3 = this; - return new Promise(function (resolve) { - if (_this3._ss != null) { - _this3._ss.close(); - _this3._ss = undefined; - } - _this3._sessionClosingCanceller.cancel(); - resolve(); - }); - }; - _proto.load = function load() { - return Promise.resolve(false); - }; - _proto.remove = function remove() { - return Promise.resolve(); - }; - (0,createClass/* default */.Z)(IE11MediaKeySession, [{ - key: "sessionId", - get: function get() { - var _a, _b; - return (_b = (_a = this._ss) === null || _a === void 0 ? void 0 : _a.sessionId) !== null && _b !== void 0 ? _b : ""; - } - }]); - return IE11MediaKeySession; -}(event_emitter/* default */.Z); -var IE11CustomMediaKeys = /*#__PURE__*/function () { - function IE11CustomMediaKeys(keyType) { - if (MSMediaKeysConstructor === undefined) { - throw new Error("No MSMediaKeys API."); - } - this._mediaKeys = new MSMediaKeysConstructor(keyType); - } - var _proto2 = IE11CustomMediaKeys.prototype; - _proto2._setVideo = function _setVideo(videoElement) { - this._videoElement = videoElement; - if (this._videoElement.msSetMediaKeys !== undefined) { - return this._videoElement.msSetMediaKeys(this._mediaKeys); - } - }; - _proto2.createSession = function createSession( /* sessionType */ - ) { - if (this._videoElement === undefined || this._mediaKeys === undefined) { - throw new Error("Video not attached to the MediaKeys"); - } - return new IE11MediaKeySession(this._mediaKeys); - }; - _proto2.setServerCertificate = function setServerCertificate() { - throw new Error("Server certificate is not implemented in your browser"); - }; - return IE11CustomMediaKeys; -}(); -function getIE11MediaKeysCallbacks() { - var isTypeSupported = function isTypeSupported(keySystem, type) { - if (MSMediaKeysConstructor === undefined) { - throw new Error("No MSMediaKeys API."); - } - if (type !== undefined) { - return MSMediaKeysConstructor.isTypeSupported(keySystem, type); - } - return MSMediaKeysConstructor.isTypeSupported(keySystem); - }; - var createCustomMediaKeys = function createCustomMediaKeys(keyType) { - return new IE11CustomMediaKeys(keyType); - }; - var setMediaKeys = function setMediaKeys(elt, mediaKeys) { - if (mediaKeys === null) { - // msSetMediaKeys only accepts native MSMediaKeys as argument. - // Calling it with null or undefined will raise an exception. - // There is no way to unset the mediakeys in that case, so return here. - return; - } - if (!(mediaKeys instanceof IE11CustomMediaKeys)) { - throw new Error("Custom setMediaKeys is supposed to be called " + "with IE11 custom MediaKeys."); - } - return mediaKeys._setVideo(elt); - }; - return { - isTypeSupported: isTypeSupported, - createCustomMediaKeys: createCustomMediaKeys, - setMediaKeys: setMediaKeys - }; -} - -;// CONCATENATED MODULE: ./src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts -/** - * Copyright 2015 CANAL+ Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var MozMediaKeysConstructor; -if (!is_node/* default */.Z) { - var moz_media_keys_constructor_window = window, - MozMediaKeys = moz_media_keys_constructor_window.MozMediaKeys; - if (MozMediaKeys !== undefined && MozMediaKeys.prototype !== undefined && typeof MozMediaKeys.isTypeSupported === "function" && /* eslint-disable @typescript-eslint/no-unsafe-member-access */ - typeof MozMediaKeys.prototype.createSession === "function" - /* eslint-enable @typescript-eslint/no-unsafe-member-access */) { - MozMediaKeysConstructor = MozMediaKeys; - } -} - -function getMozMediaKeysCallbacks() { - var isTypeSupported = function isTypeSupported(keySystem, type) { - if (MozMediaKeysConstructor === undefined) { - throw new Error("No MozMediaKeys API."); - } - if (type !== undefined) { - return MozMediaKeysConstructor.isTypeSupported(keySystem, type); - } - return MozMediaKeysConstructor.isTypeSupported(keySystem); - }; - var createCustomMediaKeys = function createCustomMediaKeys(keyType) { - if (MozMediaKeysConstructor === undefined) { - throw new Error("No MozMediaKeys API."); - } - return new MozMediaKeysConstructor(keyType); - }; - var setMediaKeys = function setMediaKeys(mediaElement, mediaKeys) { - var elt = mediaElement; - if (elt.mozSetMediaKeys === undefined || typeof elt.mozSetMediaKeys !== "function") { - throw new Error("Can't set video on MozMediaKeys."); - } - return elt.mozSetMediaKeys(mediaKeys); - }; - return { - isTypeSupported: isTypeSupported, - createCustomMediaKeys: createCustomMediaKeys, - setMediaKeys: setMediaKeys - }; -} -// EXTERNAL MODULE: ./src/utils/base64.ts -var base64 = __webpack_require__(9689); -// EXTERNAL MODULE: ./src/utils/noop.ts -var noop = __webpack_require__(8894); -// EXTERNAL MODULE: ./src/utils/string_parsing.ts -var string_parsing = __webpack_require__(3635); -;// CONCATENATED MODULE: ./src/compat/eme/custom_media_keys/old_webkit_media_keys.ts - -/** - * Copyright 2015 CANAL+ Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - - -/** - * Returns true if the given media element has old webkit methods - * corresponding to the IOldWebkitHTMLMediaElement interface. - * @param {HTMLMediaElement} element - * @returns {Boolean} - */ -function isOldWebkitMediaElement(element) { - return typeof element.webkitGenerateKeyRequest === "function"; -} -/** - * MediaKeySession implementation for older versions of WebKit relying on APIs - * such as `webkitGenerateKeyRequest` `webkitAddKey` to be called on the - * HTMLMediaElement. - * @class OldWebkitMediaKeySession - */ -var OldWebkitMediaKeySession = /*#__PURE__*/function (_EventEmitter) { - (0,inheritsLoose/* default */.Z)(OldWebkitMediaKeySession, _EventEmitter); - function OldWebkitMediaKeySession(mediaElement, keySystem) { - var _this; - _this = _EventEmitter.call(this) || this; - _this._vid = mediaElement; - _this._key = keySystem; - _this.sessionId = ""; - _this._closeSession = noop/* default */.Z; // Just here to make TypeScript happy - _this.keyStatuses = new Map(); - _this.expiration = NaN; - var onSessionRelatedEvent = function onSessionRelatedEvent(evt) { - _this.trigger(evt.type, evt); - }; - _this.closed = new Promise(function (resolve) { - _this._closeSession = function () { - ["keymessage", "message", "keyadded", "ready", "keyerror", "error"].forEach(function (evt) { - mediaElement.removeEventListener(evt, onSessionRelatedEvent); - mediaElement.removeEventListener("webkit" + evt, onSessionRelatedEvent); - }); - resolve(); - }; - }); - ["keymessage", "message", "keyadded", "ready", "keyerror", "error"].forEach(function (evt) { - mediaElement.addEventListener(evt, onSessionRelatedEvent); - mediaElement.addEventListener("webkit" + evt, onSessionRelatedEvent); - }); - return _this; - } - var _proto = OldWebkitMediaKeySession.prototype; - _proto.update = function update(license) { - var _this2 = this; - return new Promise(function (resolve, reject) { - try { - if (_this2._key.indexOf("clearkey") >= 0) { - var licenseTypedArray = license instanceof ArrayBuffer ? new Uint8Array(license) : license; - /* eslint-disable @typescript-eslint/no-unsafe-member-access */ - /* eslint-disable @typescript-eslint/no-unsafe-argument */ - /* eslint-disable @typescript-eslint/no-unsafe-assignment */ - var json = JSON.parse((0,string_parsing/* utf8ToStr */.uR)(licenseTypedArray)); - var key = (0,base64/* base64ToBytes */.K)(json.keys[0].k); - var kid = (0,base64/* base64ToBytes */.K)(json.keys[0].kid); - /* eslint-enable @typescript-eslint/no-unsafe-member-access */ - /* eslint-enable @typescript-eslint/no-unsafe-argument */ - /* eslint-enable @typescript-eslint/no-unsafe-assignment */ - resolve(_this2._vid.webkitAddKey(_this2._key, key, kid, /* sessionId */"")); - } else { - resolve(_this2._vid.webkitAddKey(_this2._key, license, null, /* sessionId */"")); - } - } catch (err) { - reject(err); - } - }); - }; - _proto.generateRequest = function generateRequest(_initDataType, initData) { - var _this3 = this; - return new Promise(function (resolve) { - _this3._vid.webkitGenerateKeyRequest(_this3._key, initData); - resolve(); - }); - }; - _proto.close = function close() { - var _this4 = this; - return new Promise(function (resolve) { - _this4._closeSession(); - resolve(); - }); - } - /** - * Load a Persistent MediaKeySession. - * Do nothing here because this implementation doesn't handle them. - * @returns {Promise.} - */; - _proto.load = function load() { - // Not implemented. Always return false as in "no session with that id". - return Promise.resolve(false); - }; - _proto.remove = function remove() { - return Promise.resolve(); - }; - return OldWebkitMediaKeySession; -}(event_emitter/* default */.Z); -var OldWebKitCustomMediaKeys = /*#__PURE__*/function () { - function OldWebKitCustomMediaKeys(keySystem) { - this._keySystem = keySystem; - } - var _proto2 = OldWebKitCustomMediaKeys.prototype; - _proto2._setVideo = function _setVideo(videoElement) { - if (!isOldWebkitMediaElement(videoElement)) { - throw new Error("Video not attached to the MediaKeys"); - } - this._videoElement = videoElement; - }; - _proto2.createSession = function createSession( /* sessionType */ - ) { - if (this._videoElement == null) { - throw new Error("Video not attached to the MediaKeys"); - } - return new OldWebkitMediaKeySession(this._videoElement, this._keySystem); - }; - _proto2.setServerCertificate = function setServerCertificate() { - throw new Error("Server certificate is not implemented in your browser"); - }; - return OldWebKitCustomMediaKeys; -}(); -function getOldWebKitMediaKeysCallbacks() { - var isTypeSupported = function isTypeSupported(keyType) { - // get any