| Index: lib/cssInjection.js |
| =================================================================== |
| --- a/lib/cssInjection.js |
| +++ b/lib/cssInjection.js |
| @@ -25,27 +25,42 @@ |
| const {checkWhitelisted} = require("whitelisting"); |
| const {extractHostFromFrame} = require("url"); |
| const {port} = require("messaging"); |
| const devtools = require("devtools"); |
| const userStyleSheetsSupported = "extensionTypes" in chrome && |
| "CSSOrigin" in chrome.extensionTypes; |
| -function hideElements(tabId, frameId, selectors) |
| +function convertSelectors(selectors) |
| +{ |
| + return selectors.join(", ") + "{display: none !important;}"; |
| +} |
| + |
| +function addStyleSheet(tabId, frameId, selectors) |
|
Manish Jethani
2017/10/14 00:08:03
hideElements is now addStyleSheet
|
| { |
| chrome.tabs.insertCSS(tabId, { |
| - code: selectors.join(", ") + "{display: none !important;}", |
| + code: convertSelectors(selectors), |
| cssOrigin: "user", |
| frameId, |
| matchAboutBlank: true, |
| runAt: "document_start" |
| }); |
| } |
| +function removeStyleSheet(tabId, frameId, selectors) |
| +{ |
| + chrome.tabs.removeCSS(tabId, { |
| + code: convertSelectors(selectors), |
| + cssOrigin: "user", |
| + frameId, |
| + matchAboutBlank: true |
| + }); |
| +} |
| + |
| port.on("elemhide.getSelectors", (msg, sender) => |
| { |
| let selectors = []; |
| let emulatedPatterns = []; |
| let trace = devtools && devtools.hasPanel(sender.page); |
| let inject = !userStyleSheetsSupported; |
| if (!checkWhitelisted(sender.page, sender.frame, |
| @@ -61,21 +76,24 @@ |
| specificOnly ? ElemHide.SPECIFIC_ONLY : ElemHide.ALL_MATCHING |
| ); |
| for (let filter of ElemHideEmulation.getRulesForDomain(hostname)) |
| emulatedPatterns.push({selector: filter.selector, text: filter.text}); |
| } |
| if (!inject && selectors.length > 0) |
| - hideElements(sender.page.id, sender.frame.id, selectors); |
| + addStyleSheet(sender.page.id, sender.frame.id, selectors); |
| let response = {trace, inject, emulatedPatterns}; |
| if (trace || inject) |
| response.selectors = selectors; |
| return response; |
| }); |
| port.on("elemhide.injectSelectors", (msg, sender) => |
| { |
| - hideElements(sender.page.id, sender.frame.id, msg.selectors); |
| + if (msg.previousSelectors) |
| + removeStyleSheet(sender.page.id, sender.frame.id, msg.previousSelectors); |
| + |
| + addStyleSheet(sender.page.id, sender.frame.id, msg.selectors); |
| }); |