Skip to content

Commit e7d1118

Browse files
authored
Centralize fullscreenElement usage. NFC (#24708)
I will likely followup with another PR to reduce the size of this function using `MIN_XXX_VERSION` macros, but I wanted to keep this change simple and NFC.
1 parent 19a14bd commit e7d1118

File tree

3 files changed

+16
-23
lines changed

3 files changed

+16
-23
lines changed

src/lib/libbrowser.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
var LibraryBrowser = {
99
$Browser__deps: [
1010
'$callUserCallback',
11+
'$getFullscreenElement',
1112
'$safeSetTimeout',
1213
'$warnOnce',
1314
#if FILESYSTEM
@@ -232,9 +233,7 @@ var LibraryBrowser = {
232233
function fullscreenChange() {
233234
Browser.isFullscreen = false;
234235
var canvasContainer = canvas.parentNode;
235-
if ((document['fullscreenElement'] || document['mozFullScreenElement'] ||
236-
document['msFullscreenElement'] || document['webkitFullscreenElement'] ||
237-
document['webkitCurrentFullScreenElement']) === canvasContainer) {
236+
if (getFullscreenElement() === canvasContainer) {
238237
canvas.exitFullscreen = Browser.exitFullscreen;
239238
if (Browser.lockPointer) canvas.requestPointerLock();
240239
Browser.isFullscreen = true;
@@ -533,9 +532,7 @@ var LibraryBrowser = {
533532
h = Math.round(w / Module['forcedAspectRatio']);
534533
}
535534
}
536-
if (((document['fullscreenElement'] || document['mozFullScreenElement'] ||
537-
document['msFullscreenElement'] || document['webkitFullscreenElement'] ||
538-
document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) {
535+
if ((getFullscreenElement() === canvas.parentNode) && (typeof screen != 'undefined')) {
539536
var factor = Math.min(screen.width / w, screen.height / h);
540537
w = Math.round(w * factor);
541538
h = Math.round(h * factor);

src/lib/libglfw.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ var LibraryGLFW = {
8787
'malloc', 'free',
8888
'$MainLoop',
8989
'$stringToNewUTF8',
90+
'$getFullscreenElement',
9091
'emscripten_set_window_title',
9192
#if FILESYSTEM
9293
'$FS',
@@ -1168,9 +1169,7 @@ var LibraryGLFW = {
11681169
function fullscreenChange() {
11691170
Browser.isFullscreen = false;
11701171
var canvasContainer = canvas.parentNode;
1171-
if ((document['fullscreenElement'] || document['mozFullScreenElement'] ||
1172-
document['msFullscreenElement'] || document['webkitFullscreenElement'] ||
1173-
document['webkitCurrentFullScreenElement']) === canvasContainer) {
1172+
if (getFullscreenElement() === canvasContainer) {
11741173
canvas.exitFullscreen = Browser.exitFullscreen;
11751174
if (Browser.lockPointer) canvas.requestPointerLock();
11761175
Browser.isFullscreen = true;
@@ -1239,9 +1238,7 @@ var LibraryGLFW = {
12391238
h = Math.round(w / Module['forcedAspectRatio']);
12401239
}
12411240
}
1242-
if (((document['fullscreenElement'] || document['mozFullScreenElement'] ||
1243-
document['msFullscreenElement'] || document['webkitFullscreenElement'] ||
1244-
document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) {
1241+
if ((getFullscreenElement() === canvas.parentNode) && (typeof screen != 'undefined')) {
12451242
var factor = Math.min(screen.width / w, screen.height / h);
12461243
w = Math.round(w * factor);
12471244
h = Math.round(h * factor);

src/lib/libhtml5.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,13 @@ var LibraryHTML5 = {
249249
},
250250
},
251251

252+
$getFullscreenElement__internal: true,
253+
$getFullscreenElement() {
254+
return document.fullscreenElement || document.mozFullScreenElement ||
255+
document.webkitFullscreenElement || document.webkitCurrentFullScreenElement ||
256+
document.msFullscreenElement;
257+
},
258+
252259
$registerKeyEventCallback__noleakcheck: true,
253260
$registerKeyEventCallback__deps: ['$JSEvents', '$findEventTarget', '$stringToUTF8', 'malloc'],
254261
$registerKeyEventCallback: (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {
@@ -990,9 +997,9 @@ var LibraryHTML5 = {
990997
return {{{ cDefs.EMSCRIPTEN_RESULT_SUCCESS }}};
991998
},
992999

993-
$fillFullscreenChangeEventData__deps: ['$JSEvents', '$stringToUTF8'],
1000+
$fillFullscreenChangeEventData__deps: ['$JSEvents', '$stringToUTF8', '$getFullscreenElement'],
9941001
$fillFullscreenChangeEventData: (eventStruct) => {
995-
var fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;
1002+
var fullscreenElement = getFullscreenElement();
9961003
var isFullscreen = !!fullscreenElement;
9971004
#if !SAFE_HEAP
9981005
// Assigning a boolean to HEAP32 with expected type coercion.
@@ -1204,15 +1211,7 @@ var LibraryHTML5 = {
12041211
var oldImageRendering = canvas.style.imageRendering;
12051212

12061213
function restoreOldStyle() {
1207-
var fullscreenElement = document.fullscreenElement
1208-
#if MIN_FIREFOX_VERSION <= 63 // https://caniuse.com/#feat=mdn-api_documentorshadowroot_fullscreenelement
1209-
|| document.mozFullScreenElement
1210-
#endif
1211-
#if MIN_CHROME_VERSION != TARGET_NOT_SUPPORTED || MIN_SAFARI_VERSION != TARGET_NOT_SUPPORTED // https://caniuse.com/#feat=mdn-api_documentorshadowroot_fullscreenelement
1212-
|| document.webkitFullscreenElement
1213-
#endif
1214-
;
1215-
if (!fullscreenElement) {
1214+
if (!getFullscreenElement()) {
12161215
document.removeEventListener('fullscreenchange', restoreOldStyle);
12171216

12181217
#if MIN_FIREFOX_VERSION <= 63 // https://caniuse.com/#feat=mdn-api_element_fullscreenchange_event

0 commit comments

Comments
 (0)