diff --git a/openvidu-browser/src/OpenVidu/OpenVidu.ts b/openvidu-browser/src/OpenVidu/OpenVidu.ts index 5c5ecb8e..9e54a364 100644 --- a/openvidu-browser/src/OpenVidu/OpenVidu.ts +++ b/openvidu-browser/src/OpenVidu/OpenVidu.ts @@ -404,39 +404,40 @@ export class OpenVidu { if (publisherProperties.videoSource === 'screen') { - if (platform.name !== 'Chrome' && platform.name!.indexOf('Firefox') === -1) { + if (platform.name !== 'Chrome' && platform.name!.indexOf('Firefox') === -1) { const error = new OpenViduError(OpenViduErrorName.SCREEN_SHARING_NOT_SUPPORTED, 'You can only screen share in desktop Chrome and Firefox. Detected browser: ' + platform.name); console.error(error); reject(error); } else { - if (!!this.advancedConfiguration.screenShareChromeExtension) { + if (!!this.advancedConfiguration.screenShareChromeExtension && !(platform.name!.indexOf('Firefox') !== -1)) { // Custom screen sharing extension for Chrome - const extensionId = this.advancedConfiguration.screenShareChromeExtension.split('/').pop()!!.trim(); - screenSharing.getChromeExtensionStatus(extensionId, (status) => { - if (status === 'installed-enabled' || (status === 'not-chrome' && platform.name!.indexOf('Firefox') !== -1)) { - screenSharing.getScreenConstraints((error, screenConstraints) => { - if (!!error && error === 'permission-denied') { - const error = new OpenViduError(OpenViduErrorName.SCREEN_CAPTURE_DENIED, 'You must allow access to one window of your desktop'); - console.error(error); - reject(error); - } else { - mediaConstraints.video = screenConstraints; - resolve(mediaConstraints); - } - }); - } - if (status === 'installed-disabled') { - const error = new OpenViduError(OpenViduErrorName.SCREEN_EXTENSION_DISABLED, 'You must enable the screen extension'); - console.error(error); - reject(error); - } - if (status === 'not-installed') { - const error = new OpenViduError(OpenViduErrorName.SCREEN_EXTENSION_NOT_INSTALLED, (this.advancedConfiguration.screenShareChromeExtension)); - console.error(error); - reject(error); + screenSharing.getScreenConstraints((error, screenConstraints) => { + if (!!error || !!screenConstraints.mandatory && screenConstraints.mandatory.chromeMediaSource === 'screen') { + if (error === 'permission-denied' || error === 'PermissionDeniedError') { + const error = new OpenViduError(OpenViduErrorName.SCREEN_CAPTURE_DENIED, 'You must allow access to one window of your desktop'); + console.error(error); + reject(error); + } else { + const extensionId = this.advancedConfiguration.screenShareChromeExtension!.split('/').pop()!!.trim(); + screenSharing.getChromeExtensionStatus(extensionId, (status) => { + if (status === 'installed-disabled') { + const error = new OpenViduError(OpenViduErrorName.SCREEN_EXTENSION_DISABLED, 'You must enable the screen extension'); + console.error(error); + reject(error); + } + if (status === 'not-installed') { + const error = new OpenViduError(OpenViduErrorName.SCREEN_EXTENSION_NOT_INSTALLED, (this.advancedConfiguration.screenShareChromeExtension)); + console.error(error); + reject(error); + } + }); + } + } else { + mediaConstraints.video = screenConstraints; + resolve(mediaConstraints); } }); } else { diff --git a/openvidu-browser/src/OpenViduInternal/ScreenSharing/Screen-Capturing.js b/openvidu-browser/src/OpenViduInternal/ScreenSharing/Screen-Capturing.js index 1ce32dae..418e19ac 100644 --- a/openvidu-browser/src/OpenViduInternal/ScreenSharing/Screen-Capturing.js +++ b/openvidu-browser/src/OpenViduInternal/ScreenSharing/Screen-Capturing.js @@ -17,7 +17,6 @@ window.addEventListener('message', function (event) { function onMessageCallback(data) { // "cancel" button is clicked if (data == 'PermissionDeniedError') { - chromeMediaSource = 'PermissionDeniedError'; if (screenCallback) return screenCallback('PermissionDeniedError'); else @@ -109,6 +108,7 @@ function getScreenConstraintsWithAudio(callback) { // this function explains how to use above methods/objects function getScreenConstraints(callback, captureSourceIdWithAudio) { + sourceId = ''; var firefoxScreenConstraints = { mozMediaSource: 'window', mediaSource: 'window'