From 537b3a33512dbfd497cb34e6047d3bed2148128f Mon Sep 17 00:00:00 2001 From: Anthony Lavado Date: Wed, 29 Jul 2020 13:49:37 -0700 Subject: [PATCH] Merge pull request #1684 from thornbill/fix-ios-fullscreeen Fix fullscreen video in iOS Safari (cherry picked from commit 9b6a90ffdd46adbb5b3be2d478049fc59c2ce892) Signed-off-by: Joshua M. Boniface --- src/components/playback/playbackmanager.js | 20 ++++++++++++++++++++ src/plugins/htmlVideoPlayer/plugin.js | 5 +++++ 2 files changed, 25 insertions(+) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index e8fcd1cbd5..fc922353da 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -21,6 +21,11 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla screenfull.on('change', function () { events.trigger(player, 'fullscreenchange'); }); + } else { + // iOS Safari + document.addEventListener('webkitfullscreenchange', function () { + events.trigger(player, 'fullscreenchange'); + }, false); } } @@ -1520,6 +1525,11 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.isFullscreen(); } + if (!screenfull.isEnabled) { + // iOS Safari + return document.webkitIsFullScreen; + } + return screenfull.isFullscreen; }; @@ -1532,6 +1542,16 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (screenfull.isEnabled) { screenfull.toggle(); + } else { + // iOS Safari + if (document.webkitIsFullScreen && document.webkitCancelFullscreen) { + document.webkitCancelFullscreen(); + } else { + const elem = document.querySelector('video'); + if (elem && elem.webkitEnterFullscreen) { + elem.webkitEnterFullscreen(); + } + } } }; diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index cc312bb956..0b789dab74 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -804,6 +804,11 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (screenfull.isEnabled) { screenfull.exit(); + } else { + // iOS Safari + if (document.webkitIsFullScreen && document.webkitCancelFullscreen) { + document.webkitCancelFullscreen(); + } } };