diff options
author | talasila <talasila@research.att.com> | 2017-02-08 10:13:29 -0500 |
---|---|---|
committer | talasila <talasila@research.att.com> | 2017-02-08 10:15:00 -0500 |
commit | f8a8d5192b1e5013d9e2f699be54b072ef39d5f0 (patch) | |
tree | b7a65bb0a7d70a9dc24c064113868e5f3b8e6a09 /dcae_dmaapbc_webapp/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html | |
parent | 72a80fbff7120630576ccd5aa67c20818c2943c7 (diff) |
Initial OpenECOMP UI/DMaapBC commit
Change-Id: Ia492e1b88311b9bed4c31f593b28deaaad73b7e4
Signed-off-by: talasila <talasila@research.att.com>
Diffstat (limited to 'dcae_dmaapbc_webapp/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html')
-rw-r--r-- | dcae_dmaapbc_webapp/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/dcae_dmaapbc_webapp/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html b/dcae_dmaapbc_webapp/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html new file mode 100644 index 0000000..6f66002 --- /dev/null +++ b/dcae_dmaapbc_webapp/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> |