| 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 | 
|   11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |   11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|   12  * GNU General Public License for more details. |   12  * GNU General Public License for more details. | 
|   13  * |   13  * | 
|   14  * You should have received a copy of the GNU General Public License |   14  * You should have received a copy of the GNU General Public License | 
|   15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. |   15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
|   16  */ |   16  */ | 
|   17  |   17  | 
|   18 "use strict"; |   18 "use strict"; | 
|   19  |   19  | 
|   20 let {createSandbox} = require("./_common"); |   20 const {createSandbox} = require("./_common"); | 
|   21  |   21  | 
|   22 let Filter = null; |   22 let Filter = null; | 
|   23 let RegExpFilter = null; |   23 let RegExpFilter = null; | 
|   24 let CombinedMatcher = null; |   24 let CombinedMatcher = null; | 
|   25 let defaultMatcher = null; |   25 let defaultMatcher = null; | 
|   26 let Matcher = null; |   26 let Matcher = null; | 
|   27  |   27  | 
|   28 exports.setUp = function(callback) |   28 exports.setUp = function(callback) | 
|   29 { |   29 { | 
|   30   let sandboxedRequire = createSandbox(); |   30   let sandboxedRequire = createSandbox(); | 
|   31   ( |   31   ( | 
|   32     {Filter, RegExpFilter} = sandboxedRequire("../lib/filterClasses"), |   32     {Filter, RegExpFilter} = sandboxedRequire("../lib/filterClasses"), | 
|   33     {CombinedMatcher, defaultMatcher, Matcher} = sandboxedRequire("../lib/matche
     r") |   33     {CombinedMatcher, defaultMatcher, Matcher} = sandboxedRequire("../lib/matche
     r") | 
|   34   ); |   34   ); | 
|   35  |   35  | 
|   36   callback(); |   36   callback(); | 
|   37 }; |   37 }; | 
|   38  |   38  | 
|   39 function compareKeywords(test, text, expected) |   39 function compareKeywords(test, text, expected) | 
|   40 { |   40 { | 
|   41   for (let filter of [Filter.fromText(text), Filter.fromText("@@" + text)]) |   41   for (let filter of [Filter.fromText(text), Filter.fromText("@@" + text)]) | 
|   42   { |   42   { | 
|   43     let matcher = new Matcher(); |   43     let matcher = new Matcher(); | 
|   44     let result = []; |   44     let result = []; | 
|   45     for (let dummy of expected) |   45     for (let i = 0; i < expected.length; i++) | 
|   46     { |   46     { | 
|   47       let keyword = matcher.findKeyword(filter); |   47       let keyword = matcher.findKeyword(filter); | 
|   48       result.push(keyword); |   48       result.push(keyword); | 
|   49       if (keyword) |   49       if (keyword) | 
|   50       { |   50       { | 
|   51         let dummyFilter = Filter.fromText('^' + keyword + '^'); |   51         let dummyFilter = Filter.fromText("^" + keyword + "^"); | 
|   52         dummyFilter.filterCount = Infinity; |   52         dummyFilter.filterCount = Infinity; | 
|   53         matcher.add(dummyFilter); |   53         matcher.add(dummyFilter); | 
|   54       } |   54       } | 
|   55     } |   55     } | 
|   56  |   56  | 
|   57     test.equal(result.join(", "), expected.join(", "), "Keyword candidates for "
      + filter.text); |   57     test.equal(result.join(", "), expected.join(", "), "Keyword candidates for "
      + filter.text); | 
|   58   } |   58   } | 
|   59 } |   59 } | 
|   60  |   60  | 
|   61 function checkMatch(test, filters, location, contentType, docDomain, thirdParty,
      sitekey, specificOnly, expected) |   61 function checkMatch(test, filters, location, contentType, docDomain, thirdParty,
      sitekey, specificOnly, expected) | 
|   62 { |   62 { | 
|   63   let matcher = new Matcher(); |   63   let matcher = new Matcher(); | 
|   64   for (let filter of filters) |   64   for (let filter of filters) | 
|   65     matcher.add(Filter.fromText(filter)); |   65     matcher.add(Filter.fromText(filter)); | 
|   66  |   66  | 
|   67   let result = matcher.matchesAny(location, RegExpFilter.typeMap[contentType], d
     ocDomain, thirdParty, sitekey, specificOnly); |   67   let result = matcher.matchesAny(location, RegExpFilter.typeMap[contentType], d
     ocDomain, thirdParty, sitekey, specificOnly); | 
|   68   if (result) |   68   if (result) | 
|   69     result = result.text; |   69     result = result.text; | 
|   70  |   70  | 
|   71   test.equal(result, expected, "match(" + location + ", " + contentType + ", " +
      docDomain + ", " + (thirdParty ? "third-party" : "first-party") + ", " + (sitek
     ey || "no-sitekey") + ", " + (specificOnly ? "specificOnly" : "not-specificOnly"
     ) + ") with:\n" + filters.join("\n")); |   71   test.equal(result, expected, "match(" + location + ", " + contentType + ", " +
      docDomain + ", " + (thirdParty ? "third-party" : "first-party") + ", " + (sitek
     ey || "no-sitekey") + ", " + (specificOnly ? "specificOnly" : "not-specificOnly"
     ) + ") with:\n" + filters.join("\n")); | 
|   72  |   72  | 
|   73   let combinedMatcher = new CombinedMatcher(); |   73   let combinedMatcher = new CombinedMatcher(); | 
|   74   for (let i = 0; i < 2; i++) |   74   for (let i = 0; i < 2; i++) | 
|   75   { |   75   { | 
|   76     for (let filter of filters) |   76     for (let filter of filters) | 
|   77       combinedMatcher.add(Filter.fromText(filter)); |   77       combinedMatcher.add(Filter.fromText(filter)); | 
|   78  |   78  | 
|   79     let result = combinedMatcher.matchesAny(location, RegExpFilter.typeMap[conte
     ntType], docDomain, thirdParty, sitekey, specificOnly); |   79     result = combinedMatcher.matchesAny(location, RegExpFilter.typeMap[contentTy
     pe], docDomain, thirdParty, sitekey, specificOnly); | 
|   80     if (result) |   80     if (result) | 
|   81       result = result.text; |   81       result = result.text; | 
|   82  |   82  | 
|   83     test.equal(result, expected, "combinedMatch(" + location + ", " + contentTyp
     e + ", " + docDomain + ", " + (thirdParty ? "third-party" : "first-party") + ", 
     " + (sitekey || "no-sitekey") + ", " + (specificOnly ? "specificOnly" : "not-spe
     cificOnly") + ") with:\n" + filters.join("\n")); |   83     test.equal(result, expected, "combinedMatch(" + location + ", " + contentTyp
     e + ", " + docDomain + ", " + (thirdParty ? "third-party" : "first-party") + ", 
     " + (sitekey || "no-sitekey") + ", " + (specificOnly ? "specificOnly" : "not-spe
     cificOnly") + ") with:\n" + filters.join("\n")); | 
|   84  |   84  | 
|   85     // Generic whitelisting rules can match for specificOnly searches, so we |   85     // Generic whitelisting rules can match for specificOnly searches, so we | 
|   86     // can't easily know which rule will match for these whitelisting tests |   86     // can't easily know which rule will match for these whitelisting tests | 
|   87     if (specificOnly) |   87     if (specificOnly) | 
|   88       continue; |   88       continue; | 
|   89  |   89  | 
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  239   cacheCheck(test, matcher, "http://fed", "IMAGE", null, true, "http://fed$third
     -party"); |  239   cacheCheck(test, matcher, "http://fed", "IMAGE", null, true, "http://fed$third
     -party"); | 
|  240   cacheCheck(test, matcher, "http://abc_cba", "MEDIA", null, false, "cba$~third-
     party,~script"); |  240   cacheCheck(test, matcher, "http://abc_cba", "MEDIA", null, false, "cba$~third-
     party,~script"); | 
|  241   cacheCheck(test, matcher, "http://abc_cba", "MEDIA", null, true, "cba$third-pa
     rty"); |  241   cacheCheck(test, matcher, "http://abc_cba", "MEDIA", null, true, "cba$third-pa
     rty"); | 
|  242   cacheCheck(test, matcher, "http://abc_cba", "SCRIPT", null, false, "abc$script
     "); |  242   cacheCheck(test, matcher, "http://abc_cba", "SCRIPT", null, false, "abc$script
     "); | 
|  243   cacheCheck(test, matcher, "http://def?http://fed", "MEDIA", null, false, "http
     ://fed$~third-party,~script"); |  243   cacheCheck(test, matcher, "http://def?http://fed", "MEDIA", null, false, "http
     ://fed$~third-party,~script"); | 
|  244   cacheCheck(test, matcher, "http://def?http://fed", "MEDIA", null, true, "http:
     //fed$third-party"); |  244   cacheCheck(test, matcher, "http://def?http://fed", "MEDIA", null, true, "http:
     //fed$third-party"); | 
|  245   cacheCheck(test, matcher, "http://def?http://fed", "SCRIPT", null, false, "htt
     p://def$script"); |  245   cacheCheck(test, matcher, "http://def?http://fed", "SCRIPT", null, false, "htt
     p://def$script"); | 
|  246  |  246  | 
|  247   test.done(); |  247   test.done(); | 
|  248 }; |  248 }; | 
| OLD | NEW |