| LEFT | RIGHT | 
| (no file at all) |  | 
|    1 /* |    1 /* | 
|    2  * This file is part of Adblock Plus <https://adblockplus.org/>, |    2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
|    3  * Copyright (C) 2006-present eyeo GmbH |    3  * Copyright (C) 2006-present eyeo GmbH | 
|    4  * |    4  * | 
|    5  * Adblock Plus is free software: you can redistribute it and/or modify |    5  * Adblock Plus is free software: you can redistribute it and/or modify | 
|    6  * it under the terms of the GNU General Public License version 3 as |    6  * it under the terms of the GNU General Public License version 3 as | 
|    7  * published by the Free Software Foundation. |    7  * published by the Free Software Foundation. | 
|    8  * |    8  * | 
|    9  * Adblock Plus is distributed in the hope that it will be useful, |    9  * Adblock Plus is distributed in the hope that it will be useful, | 
|   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of |   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| (...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  338     clearTimeout(this.timeout); |  338     clearTimeout(this.timeout); | 
|  339   } |  339   } | 
|  340 }; |  340 }; | 
|  341  |  341  | 
|  342 function ElemHide() |  342 function ElemHide() | 
|  343 { |  343 { | 
|  344   this.shadow = this.createShadowTree(); |  344   this.shadow = this.createShadowTree(); | 
|  345   this.styles = new Map(); |  345   this.styles = new Map(); | 
|  346   this.tracer = null; |  346   this.tracer = null; | 
|  347   this.inline = true; |  347   this.inline = true; | 
 |  348   this.inlineEmulated = true; | 
|  348   this.emulatedPatterns = null; |  349   this.emulatedPatterns = null; | 
|  349  |  350  | 
|  350   this.elemHideEmulation = new ElemHideEmulation( |  351   this.elemHideEmulation = new ElemHideEmulation( | 
|  351     this.addSelectors.bind(this), |  352     this.addSelectors.bind(this), | 
|  352     this.hideElements.bind(this) |  353     this.hideElements.bind(this) | 
|  353   ); |  354   ); | 
|  354 } |  355 } | 
|  355 ElemHide.prototype = { |  356 ElemHide.prototype = { | 
|  356   selectorGroupSize: 1024, |  357   selectorGroupSize: 1024, | 
|  357  |  358  | 
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  446       let selector = preparedSelectors.slice( |  447       let selector = preparedSelectors.slice( | 
|  447         i, i + this.selectorGroupSize |  448         i, i + this.selectorGroupSize | 
|  448       ).join(", "); |  449       ).join(", "); | 
|  449       style.sheet.insertRule(selector + "{display: none !important;}", |  450       style.sheet.insertRule(selector + "{display: none !important;}", | 
|  450                              style.sheet.cssRules.length); |  451                              style.sheet.cssRules.length); | 
|  451     } |  452     } | 
|  452   }, |  453   }, | 
|  453  |  454  | 
|  454   addSelectors(selectors, filters) |  455   addSelectors(selectors, filters) | 
|  455   { |  456   { | 
|  456     if (this.inline) |  457     if (this.inline || this.inlineEmulated) | 
|  457     { |  458     { | 
|  458       // Insert the style rules inline if we have been instructed by the |  459       // Insert the style rules inline if we have been instructed by the | 
|  459       // background page to do so. This is usually the case, except on platforms |  460       // background page to do so. This is usually the case, except on platforms | 
|  460       // that do support user stylesheets via the browser.tabs.insertCSS API |  461       // that do support user stylesheets via the browser.tabs.insertCSS API | 
|  461       // (Firefox 53 onwards for now and possibly Chrome in the near future). |  462       // (Firefox 53 onwards for now and possibly Chrome in the near future). | 
|  462       // Once all supported platforms have implemented this API, we can remove |  463       // Once all supported platforms have implemented this API, we can remove | 
|  463       // the code below. See issue #5090. |  464       // the code below. See issue #5090. | 
|  464       // Related Chrome and Firefox issues: |  465       // Related Chrome and Firefox issues: | 
|  465       // https://bugs.chromium.org/p/chromium/issues/detail?id=632009 |  466       // https://bugs.chromium.org/p/chromium/issues/detail?id=632009 | 
|  466       // https://bugzilla.mozilla.org/show_bug.cgi?id=1310026 |  467       // https://bugzilla.mozilla.org/show_bug.cgi?id=1310026 | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  499     browser.runtime.sendMessage({type: "elemhide.getSelectors"}, response => |  500     browser.runtime.sendMessage({type: "elemhide.getSelectors"}, response => | 
|  500     { |  501     { | 
|  501       if (this.tracer) |  502       if (this.tracer) | 
|  502         this.tracer.disconnect(); |  503         this.tracer.disconnect(); | 
|  503       this.tracer = null; |  504       this.tracer = null; | 
|  504  |  505  | 
|  505       if (response.trace) |  506       if (response.trace) | 
|  506         this.tracer = new ElementHidingTracer(); |  507         this.tracer = new ElementHidingTracer(); | 
|  507  |  508  | 
|  508       this.inline = response.inline; |  509       this.inline = response.inline; | 
 |  510       this.inlineEmulated = !!response.inlineEmulated; | 
|  509  |  511  | 
|  510       if (this.inline) |  512       if (this.inline) | 
|  511         this.addSelectorsInline(response.selectors, "standard"); |  513         this.addSelectorsInline(response.selectors, "standard"); | 
|  512  |  514  | 
|  513       if (this.tracer) |  515       if (this.tracer) | 
|  514         this.tracer.addSelectors(response.selectors); |  516         this.tracer.addSelectors(response.selectors); | 
|  515  |  517  | 
|  516       this.elemHideEmulation.apply(response.emulatedPatterns); |  518       this.elemHideEmulation.apply(response.emulatedPatterns); | 
|  517     }); |  519     }); | 
|  518   } |  520   } | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
|  535     let element = event.target; |  537     let element = event.target; | 
|  536     if (/^i?frame$/.test(element.localName)) |  538     if (/^i?frame$/.test(element.localName)) | 
|  537       checkCollapse(element); |  539       checkCollapse(element); | 
|  538   }, true); |  540   }, true); | 
|  539 } |  541 } | 
|  540  |  542  | 
|  541 window.checkCollapse = checkCollapse; |  543 window.checkCollapse = checkCollapse; | 
|  542 window.elemhide = elemhide; |  544 window.elemhide = elemhide; | 
|  543 window.typeMap = typeMap; |  545 window.typeMap = typeMap; | 
|  544 window.getURLsFromElement = getURLsFromElement; |  546 window.getURLsFromElement = getURLsFromElement; | 
| LEFT | RIGHT |