| Index: assets/js/Matcher.jsm |
| diff --git a/assets/js/Matcher.jsm b/assets/js/Matcher.jsm |
| deleted file mode 100755 |
| index e378aad7d38d92e01bece917bf02be90e058c557..0000000000000000000000000000000000000000 |
| --- a/assets/js/Matcher.jsm |
| +++ /dev/null |
| @@ -1,393 +0,0 @@ |
| -/* |
| - * This file is part of Adblock Plus <http://adblockplus.org/>, |
| - * Copyright (C) 2006-2014 Eyeo GmbH |
| - * |
| - * Adblock Plus is free software: you can redistribute it and/or modify |
| - * it under the terms of the GNU General Public License version 3 as |
| - * published by the Free Software Foundation. |
| - * |
| - * Adblock Plus is distributed in the hope that it will be useful, |
| - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| - * GNU General Public License for more details. |
| - * |
| - * You should have received a copy of the GNU General Public License |
| - * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| - */ |
| - |
| - |
| -// |
| -// This file has been generated automatically from Adblock Plus source code |
| -// |
| - |
| -(function (_patchFunc0) { |
| - function Matcher() { |
| - this.clear(); |
| - } |
| - Matcher.prototype = { |
| - filterByKeyword: null, |
| - keywordByFilter: null, |
| - clear: function () { |
| - this.filterByKeyword = { |
| - __proto__: null |
| - }; |
| - this.keywordByFilter = { |
| - __proto__: null |
| - }; |
| - } |
| - , |
| - add: function (filter) { |
| - if (filter.text in this.keywordByFilter) |
| - return ; |
| - var keyword = this.findKeyword(filter); |
| - switch (typeof this.filterByKeyword[keyword]) { |
| - case "undefined": { |
| - this.filterByKeyword[keyword] = filter.text; |
| - break; |
| - } |
| - case "string": { |
| - this.filterByKeyword[keyword] = [this.filterByKeyword[keyword], filter.text]; |
| - break; |
| - } |
| - default: { |
| - this.filterByKeyword[keyword].push(filter.text); |
| - break; |
| - } |
| - } |
| - this.keywordByFilter[filter.text] = keyword; |
| - } |
| - , |
| - remove: function (filter) { |
| - if (!(filter.text in this.keywordByFilter)) |
| - return ; |
| - var keyword = this.keywordByFilter[filter.text]; |
| - var list = this.filterByKeyword[keyword]; |
| - if (typeof list == "string") |
| - delete this.filterByKeyword[keyword]; |
| - else { |
| - var index = list.indexOf(filter.text); |
| - if (index >= 0) { |
| - list.splice(index, 1); |
| - if (list.length == 1) |
| - this.filterByKeyword[keyword] = list[0]; |
| - } |
| - } |
| - delete this.keywordByFilter[filter.text]; |
| - } |
| - , |
| - findKeyword: function (filter) { |
| - var defaultResult = (filter.contentType & RegExpFilter.typeMap.DONOTTRACK ? "donottrack" : ""); |
| - var text = filter.text; |
| - if (Filter.regexpRegExp.test(text)) |
| - return defaultResult; |
| - if (Filter.optionsRegExp.test(text)) |
| - text = RegExp.leftContext; |
| - if (text.substr(0, 2) == "@@") |
| - text = text.substr(2); |
| - var candidates = text.toLowerCase().match(/[^a-z0-9%*][a-z0-9%]{3,}(?=[^a-z0-9%*])/g); |
| - if (!candidates) |
| - return defaultResult; |
| - var hash = this.filterByKeyword; |
| - var result = defaultResult; |
| - var resultCount = 16777215; |
| - var resultLength = 0; |
| - for (var i = 0, l = candidates.length; |
| - i < l; i++) { |
| - var candidate = candidates[i].substr(1); |
| - var count; |
| - switch (typeof hash[candidate]) { |
| - case "undefined": { |
| - count = 0; |
| - break; |
| - } |
| - case "string": { |
| - count = 1; |
| - break; |
| - } |
| - default: { |
| - count = hash[candidate].length; |
| - break; |
| - } |
| - } |
| - if (count < resultCount || (count == resultCount && candidate.length > resultLength)) { |
| - result = candidate; |
| - resultCount = count; |
| - resultLength = candidate.length; |
| - } |
| - } |
| - return result; |
| - } |
| - , |
| - hasFilter: function (filter) { |
| - return (filter.text in this.keywordByFilter); |
| - } |
| - , |
| - getKeywordForFilter: function (filter) { |
| - if (filter.text in this.keywordByFilter) |
| - return this.keywordByFilter[filter.text]; |
| - else |
| - return null; |
| - } |
| - , |
| - _checkEntryMatch: function (keyword, location, contentType, docDomain, thirdParty) { |
| - var list = this.filterByKeyword[keyword]; |
| - if (typeof list == "string") { |
| - var filter = Filter.knownFilters[list]; |
| - if (!filter) { |
| - delete this.filterByKeyword[keyword]; |
| - return null; |
| - } |
| - return (filter.matches(location, contentType, docDomain, thirdParty) ? filter : null); |
| - } |
| - else { |
| - for (var i = 0; |
| - i < list.length; i++) { |
| - var filter = Filter.knownFilters[list[i]]; |
| - if (!filter) { |
| - if (list.length == 1) { |
| - delete this.filterByKeyword[keyword]; |
| - return null; |
| - } |
| - else { |
| - list.splice(i--, 1); |
| - continue; |
| - } |
| - } |
| - if (filter.matches(location, contentType, docDomain, thirdParty)) |
| - return filter; |
| - } |
| - return null; |
| - } |
| - } |
| - , |
| - matchesAny: function (location, contentType, docDomain, thirdParty) { |
| - var candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g); |
| - if (candidates === null) |
| - candidates = []; |
| - if (contentType == "DONOTTRACK") |
| - candidates.unshift("donottrack"); |
| - else |
| - candidates.push(""); |
| - for (var i = 0, l = candidates.length; |
| - i < l; i++) { |
| - var substr = candidates[i]; |
| - if (substr in this.filterByKeyword) { |
| - var result = this._checkEntryMatch(substr, location, contentType, docDomain, thirdParty); |
| - if (result) |
| - return result; |
| - } |
| - } |
| - return null; |
| - } |
| - , |
| - toCache: function (cache) { |
| - cache.filterByKeyword = this.filterByKeyword; |
| - } |
| - , |
| - fromCache: function (cache) { |
| - this.filterByKeyword = cache.filterByKeyword; |
| - this.filterByKeyword.__proto__ = null; |
| - delete this.keywordByFilter; |
| - this.__defineGetter__("keywordByFilter", function () { |
| - var result = { |
| - __proto__: null |
| - }; |
| - for (var k in this.filterByKeyword) { |
| - var list = this.filterByKeyword[k]; |
| - if (typeof list == "string") |
| - result[list] = k; |
| - else |
| - for (var i = 0, l = list.length; |
| - i < l; i++) |
| - result[list[i]] = k; |
| - } |
| - return this.keywordByFilter = result; |
| - } |
| - ); |
| - this.__defineSetter__("keywordByFilter", function (value) { |
| - delete this.keywordByFilter; |
| - return this.keywordByFilter = value; |
| - } |
| - ); |
| - } |
| - |
| - }; |
| - function CombinedMatcher() { |
| - this.blacklist = new Matcher(); |
| - this.whitelist = new Matcher(); |
| - this.keys = { |
| - __proto__: null |
| - }; |
| - this.resultCache = { |
| - __proto__: null |
| - }; |
| - } |
| - CombinedMatcher.maxCacheEntries = 1000; |
| - CombinedMatcher.prototype = { |
| - blacklist: null, |
| - whitelist: null, |
| - keys: null, |
| - resultCache: null, |
| - cacheEntries: 0, |
| - clear: function () { |
| - this.blacklist.clear(); |
| - this.whitelist.clear(); |
| - this.keys = { |
| - __proto__: null |
| - }; |
| - this.resultCache = { |
| - __proto__: null |
| - }; |
| - this.cacheEntries = 0; |
| - } |
| - , |
| - add: function (filter) { |
| - if (filter instanceof WhitelistFilter) { |
| - if (filter.siteKeys) { |
| - for (var i = 0; |
| - i < filter.siteKeys.length; i++) |
| - this.keys[filter.siteKeys[i]] = filter.text; |
| - } |
| - else |
| - this.whitelist.add(filter); |
| - } |
| - else |
| - this.blacklist.add(filter); |
| - if (this.cacheEntries > 0) { |
| - this.resultCache = { |
| - __proto__: null |
| - }; |
| - this.cacheEntries = 0; |
| - } |
| - } |
| - , |
| - remove: function (filter) { |
| - if (filter instanceof WhitelistFilter) { |
| - if (filter.siteKeys) { |
| - for (var i = 0; |
| - i < filter.siteKeys.length; i++) |
| - delete this.keys[filter.siteKeys[i]]; |
| - } |
| - else |
| - this.whitelist.remove(filter); |
| - } |
| - else |
| - this.blacklist.remove(filter); |
| - if (this.cacheEntries > 0) { |
| - this.resultCache = { |
| - __proto__: null |
| - }; |
| - this.cacheEntries = 0; |
| - } |
| - } |
| - , |
| - findKeyword: function (filter) { |
| - if (filter instanceof WhitelistFilter) |
| - return this.whitelist.findKeyword(filter); |
| - else |
| - return this.blacklist.findKeyword(filter); |
| - } |
| - , |
| - hasFilter: function (filter) { |
| - if (filter instanceof WhitelistFilter) |
| - return this.whitelist.hasFilter(filter); |
| - else |
| - return this.blacklist.hasFilter(filter); |
| - } |
| - , |
| - getKeywordForFilter: function (filter) { |
| - if (filter instanceof WhitelistFilter) |
| - return this.whitelist.getKeywordForFilter(filter); |
| - else |
| - return this.blacklist.getKeywordForFilter(filter); |
| - } |
| - , |
| - isSlowFilter: function (filter) { |
| - var matcher = (filter instanceof WhitelistFilter ? this.whitelist : this.blacklist); |
| - if (matcher.hasFilter(filter)) |
| - return !matcher.getKeywordForFilter(filter); |
| - else |
| - return !matcher.findKeyword(filter); |
| - } |
| - , |
| - matchesAnyInternal: function (location, contentType, docDomain, thirdParty) { |
| - var candidates = location.toLowerCase().match(/[a-z0-9%]{3,}/g); |
| - if (candidates === null) |
| - candidates = []; |
| - if (contentType == "DONOTTRACK") |
| - candidates.unshift("donottrack"); |
| - else |
| - candidates.push(""); |
| - var blacklistHit = null; |
| - for (var i = 0, l = candidates.length; |
| - i < l; i++) { |
| - var substr = candidates[i]; |
| - if (substr in this.whitelist.filterByKeyword) { |
| - var result = this.whitelist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty); |
| - if (result) |
| - return result; |
| - } |
| - if (substr in this.blacklist.filterByKeyword && blacklistHit === null) |
| - blacklistHit = this.blacklist._checkEntryMatch(substr, location, contentType, docDomain, thirdParty); |
| - } |
| - return blacklistHit; |
| - } |
| - , |
| - matchesAny: function (location, contentType, docDomain, thirdParty) { |
| - var key = location + " " + contentType + " " + docDomain + " " + thirdParty; |
| - if (key in this.resultCache) |
| - return this.resultCache[key]; |
| - var result = this.matchesAnyInternal(location, contentType, docDomain, thirdParty); |
| - if (this.cacheEntries >= CombinedMatcher.maxCacheEntries) { |
| - this.resultCache = { |
| - __proto__: null |
| - }; |
| - this.cacheEntries = 0; |
| - } |
| - this.resultCache[key] = result; |
| - this.cacheEntries++; |
| - return result; |
| - } |
| - , |
| - matchesByKey: function (location, key, docDomain) { |
| - key = key.toUpperCase(); |
| - if (key in this.keys) { |
| - var filter = Filter.knownFilters[this.keys[key]]; |
| - if (filter && filter.matches(location, "DOCUMENT", docDomain, false)) |
| - return filter; |
| - else |
| - return null; |
| - } |
| - else |
| - return null; |
| - } |
| - , |
| - toCache: function (cache) { |
| - cache.matcher = { |
| - whitelist: { |
| - |
| - }, |
| - blacklist: { |
| - |
| - }, |
| - keys: this.keys |
| - }; |
| - this.whitelist.toCache(cache.matcher.whitelist); |
| - this.blacklist.toCache(cache.matcher.blacklist); |
| - } |
| - , |
| - fromCache: function (cache) { |
| - this.whitelist.fromCache(cache.matcher.whitelist); |
| - this.blacklist.fromCache(cache.matcher.blacklist); |
| - this.keys = cache.matcher.keys; |
| - } |
| - |
| - }; |
| - var defaultMatcher = new CombinedMatcher(); |
| - if (typeof _patchFunc0 != "undefined") |
| - eval("(" + _patchFunc0.toString() + ")()"); |
| - window.Matcher = Matcher; |
| - window.CombinedMatcher = CombinedMatcher; |
| - window.defaultMatcher = defaultMatcher; |
| -} |
| -)(window.MatcherPatch); |