-
Notifications
You must be signed in to change notification settings - Fork 1
/
background.js
57 lines (54 loc) · 2.08 KB
/
background.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
// Array holders for our portals. index = tabID
var devPorts = [];
var spPorts = [];
chrome.extension.onConnect.addListener(function(port) {
// Handle messages from dev tools
if (port.name == "spDevTools") {
port.onMessage.addListener(function(msg) {
if(msg.action == 'link') { // Setup
console.log('linked to dt '+msg.tabId);
devPorts[msg.tabId] = port;
}
else if(msg.action == 'save') { // Handle save button
chrome.tabs.create({url: 'data:text;base64,'+btoa(msg.payload), active:false});
}
else { // Forward message
console.log('post to cs '+msg.tabId);
spPorts[msg.tabId].postMessage(msg);
}
});
}
// Handle messages from content script
else if(port.name == "spContentScript") {
port.onMessage.addListener(function(msg) {
if(msg.action == 'link') { // Setup
console.log('linked to cs '+msg.tabId);
spPorts[msg.tabId] = port;
}
else {
// If dev tools are open, forward message
if(typeof devPorts[msg.tabId] != 'undefined') {
console.log('post to dt '+msg.tabId);
devPorts[msg.tabId].postMessage(msg.payload);
}
// Else, bounce msg back immediately
else {
//console.log('DT '+msg.tabId+' not connected'); - for debugging
if(msg.payload.action == 'send') {
//console.log('bounce send back to cs '+msg.tabId); - for debugging
spPorts[msg.tabId].postMessage({action: 'send', payload: msg.payload.event, tabId: msg.tabId});
}
}
}
});
}
});
// Listen for tabId requests
chrome.extension.onMessage.addListener(
function(message, sender, sendResponse) {
if ( message.type == 'getTabId' )
{
sendResponse({ tabId: sender.tab.id });
}
}
);