blob: 6f660025ed7baeba41f28d4f16d8aa1c627decf2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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>
|