OLD | NEW |
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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 const notImplemented = () => Cr.NS_ERROR_NOT_IMPLEMENTED; | 47 const notImplemented = () => Cr.NS_ERROR_NOT_IMPLEMENTED; |
48 | 48 |
49 /** | 49 /** |
50 * about: URL module used to count hits. | 50 * about: URL module used to count hits. |
51 * @class | 51 * @class |
52 */ | 52 */ |
53 let AboutHandler = | 53 let AboutHandler = |
54 { | 54 { |
55 classID: Components.ID("{55fb7be0-1dd2-11b2-98e6-9e97caf8ba67}"), | 55 classID: Components.ID("{55fb7be0-1dd2-11b2-98e6-9e97caf8ba67}"), |
56 classDescription: "Element hiding hit registration protocol handler", | 56 classDescription: "Element hiding hit registration protocol handler", |
57 aboutPrefix: "abp-elemhidehit", | 57 aboutPrefix: "abp-elemhide", |
58 | 58 |
59 /** | 59 /** |
60 * Registers handler on startup. | 60 * Registers handler on startup. |
61 */ | 61 */ |
62 init: function() | 62 init: function() |
63 { | 63 { |
64 let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar); | 64 let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar); |
65 registrar.registerFactory(this.classID, this.classDescription, | 65 registrar.registerFactory(this.classID, this.classDescription, |
66 "@mozilla.org/network/protocol/about;1?what=" + this.aboutPrefix, this); | 66 "@mozilla.org/network/protocol/about;1?what=" + this.aboutPrefix, this); |
67 onShutdown.add(function() | 67 onShutdown.add(function() |
(...skipping 18 matching lines...) Expand all Loading... |
86 // About module implementation | 86 // About module implementation |
87 // | 87 // |
88 | 88 |
89 getURIFlags: function(uri) | 89 getURIFlags: function(uri) |
90 { | 90 { |
91 return Ci.nsIAboutModule.HIDE_FROM_ABOUTABOUT; | 91 return Ci.nsIAboutModule.HIDE_FROM_ABOUTABOUT; |
92 }, | 92 }, |
93 | 93 |
94 newChannel: function(uri, loadInfo) | 94 newChannel: function(uri, loadInfo) |
95 { | 95 { |
96 let match = /\?(\d+|css)$/.exec(uri.path); | 96 let match = /\?(?:hit(\d+)|css)$/.exec(uri.path); |
97 if (!match) | 97 if (!match) |
98 throw Cr.NS_ERROR_FAILURE; | 98 throw Cr.NS_ERROR_FAILURE; |
99 | 99 |
100 if (match[1] == "css") | 100 if (match[1]) |
| 101 return new HitRegistrationChannel(uri, loadInfo, match[1]); |
| 102 else |
101 return new StyleDataChannel(uri, loadInfo); | 103 return new StyleDataChannel(uri, loadInfo); |
102 else | |
103 return new HitRegistrationChannel(uri, loadInfo, match[1]); | |
104 }, | 104 }, |
105 | 105 |
106 QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory, Ci.nsIAboutModule]) | 106 QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory, Ci.nsIAboutModule]) |
107 }; | 107 }; |
108 AboutHandler.init(); | 108 AboutHandler.init(); |
109 | 109 |
110 /** | 110 /** |
111 * Base class for channel implementations, subclasses usually only need to | 111 * Base class for channel implementations, subclasses usually only need to |
112 * override BaseChannel._getResponse() method. | 112 * override BaseChannel._getResponse() method. |
113 * @constructor | 113 * @constructor |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 { | 224 { |
225 function escapeChar(match) | 225 function escapeChar(match) |
226 { | 226 { |
227 return "\\" + match.charCodeAt(0).toString(16) + " "; | 227 return "\\" + match.charCodeAt(0).toString(16) + " "; |
228 } | 228 } |
229 | 229 |
230 // Would be great to avoid sync messaging here but nsIStyleSheetService | 230 // Would be great to avoid sync messaging here but nsIStyleSheetService |
231 // insists on opening channels synchronously. | 231 // insists on opening channels synchronously. |
232 let domains = port.emitSync("getSelectors"); | 232 let domains = port.emitSync("getSelectors"); |
233 | 233 |
234 let cssPrefix = "{-moz-binding: url(about:abp-elemhidehit?"; | 234 let cssPrefix = "{-moz-binding: url(about:abp-elemhide?hit"; |
235 let cssSuffix = "#dummy) !important;}\n"; | 235 let cssSuffix = "#dummy) !important;}\n"; |
236 let result = []; | 236 let result = []; |
237 | 237 |
238 for (let [domain, selectors] of domains) | 238 for (let [domain, selectors] of domains) |
239 { | 239 { |
240 if (domain) | 240 if (domain) |
241 { | 241 { |
242 result.push('@-moz-document domain("', | 242 result.push('@-moz-document domain("', |
243 domain.replace(/[^\x01-\x7F]/g, escapeChar) | 243 domain.replace(/[^\x01-\x7F]/g, escapeChar) |
244 .split(",").join('"),domain("'), | 244 .split(",").join('"),domain("'), |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 return new Promise((resolve, reject) => | 286 return new Promise((resolve, reject) => |
287 { | 287 { |
288 let window = Utils.getRequestWindow(this); | 288 let window = Utils.getRequestWindow(this); |
289 shouldAllowAsync(window, window.document, "ELEMHIDE", this.key, allow => | 289 shouldAllowAsync(window, window.document, "ELEMHIDE", this.key, allow => |
290 { | 290 { |
291 resolve(allow ? allowXBL : hideXBL); | 291 resolve(allow ? allowXBL : hideXBL); |
292 }); | 292 }); |
293 }); | 293 }); |
294 } | 294 } |
295 }; | 295 }; |
OLD | NEW |