Initial OpenECOMP policy/engine commit
[policy/engine.git] / ecomp-sdk-app / src / main / webapp / app / fusion / scripts / webrtc / getSourceId.html
1
2 <script>
3
4 var DetectRTC = {};
5
6 var screenCallback;
7
8 DetectRTC.screen = {
9     chromeMediaSource: 'screen',
10     getSourceId: function (callback) {
11         screenCallback = callback;
12         window.postMessage('get-sourceId', '*');
13     },
14     onMessageCallback: function (data) {
15         // "cancel" button is clicked
16         if (data == 'PermissionDeniedError') {
17             DetectRTC.screen.chromeMediaSource = 'PermissionDeniedError';
18             if (screenCallback) return screenCallback('PermissionDeniedError');
19             else throw new Error('PermissionDeniedError');
20         }
21
22         // extension notified his presence
23         if (data == 'rtcmulticonnection-extension-loaded') {
24             DetectRTC.screen.chromeMediaSource = 'desktop';
25         }
26
27         // extension shared temp sourceId
28         if (data.sourceId) {
29             DetectRTC.screen.sourceId = data.sourceId;
30             if (screenCallback) screenCallback(DetectRTC.screen.sourceId);
31         }
32     },
33     getChromeExtensionStatus: function (callback) {
34         // https://chrome.google.com/webstore/detail/screen-capturing-private/icgmlogfeajbfdffajhoebcfbibfhaen
35         var extensionid = 'icgmlogfeajbfdffajhoebcfbibfhaen';
36
37         var image = document.createElement('img');
38         image.src = 'chrome-extension://' + extensionid + '/icon.png';
39         image.onload = function () {
40             DetectRTC.screen.chromeMediaSource = 'screen';
41             window.postMessage('are-you-there', '*');
42             setTimeout(function () {
43                 if (DetectRTC.screen.chromeMediaSource == 'screen') {
44                     callback('installed-disabled');
45                 } else callback('installed-enabled');
46             }, 2000);
47         };
48         image.onerror = function () {
49             callback('not-installed');
50         };
51     }
52 };
53
54 window.addEventListener('message', function (event) {
55     if (!event.data || !(typeof event.data == 'string' || event.data.sourceId || event.data.captureSourceId)) return;
56     if (event.data.captureSourceId) captureSourceId();
57
58     DetectRTC.screen.onMessageCallback(event.data);
59 });
60
61 function captureSourceId() {
62     // check if desktop-capture extension installed.
63     DetectRTC.screen.getChromeExtensionStatus(function (status) {
64         if (status != 'installed-enabled') {
65             window.parent.postMessage({
66                 chromeExtensionStatus: status
67             }, '*');
68             return;
69         }
70
71         DetectRTC.screen.getSourceId(function (sourceId) {
72             window.parent.postMessage({
73                 chromeMediaSourceId: sourceId
74             }, '*');
75         });
76     });
77 }
78 </script>