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

Side by Side Diff: files/lists.js

Issue 8493027: Acquired Opera AdBlock code (Closed)
Patch Set: Created Oct. 8, 2012, 5:58 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « files/download.js ('k') | files/parse.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 const lists = {
2 apply: function(key, add) {
3 //opera.postError(key + ' will be ' + (add ? 'added' : 'removed' ));
4 var content = preferences.array(key + '-content');
5 switch(sources.style[key]) {
6 case 'adblock':
7 if(opera.version() >= 12.1) {
8 for(pos in content)
9 parse.adblock(content[pos], add) ;
10 break;
11 }
12 else {
13 for(pos in content)
14 parse.adblockOld(content[pos], a dd);
15 break;
16 }
17 case 'opera':
18 for(pos in content) {
19 if(add)
20 opera.extension.urlfilter.block. add(content[pos]);
21 else
22 opera.extension.urlfilter.block. remove(content[pos]);
23 }
24 break;
25 }
26 //opera.postError(key + ' was ' + (add ? 'added' : 'removed') + ' with success (' + pos + ' elements)');
27 },
28 setup: function(key) {
29 for(key in sources.all()) {
30 if(this.status(key))
31 this.apply(key, true);
32 }
33 },
34 whitelist: {
35 get: function() {
36 return preferences.array('whitelist-content');
37 },
38 set: function(array) {
39 preferences.array('whitelist-content', array);
40 },
41 apply: function() {
42 var content = this.get();
43 for(i in content)
44 opera.extension.urlfilter.allow.add(content[i]);
45 },
46 add: function(element, useMessage) {
47 var content = this.get();
48 if(content.indexOf(element) == -1) {
49 content.push(element);
50 this.set(content);
51 if(useMessage)
52 opera.extension.postMessage({request: 'w hitelist', type: 'add', rule: element});
53 else
54 opera.extension.urlfilter.allow.add(rule );
55 }
56 },
57 remove: function(element, useMessage) {
58 var content = this.get();
59 var position = content.indexOf(element);
60 if(position != -1) {
61 content.splice(position, 1);
62 this.set(content);
63 if(useMessage)
64 opera.extension.postMessage({request: 'w hitelist', type: 'remove', rule: element});
65 else
66 opera.extension.urlfilter.allow.remove(r ule);
67 }
68 }/*,
69 make: function(url) {
70 return url.replace(/[a-z]+:\/\//, '||').replace(/\/.*$/, "^*");
71 }*/
72 },
73 refresh: function() {
74 var success = true;
75 for(key in sources.all()) {
76 if(preferences.bool(key)){ //If the list is enabled, upd ate it
77 if(!this.update(key)) //In case of error with th e update
78 success = false;
79 }
80 else //If the list is disabled, remove it
81 this.disable(key);
82 }
83 return success;
84 },
85 time: function(key) {
86 return preferences.int(key + '-time');
87 },
88 update: function(key) {
89 var value;
90 if(sources.style[key] == 'opera')
91 value = download(sources.url(key)).replace(/(^|\n);.*?(\ n|$)/gm, '$1').split('[exclude]')[1].split('\n'); //Pre-remove comments to save space
92 else if(sources.style[key] == 'adblock')
93 value = download(sources.url(key)).replace(/^\[adblock.* \n/im, '').replace(/(^|\n)(!|##|#@#).*?(\n|$)/gm, '$1').split('\n'); //Pre-remov e comments and unsupported to save space
94 //opera.postError(value.join("\n"));
95 if(value instanceof Array) {
96 preferences.array(key + '-content', value);
97 preferences.string(key + '-time', getTime());
98 this.apply(key, true);
99 return true;
100 }
101 else
102 return false;
103 },
104 status: function(key) {
105 return preferences.bool(key);
106 },
107 disable: function(key) { //Disables a source
108 this.apply(key, false);
109 preferences.remove(key + '-time');
110 preferences.remove(key + '-content');
111 preferences.bool(key, false);
112 return true;
113 },
114 enable: function(key) { //Enables a source
115 this.update(key);
116 preferences.bool(key, true);
117 }
118 };
OLDNEW
« no previous file with comments | « files/download.js ('k') | files/parse.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld