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

Side by Side Diff: files/parse.js

Issue 8493027: Acquired Opera AdBlock code (Closed)
Patch Set: Created Oct. 2, 2012, 1:15 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 const parse = {/*
2 opera: function(content, add) {
3 //if(content.indexOf(';') == 0)//Comment
4 // return;
5 if(add)
6 opera.extension.urlfilter.block.add(content);
7 else
8 opera.extension.urlfilter.block.remove(content);
9 },*/
10 adblock: function(content, add) {
Felix Dahlke 2012/10/05 15:47:16 This function has a lot of code duplication, we sh
11 var url = this.wildcard(content.replace(/^@@/, '').replace(/\$.* $/, ''));
12 //opera.postError(content);
13 if(content.match(/\$/)) { //Is a type-specific rule
14 option = this.options(content.split('$')[1].split(','));
15
16 if(content.match(/^@@/)) {
17 if(add)
18 opera.extension.urlfilter.allow.add(url, option);
Felix Dahlke 2012/10/05 15:47:16 If we're using urlfilter.allow, filters with "adbl
19 else
20 opera.extension.urlfilter.allow.remove(u rl, option);
21 }
22 else {
23 if(add)
24 opera.extension.urlfilter.block.add(url, option);
25 else
26 opera.extension.urlfilter.block.remove(u rl, option);
27 }
28 }
29 else {
30 if(content.match(/^@@/)) {
31 if(add)
32 opera.extension.urlfilter.allow.add(url) ;
Felix Dahlke 2012/10/05 15:47:16 See above.
33 else
34 opera.extension.urlfilter.allow.remove(u rl);
35 }
36 else {
37 if(add)
38 opera.extension.urlfilter.block.add(url) ;
39 else
40 opera.extension.urlfilter.block.remove(u rl);
41 }
42 }
43 },
44 map: {
45 'script': opera.extension.urlfilter.RESOURCE_SCRIPT,
46 'image': opera.extension.urlfilter.RESOURCE_IMAGE,
47 'stylesheet': opera.extension.urlfilter.RESOURCE_STYLESHEET,
48 'object': opera.extension.urlfilter.RESOURCE_OBJECT,
49 'xmlhttprequest': opera.extension.urlfilter.RESOURCE_XMLHTTPREQU EST,
50 'object-subrequest': opera.extension.urlfilter.RESOURCE_OBJECT_S UBREQUEST,
51 'subdocument': opera.extension.urlfilter.RESOURCE_SUBDOCUMENT,
52 'document': opera.extension.urlfilter.RESOURCE_DOCUMENT,
53 //'refresh': opera.extension.urlfilter.RESOURCE_REFRESH,
54 //'media': opera.extension.urlfilter.RESOURCE_MEDIA,
55 //'font': opera.extension.urlfilter.RESOURCE_FONT,
56 'other': opera.extension.urlfilter.RESOURCE_OTHER,
57 'all': opera.extension.urlfilter.RESOURCE_SCRIPT | opera.extensi on.urlfilter.RESOURCE_IMAGE | opera.extension.urlfilter.RESOURCE_STYLESHEET | op era.extension.urlfilter.RESOURCE_OBJECT |
Felix Dahlke 2012/10/05 15:47:16 We should generate this 'all' mask from the flags
58 opera.extension.urlfilter.RESOURCE_XMLHTTPREQUEST | oper a.extension.urlfilter.RESOURCE_OBJECT_SUBREQUEST | opera.extension.urlfilter.RES OURCE_SUBDOCUMENT | opera.extension.urlfilter.RESOURCE_DOCUMENT |
59 opera.extension.urlfilter.RESOURCE_REFRESH | opera.exten sion.urlfilter.RESOURCE_MEDIA | opera.extension.urlfilter.RESOURCE_FONT | opera. extension.urlfilter.RESOURCE_OTHER
60 },
61 options: function(special) {
62 var option = {excludeDomains: [], includeDomains: [], resources: this.map['all']};
63 var additive = false;
64 for(i in special) {
65 var element = special[i];
66 if(element.match(/^domain/i) == 0) { //TESTED
Felix Dahlke 2012/10/05 15:47:16 What is "TESTED" supposed to mean? That this expre
67 var domains = special[i].split('=')[1].split(',' );
Felix Dahlke 2012/10/05 15:47:16 What if there is no "="? The above should match fo
68 for(j in domains) {
69 if(domains[j].match(/^~/)) //Don't apply on this website
Felix Dahlke 2012/10/05 15:47:16 This could be made more succinct by setting the op
70 option['excludeDomains'].push(do mains[j]);
71 else //Apply on this website
72 option['includeDomains'].push(do mains[j]);
73 }
74 }
75 else if(!element.match(/^elemhide/i)) { //No support for ElemHide - TESTED
Felix Dahlke 2012/10/05 15:47:16 "TESTED" again? What about bogus or unsupported op
76 if(!element.match(/^~/i)) {
Felix Dahlke 2012/10/05 15:47:16 Case insensitive matching makes no sense for "~".
77 if(!additive) {
78 additive = true;
79 option['resources'] = 0;
80 }
81 option['resources'] += this.map[element] ;
Felix Dahlke 2012/10/05 15:47:16 That's not how a bit flag is added to a mask ("|="
82 }
83 else if(!additive)
84 option['resources'] -= this.map[element] ;
Felix Dahlke 2012/10/05 15:47:16 That's not how a bit flag is removed from a bit ma
85 }
86 }
87 return option;
88 },
89 wildcard: function(url) { //TESTED
Felix Dahlke 2012/10/05 15:47:16 "TESTED" again? There's a bit of duplication here
90 //| at the beginning or end means no wildcard
91
92 if(!url.match(/^\|\|/)) { //Does not starts with ||
93 if(url.match(/^\|/)) //Starts with |
94 url = url.replace(/^\|/, ''); //Remove the |
95 else if(!url.match(/^\*/)) //Avoid **
96 url = '*' + url; //Add the wildcard
97 }
98 if(url.match(/\|$/)) //Ends with |
99 url = url.replace(/\|$/, ''); //Remove the |
100 else if(!url.match(/\*$/)) //Avoid **
101 url = url + '*'; //Add the wildcard
102
103 return url;
104 }
105 };
OLDNEW

Powered by Google App Engine
This is Rietveld