diff --git a/CHANGELOG.md b/CHANGELOG.md index 0327268057..f70f659077 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ *not released* + * only register listeners when network/cosmetics filtering is enabled [#288](https://github.com/cliqz-oss/adblocker/pull/288) + ## 0.13.2 *2019-08-17* diff --git a/packages/adblocker-electron/adblocker.ts b/packages/adblocker-electron/adblocker.ts index 38bdfe8daf..83464b5a26 100644 --- a/packages/adblocker-electron/adblocker.ts +++ b/packages/adblocker-electron/adblocker.ts @@ -46,15 +46,18 @@ export function fromElectronDetails({ */ export class ElectronBlocker extends FiltersEngine { public enableBlockingInSession(ses: Electron.Session) { - ses.webRequest.onHeadersReceived({ urls: [''] }, this.onHeadersReceived); - ses.webRequest.onBeforeRequest({ urls: [''] }, this.onBeforeRequest); - - ipcMain.on('get-cosmetic-filters', this.onGetCosmeticFilters); - ses.setPreloads([join(__dirname, './preload.js')]); + if (this.config.loadNetworkFilters === true) { + ses.webRequest.onHeadersReceived({ urls: [''] }, this.onHeadersReceived); + ses.webRequest.onBeforeRequest({ urls: [''] }, this.onBeforeRequest); + } - ipcMain.on('is-mutation-observer-enabled', (event: Electron.IpcMainEvent) => { - event.returnValue = this.config.enableMutationObserver; - }); + if (this.config.loadCosmeticFilters === true) { + ipcMain.on('get-cosmetic-filters', this.onGetCosmeticFilters); + ses.setPreloads([join(__dirname, './preload.js')]); + ipcMain.on('is-mutation-observer-enabled', (event: Electron.IpcMainEvent) => { + event.returnValue = this.config.enableMutationObserver; + }); + } } private onGetCosmeticFilters = ( diff --git a/packages/adblocker-puppeteer/adblocker.ts b/packages/adblocker-puppeteer/adblocker.ts index 463cebb146..d6eaed53d9 100644 --- a/packages/adblocker-puppeteer/adblocker.ts +++ b/packages/adblocker-puppeteer/adblocker.ts @@ -44,17 +44,21 @@ export class PuppeteerBlocker extends FiltersEngine { // currently no way to modify responses in puppeteer. This feature could // easily be added if puppeteer implements the required capability. - // Register callback for network requets filtering - page.on('request', this.onRequest); - - // Register callback to cosmetics injection (CSS + scriptlets) - page.on('framenavigated', async (frame) => { - try { - await this.onFrame(frame); - } catch (ex) { - // Ignore - } - }); + if (this.config.loadNetworkFilters === true) { + // Register callback for network requets filtering + page.on('request', this.onRequest); + } + + if (this.config.loadCosmeticFilters === true) { + // Register callback to cosmetics injection (CSS + scriptlets) + page.on('framenavigated', async (frame) => { + try { + await this.onFrame(frame); + } catch (ex) { + // Ignore + } + }); + } }); } diff --git a/packages/adblocker-webextension/adblocker.ts b/packages/adblocker-webextension/adblocker.ts index 127e0bdbc7..83f452315a 100644 --- a/packages/adblocker-webextension/adblocker.ts +++ b/packages/adblocker-webextension/adblocker.ts @@ -72,17 +72,19 @@ export function updateResponseHeadersWithCSP( */ export class WebExtensionBlocker extends FiltersEngine { public enableBlockingInBrowser() { - chrome.webRequest.onBeforeRequest.addListener( - this.onBeforeRequest, - { urls: [''] }, - ['blocking'], - ); + if (this.config.loadNetworkFilters === true) { + chrome.webRequest.onBeforeRequest.addListener( + this.onBeforeRequest, + { urls: [''] }, + ['blocking'], + ); - chrome.webRequest.onHeadersReceived.addListener( - this.onHeadersReceived, - { urls: [''], types: ['main_frame'] }, - ['blocking', 'responseHeaders'], - ); + chrome.webRequest.onHeadersReceived.addListener( + this.onHeadersReceived, + { urls: [''], types: ['main_frame'] }, + ['blocking', 'responseHeaders'], + ); + } // Start listening to messages coming from the content-script chrome.runtime.onMessage.addListener(this.onRuntimeMessage);