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

Delta Between Two Patch Sets: lib/adblockplus_compat.js

Issue 8483154: Adding ABP core modules to ABP/Opera (Closed)
Left Patch Set: Created Oct. 9, 2012, 9:51 a.m.
Right Patch Set: Created Oct. 11, 2012, 9:35 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « lib/adblockplus.js ('k') | lib/matcher.js » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 /* 1 /*
2 * This Source Code is subject to the terms of the Mozilla Public License 2 * This Source Code is subject to the terms of the Mozilla Public License
3 * version 2.0 (the "License"). You can obtain a copy of the License at 3 * version 2.0 (the "License"). You can obtain a copy of the License at
4 * http://mozilla.org/MPL/2.0/. 4 * http://mozilla.org/MPL/2.0/.
5 */ 5 */
6 6
7 // TODO: Parts of this file are identical to ABP/Chrome, these should be split 7 // TODO: Parts of this file are identical to ABP/Chrome, these should be split
8 // away into a separate file. 8 // away into a separate file.
9 9
10 // 10 //
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 }, 103 },
104 application: "opera" 104 application: "opera"
105 }; 105 };
106 106
107 // 107 //
108 // IO module: no direct file system access, using FileSystem API 108 // IO module: no direct file system access, using FileSystem API
109 // 109 //
110 110
111 require.scopes.io = 111 require.scopes.io =
112 { 112 {
113 IO: { 113 IO: {
Felix Dahlke 2012/10/10 12:11:22 Opening brace not on its own line?
Felix Dahlke 2012/10/11 07:54:28 Nevermind.
114 _getFilePath: function(file) 114 _getFilePath: function(file)
115 { 115 {
116 if (file instanceof FakeFile) 116 if (file instanceof FakeFile)
117 return file.path; 117 return file.path;
118 else if ("spec" in file) 118 else if ("spec" in file)
119 return file.spec; 119 return file.spec;
120 120
121 throw new Error("Unexpected file type"); 121 throw new Error("Unexpected file type");
122 }, 122 },
123 123
124 _setFileContents: function(path, contents, lastModified)
125 {
126 window.localStorage[path] = contents;
127 window.localStorage[path + "/lastModified"] = lastModified || 0;
128 },
129
124 lineBreak: "\n", 130 lineBreak: "\n",
125 131
126 resolveFilePath: function(path) 132 resolveFilePath: function(path)
127 { 133 {
128 return new FakeFile(path); 134 return new FakeFile(path);
129 }, 135 },
130 136
131 readFromFile: function(file, decode, listener, callback, timeLineID) 137 readFromFile: function(file, decode, listener, callback, timeLineID)
132 { 138 {
133 if ("spec" in file && /^defaults\b/.test(file.spec))
Felix Dahlke 2012/10/10 12:11:22 The first check is not necessary, .test(undefined)
Felix Dahlke 2012/10/11 07:54:28 Nevermind.
Wladimir Palant 2012/10/11 09:36:26 Still, I don't feel comfortable running regular ex
134 {
135 // Code attempts to read the default patterns.ini, we don't have that.
136 // Make sure to execute first-run actions instead.
137 callback(null);
138 executeFirstRunActions();
Felix Dahlke 2012/10/11 07:54:28 This function cannot be called from here.
139 return;
140 }
141
142 var path = this._getFilePath(file);
143 if (!(path in window.localStorage))
144 {
145 callback(new Error("File doesn't exist"))
146 return;
147 }
148
149 var lines = window.localStorage[path].split(/[\r\n]+/);
150
151 // Fake asynchronous execution 139 // Fake asynchronous execution
152 setTimeout(function() 140 setTimeout(function()
153 { 141 {
142 if ("spec" in file && /^defaults\b/.test(file.spec))
143 {
144 // Code attempts to read the default patterns.ini, we don't have that.
145 // Make sure to execute first-run actions instead.
146 callback(null);
147 executeFirstRunActions();
Felix Dahlke 2012/10/11 13:10:02 This function cannot be called from here.
148 return;
149 }
150
151 var path = this._getFilePath(file);
152 if (!(path in window.localStorage))
153 {
154 callback(new Error("File doesn't exist"))
155 return;
156 }
157
158 var lines = window.localStorage[path].split(/[\r\n]+/);
154 for (var i = 0; i < lines.length; i++) 159 for (var i = 0; i < lines.length; i++)
155 listener.process(lines[i]); 160 listener.process(lines[i]);
156 listener.process(null); 161 listener.process(null);
157 callback(null); 162 callback(null);
158 }.bind(this), 0); 163 }.bind(this), 0);
159 }, 164 },
160 165
161 writeToFile: function(file, encode, data, callback, timeLineID) 166 writeToFile: function(file, encode, data, callback, timeLineID)
162 { 167 {
163 var path = this._getFilePath(file); 168 var path = this._getFilePath(file);
164 window.localStorage[path] = data.join("\n") + "\n"; 169 this._setFileContents(path, data.join(this.lineBreak) + this.lineBreak, Da te.now());
Felix Dahlke 2012/10/10 12:11:22 Why not use this.lineBreak?
165 window.localStorage[path + "/lastModified"] = Date.now();
166 170
167 // Fake asynchronous execution 171 // Fake asynchronous execution
168 setTimeout(callback.bind(null, null), 0); 172 setTimeout(callback.bind(null, null), 0);
169 }, 173 },
170 174
171 copyFile: function(fromFile, toFile, callback) 175 copyFile: function(fromFile, toFile, callback)
172 { 176 {
173 // Simply combine read and write operations 177 // Simply combine read and write operations
174 var data = []; 178 var data = [];
175 this.readFromFile(fromFile, false, { 179 this.readFromFile(fromFile, false, {
Felix Dahlke 2012/10/10 12:11:22 Shouldn't the opening brace be on its own line?
176 process: function(line) 180 process: function(line)
177 { 181 {
178 if (line !== null) 182 if (line !== null)
179 data.push(line); 183 data.push(line);
180 } 184 }
181 }, function(e) 185 }, function(e)
182 { 186 {
183 if (e) 187 if (e)
184 callback(e); 188 callback(e);
185 else 189 else
186 this.writeToFile(toFile, false, data, callback); 190 this.writeToFile(toFile, false, data, callback);
187 }.bind(this)); 191 }.bind(this));
188 }, 192 },
189 193
190 renameFile: function(fromFile, newName, callback) 194 renameFile: function(fromFile, newName, callback)
191 { 195 {
192 var path = this._getFilePath(fromFile); 196 var path = this._getFilePath(fromFile);
193 if (!(path in window.localStorage)) 197 if (!(path in window.localStorage))
194 { 198 {
195 callback(new Error("File doesn't exist")) 199 callback(new Error("File doesn't exist"))
196 return; 200 return;
197 } 201 }
198 202
199 window.localStorage[newName] = window.localStorage[path]; 203 this._setFileContents(newName, window.localStorage[path], window.localStor age[path + "/lastModified"]);
200 window.localStorage[newName + "/lastModified"] = window.localStorage[path + "/lastModified"] || 0; 204 this.removeFile(fromFile, callback);
Felix Dahlke 2012/10/10 12:11:22 How about a function that sets both localStorage[x
201 delete window.localStorage[path];
202 delete window.localStorage[path + "/lastModified"];
203 callback(null);
204 }, 205 },
205 206
206 removeFile: function(file, callback) 207 removeFile: function(file, callback)
207 { 208 {
208 var path = this._getFilePath(file); 209 var path = this._getFilePath(file);
209 delete window.localStorage[path]; 210 delete window.localStorage[path];
Felix Dahlke 2012/10/10 12:11:22 How about a function to delete both localStorage[x
210 delete window.localStorage[path + "/lastModified"]; 211 delete window.localStorage[path + "/lastModified"];
211 callback(null); 212 callback(null);
212 }, 213 },
213 214
214 statFile: function(file, callback) 215 statFile: function(file, callback)
215 { 216 {
216 var path = this._getFilePath(file); 217 var path = this._getFilePath(file);
217 callback(null, { 218 callback(null, {
218 exists: path in window.localStorage, 219 exists: path in window.localStorage,
219 isDirectory: false, 220 isDirectory: false,
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 status: -1, 492 status: -1,
492 notificationCallbacks: {}, 493 notificationCallbacks: {},
493 loadFlags: 0, 494 loadFlags: 0,
494 INHIBIT_CACHING: 0, 495 INHIBIT_CACHING: 0,
495 VALIDATE_ALWAYS: 0, 496 VALIDATE_ALWAYS: 0,
496 QueryInterface: function() 497 QueryInterface: function()
497 { 498 {
498 return this; 499 return this;
499 } 500 }
500 }; 501 };
LEFTRIGHT

Powered by Google App Engine
This is Rietveld