diff --git a/lib/player.js b/lib/player.js index 6af6b80732..0f21be9a22 100644 --- a/lib/player.js +++ b/lib/player.js @@ -6513,7 +6513,12 @@ shaka.Player = class extends shaka.util.FakeEventTarget { // Because this.video_ may not be set when the config is built, the default // TextDisplay factory must capture a reference to "this". config.textDisplayFactory = () => { - if (this.videoContainer_) { + // On iOS where the Fullscreen API is not available we prefer + // SimpleTextDisplayer because it works with the Fullscreen API of the + // video element itself. + const Platform = shaka.util.Platform; + if (this.videoContainer_ && + (!Platform.safariVersion() || document.fullscreenEnabled)) { const latestConfig = this.getConfiguration(); return new shaka.text.UITextDisplayer( this.video_, this.videoContainer_, latestConfig.textDisplayer); diff --git a/lib/text/ui_text_displayer.js b/lib/text/ui_text_displayer.js index 2094fe2a5b..f3c9dde1f5 100644 --- a/lib/text/ui_text_displayer.js +++ b/lib/text/ui_text_displayer.js @@ -9,6 +9,7 @@ goog.provide('shaka.text.UITextDisplayer'); goog.require('goog.asserts'); goog.require('shaka.Deprecate'); +goog.require('shaka.log'); goog.require('shaka.text.Cue'); goog.require('shaka.text.CueRegion'); goog.require('shaka.text.Utils'); @@ -35,6 +36,12 @@ shaka.text.UITextDisplayer = class { constructor(video, videoContainer, config) { goog.asserts.assert(videoContainer, 'videoContainer should be valid.'); + if (!document.fullscreenEnabled) { + shaka.log.alwaysWarn('Using UITextDisplayer in a browser without ' + + 'Fullscreen API support causes subtitles to not be rendered in ' + + 'fullscreen'); + } + /** @private {boolean} */ this.isTextVisible_ = false;