diff options
author | DR695H <dr695h@att.com> | 2017-02-07 13:11:03 -0500 |
---|---|---|
committer | DR695H <dr695h@att.com> | 2017-02-07 13:12:28 -0500 |
commit | 13ce0552dc7156b6e3e226c00295705f27780a40 (patch) | |
tree | a9ada50d0a86c0fdc253c188d1328f6e880bfaf5 /vid/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html | |
parent | 77b87f76ff2799bd1f5fe85552f1c5e7081eb4df (diff) |
actually adding the files to the initial commit
Change-Id: I2f0c09692c2ae70be61b8bb552fd1bd2983eb661
Signed-off-by: DR695H <dr695h@att.com>
Diffstat (limited to 'vid/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html')
-rw-r--r-- | vid/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/vid/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html b/vid/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html new file mode 100644 index 000000000..6f660025e --- /dev/null +++ b/vid/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html @@ -0,0 +1,78 @@ + +<script> + +var DetectRTC = {}; + +var screenCallback; + +DetectRTC.screen = { + chromeMediaSource: 'screen', + getSourceId: function (callback) { + screenCallback = callback; + window.postMessage('get-sourceId', '*'); + }, + onMessageCallback: function (data) { + // "cancel" button is clicked + if (data == 'PermissionDeniedError') { + DetectRTC.screen.chromeMediaSource = 'PermissionDeniedError'; + if (screenCallback) return screenCallback('PermissionDeniedError'); + else throw new Error('PermissionDeniedError'); + } + + // extension notified his presence + if (data == 'rtcmulticonnection-extension-loaded') { + DetectRTC.screen.chromeMediaSource = 'desktop'; + } + + // extension shared temp sourceId + if (data.sourceId) { + DetectRTC.screen.sourceId = data.sourceId; + if (screenCallback) screenCallback(DetectRTC.screen.sourceId); + } + }, + getChromeExtensionStatus: function (callback) { + // https://chrome.google.com/webstore/detail/screen-capturing-private/icgmlogfeajbfdffajhoebcfbibfhaen + var extensionid = 'icgmlogfeajbfdffajhoebcfbibfhaen'; + + var image = document.createElement('img'); + image.src = 'chrome-extension://' + extensionid + '/icon.png'; + image.onload = function () { + DetectRTC.screen.chromeMediaSource = 'screen'; + window.postMessage('are-you-there', '*'); + setTimeout(function () { + if (DetectRTC.screen.chromeMediaSource == 'screen') { + callback('installed-disabled'); + } else callback('installed-enabled'); + }, 2000); + }; + image.onerror = function () { + callback('not-installed'); + }; + } +}; + +window.addEventListener('message', function (event) { + if (!event.data || !(typeof event.data == 'string' || event.data.sourceId || event.data.captureSourceId)) return; + if (event.data.captureSourceId) captureSourceId(); + + DetectRTC.screen.onMessageCallback(event.data); +}); + +function captureSourceId() { + // check if desktop-capture extension installed. + DetectRTC.screen.getChromeExtensionStatus(function (status) { + if (status != 'installed-enabled') { + window.parent.postMessage({ + chromeExtensionStatus: status + }, '*'); + return; + } + + DetectRTC.screen.getSourceId(function (sourceId) { + window.parent.postMessage({ + chromeMediaSourceId: sourceId + }, '*'); + }); + }); +} +</script> |