-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathcontent-script.js
executable file
·64 lines (53 loc) · 1.93 KB
/
content-script.js
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
var extensionID = chrome.runtime.id;
var prefix = 'com.tokbox.screenSharing.' + extensionID;
var port = chrome.runtime.connect();
var response = function(method, payload) {
var res = { payload: payload, from: 'extension' };
res[prefix] = method;
return res;
}
// if background script sent a message
port.onMessage.addListener(function (message) {
if(message && message.method === 'permissionDenied') {
window.postMessage(response('permissionDenied', message.payload), '*');
} else if (message && message.method === 'sourceId') {
window.postMessage(response('sourceId', message.payload), '*');
} else if (message && message.method === 'registrationId') {
window.postMessage({
method: 'registrationId',
payload: message.payload,
from: 'extension'
}, '*');
}
});
// this event handler watches for messages sent from the webpage
// it receives those messages and forwards to background script
window.addEventListener('message', function (event) {
if(event.source != window) {
return;
}
if(event.data != null && typeof event.data === 'object' && event.data.method) {
return port.postMessage({ method: event.data.method });
}
if(!(event.data != null && typeof event.data === 'object' && event.data[prefix]
&& event.data.payload != null && typeof event.data.payload === 'object')) {
return;
}
if(event.data.from !== 'jsapi') {
return;
}
var method = event.data[prefix],
payload = event.data.payload;
if(!payload.requestId) {
console.warn('Message to screen sharing extesnion does not have a requestId for replies.');
return;
}
if(method === 'isExtensionInstalled') {
return window.postMessage(response('extensionLoaded', payload), '*');
}
if(method === 'getSourceId') {
return port.postMessage({ method: 'getSourceId', payload: payload });
}
});
// inform browser client that we're available
window.postMessage(response('extensionLoaded'), '*');