117 lines
3.2 KiB
JavaScript
Executable File
117 lines
3.2 KiB
JavaScript
Executable File
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
|
|
})
|