Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: include.preload.js

Issue 29401596: Issue 5094 - Implement support for :has() in chrome extension (Closed) Base URL: https://hg.adblockplus.org/adblockpluschrome/
Patch Set: Created April 3, 2017, 2:10 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
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-2017 eyeo GmbH 3 * Copyright (C) 2006-2017 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
423 423
424 this.elemHideEmulation = new ElemHideEmulation( 424 this.elemHideEmulation = new ElemHideEmulation(
425 window, 425 window,
426 callback => 426 callback =>
427 { 427 {
428 ext.backgroundPage.sendMessage({ 428 ext.backgroundPage.sendMessage({
429 type: "filters.get", 429 type: "filters.get",
430 what: "elemhideemulation" 430 what: "elemhideemulation"
431 }, callback); 431 }, callback);
432 }, 432 },
433 this.addSelectors.bind(this) 433 this.addSelectors.bind(this),
434 this.hideElements.bind(this)
434 ); 435 );
435 } 436 }
436 ElemHide.prototype = { 437 ElemHide.prototype = {
437 selectorGroupSize: 200, 438 selectorGroupSize: 200,
438 439
439 createShadowTree() 440 createShadowTree()
440 { 441 {
441 // Use Shadow DOM if available as to not mess with with web pages that 442 // Use Shadow DOM if available as to not mess with with web pages that
442 // rely on the order of their own <style> tags (#309). However, creating 443 // rely on the order of their own <style> tags (#309). However, creating
443 // a shadow root breaks running CSS transitions. So we have to create 444 // a shadow root breaks running CSS transitions. So we have to create
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 i, i + this.selectorGroupSize 535 i, i + this.selectorGroupSize
535 ).join(", "); 536 ).join(", ");
536 this.style.sheet.insertRule(selector + "{display: none !important;}", 537 this.style.sheet.insertRule(selector + "{display: none !important;}",
537 this.style.sheet.cssRules.length); 538 this.style.sheet.cssRules.length);
538 } 539 }
539 540
540 if (this.tracer) 541 if (this.tracer)
541 this.tracer.addSelectors(selectors, filters || selectors); 542 this.tracer.addSelectors(selectors, filters || selectors);
542 }, 543 },
543 544
545 hideElements(elements, filters)
546 {
547 for (let element of elements)
548 {
549 element.style.display = "none";
Sebastian Noack 2017/04/04 10:14:45 We should use the same logic as we have in checkCo
hub 2017/04/05 09:05:53 Done.
550 }
551 // XXX first arg is supposed to be selectors
552 if (this.tracer)
553 this.tracer.addSelectors(filters, filters);
Sebastian Noack 2017/04/04 10:14:45 ElementHidingTracer.addSelectors() will search for
hub 2017/04/05 09:05:53 Done.
554 },
555
544 apply() 556 apply()
545 { 557 {
546 ext.backgroundPage.sendMessage({type: "get-selectors"}, response => 558 ext.backgroundPage.sendMessage({type: "get-selectors"}, response =>
547 { 559 {
548 if (this.tracer) 560 if (this.tracer)
549 this.tracer.disconnect(); 561 this.tracer.disconnect();
550 this.tracer = null; 562 this.tracer = null;
551 563
552 if (this.style && this.style.parentElement) 564 if (this.style && this.style.parentElement)
553 this.style.parentElement.removeChild(this.style); 565 this.style.parentElement.removeChild(this.style);
(...skipping 21 matching lines...) Expand all
575 checkCollapse(event.target); 587 checkCollapse(event.target);
576 }, true); 588 }, true);
577 589
578 document.addEventListener("load", event => 590 document.addEventListener("load", event =>
579 { 591 {
580 let element = event.target; 592 let element = event.target;
581 if (/^i?frame$/.test(element.localName)) 593 if (/^i?frame$/.test(element.localName))
582 checkCollapse(element); 594 checkCollapse(element);
583 }, true); 595 }, true);
584 } 596 }
OLDNEW
« no previous file with comments | « dependencies ('k') | lib/filterValidation.js » ('j') | lib/filterValidation.js » ('J')

Powered by Google App Engine
This is Rietveld