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

Side by Side Diff: lib/filterClasses.js

Issue 29876573: Issue 6937 - Lowercase RegExpFilter domains on demand (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore/
Patch Set: Created Sept. 7, 2018, 3:04 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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-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 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 domainSource: null, 440 domainSource: null,
441 441
442 /** 442 /**
443 * Separator character used in domainSource property, must be 443 * Separator character used in domainSource property, must be
444 * overridden by subclasses 444 * overridden by subclasses
445 * @type {string} 445 * @type {string}
446 */ 446 */
447 domainSeparator: null, 447 domainSeparator: null,
448 448
449 /** 449 /**
450 * Determines whether domainSource is already lower-case,
451 * can be overridden by subclasses.
452 * @type {boolean}
453 */
454 domainSourceIsLowerCase: false,
455
456 /**
457 * Map containing domains that this filter should match on/not match 450 * Map containing domains that this filter should match on/not match
458 * on or null if the filter should match on all domains 451 * on or null if the filter should match on all domains
459 * @type {?Map.<string,boolean>} 452 * @type {?Map.<string,boolean>}
460 */ 453 */
461 get domains() 454 get domains()
462 { 455 {
463 let domains = null; 456 let domains = null;
464 457
465 if (this.domainSource) 458 if (this.domainSource)
466 { 459 {
467 let source = this.domainSource; 460 let source = this.domainSource.toLowerCase();
Jon Sonesen 2018/09/07 03:09:33 Im super happy to see things like this go away heh
Manish Jethani 2018/09/07 03:42:44 I'm guessing "historical reasons." It may have bee
Jon Sonesen 2018/09/17 18:11:33 Yeah makes sense, thanks for explaining. I tested
Sebastian Noack 2018/09/17 19:20:59 This was an optimization at some point, but indeed
468 if (!this.domainSourceIsLowerCase)
469 {
470 // RegExpFilter already have lowercase domains
471 source = source.toLowerCase();
472 }
473 461
474 let knownMap = knownDomainMaps.get(source); 462 let knownMap = knownDomainMaps.get(source);
475 if (knownMap) 463 if (knownMap)
476 { 464 {
477 domains = knownMap; 465 domains = knownMap;
478 } 466 }
479 else 467 else
480 { 468 {
481 let list = source.split(this.domainSeparator); 469 let list = source.split(this.domainSeparator);
482 if (list.length == 1 && list[0][0] != "~") 470 if (list.length == 1 && list[0][0] != "~")
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 else 671 else
684 { 672 {
685 // No need to convert this filter to regular expression yet, do it on demand 673 // No need to convert this filter to regular expression yet, do it on demand
686 this.pattern = regexpSource; 674 this.pattern = regexpSource;
687 } 675 }
688 } 676 }
689 exports.RegExpFilter = RegExpFilter; 677 exports.RegExpFilter = RegExpFilter;
690 678
691 RegExpFilter.prototype = extend(ActiveFilter, { 679 RegExpFilter.prototype = extend(ActiveFilter, {
692 /** 680 /**
693 * @see ActiveFilter.domainSourceIsLowerCase
694 */
695 domainSourceIsLowerCase: true,
696
697 /**
698 * Number of filters contained, will always be 1 (required to 681 * Number of filters contained, will always be 1 (required to
699 * optimize {@link Matcher}). 682 * optimize {@link Matcher}).
700 * @type {number} 683 * @type {number}
701 */ 684 */
702 length: 1, 685 length: 1,
703 686
704 /** 687 /**
705 * The filter itself (required to optimize {@link Matcher}). 688 * The filter itself (required to optimize {@link Matcher}).
706 * @type {RegExpFilter} 689 * @type {RegExpFilter}
707 */ 690 */
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 else 845 else
863 { 846 {
864 switch (option.toLowerCase()) 847 switch (option.toLowerCase())
865 { 848 {
866 case "match-case": 849 case "match-case":
867 matchCase = !inverse; 850 matchCase = !inverse;
868 break; 851 break;
869 case "domain": 852 case "domain":
870 if (!value) 853 if (!value)
871 return new InvalidFilter(origText, "filter_unknown_option"); 854 return new InvalidFilter(origText, "filter_unknown_option");
872 domains = value.toLowerCase(); 855 domains = value;
873 break; 856 break;
874 case "third-party": 857 case "third-party":
875 thirdParty = !inverse; 858 thirdParty = !inverse;
876 break; 859 break;
877 case "collapse": 860 case "collapse":
878 collapse = !inverse; 861 collapse = !inverse;
879 break; 862 break;
880 case "sitekey": 863 case "sitekey":
881 if (!value) 864 if (!value)
882 return new InvalidFilter(origText, "filter_unknown_option"); 865 return new InvalidFilter(origText, "filter_unknown_option");
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
1247 1230
1248 /** 1231 /**
1249 * Script that should be executed 1232 * Script that should be executed
1250 * @type {string} 1233 * @type {string}
1251 */ 1234 */
1252 get script() 1235 get script()
1253 { 1236 {
1254 return this.body; 1237 return this.body;
1255 } 1238 }
1256 }); 1239 });
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld