-
Notifications
You must be signed in to change notification settings - Fork 17
/
background.js
116 lines (112 loc) · 3.23 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
const messageType = {
EXECUTE_SCRIPT: 'EXECUTE_SCRIPT',
RUN_AXS: 'RUN_AXS',
AXS_COMPLETE: 'AXS_COMPLETE',
HIGHLIGHT_WARNING: 'HIGHLIGHT_WARNING',
UNHIGHLIGHT_WARNING: 'UNHIGHLIGHT_WARNING',
HIGHLIGHT_REPORT: 'HIGHLIGHT_REPORT',
UNHIGHLIGHT_REPORT: 'UNHIGHLIGHT_REPORT',
TRACE_TAB_PATH: 'TRACE_TAB_PATH',
PNG_TAB_PATH: 'PNG_TAB_PATH',
CLEAR_AXS: 'CLEAR_AXS'
}
const auditDir = 'audit';
const tracerDir = 'tracer';
var devtools = null;
const devToolsListener = function(message, sender, sendResponse) {
switch (message.type) {
case messageType.EXECUTE_SCRIPT: {
const { scriptToInject } = message.data;
// Inject a content script into the active tab
chrome.tabs.executeScript({file: scriptToInject});
break;
}
case messageType.RUN_AXS: {
chrome.tabs.executeScript({ file: `${auditDir}/axs_testing.js` });
chrome.tabs.executeScript({ file: `${auditDir}/run_axs.js` });
break;
}
case messageType.CLEAR_AXS: {
chrome.tabs.executeScript({ file: `${auditDir}/clear_axs.js`})
break;
}
case messageType.AXS_COMPLETE: {
const { result, idToWarningsMap } = message.data;
if (devtools) {
devtools.postMessage({
type: 'AXS_SHOW_RESULTS',
data: {
idToWarningsMap: idToWarningsMap
}
})
}
break;
}
case messageType.HIGHLIGHT_WARNING: {
const { warningId } = message.data;
chrome.tabs.sendMessage({
type: messageType.HIGHLIGHT_WARNING,
data: {
warningId: warningId
}
})
break;
}
case messageType.UNHIGHLIGHT_WARNING: {
const { warningId } = message.data;
chrome.tabs.sendMessage({
type: messageType.UNHIGHLIGHT_WARNING,
data: {
warningId: warningId
}
})
break;
}
case messageType.HIGHLIGHT_REPORT: {
const { warningId } = message.data;
if (devtools) {
devtools.postMessage({
type: messageType.HIGHLIGHT_REPORT,
data: {
warningId: warningId
}
})
}
break;
}
case messageType.UNHIGHLIGHT_REPORT: {
const { warningId } = message.data;
if (devtools) {
devtools.postMessage({
type: messageType.UNHIGHLIGHT_REPORT,
data: {
warningId: warningId
}
})
}
break;
}
case messageType.TRACE_TAB_PATH: {
chrome.tabs.executeScript({ file: `${tracerDir}/trace_tab_path.js` });
break;
}
case messageType.PNG_TAB_PATH: {
chrome.tabs.executeScript({ file: `${tracerDir}/html2canvas.js` });
chrome.tabs.executeScript({ file: `${tracerDir}/png_tab_path.js` });
break;
}
default: {
console.log(message);
return null;
}
}
}
// might need to change this to be inside onConnect, and on devtools side
// pass the port to panel
chrome.runtime.onMessage.addListener(devToolsListener);
chrome.runtime.onConnect.addListener(function(devToolsConnection) {
// devToolsConnection.onMessage.addListener(devToolsListener);
devtools = devToolsConnection;
// assign the listener function to a variable so we can remove it later
// add the listener
})