Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
ameshkov committed Jan 28, 2016
2 parents cf3adcf + 9957658 commit e5055b3
Show file tree
Hide file tree
Showing 13 changed files with 73 additions and 74 deletions.
1 change: 1 addition & 0 deletions Extension/browser/chrome/chrome_background.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
<script type="text/javascript" src="lib/filter/rules/script-filter.js"></script>
<script type="text/javascript" src="lib/filter/rules/url-filter-rule.js"></script>
<script type="text/javascript" src="lib/filter/rules/url-filter.js"></script>
<script type="text/javascript" src="lib/filter/rules/filter-rule-builder.js"></script>
<script type="text/javascript" src="lib/filter/safebrowsing-filter.js"></script>
<script type="text/javascript" src="lib/filter/whitelist.js"></script>
<script type="text/javascript" src="lib/filter/filters.js"></script>
Expand Down
3 changes: 3 additions & 0 deletions Extension/browser/firefox/lib/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ const {Cc, Ci, Cr, Cu} = chrome;
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");

var console = Cu.import('resource://gre/modules/devtools/Console.jsm', {}).console;

var sdkModules = {
'chrome': chrome,
'sdk/timers': require('sdk/timers'),
Expand Down Expand Up @@ -301,6 +303,7 @@ var loadAdguardModule = function (modulePath) {
return loadAdguardModule(module);
},
i18n: i18n,
console: console,
exports: Object.create(Object.prototype)
};

Expand Down
3 changes: 2 additions & 1 deletion Extension/browser/safari/lib/converter.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ var URL_FILTER_REGEXP_START_URL = "^https?://([^/]*\\.)?";
var URL_FILTER_REGEXP_SEPARATOR = "[/:&?]?";

var FilterRule = require('filter/rules/base-filter-rule').FilterRule;
var FilterRuleBuilder = require('filter/rules/filter-rule-builder').FilterRuleBuilder;
var CssFilterRule = require('filter/rules/css-filter-rule').CssFilterRule;
var UrlFilterRule = require('filter/rules/url-filter-rule').UrlFilterRule;
var ScriptFilterRule = require('filter/rules/script-filter-rule').ScriptFilterRule;
Expand Down Expand Up @@ -423,7 +424,7 @@ exports.SafariContentBlockerConverter = {
return null;
}

var agRule = FilterRule.createRule(ruleText);
var agRule = FilterRuleBuilder.createRule(ruleText);
if (agRule == null) {
throw new Error('Cannot create rule from: ' + ruleText);
}
Expand Down
1 change: 1 addition & 0 deletions Extension/browser/safari/safari_background.html
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
<script type="text/javascript" src="lib/filter/rules/script-filter.js"></script>
<script type="text/javascript" src="lib/filter/rules/url-filter-rule.js"></script>
<script type="text/javascript" src="lib/filter/rules/url-filter.js"></script>
<script type="text/javascript" src="lib/filter/rules/filter-rule-builder.js"></script>
<script type="text/javascript" src="lib/filter/safebrowsing-filter.js"></script>
<script type="text/javascript" src="lib/filter/whitelist.js"></script>
<script type="text/javascript" src="lib/filter/filters.js"></script>
Expand Down
9 changes: 5 additions & 4 deletions Extension/lib/filter/antibanner.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ var FilterStorage = require('../../lib/filter/storage').FilterStorage;
var userSettings = require('../../lib/utils/user-settings').userSettings;
var EventNotifier = require('../../lib/utils/notifier').EventNotifier;
var FilterRule = require('../../lib/filter/rules/base-filter-rule').FilterRule;
var FilterRuleBuilder = require('../../lib/filter/rules/filter-rule-builder').FilterRuleBuilder;
var LS = require('../../lib/utils/local-storage').LS;
var Prefs = require('../../lib/prefs').Prefs;
var SubscriptionService = require('../../lib/filter/subscription').SubscriptionService;
Expand Down Expand Up @@ -344,7 +345,7 @@ AntiBannerService.prototype = {
* @returns Rule created
*/
addUserFilterRule: function (ruleText) {
var rule = FilterRule.createRule(ruleText, AntiBannerFiltersId.USER_FILTER_ID);
var rule = FilterRuleBuilder.createRule(ruleText, AntiBannerFiltersId.USER_FILTER_ID);
if (rule != null) {
this._addRuleToFilter(AntiBannerFiltersId.USER_FILTER_ID, rule);
this.userRules.push(rule.ruleText);
Expand All @@ -360,7 +361,7 @@ AntiBannerService.prototype = {
addUserFilterRules: function (rulesToAdd) {
var rules = [];
for (var i = 0; i < rulesToAdd.length; i++) {
var rule = FilterRule.createRule(rulesToAdd[i], AntiBannerFiltersId.USER_FILTER_ID);
var rule = FilterRuleBuilder.createRule(rulesToAdd[i], AntiBannerFiltersId.USER_FILTER_ID);
if (rule != null) {
rules.push(rule);
this.userRules.push(rule.ruleText);
Expand All @@ -377,7 +378,7 @@ AntiBannerService.prototype = {
* @param ruleText Rule text
*/
removeUserFilter: function (ruleText) {
var rule = FilterRule.createRule(ruleText, AntiBannerFiltersId.USER_FILTER_ID);
var rule = FilterRuleBuilder.createRule(ruleText, AntiBannerFiltersId.USER_FILTER_ID);
if (rule != null) {
var filter = this._getFilterById(AntiBannerFiltersId.USER_FILTER_ID);
this.requestFilter.removeRule(rule);
Expand Down Expand Up @@ -1020,7 +1021,7 @@ AntiBannerService.prototype = {
continue;
}
uniqueRules[ruleText] = true;
var rule = FilterRule.createRule(ruleText, filterId);
var rule = FilterRuleBuilder.createRule(ruleText, filterId);

if (rule != null) {
requestFilter.addRule(rule);
Expand Down
3 changes: 2 additions & 1 deletion Extension/lib/filter/integration.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
var userSettings = require('../../lib/utils/user-settings').userSettings;
var ServiceClient = require('../../lib/utils/service-client').ServiceClient;
var FilterRule = require('../../lib/filter/rules/base-filter-rule').FilterRule;
var FilterRuleBuilder = require('../../lib/filter/rules/filter-rule-builder').FilterRuleBuilder;
var UrlFilterRule = require('../../lib/filter/rules/url-filter-rule').UrlFilterRule;
var StringUtils = require('../../lib/utils/common').StringUtils;
var RequestTypes = require('../../lib/utils/common').RequestTypes;
Expand Down Expand Up @@ -325,6 +326,6 @@ AdguardApplication.prototype = {
headerInfo[keyAndValue[0]] = decodeURIComponent(keyAndValue[1]);
}

return FilterRule.createRule(headerInfo.rule, headerInfo.filterId - 0);
return FilterRuleBuilder.createRule(headerInfo.rule, headerInfo.filterId - 0);
}
};
62 changes: 1 addition & 61 deletions Extension/lib/filter/rules/base-filter-rule.js
Original file line number Diff line number Diff line change
Expand Up @@ -222,66 +222,6 @@ FilterRule.escapeRule = function (ruleText) {
return encodeURIComponent(ruleText).replace(/'/g, "%27");
};

/**
* Filter classes enumeration
*/
var classes = null;
function getClasses() {
if (!classes) {
// Using require here to eliminate cyclic dependency
classes = {
CssFilterRule: require('../../../lib/filter/rules/css-filter-rule').CssFilterRule,
UrlFilterRule: require('../../../lib/filter/rules/url-filter-rule').UrlFilterRule,
ScriptFilterRule: require('../../../lib/filter/rules/script-filter-rule').ScriptFilterRule
};
}
return classes;
}

/**
* Method that parses rule text and creates object of a suitable class.
*
* @param ruleText Rule text
* @param filterId Filter identifier
* @returns Filter rule object. Either UrlFilterRule or CssFilterRule or ScriptFilterRule.
*/
FilterRule.createRule = function (ruleText, filterId) {

ruleText = ruleText ? ruleText.trim() : null;
if (!ruleText) {
return null;
}
var rule = null;
try {
if (StringUtils.startWith(ruleText, FilterRule.COMMENT) ||
StringUtils.contains(ruleText, FilterRule.OLD_INJECT_RULES) ||
StringUtils.contains(ruleText, FilterRule.MASK_CONTENT_RULE) ||
StringUtils.contains(ruleText, FilterRule.MASK_JS_RULE)) {
// Empty or comment, ignore
// Content rules are not supported
return null;
}

var CssFilterRule = getClasses().CssFilterRule;
var UrlFilterRule = getClasses().UrlFilterRule;
var ScriptFilterRule = getClasses().ScriptFilterRule;
if (StringUtils.startWith(ruleText, FilterRule.MASK_WHITE_LIST)) {
rule = new UrlFilterRule(ruleText, filterId);
} else if (StringUtils.contains(ruleText, FilterRule.MASK_CSS_RULE) || StringUtils.contains(ruleText, FilterRule.MASK_CSS_EXCEPTION_RULE)) {
rule = new CssFilterRule(ruleText, filterId);
} else if (StringUtils.contains(ruleText, FilterRule.MASK_CSS_INJECT_RULE) || StringUtils.contains(ruleText, FilterRule.MASK_CSS_EXCEPTION_INJECT_RULE)) {
rule = new CssFilterRule(ruleText, filterId);
} else if (StringUtils.contains(ruleText, FilterRule.MASK_SCRIPT_RULE) || StringUtils.contains(ruleText, FilterRule.MASK_SCRIPT_EXCEPTION_RULE)) {
rule = new ScriptFilterRule(ruleText, filterId);
} else {
rule = new UrlFilterRule(ruleText, filterId);
}
} catch (ex) {
Log.warn("Cannot create rule from filter {0}: {1}, cause {2}", filterId, ruleText, ex);
}
return rule;
};

FilterRule.PARAMETER_START = "[";
FilterRule.PARAMETER_END = "]";
FilterRule.MASK_WHITE_LIST = "@@";
Expand All @@ -300,4 +240,4 @@ FilterRule.EQUAL = "=";
FilterRule.COMA_DELIMITER = ",";
FilterRule.LINE_DELIMITER = "|";
FilterRule.NOT_MARK = "~";
FilterRule.OLD_INJECT_RULES = "adg_start_style_inject";
FilterRule.OLD_INJECT_RULES = "adg_start_style_inject";
50 changes: 50 additions & 0 deletions Extension/lib/filter/rules/filter-rule-builder.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
var StringUtils = require('../../../lib/utils/common').StringUtils;
var FilterRule = require('../../../lib/filter/rules/base-filter-rule').FilterRule;
var CssFilterRule = require('../../../lib/filter/rules/css-filter-rule').CssFilterRule;
var UrlFilterRule = require('../../../lib/filter/rules/url-filter-rule').UrlFilterRule;
var ScriptFilterRule = require('../../../lib/filter/rules/script-filter-rule').ScriptFilterRule;
var Log = require('../../../lib/utils/log').Log;

exports.FilterRuleBuilder = {

/**
* Method that parses rule text and creates object of a suitable class.
*
* @param ruleText Rule text
* @param filterId Filter identifier
* @returns Filter rule object. Either UrlFilterRule or CssFilterRule or ScriptFilterRule.
*/
createRule: function (ruleText, filterId) {

ruleText = ruleText ? ruleText.trim() : null;
if (!ruleText) {
return null;
}
var rule = null;
try {
if (StringUtils.startWith(ruleText, FilterRule.COMMENT) ||
StringUtils.contains(ruleText, FilterRule.OLD_INJECT_RULES) ||
StringUtils.contains(ruleText, FilterRule.MASK_CONTENT_RULE) ||
StringUtils.contains(ruleText, FilterRule.MASK_JS_RULE)) {
// Empty or comment, ignore
// Content rules are not supported
return null;
}

if (StringUtils.startWith(ruleText, FilterRule.MASK_WHITE_LIST)) {
rule = new UrlFilterRule(ruleText, filterId);
} else if (StringUtils.contains(ruleText, FilterRule.MASK_CSS_RULE) || StringUtils.contains(ruleText, FilterRule.MASK_CSS_EXCEPTION_RULE)) {
rule = new CssFilterRule(ruleText, filterId);
} else if (StringUtils.contains(ruleText, FilterRule.MASK_CSS_INJECT_RULE) || StringUtils.contains(ruleText, FilterRule.MASK_CSS_EXCEPTION_INJECT_RULE)) {
rule = new CssFilterRule(ruleText, filterId);
} else if (StringUtils.contains(ruleText, FilterRule.MASK_SCRIPT_RULE) || StringUtils.contains(ruleText, FilterRule.MASK_SCRIPT_EXCEPTION_RULE)) {
rule = new ScriptFilterRule(ruleText, filterId);
} else {
rule = new UrlFilterRule(ruleText, filterId);
}
} catch (ex) {
Log.warn("Cannot create rule from filter {0}: {1}, cause {2}", filterId, ruleText, ex);
}
return rule;
}
};
3 changes: 2 additions & 1 deletion Extension/lib/filter/storage.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
var Log = require('../../lib/utils/log').Log;
var FS = require('../../lib/utils/file-storage').FS;
var FilterRule = require('../../lib/filter/rules/base-filter-rule').FilterRule;
var FilterRuleBuilder = require('../../lib/filter/rules/filter-rule-builder').FilterRuleBuilder;

/**
* This class manages file storage for filters.
Expand Down Expand Up @@ -220,7 +221,7 @@ FilterParser.prototype = {
break;
case FilterParser.Sections.RULES_START:
if (line && this.currentRules) {
var rule = FilterRule.createRule(line, this.currentFilter.filterId - 0);
var rule = FilterRuleBuilder.createRule(line, this.currentFilter.filterId - 0);
if (rule != null) {
this.currentRules.push(rule);
}
Expand Down
3 changes: 2 additions & 1 deletion Extension/lib/filter/whitelist.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ var LS = require('../../lib/utils/local-storage').LS;
var userSettings = require('../../lib/utils/user-settings').userSettings;

var FilterRule = require('../../lib/filter/rules/base-filter-rule').FilterRule;
var FilterRuleBuilder = require('../../lib/filter/rules/filter-rule-builder').FilterRuleBuilder;
var UrlFilter = require('../../lib/filter/rules/url-filter').UrlFilter;

var allowAllWhiteListRule = {
Expand Down Expand Up @@ -202,7 +203,7 @@ WhiteListService.prototype = {
if (StringUtils.isEmpty(domain)) {
return null;
}
return FilterRule.createRule("@@//" + domain + "$document", AntiBannerFiltersId.WHITE_LIST_FILTER_ID);
return FilterRuleBuilder.createRule("@@//" + domain + "$document", AntiBannerFiltersId.WHITE_LIST_FILTER_ID);
},

_addToArray: function (domain) {
Expand Down
3 changes: 0 additions & 3 deletions Extension/lib/utils/log.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@
* along with Adguard Browser Extension. If not, see <http://www.gnu.org/licenses/>.
*/

var Cu = require('chrome').Cu;
var console = Cu.import('resource://gre/modules/devtools/Console.jsm', {}).console;

/**
* Simple logger with log levels
*/
Expand Down
5 changes: 3 additions & 2 deletions Extension/lib/utils/service-client.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ var XMLHttpRequestConstructor = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"];
var Log = require('../../lib/utils/log').Log;
var Utils = require('../../lib/utils/browser-utils').Utils;
var FilterRule = require('../../lib/filter/rules/base-filter-rule').FilterRule;
var FilterRuleBuilder = require('../../lib/filter/rules/filter-rule-builder').FilterRuleBuilder;
var Prefs = require('../../lib/prefs').Prefs;

/**
Expand Down Expand Up @@ -174,7 +175,7 @@ ServiceClient.prototype = {
}
var rules = [];
for (i = 0; i < lines.length; i++) {
var rule = FilterRule.createRule(lines[i], filterId);
var rule = FilterRuleBuilder.createRule(lines[i], filterId);
if (rule != null) {
rules.push(rule);
}
Expand Down Expand Up @@ -223,7 +224,7 @@ ServiceClient.prototype = {
} else if (/!\s+TimeUpdated:\s+(.+)$/.test(line)) {
timeUpdated = timeUpdated || new Date(RegExp.$1);
}
var rule = FilterRule.createRule(line, filterId);
var rule = FilterRuleBuilder.createRule(line, filterId);
if (rule != null) {
rules.push(rule);
}
Expand Down
1 change: 1 addition & 0 deletions Extension/tests/test.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
<script type="text/javascript" src="../lib/filter/rules/script-filter.js"></script>
<script type="text/javascript" src="../lib/filter/rules/url-filter-rule.js"></script>
<script type="text/javascript" src="../lib/filter/rules/url-filter.js"></script>
<script type="text/javascript" src="../lib/filter/rules/filter-rule-builder.js"></script>

<script type="text/javascript" src="../browser/chrome/lib/utils/local-storage.js"></script>
<script type="text/javascript" src="../lib/utils/cache.js"></script>
Expand Down

0 comments on commit e5055b3

Please sign in to comment.