Index: lib/devtools.js |
=================================================================== |
--- a/lib/devtools.js |
+++ b/lib/devtools.js |
@@ -30,9 +30,6 @@ |
const nonRequestTypes = ["DOCUMENT", "ELEMHIDE", |
"GENERICBLOCK", "GENERICHIDE", "CSP"]; |
-// Mapping of inspected tabs to their devpanel page |
-// and recorded items. We can't use a PageMap here, |
-// because data must persist after navigation/reload. |
let panels = new Map(); |
function isActivePanel(panel) |
@@ -40,9 +37,9 @@ |
return panel && !panel.reload && !panel.reloading; |
} |
-function getActivePanel(page) |
+function getActivePanel(tabId) |
{ |
- let panel = panels.get(page.id); |
+ let panel = panels.get(tabId); |
if (isActivePanel(panel)) |
return panel; |
return null; |
@@ -122,8 +119,7 @@ |
/** |
* Logs a request to the devtools panel. |
* |
- * @param {?Page} page The page the request occured on or null if |
- * the request isn't associated with a page |
+ * @param {number[]} tabIds The tabIds associated with the request |
* @param {string} url The URL of the request |
* @param {string} type The request type |
* @param {string} docDomain The IDN-decoded hostname of the document |
@@ -134,7 +130,7 @@ |
* @param {?BlockingFilter} filter The matched filter or null if there is no |
* match |
*/ |
-exports.logRequest = function(page, url, type, docDomain, |
+exports.logRequest = function(tabIds, url, type, docDomain, |
thirdParty, sitekey, |
specificOnly, filter) |
{ |
@@ -143,21 +139,21 @@ |
let request = {url, type, docDomain, thirdParty, sitekey, specificOnly}; |
for (let [tabId, panel] of panels) |
- if ((!page || page.id == tabId) && isActivePanel(panel)) |
+ if ((tabIds.length == 0 || tabIds.includes(tabId)) && isActivePanel(panel)) |
addRecord(panel, request, filter); |
}; |
/** |
* Logs active element hiding filters to the devtools panel. |
* |
- * @param {Page} page The page the elements were hidden on |
+ * @param {number} tabId The ID of the tab, the elements were hidden in |
* @param {string[]} selectors The selectors of applied ElemHideFilters |
* @param {string[]} filters The text of applied ElemHideEmulationFilters |
* @param {string} docDomain The IDN-decoded hostname of the document |
*/ |
-function logHiddenElements(page, selectors, filters, docDomain) |
+function logHiddenElements(tabId, selectors, filters, docDomain) |
{ |
- let panel = getActivePanel(page); |
+ let panel = getActivePanel(tabId); |
if (panel) |
{ |
for (let subscription of FilterStorage.subscriptions) |
@@ -186,7 +182,7 @@ |
* Logs a whitelisting filter, that disables (some kind of) |
* blocking for a particular document, to the devtools panel. |
* |
- * @param {Page} page The page the whitelisting is active on |
+ * @param {number} tabId The tabId the whitelisting is active for |
* @param {string} url The url of the whitelisted document |
* @param {number} typeMask The bit mask of whitelisting types checked |
* for |
@@ -194,10 +190,10 @@ |
* document |
* @param {WhitelistFilter} filter The matched whitelisting filter |
*/ |
-exports.logWhitelistedDocument = function(page, url, typeMask, docDomain, |
+exports.logWhitelistedDocument = function(tabId, url, typeMask, docDomain, |
filter) |
{ |
- let panel = getActivePanel(page); |
+ let panel = getActivePanel(tabId); |
if (panel) |
{ |
for (let type of nonRequestTypes) |
@@ -209,14 +205,14 @@ |
}; |
/** |
- * Checks whether a page is inspected by the devtools panel. |
+ * Checks whether a tab is inspected by the devtools panel. |
* |
- * @param {Page} page |
+ * @param {number} tabId |
* @return {boolean} |
*/ |
-exports.hasPanel = function(page) |
+exports.hasPanel = function(tabId) |
{ |
- return panels.has(page.id); |
+ return panels.has(tabId); |
}; |
function onBeforeRequest(details) |
@@ -381,7 +377,7 @@ |
port.on("devtools.traceElemHide", (message, sender) => |
{ |
logHiddenElements( |
- sender.page, message.selectors, message.filters, |
+ sender.page.id, message.selectors, message.filters, |
extractHostFromFrame(sender.frame) |
); |
}); |