From 11321d8f26b01412fa5173aa6efcf777186fa7a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Velad=20Galv=C3=A1n?= Date: Thu, 28 Apr 2022 20:02:49 +0200 Subject: [PATCH] feat: only polyfill MCap for non Android-based Cast devices. (#4170) Related to https://github.com/shaka-project/shaka-player/issues/4164#issuecomment-1110143441 --- lib/polyfill/media_capabilities.js | 18 ++++++++++++------ lib/util/platform.js | 10 ++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/polyfill/media_capabilities.js b/lib/polyfill/media_capabilities.js index 537cc982f6..ec8c87a251 100644 --- a/lib/polyfill/media_capabilities.js +++ b/lib/polyfill/media_capabilities.js @@ -24,8 +24,8 @@ shaka.polyfill.MediaCapabilities = class { * @export */ static install() { - // Since MediaCapabilities is not fully supported on Chromecast yet, we - // should always install polyfill for Chromecast. + // Since MediaCapabilities is not fully supported on some Chromecast yet, + // we should always install polyfill for all Chromecast not Android-based. // TODO: re-evaluate MediaCapabilities in the future versions of Chromecast. // Since MediaCapabilities implementation is buggy in Apple browsers, we // should always install polyfill for Apple browsers. @@ -37,10 +37,16 @@ shaka.polyfill.MediaCapabilities = class { // See: https://github.com/shaka-project/shaka-player/issues/3582 // TODO: re-evaluate MediaCapabilities in the future versions of PS5 // Browsers. - if (!shaka.util.Platform.isChromecast() && - !shaka.util.Platform.isApple() && - !shaka.util.Platform.isPS5() && - navigator.mediaCapabilities) { + let canUseNativeMCap = true; + if (shaka.util.Platform.isApple() || + shaka.util.Platform.isPS5() || + shaka.util.Platform.isChromecast()) { + canUseNativeMCap = false; + } + if (shaka.util.Platform.isAndroidCastDevice()) { + canUseNativeMCap = true; + } + if (canUseNativeMCap && navigator.mediaCapabilities) { shaka.log.info( 'MediaCapabilities: Native mediaCapabilities support found.'); return; diff --git a/lib/util/platform.js b/lib/util/platform.js index c846e7792e..92f63e5e12 100644 --- a/lib/util/platform.js +++ b/lib/util/platform.js @@ -163,6 +163,16 @@ shaka.util.Platform = class { return shaka.util.Platform.userAgentContains_('CrKey'); } + /** + * Check if the current platform is a Android-based Cast devices. + * + * @return {boolean} + */ + static isAndroidCastDevice() { + return shaka.util.Platform.isChromecast() && + shaka.util.Platform.userAgentContains_('Android'); + } + /** * Check if the current platform is Google Chrome. *