Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/closure-externs/closure-externs.js
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,8 @@ var id;
* https://github.com/google/closure-compiler/commit/f83322c1b.
* Perhaps we should remove it too?
*
* TODO(sbc): Remove this once SDL2 is updated not to depend on it.
*
* @param {MediaStreamConstraints} constraints A MediaStreamConstraints object.
* @param {function(!MediaStream)} successCallback
* A NavigatorUserMediaSuccessCallback function.
Expand Down
29 changes: 13 additions & 16 deletions src/lib/libbrowser.js
Original file line number Diff line number Diff line change
Expand Up @@ -259,9 +259,7 @@ var LibraryBrowser = {
if (!Browser.fullscreenHandlersInstalled) {
Browser.fullscreenHandlersInstalled = true;
document.addEventListener('fullscreenchange', fullscreenChange);
document.addEventListener('mozfullscreenchange', fullscreenChange);
document.addEventListener('webkitfullscreenchange', fullscreenChange);
document.addEventListener('MSFullscreenChange', fullscreenChange);
}

// create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root
Expand All @@ -270,12 +268,14 @@ var LibraryBrowser = {
canvasContainer.appendChild(canvas);

// use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size)
canvasContainer.requestFullscreen = canvasContainer['requestFullscreen'] ||
canvasContainer['mozRequestFullScreen'] ||
canvasContainer['msRequestFullscreen'] ||
(canvasContainer['webkitRequestFullscreen'] ? () => canvasContainer['webkitRequestFullscreen'](Element['ALLOW_KEYBOARD_INPUT']) : null) ||
(canvasContainer['webkitRequestFullScreen'] ? () => canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) : null);
#if MIN_SAFARI_VERSION < 160400
// Safari didn't support Element.requestFullscreen until 16.4
// See: https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullscreen
/** @suppress {checkTypes} */
canvasContainer.requestFullscreen ??= (canvasContainer['webkitRequestFullscreen'] ? () => canvasContainer['webkitRequestFullscreen'](Element.ALLOW_KEYBOARD_INPUT) : null) ??
(canvasContainer['webkitRequestFullScreen'] ? () => canvasContainer['webkitRequestFullScreen'](Element.ALLOW_KEYBOARD_INPUT) : null);

#endif
canvasContainer.requestFullscreen();
},

Expand All @@ -293,13 +293,12 @@ var LibraryBrowser = {
return false;
}

var CFS = document['exitFullscreen'] ||
document['cancelFullScreen'] ||
document['mozCancelFullScreen'] ||
document['msExitFullscreen'] ||
document['webkitCancelFullScreen'] ||
(() => {});
#if MIN_SAFARI_VERSION < 160400
var CFS = document.exitFullscreen ?? document['webkitCancelFullScreen'];
CFS.apply(document, []);
#else
document.exitFullscreen();
#endif
return true;
},

Expand All @@ -325,9 +324,7 @@ var LibraryBrowser = {
},

getUserMedia(func) {
window.getUserMedia ||= navigator['getUserMedia'] ||
navigator['mozGetUserMedia'];
window.getUserMedia(func);
return navigator.mediaDevices.getUserMedia(func);
},

// Browsers specify wheel direction according to the page CSS pixel Y direction:
Expand Down
14 changes: 7 additions & 7 deletions src/lib/libglfw.js
Original file line number Diff line number Diff line change
Expand Up @@ -1252,9 +1252,7 @@ var LibraryGLFW = {
if (!Browser.fullscreenHandlersInstalled) {
Browser.fullscreenHandlersInstalled = true;
document.addEventListener('fullscreenchange', fullscreenChange);
document.addEventListener('mozfullscreenchange', fullscreenChange);
document.addEventListener('webkitfullscreenchange', fullscreenChange);
document.addEventListener('MSFullscreenChange', fullscreenChange);
}

// create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root
Expand All @@ -1263,11 +1261,13 @@ var LibraryGLFW = {
canvasContainer.appendChild(canvas);

// use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size)
canvasContainer.requestFullscreen = canvasContainer['requestFullscreen'] ||
canvasContainer['mozRequestFullScreen'] ||
canvasContainer['msRequestFullscreen'] ||
(canvasContainer['webkitRequestFullscreen'] ? () => canvasContainer['webkitRequestFullscreen'](Element['ALLOW_KEYBOARD_INPUT']) : null) ||
(canvasContainer['webkitRequestFullScreen'] ? () => canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) : null);
#if MIN_SAFARI_VERSION < 160400
// Safari didn't Element.requestFullscreen support until 16.4
// See: https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullscreen
/** @suppress {checkTypes} */
canvasContainer.requestFullscreen ??= (canvasContainer.webkitRequestFullscreen ? () => canvasContainer.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT) : null) ??
(canvasContainer.webkitRequestFullScreen ? () => canvasContainer.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT) : null);
#endif

canvasContainer.requestFullscreen();
},
Expand Down
39 changes: 17 additions & 22 deletions src/lib/libhtml5.js
Original file line number Diff line number Diff line change
Expand Up @@ -252,20 +252,22 @@ var LibraryHTML5 = {

fullscreenEnabled() {
return document.fullscreenEnabled
#if MIN_SAFARI_VERSION != TARGET_NOT_SUPPORTED
#if MIN_SAFARI_VERSION < 160400
// Safari 13.0.3 on macOS Catalina 10.15.1 still ships with prefixed webkitFullscreenEnabled.
// TODO: If Safari at some point ships with unprefixed version, update the version check above.
|| document.webkitFullscreenEnabled
?? document.webkitFullscreenEnabled
#endif
;
},
},

$getFullscreenElement__internal: true,
$getFullscreenElement() {
return document.fullscreenElement || document.mozFullScreenElement ||
document.webkitFullscreenElement || document.webkitCurrentFullScreenElement ||
document.msFullscreenElement;
return document.fullscreenElement
#if MIN_SAFARI_VERSION < 160400
?? document.webkitFullscreenElement
#endif
;
},

$registerKeyEventCallback__noleakcheck: true,
Expand Down Expand Up @@ -986,10 +988,6 @@ var LibraryHTML5 = {
var succeeded;
if (screen.lockOrientation) {
succeeded = screen.lockOrientation(orientations);
} else if (screen.mozLockOrientation) {
succeeded = screen.mozLockOrientation(orientations);
} else if (screen.webkitLockOrientation) {
succeeded = screen.webkitLockOrientation(orientations);
} else {
return {{{ cDefs.EMSCRIPTEN_RESULT_NOT_SUPPORTED }}};
}
Expand All @@ -1003,10 +1001,6 @@ var LibraryHTML5 = {
emscripten_unlock_orientation: () => {
if (screen.unlockOrientation) {
screen.unlockOrientation();
} else if (screen.mozUnlockOrientation) {
screen.mozUnlockOrientation();
} else if (screen.webkitUnlockOrientation) {
screen.webkitUnlockOrientation();
} else {
return {{{ cDefs.EMSCRIPTEN_RESULT_NOT_SUPPORTED }}};
}
Expand Down Expand Up @@ -1084,8 +1078,7 @@ var LibraryHTML5 = {
#endif
if (!target) return {{{ cDefs.EMSCRIPTEN_RESULT_UNKNOWN_TARGET }}};

#if MIN_SAFARI_VERSION != TARGET_NOT_SUPPORTED
// As of Safari 13.0.3 on macOS Catalina 10.15.1 still ships with prefixed webkitfullscreenchange. TODO: revisit this check once Safari ships unprefixed version.
#if MIN_SAFARI_VERSION < 160400
// TODO: When this block is removed, also change test/test_html5_remove_event_listener.c test expectation on emscripten_set_fullscreenchange_callback().
registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, {{{ cDefs.EMSCRIPTEN_EVENT_FULLSCREENCHANGE }}}, 'webkitfullscreenchange', targetThread);
#endif
Expand Down Expand Up @@ -1123,8 +1116,10 @@ var LibraryHTML5 = {

if (target.requestFullscreen) {
target.requestFullscreen();
#if MIN_SAFARI_VERSION != TARGET_NOT_SUPPORTED
#if MIN_SAFARI_VERSION < 160400
} else if (target.webkitRequestFullscreen) {
// Safari didn't Element.requestFullscreen support until 16.4
// See: https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullscreen
target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
#endif
} else {
Expand Down Expand Up @@ -1221,8 +1216,7 @@ var LibraryHTML5 = {
if (!getFullscreenElement()) {
document.removeEventListener('fullscreenchange', restoreOldStyle);

#if MIN_SAFARI_VERSION != TARGET_NOT_SUPPORTED
// As of Safari 13.0.3 on macOS Catalina 10.15.1 still ships with prefixed webkitfullscreenchange. TODO: revisit this check once Safari ships unprefixed version.
#if MIN_SAFARI_VERSION < 160400
document.removeEventListener('webkitfullscreenchange', restoreOldStyle);
#endif

Expand Down Expand Up @@ -1254,8 +1248,7 @@ var LibraryHTML5 = {
}
}
document.addEventListener('fullscreenchange', restoreOldStyle);
#if MIN_SAFARI_VERSION != TARGET_NOT_SUPPORTED
// As of Safari 13.0.3 on macOS Catalina 10.15.1 still ships with prefixed webkitfullscreenchange. TODO: revisit this check once Safari ships unprefixed version.
#if MIN_SAFARI_VERSION < 160400
document.addEventListener('webkitfullscreenchange', restoreOldStyle);
#endif
return restoreOldStyle;
Expand Down Expand Up @@ -1365,7 +1358,9 @@ var LibraryHTML5 = {
if (!target) return {{{ cDefs.EMSCRIPTEN_RESULT_UNKNOWN_TARGET }}};

if (!target.requestFullscreen
#if MIN_SAFARI_VERSION != TARGET_NOT_SUPPORTED
#if MIN_SAFARI_VERSION < 160400
// Safari didn't Element.requestFullscreen support until 16.4
// See: https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullscreen
&& !target.webkitRequestFullscreen
#endif
) {
Expand Down Expand Up @@ -1496,7 +1491,7 @@ var LibraryHTML5 = {
var d = specialHTMLTargets[{{{ cDefs.EMSCRIPTEN_EVENT_TARGET_DOCUMENT }}}];
if (d.exitFullscreen) {
d.fullscreenElement && d.exitFullscreen();
#if MIN_SAFARI_VERSION != TARGET_NOT_SUPPORTED // https://caniuse.com/#feat=mdn-api_document_exitfullscreen
#if MIN_SAFARI_VERSION < 160400 // https://caniuse.com/#feat=mdn-api_document_exitfullscreen
} else if (d.webkitExitFullscreen) {
d.webkitFullscreenElement && d.webkitExitFullscreen();
#endif
Expand Down
22 changes: 3 additions & 19 deletions src/lib/libopenal.js
Original file line number Diff line number Diff line change
Expand Up @@ -1642,15 +1642,7 @@ var LibraryOpenAL = {
return 0;
}

navigator.getUserMedia = navigator.getUserMedia
|| navigator.webkitGetUserMedia
|| navigator.mozGetUserMedia
|| navigator.msGetUserMedia;
var has_getUserMedia = navigator.getUserMedia
|| (navigator.mediaDevices
&& navigator.mediaDevices.getUserMedia);

if (!has_getUserMedia) {
if (!navigator.mediaDevices?.getUserMedia) {
#if OPENAL_DEBUG
dbg('alcCaptureOpenDevice() cannot capture audio, because your browser lacks a `getUserMedia()` implementation');
#endif
Expand Down Expand Up @@ -1767,7 +1759,7 @@ var LibraryOpenAL = {
var onError = (mediaStreamError) => {
newCapture.mediaStreamError = mediaStreamError;
#if OPENAL_DEBUG
dbg(`navigator.getUserMedia() errored with: ${mediaStreamError}`);
dbg(`getUserMedia() errored with: ${mediaStreamError}`);
#endif
};
var onSuccess = (mediaStream) => {
Expand Down Expand Up @@ -1886,15 +1878,7 @@ var LibraryOpenAL = {
};
};

// The latest way to call getUserMedia()
if (navigator.mediaDevices?.getUserMedia) {
navigator.mediaDevices
.getUserMedia({audio: true})
.then(onSuccess)
.catch(onError);
} else { // The usual (now deprecated) way
navigator.getUserMedia({audio: true}, onSuccess, onError);
}
navigator.mediaDevices.getUserMedia({audio: true}).then(onSuccess).catch(onError);

var id = AL.newId();
AL.captures[id] = newCapture;
Expand Down
4 changes: 2 additions & 2 deletions test/codesize/test_codesize_hello_dylink_all.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"a.out.js": 268745,
"a.out.js": 268038,
"a.out.nodebug.wasm": 588128,
"total": 856873,
"total": 856166,
"sent": [
"IMG_Init",
"IMG_Load",
Expand Down
9 changes: 2 additions & 7 deletions third_party/wrtcp.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,7 @@ THE SOFTWARE.

var getUserMedia;
if(!navigator.getUserMedia) {
if(navigator.mozGetUserMedia)
getUserMedia = navigator.mozGetUserMedia.bind(navigator);
else if(navigator.webkitGetUserMedia)
getUserMedia = navigator.webkitGetUserMedia.bind(navigator);
else
webrtcSupported = false;
webrtcSupported = false;
} else {
getUserMedia = navigator.getUserMedia.bind(navigator);
}
Expand Down Expand Up @@ -819,4 +814,4 @@ THE SOFTWARE.

return Peer;

})();
})();