Skip to content

Commit

Permalink
https://github.com/AdguardTeam/AdguardForiOS/issues/44
Browse files Browse the repository at this point in the history
  • Loading branch information
ameshkov committed Nov 23, 2015
1 parent 6619ff9 commit 890266a
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 23 deletions.
Empty file modified Compiler/build.sh
100755 → 100644
Empty file.
21 changes: 12 additions & 9 deletions Extension/browser/safari/lib/converter.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
/**
* Safari content blocking format rules converter.
*/
var CONVERTER_VERSION = '1.2.2';
var CONVERTER_VERSION = '1.3.0';
// Max number of CSS selectors per rule (look at _compactCssRules function)
var MAX_SELECTORS_PER_WIDE_RULE = 250;
var URL_FILTER_ANY_URL = ".*";
Expand Down Expand Up @@ -631,10 +631,11 @@ exports.SafariContentBlockerConverter = {
* Converts array of rules to JSON
*
* @param rules array of strings or AG rules objects
* @param optimize if true - ignore slow rules
* @return content blocker object with converted rules grouped by type
*/
_convertLines: function (rules) {
Log.info('Converting ' + rules.length + ' rules');
_convertLines: function (rules, optimize) {
Log.info('Converting ' + rules.length + ' rules. Optimize=' + optimize);

var contentBlocker = {
// Elemhide rules (##)
Expand Down Expand Up @@ -692,7 +693,9 @@ exports.SafariContentBlockerConverter = {
// Applying CSS exceptions
cssBlocking = this._applyCssExceptions(cssBlocking, cssExceptions);
var cssCompact = this._compactCssRules(cssBlocking);
contentBlocker.cssBlockingWide = cssCompact.cssBlockingWide;
if (!optimize) {
contentBlocker.cssBlockingWide = cssCompact.cssBlockingWide;
}
contentBlocker.cssBlockingDomainSensitive = cssCompact.cssBlockingDomainSensitive;

var convertedCount = rules.length - contentBlocker.errors.length;
Expand All @@ -707,7 +710,7 @@ exports.SafariContentBlockerConverter = {
return contentBlocker;
},

_createConvertationResult: function (contentBlocker, limit) {
_createConversionResult: function (contentBlocker, limit) {
var overLimit = false;
var converted = [];
converted = converted.concat(contentBlocker.cssBlockingWide);
Expand Down Expand Up @@ -742,8 +745,9 @@ exports.SafariContentBlockerConverter = {
*
* @param rules array of strings
* @param limit over that limit rules will be ignored
* @param optimize if true - "wide" rules will be ignored
*/
convertArray: function (rules, limit) {
convertArray: function (rules, limit, optimize) {
this._addVersionMessage();

if (rules == null) {
Expand All @@ -756,8 +760,7 @@ exports.SafariContentBlockerConverter = {
return null;
}

var contentBlocker = this._convertLines(rules);

return this._createConvertationResult(contentBlocker, limit);
var contentBlocker = this._convertLines(rules, !!optimize);
return this._createConversionResult(contentBlocker, limit);
}
};
17 changes: 4 additions & 13 deletions Extension/tests/test-safari-converter.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,23 +59,13 @@ var rules = [
'yandex.ru###pub',
'yandex.ru#@##pub',
'@@/^https?\:\/\/(?!(qs\.ivwbox\.de|qs\.ioam.de|platform\.twitter\.com|connect\.facebook\.net|de\.ioam\.de|pubads\.g\.doubleclick\.net|stats\.wordpress\.com|www\.google-analytics\.com|www\.googletagservices\.com|apis\.google\.com|script\.ioam\.de)\/)/$script,third-party,domain=gamona.de',
'/\.filenuke\.com/.*[a-zA-Z0-9]{4}/$script'
'/\.filenuke\.com/.*[a-zA-Z0-9]{4}/$script',
'##.banner'
];

var safariJSON = SafariContentBlockerConverter.convertArray(rules);
Log.debug(safariJSON);

function loadCorrect() {
var xhr = new XMLHttpRequest();
xhr.open("GET", 'test_safari_correct.json', false);
try {
xhr.send();
} catch (e) {
return null;
}
return JSON.parse(xhr.responseText);
}

function checkResult(json, errors) {
var expectedErrorsCount = 4;
var expectedCssTrunkatedCount = 4;
Expand Down Expand Up @@ -169,7 +159,8 @@ function checkResult(json, errors) {
}
}

var correct = loadCorrect();
// From test_safari_correct.js
var correct = safariCorrectRules;

converted.forEach(function (current, i) {
var expected = correct[i];
Expand Down
1 change: 1 addition & 0 deletions Extension/tests/test.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
</script>

<script type="text/javascript" src="../browser/safari/lib/converter.js"></script>
<script type="text/javascript" src="test_safari_correct.js"></script>
<script type="text/javascript" src="test-safari-converter.js"></script>
</head>
<body>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
[
var safariCorrectRules = [
{
"trigger": {
"url-filter": ".*"
},
"action": {
"type": "css-display-none",
"selector": ".banner"
}
},
{
"trigger": {
"url-filter": ".*",
Expand Down

0 comments on commit 890266a

Please sign in to comment.