diff --git a/bigbluebutton-client/resources/prod/lib/kurento-extension.js b/bigbluebutton-client/resources/prod/lib/kurento-extension.js index dab7affe01d7b4740967cfada438b5d6f716a56d..5eb162c3b09ff3257406014f6e3b895c06f5b774 100755 --- a/bigbluebutton-client/resources/prod/lib/kurento-extension.js +++ b/bigbluebutton-client/resources/prod/lib/kurento-extension.js @@ -2,7 +2,8 @@ const isFirefox = typeof window.InstallTrigger !== 'undefined'; const isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; const isChrome = !!window.chrome && !isOpera; const isSafari = navigator.userAgent.indexOf('Safari') >= 0 && !isChrome; -const hasDisplayMedia = typeof navigator.getDisplayMedia === 'function'; +const hasDisplayMedia = (typeof navigator.getDisplayMedia === 'function' + || typeof navigator.mediaDevices.getDisplayMedia === 'function'); const kurentoHandler = null; const SEND_ROLE = "send"; const RECV_ROLE = "recv"; diff --git a/bigbluebutton-client/resources/prod/lib/kurento-utils.js b/bigbluebutton-client/resources/prod/lib/kurento-utils.js index 78ea0604b77245cc5ddb842d1162b3bb8cf263b4..2a8bfab960387681317951b9428c19110d407a8a 100644 --- a/bigbluebutton-client/resources/prod/lib/kurento-utils.js +++ b/bigbluebutton-client/resources/prod/lib/kurento-utils.js @@ -410,16 +410,24 @@ function WebRtcPeer(mode, options, callback) { return callback(error); constraints = [mediaConstraints]; constraints.unshift(constraints_); - if (typeof navigator.getDisplayMedia === 'function') { - navigator.getDisplayMedia(recursive.apply(undefined, constraints)).then(stream => { - stream.getTracks()[0].applyConstraints(constraints[0].optional).then(() => { + let gDMCallback = function(stream) { + stream.getTracks()[0].applyConstraints(constraints[0].optional) + .then(() => { videoStream = stream; start(); }).catch(() => { - videoStream = stream; - start(); + videoStream = stream; + start(); }); - }).catch(callback); + } + if (typeof navigator.getDisplayMedia === 'function') { + navigator.getDisplayMedia(recursive.apply(undefined, constraints)) + .then(gDMCallback) + .catch(callback); + } else if (typeof navigator.mediaDevices.getDisplayMedia === 'function') { + navigator.mediaDevices.getDisplayMedia(recursive.apply(undefined, constraints)) + .then(gDMCallback) + .catch(callback); } else { getMedia(recursive.apply(undefined, constraints)); } diff --git a/bigbluebutton-html5/client/compatibility/kurento-extension.js b/bigbluebutton-html5/client/compatibility/kurento-extension.js index 229771c9f841bc057d832e6fdba1705ec9c070f4..66e34642ad5ef6a6fe5b0d8b12ba2217b679f37d 100644 --- a/bigbluebutton-html5/client/compatibility/kurento-extension.js +++ b/bigbluebutton-html5/client/compatibility/kurento-extension.js @@ -3,7 +3,8 @@ const isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; const isChrome = !!window.chrome && !isOpera; const isSafari = navigator.userAgent.indexOf('Safari') >= 0 && !isChrome; const isElectron = navigator.userAgent.toLowerCase().indexOf(' electron/') > -1; -const hasDisplayMedia = typeof navigator.getDisplayMedia === 'function'; +const hasDisplayMedia = (typeof navigator.getDisplayMedia === 'function' + || typeof navigator.mediaDevices.getDisplayMedia === 'function'); const kurentoHandler = null; Kurento = function ( diff --git a/bigbluebutton-html5/client/compatibility/kurento-utils.js b/bigbluebutton-html5/client/compatibility/kurento-utils.js index d15bf65cd8aec11d6766e24916d6be69e4e0aca4..60cbd94a5288470dad9b65c509ab155d023dbd5d 100644 --- a/bigbluebutton-html5/client/compatibility/kurento-utils.js +++ b/bigbluebutton-html5/client/compatibility/kurento-utils.js @@ -446,16 +446,24 @@ function WebRtcPeer(mode, options, callback) { return callback(error); constraints = [mediaConstraints]; constraints.unshift(constraints_); - if (typeof navigator.getDisplayMedia === 'function') { - navigator.getDisplayMedia(recursive.apply(undefined, constraints)).then(stream => { - stream.getTracks()[0].applyConstraints(constraints[0].optional).then(() => { + let gDMCallback = function(stream) { + stream.getTracks()[0].applyConstraints(constraints[0].optional) + .then(() => { videoStream = stream; start(); }).catch(() => { - videoStream = stream; - start(); + videoStream = stream; + start(); }); - }).catch(callback); + } + if (typeof navigator.getDisplayMedia === 'function') { + navigator.getDisplayMedia(recursive.apply(undefined, constraints)) + .then(gDMCallback) + .catch(callback); + } else if (typeof navigator.mediaDevices.getDisplayMedia === 'function') { + navigator.mediaDevices.getDisplayMedia(recursive.apply(undefined, constraints)) + .then(gDMCallback) + .catch(callback); } else { getMedia(recursive.apply(undefined, constraints)); }