OLD | NEW |
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-2016 Eyeo GmbH | 3 * Copyright (C) 2006-2016 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 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 RealWebSocket.prototype.constructor = WebSocket; | 423 RealWebSocket.prototype.constructor = WebSocket; |
424 }, eventName); | 424 }, eventName); |
425 } | 425 } |
426 | 426 |
427 function ElemHide() | 427 function ElemHide() |
428 { | 428 { |
429 this.shadow = this.createShadowTree(); | 429 this.shadow = this.createShadowTree(); |
430 this.style = null; | 430 this.style = null; |
431 this.tracer = null; | 431 this.tracer = null; |
432 | 432 |
433 this.propertyFilters = new CSSPropertyFilters( | 433 this.elemHideEmulation = new ElemHideEmulation( |
434 window, | 434 window, |
435 function(callback) | 435 function(callback) |
436 { | 436 { |
437 ext.backgroundPage.sendMessage({ | 437 ext.backgroundPage.sendMessage({ |
438 type: "filters.get", | 438 type: "filters.get", |
439 what: "cssproperties" | 439 what: "elemhideemulation" |
440 }, callback); | 440 }, callback); |
441 }, | 441 }, |
442 this.addSelectors.bind(this) | 442 this.addSelectors.bind(this) |
443 ); | 443 ); |
444 } | 444 } |
445 ElemHide.prototype = { | 445 ElemHide.prototype = { |
446 selectorGroupSize: 200, | 446 selectorGroupSize: 200, |
447 | 447 |
448 createShadowTree: function() | 448 createShadowTree: function() |
449 { | 449 { |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 { | 537 { |
538 var selector = selectors.slice(i, i + this.selectorGroupSize).join(", "); | 538 var selector = selectors.slice(i, i + this.selectorGroupSize).join(", "); |
539 this.style.sheet.insertRule(selector + "{display: none !important;}", | 539 this.style.sheet.insertRule(selector + "{display: none !important;}", |
540 this.style.sheet.cssRules.length); | 540 this.style.sheet.cssRules.length); |
541 } | 541 } |
542 }, | 542 }, |
543 | 543 |
544 apply: function() | 544 apply: function() |
545 { | 545 { |
546 var selectors = null; | 546 var selectors = null; |
547 var propertyFiltersLoaded = false; | 547 var elemHideEmulationLoaded = false; |
548 | 548 |
549 var checkLoaded = function() | 549 var checkLoaded = function() |
550 { | 550 { |
551 if (!selectors || !propertyFiltersLoaded) | 551 if (!selectors || !elemHideEmulationLoaded) |
552 return; | 552 return; |
553 | 553 |
554 if (this.tracer) | 554 if (this.tracer) |
555 this.tracer.disconnect(); | 555 this.tracer.disconnect(); |
556 this.tracer = null; | 556 this.tracer = null; |
557 | 557 |
558 if (this.style && this.style.parentElement) | 558 if (this.style && this.style.parentElement) |
559 this.style.parentElement.removeChild(this.style); | 559 this.style.parentElement.removeChild(this.style); |
560 this.style = null; | 560 this.style = null; |
561 | 561 |
562 this.addSelectors(selectors.selectors); | 562 this.addSelectors(selectors.selectors); |
563 this.propertyFilters.apply(); | 563 this.elemHideEmulation.apply(); |
564 | 564 |
565 if (selectors.trace) | 565 if (selectors.trace) |
566 this.tracer = new ElementHidingTracer(selectors.selectors); | 566 this.tracer = new ElementHidingTracer(selectors.selectors); |
567 }.bind(this); | 567 }.bind(this); |
568 | 568 |
569 ext.backgroundPage.sendMessage({type: "get-selectors"}, function(response) | 569 ext.backgroundPage.sendMessage({type: "get-selectors"}, function(response) |
570 { | 570 { |
571 selectors = response; | 571 selectors = response; |
572 checkLoaded(); | 572 checkLoaded(); |
573 }); | 573 }); |
574 | 574 |
575 this.propertyFilters.load(function() | 575 this.elemHideEmulation.load(function() |
576 { | 576 { |
577 propertyFiltersLoaded = true; | 577 elemHideEmulationLoaded = true; |
578 checkLoaded(); | 578 checkLoaded(); |
579 }); | 579 }); |
580 } | 580 } |
581 }; | 581 }; |
582 | 582 |
583 if (document instanceof HTMLDocument) | 583 if (document instanceof HTMLDocument) |
584 { | 584 { |
585 checkSitekey(); | 585 checkSitekey(); |
586 wrapWebSocket(); | 586 wrapWebSocket(); |
587 | 587 |
588 var elemhide = new ElemHide(); | 588 var elemhide = new ElemHide(); |
589 elemhide.apply(); | 589 elemhide.apply(); |
590 | 590 |
591 document.addEventListener("error", function(event) | 591 document.addEventListener("error", function(event) |
592 { | 592 { |
593 checkCollapse(event.target); | 593 checkCollapse(event.target); |
594 }, true); | 594 }, true); |
595 | 595 |
596 document.addEventListener("load", function(event) | 596 document.addEventListener("load", function(event) |
597 { | 597 { |
598 var element = event.target; | 598 var element = event.target; |
599 if (/^i?frame$/.test(element.localName)) | 599 if (/^i?frame$/.test(element.localName)) |
600 checkCollapse(element); | 600 checkCollapse(element); |
601 }, true); | 601 }, true); |
602 } | 602 } |
OLD | NEW |