From 359bb683512af44b5a5fc989d298a3e01a116dcd Mon Sep 17 00:00:00 2001 From: Dan Ziv Date: Wed, 30 Sep 2020 14:24:08 +0300 Subject: [PATCH] fix(FEC-10516): Fullscreen event dispatched twice from the player (#489) --- src/fullscreen/fullscreen-controller.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/fullscreen/fullscreen-controller.js b/src/fullscreen/fullscreen-controller.js index ecfadcea7..f3e861902 100644 --- a/src/fullscreen/fullscreen-controller.js +++ b/src/fullscreen/fullscreen-controller.js @@ -19,6 +19,8 @@ class FullscreenController { _player: Player; _isInBrowserFullscreen: boolean; _eventManager: EventManager; + // Flag to overcome browsers which supports more than one fullscreenchange event + _isFullscreenEventDispatched: boolean = false; /** * after component mounted, set up event listeners to window fullscreen state change @@ -244,7 +246,8 @@ class FullscreenController { * @returns {void} */ _fullscreenEnterHandler(): void { - if (this.isFullscreen()) { + if (this.isFullscreen() && !this._isFullscreenEventDispatched) { + this._isFullscreenEventDispatched = true; this._player.dispatchEvent(new FakeEvent(this._player.Event.ENTER_FULLSCREEN)); } } @@ -255,7 +258,8 @@ class FullscreenController { * @returns {void} */ _fullscreenExitHandler(): void { - if (!this.isFullscreen()) { + if (!this.isFullscreen() && this._isFullscreenEventDispatched) { + this._isFullscreenEventDispatched = false; this._eventManager.removeAll(); this._player.dispatchEvent(new FakeEvent(this._player.Event.EXIT_FULLSCREEN)); }