From 61fd5a4e4a84b9aa84621b12c1a715bdc1351419 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?= Date: Mon, 25 Jun 2018 13:49:50 +0200 Subject: [PATCH] Added support for screensharing in MS Edge. --- app/lib/ScreenShare.js | 55 ++++++++++++++++++++++++++++++++++++++++++ app/lib/utils.js | 6 +++++ 2 files changed, 61 insertions(+) diff --git a/app/lib/ScreenShare.js b/app/lib/ScreenShare.js index 7c71b52..59111b1 100644 --- a/app/lib/ScreenShare.js +++ b/app/lib/ScreenShare.js @@ -189,6 +189,57 @@ class FirefoxScreenShare } } +class EdgeScreenShare +{ + constructor() + { + this._stream = null; + } + + start(options = {}) + { + const constraints = this._toConstraints(options); + + return navigator.getDisplayMedia(constraints) + .then((stream) => + { + this._stream = stream; + + return Promise.resolve(stream); + }); + } + + stop() + { + if (this._stream instanceof MediaStream === false) + { + return; + } + + this._stream.getTracks().forEach((track) => track.stop()); + this._stream = null; + } + + isScreenShareAvailable() + { + return true; + } + + needExtension() + { + return false; + } + + _toConstraints() + { + const constraints = { + video : true + }; + + return constraints; + } +} + class DefaultScreenShare { isScreenShareAvailable() @@ -216,6 +267,10 @@ export default class ScreenShare { return new ChromeScreenShare(); } + case 'edge': + { + return new EdgeScreenShare(); + } default: { return new DefaultScreenShare(); diff --git a/app/lib/utils.js b/app/lib/utils.js index 91c8768..5a1646d 100644 --- a/app/lib/utils.js +++ b/app/lib/utils.js @@ -35,5 +35,11 @@ export function getBrowserType() return 'chrome'; } + // MSEdge + if (ua.indexOf('edge') !== -1) + { + return 'edge'; + } + return 'N/A'; }