diff options
author | talasila <talasila@research.att.com> | 2017-02-07 11:47:55 -0500 |
---|---|---|
committer | talasila <talasila@research.att.com> | 2017-02-07 12:51:32 -0500 |
commit | 1faf201e8608dfa4d7af3460fd3d1fc7ebec398b (patch) | |
tree | 2208f76271cc6b1a81dbfb9143cd7118b071a909 /ecomp-sdk/sdk-app/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html | |
parent | ca23569858b8cc9f60010e193b7041feb2d3227b (diff) |
Initial OpenECOMP Portal SDK commit
Change-Id: I66a3491600a4b9ea241128dc29267eed6a78ed76
Signed-off-by: talasila <talasila@research.att.com>
Diffstat (limited to 'ecomp-sdk/sdk-app/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html')
-rw-r--r-- | ecomp-sdk/sdk-app/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/ecomp-sdk/sdk-app/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html b/ecomp-sdk/sdk-app/src/main/webapp/app/fusion/scripts/webrtc/getSourceId.html new file mode 100644 index 00000000..6f660025 --- /dev/null +++ b/ecomp-sdk/sdk-app/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> |