Index: lib/contentFiltering.js |
=================================================================== |
--- a/lib/contentFiltering.js |
+++ b/lib/contentFiltering.js |
@@ -15,17 +15,17 @@ |
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
*/ |
/** @module contentFiltering */ |
"use strict"; |
const {RegExpFilter} = require("../adblockpluscore/lib/filterClasses"); |
-const {ElemHide} = require("../adblockpluscore/lib/elemHide"); |
+const {ElemHide, createStyleSheet} = require("../adblockpluscore/lib/elemHide"); |
const {ElemHideEmulation} = require("../adblockpluscore/lib/elemHideEmulation"); |
const {filterNotifier} = require("../adblockpluscore/lib/filterNotifier"); |
const {Snippets, compileScript} = require("../adblockpluscore/lib/snippets"); |
const {checkWhitelisted} = require("./whitelisting"); |
const {extractHostFromFrame} = require("./url"); |
const {port} = require("./messaging"); |
const {HitLogger, logRequest} = require("./hitLogger"); |
const info = require("info"); |
@@ -38,44 +38,16 @@ |
const selectorGroupSize = 1024; |
let userStyleSheetsSupported = true; |
let snippetsLibrarySource = ""; |
let executableCode = new Map(); |
-function* splitSelectors(selectors) |
-{ |
- // Chromium's Blink engine supports only up to 8,192 simple selectors, and |
- // even fewer compound selectors, in a rule. The exact number of selectors |
- // that would work depends on their sizes (e.g. "#foo .bar" has a size of 2). |
- // Since we don't know the sizes of the selectors here, we simply split them |
- // into groups of 1,024, based on the reasonable assumption that the average |
- // selector won't have a size greater than 8. The alternative would be to |
- // calculate the sizes of the selectors and divide them up accordingly, but |
- // this approach is more efficient and has worked well in practice. In theory |
- // this could still lead to some selectors not working on Chromium, but it is |
- // highly unlikely. |
- // See issue #6298 and https://crbug.com/804179 |
- for (let i = 0; i < selectors.length; i += selectorGroupSize) |
- yield selectors.slice(i, i + selectorGroupSize); |
-} |
- |
-function* createRules(selectors) |
-{ |
- for (let selectorGroup of splitSelectors(selectors)) |
- yield selectorGroup.join(", ") + " {display: none !important;}"; |
-} |
- |
-function createStyleSheet(selectors) |
-{ |
- return Array.from(createRules(selectors)).join("\n"); |
-} |
- |
function addStyleSheet(tabId, frameId, styleSheet) |
{ |
try |
{ |
let promise = browser.tabs.insertCSS(tabId, { |
code: styleSheet, |
cssOrigin: "user", |
frameId, |