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

Side by Side Diff: lib/compat.js

Issue 29371763: Issue 4795 - Use modern JavaScript syntax (Closed)
Patch Set: Created Jan. 13, 2017, 12:11 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
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2016 Eyeo GmbH 3 * Copyright (C) 2006-2016 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 15 matching lines...) Expand all
26 let scope = {exports: {}}; 26 let scope = {exports: {}};
27 require.scopes[module] = require.modules[module](scope, scope.exports); 27 require.scopes[module] = require.modules[module](scope, scope.exports);
28 } 28 }
29 return require.scopes[module]; 29 return require.scopes[module];
30 } 30 }
31 require.modules = Object.create(null); 31 require.modules = Object.create(null);
32 require.scopes = Object.create(null); 32 require.scopes = Object.create(null);
33 33
34 function importAll(module, globalObj) 34 function importAll(module, globalObj)
35 { 35 {
36 var exports = require(module); 36 let exports = require(module);
37 for (var key in exports) 37 for (let key in exports)
38 globalObj[key] = exports[key]; 38 globalObj[key] = exports[key];
39 } 39 }
40 40
41 onShutdown = { 41 onShutdown = {
42 done: false, 42 done: false,
43 add: function() {}, 43 add: () => {},
44 remove: function() {} 44 remove: () => {}
45 }; 45 };
46 46
47 // 47 //
48 // XPCOM emulation 48 // XPCOM emulation
49 // 49 //
50 50
51 var Components = 51 let Components =
52 { 52 {
53 interfaces: 53 interfaces:
54 { 54 {
55 nsIFile: {DIRECTORY_TYPE: 0}, 55 nsIFile: {DIRECTORY_TYPE: 0},
56 nsIFileURL: function() {}, 56 nsIFileURL: () => {},
57 nsIHttpChannel: function() {}, 57 nsIHttpChannel: () => {},
58 nsITimer: {TYPE_REPEATING_SLACK: 0}, 58 nsITimer: {TYPE_REPEATING_SLACK: 0},
59 nsIInterfaceRequestor: null, 59 nsIInterfaceRequestor: null,
60 nsIChannelEventSink: null 60 nsIChannelEventSink: null
61 }, 61 },
62 classes: 62 classes:
63 { 63 {
64 "@mozilla.org/timer;1": 64 "@mozilla.org/timer;1":
65 { 65 {
66 createInstance: function() 66 createInstance: () => new FakeTimer()
67 {
68 return new FakeTimer();
69 }
70 }, 67 },
71 "@mozilla.org/xmlextras/xmlhttprequest;1": 68 "@mozilla.org/xmlextras/xmlhttprequest;1":
72 { 69 {
73 createInstance: function() 70 createInstance: () => new XMLHttpRequest()
74 {
75 return new XMLHttpRequest();
76 }
77 } 71 }
78 }, 72 },
79 results: {}, 73 results: {},
80 utils: { 74 utils: {
81 import: function() 75 import: () =>
82 { 76 {
83 }, 77 },
84 reportError: function(e) 78 reportError: e =>
85 { 79 {
86 console.error(e); 80 console.error(e);
87 console.trace(); 81 console.trace();
88 } 82 }
89 }, 83 },
90 manager: null, 84 manager: null,
91 ID: function() 85 ID: () => null
92 {
93 return null;
94 }
95 }; 86 };
96 const Cc = Components.classes; 87 const Cc = Components.classes;
97 const Ci = Components.interfaces; 88 const Ci = Components.interfaces;
98 const Cr = Components.results; 89 const Cr = Components.results;
99 const Cu = Components.utils; 90 const Cu = Components.utils;
100 91
101 var XPCOMUtils = 92 let XPCOMUtils =
102 { 93 {
103 generateQI: function() {} 94 generateQI: () => {}
104 }; 95 };
105 96
106 // 97 //
107 // Fake nsIFile implementation for our I/O 98 // Fake nsIFile implementation for our I/O
108 // 99 //
109 100
110 function FakeFile(path) 101 function FakeFile(path)
111 { 102 {
112 this.path = path; 103 this.path = path;
113 } 104 }
(...skipping 10 matching lines...) Expand all
124 append: function(path) 115 append: function(path)
125 { 116 {
126 this.path += path; 117 this.path += path;
127 }, 118 },
128 clone: function() 119 clone: function()
129 { 120 {
130 return new FakeFile(this.path); 121 return new FakeFile(this.path);
131 }, 122 },
132 get parent() 123 get parent()
133 { 124 {
134 return {create: function() {}}; 125 return {create: () => {}};
135 }, 126 },
136 normalize: function() {} 127 normalize: () => {}
137 }; 128 };
138 129
139 // 130 //
140 // Services.jsm module emulation 131 // Services.jsm module emulation
141 // 132 //
142 133
143 var Services = 134 let Services =
144 { 135 {
145 obs: { 136 obs: {
146 addObserver: function() {}, 137 addObserver: () => {},
147 removeObserver: function() {} 138 removeObserver: () => {}
148 }, 139 },
149 vc: { 140 vc: {
150 compare: function(v1, v2) 141 compare: (v1, v2) =>
151 { 142 {
152 function parsePart(s) 143 function parsePart(s)
153 { 144 {
154 if (!s) 145 if (!s)
155 return parsePart("0"); 146 return parsePart("0");
156 147
157 var part = { 148 let part = {
158 numA: 0, 149 numA: 0,
159 strB: "", 150 strB: "",
160 numC: 0, 151 numC: 0,
161 extraD: "" 152 extraD: ""
162 }; 153 };
163 154
164 if (s === "*") 155 if (s === "*")
165 { 156 {
166 part.numA = Number.MAX_VALUE; 157 part.numA = Number.MAX_VALUE;
167 return part; 158 return part;
168 } 159 }
169 160
170 var matches = s.match(/(\d*)(\D*)(\d*)(.*)/); 161 let matches = s.match(/(\d*)(\D*)(\d*)(.*)/);
171 part.numA = parseInt(matches[1], 10) || part.numA; 162 part.numA = parseInt(matches[1], 10) || part.numA;
172 part.strB = matches[2] || part.strB; 163 part.strB = matches[2] || part.strB;
173 part.numC = parseInt(matches[3], 10) || part.numC; 164 part.numC = parseInt(matches[3], 10) || part.numC;
174 part.extraD = matches[4] || part.extraD; 165 part.extraD = matches[4] || part.extraD;
175 166
176 if (part.strB == "+") 167 if (part.strB == "+")
177 { 168 {
178 part.numA++; 169 part.numA++;
179 part.strB = "pre"; 170 part.strB = "pre";
180 } 171 }
181 172
182 return part; 173 return part;
183 } 174 }
184 175
185 function comparePartElement(s1, s2) 176 function comparePartElement(s1, s2)
186 { 177 {
187 if (s1 === "" && s2 !== "") 178 if (s1 === "" && s2 !== "")
188 return 1; 179 return 1;
189 if (s1 !== "" && s2 === "") 180 if (s1 !== "" && s2 === "")
190 return -1; 181 return -1;
191 return s1 === s2 ? 0 : (s1 > s2 ? 1 : -1); 182 return s1 === s2 ? 0 : (s1 > s2 ? 1 : -1);
192 } 183 }
193 184
194 function compareParts(p1, p2) 185 function compareParts(p1, p2)
195 { 186 {
196 var result = 0; 187 let result = 0;
197 var elements = ["numA", "strB", "numC", "extraD"]; 188 let elements = ["numA", "strB", "numC", "extraD"];
198 elements.some(function(element) 189 elements.some(element =>
199 { 190 {
200 result = comparePartElement(p1[element], p2[element]); 191 result = comparePartElement(p1[element], p2[element]);
201 return result; 192 return result;
202 }); 193 });
203 return result; 194 return result;
204 } 195 }
205 196
206 var parts1 = v1.split("."); 197 let parts1 = v1.split(".");
207 var parts2 = v2.split("."); 198 let parts2 = v2.split(".");
208 for (var i = 0; i < Math.max(parts1.length, parts2.length); i++) 199 for (let i = 0; i < Math.max(parts1.length, parts2.length); i++)
209 { 200 {
210 var result = compareParts(parsePart(parts1[i]), parsePart(parts2[i])); 201 let result = compareParts(parsePart(parts1[i]), parsePart(parts2[i]));
211 if (result) 202 if (result)
212 return result; 203 return result;
213 } 204 }
214 return 0; 205 return 0;
215 } 206 }
216 } 207 }
217 } 208 }
218 209
219 // 210 //
220 // FileUtils.jsm module emulation 211 // FileUtils.jsm module emulation
221 // 212 //
222 213
223 var FileUtils = 214 let FileUtils =
224 { 215 {
225 PERMS_DIRECTORY: 0 216 PERMS_DIRECTORY: 0
226 }; 217 };
227 218
228 function FakeTimer() 219 function FakeTimer()
229 { 220 {
230 } 221 }
231 FakeTimer.prototype = 222 FakeTimer.prototype =
232 { 223 {
233 delay: 0, 224 delay: 0,
234 callback: null, 225 callback: null,
235 initWithCallback: function(callback, delay) 226 initWithCallback: function(callback, delay)
236 { 227 {
237 this.callback = callback; 228 this.callback = callback;
238 this.delay = delay; 229 this.delay = delay;
239 this.scheduleTimeout(); 230 this.scheduleTimeout();
240 }, 231 },
241 scheduleTimeout: function() 232 scheduleTimeout: function()
242 { 233 {
243 var me = this; 234 window.setTimeout(() =>
244 window.setTimeout(function()
245 { 235 {
246 try 236 try
247 { 237 {
248 me.callback(); 238 this.callback();
249 } 239 }
250 catch(e) 240 catch(e)
251 { 241 {
252 Cu.reportError(e); 242 Cu.reportError(e);
253 } 243 }
254 me.scheduleTimeout(); 244 this.scheduleTimeout();
255 }, this.delay); 245 }, this.delay);
256 } 246 }
257 }; 247 };
258 248
259 // 249 //
260 // Add a channel property to XMLHttpRequest, Synchronizer needs it 250 // Add a channel property to XMLHttpRequest, Synchronizer needs it
261 // 251 //
262 252
263 XMLHttpRequest.prototype.channel = 253 XMLHttpRequest.prototype.channel =
264 { 254 {
265 status: -1, 255 status: -1,
266 notificationCallbacks: {}, 256 notificationCallbacks: {},
267 loadFlags: 0, 257 loadFlags: 0,
268 INHIBIT_CACHING: 0, 258 INHIBIT_CACHING: 0,
269 VALIDATE_ALWAYS: 0, 259 VALIDATE_ALWAYS: 0,
270 QueryInterface: function() 260 QueryInterface: function()
271 { 261 {
272 return this; 262 return this;
273 } 263 }
274 }; 264 };
OLDNEW
« chrome/ext/common.js ('K') | « include.preload.js ('k') | lib/csp.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld