UNPKG

rx-player

Version:
57 lines (56 loc) 2.61 kB
"use strict"; /** * 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. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.canRelyOnRequestMediaKeySystemAccess = canRelyOnRequestMediaKeySystemAccess; var config_1 = require("../config"); var env_detector_1 = require("./env_detector"); /** * This functions tells if the RxPlayer can trust the browser when it has * successfully granted the MediaKeySystemAccess with * `navigator.requestMediaKeySystemAccess(keySystem)` function, or if it should do * some additional testing to confirm that the `keySystem` is supported on the device. * * This behavior has been experienced on the following device: * * On a Microsoft Surface with Edge v.124: * - Althought `requestMediaKeySystemAccess` resolve correctly with the keySystem * "com.microsoft.playready.recommendation.3000", generating a request with * `generateRequest` throws an error: "NotSupportedError: Failed to execute * 'generateRequest' on 'MediaKeySession': Failed to create MF PR CdmSession". * In this particular case, the work-around was to consider recommendation.3000 as not supported * and try another keySystem. * * - On Firefox v.137: * Similar issue with requestMediaKeySystemAccess that resolves correctly with * 'com.microsoft.playready.recommendation.3000' but fail at the `createMediaKeys`` * step with error `WMFCDMProxy: Init: WMFCDM init error` * * @param keySystem - The key system in use. * @returns {boolean} */ function canRelyOnRequestMediaKeySystemAccess(keySystem) { var FORCE_CANNOT_RELY_ON_REQUEST_MEDIA_KEY_SYSTEM_ACCESS = config_1.default.getCurrent().FORCE_CANNOT_RELY_ON_REQUEST_MEDIA_KEY_SYSTEM_ACCESS; if (FORCE_CANNOT_RELY_ON_REQUEST_MEDIA_KEY_SYSTEM_ACCESS) { return false; } if ((env_detector_1.default.browser === env_detector_1.default.BROWSERS.EdgeChromium || env_detector_1.default.browser === env_detector_1.default.BROWSERS.Firefox) && keySystem.indexOf("playready") !== -1) { return false; } return true; }