OLD | NEW |
1 /* | 1 /* |
2 * This file is part of Adblock Plus <http://adblockplus.org/>, | 2 * This file is part of Adblock Plus <http://adblockplus.org/>, |
3 * Copyright (C) 2006-2014 Eyeo GmbH | 3 * Copyright (C) 2006-2014 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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 | 87 |
88 /** | 88 /** |
89 * Called on module startup, initializes various exported properties. | 89 * Called on module startup, initializes various exported properties. |
90 */ | 90 */ |
91 init: function() | 91 init: function() |
92 { | 92 { |
93 TimeLine.enter("Entered content policy initialization"); | 93 TimeLine.enter("Entered content policy initialization"); |
94 | 94 |
95 // type constant by type description and type description by type constant | 95 // type constant by type description and type description by type constant |
96 let iface = Ci.nsIContentPolicy; | 96 let iface = Ci.nsIContentPolicy; |
97 for each (let typeName in contentTypes) | 97 for (let typeName of contentTypes) |
98 { | 98 { |
99 if ("TYPE_" + typeName in iface) | 99 if ("TYPE_" + typeName in iface) |
100 { | 100 { |
101 let id = iface["TYPE_" + typeName]; | 101 let id = iface["TYPE_" + typeName]; |
102 this.type[typeName] = id; | 102 this.type[typeName] = id; |
103 this.typeDescr[id] = typeName; | 103 this.typeDescr[id] = typeName; |
104 this.localizedDescr[id] = Utils.getString("type_label_" + typeName.toLow
erCase()); | 104 this.localizedDescr[id] = Utils.getString("type_label_" + typeName.toLow
erCase()); |
105 } | 105 } |
106 } | 106 } |
107 | 107 |
108 this.type.ELEMHIDE = 0xFFFD; | 108 this.type.ELEMHIDE = 0xFFFD; |
109 this.typeDescr[0xFFFD] = "ELEMHIDE"; | 109 this.typeDescr[0xFFFD] = "ELEMHIDE"; |
110 this.localizedDescr[0xFFFD] = Utils.getString("type_label_elemhide"); | 110 this.localizedDescr[0xFFFD] = Utils.getString("type_label_elemhide"); |
111 | 111 |
112 this.type.POPUP = 0xFFFE; | 112 this.type.POPUP = 0xFFFE; |
113 this.typeDescr[0xFFFE] = "POPUP"; | 113 this.typeDescr[0xFFFE] = "POPUP"; |
114 this.localizedDescr[0xFFFE] = Utils.getString("type_label_popup"); | 114 this.localizedDescr[0xFFFE] = Utils.getString("type_label_popup"); |
115 | 115 |
116 for each (let type in nonVisualTypes) | 116 for (let type of nonVisualTypes) |
117 this.nonVisual[this.type[type]] = true; | 117 this.nonVisual[this.type[type]] = true; |
118 | 118 |
119 // whitelisted URL schemes | 119 // whitelisted URL schemes |
120 for each (let scheme in Prefs.whitelistschemes.toLowerCase().split(" ")) | 120 for (let scheme of Prefs.whitelistschemes.toLowerCase().split(" ")) |
121 this.whitelistSchemes[scheme] = true; | 121 this.whitelistSchemes[scheme] = true; |
122 | 122 |
123 TimeLine.log("done initializing types"); | 123 TimeLine.log("done initializing types"); |
124 | 124 |
125 // Generate class identifier used to collapse node and register correspondin
g | 125 // Generate class identifier used to collapse node and register correspondin
g |
126 // stylesheet. | 126 // stylesheet. |
127 TimeLine.log("registering global stylesheet"); | 127 TimeLine.log("registering global stylesheet"); |
128 | 128 |
129 let offset = "a".charCodeAt(0); | 129 let offset = "a".charCodeAt(0); |
130 for (let i = 0; i < 20; i++) | 130 for (let i = 0; i < 20; i++) |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 | 335 |
336 /** | 336 /** |
337 * Asynchronously re-checks filters for given nodes. | 337 * Asynchronously re-checks filters for given nodes. |
338 */ | 338 */ |
339 refilterNodes: function(/**Node[]*/ nodes, /**RequestEntry*/ entry) | 339 refilterNodes: function(/**Node[]*/ nodes, /**RequestEntry*/ entry) |
340 { | 340 { |
341 // Ignore nodes that have been blocked already | 341 // Ignore nodes that have been blocked already |
342 if (entry.filter && !(entry.filter instanceof WhitelistFilter)) | 342 if (entry.filter && !(entry.filter instanceof WhitelistFilter)) |
343 return; | 343 return; |
344 | 344 |
345 for each (let node in nodes) | 345 for (let node of nodes) |
346 Utils.runAsync(refilterNode, this, node, entry); | 346 Utils.runAsync(refilterNode, this, node, entry); |
347 } | 347 } |
348 }; | 348 }; |
349 Policy.init(); | 349 Policy.init(); |
350 | 350 |
351 /** | 351 /** |
352 * Actual nsIContentPolicy and nsIChannelEventSink implementation | 352 * Actual nsIContentPolicy and nsIChannelEventSink implementation |
353 * @class | 353 * @class |
354 */ | 354 */ |
355 let PolicyImplementation = | 355 let PolicyImplementation = |
(...skipping 15 matching lines...) Expand all Loading... |
371 } | 371 } |
372 catch (e if e.result == Cr.NS_ERROR_FACTORY_EXISTS) | 372 catch (e if e.result == Cr.NS_ERROR_FACTORY_EXISTS) |
373 { | 373 { |
374 // See bug 924340 - it might be too early to init now, the old version | 374 // See bug 924340 - it might be too early to init now, the old version |
375 // we are replacing didn't finish removing itself yet. | 375 // we are replacing didn't finish removing itself yet. |
376 Utils.runAsync(this.init.bind(this)); | 376 Utils.runAsync(this.init.bind(this)); |
377 return; | 377 return; |
378 } | 378 } |
379 | 379 |
380 let catMan = Utils.categoryManager; | 380 let catMan = Utils.categoryManager; |
381 for each (let category in this.xpcom_categories) | 381 for (let category of this.xpcom_categories) |
382 catMan.addCategoryEntry(category, this.contractID, this.contractID, false,
true); | 382 catMan.addCategoryEntry(category, this.contractID, this.contractID, false,
true); |
383 | 383 |
384 // http-on-opening-request is new in Gecko 18, http-on-modify-request can | 384 // http-on-opening-request is new in Gecko 18, http-on-modify-request can |
385 // be used in earlier releases. | 385 // be used in earlier releases. |
386 let httpTopic = "http-on-opening-request"; | 386 let httpTopic = "http-on-opening-request"; |
387 if (Services.vc.compare(Utils.platformVersion, "18.0") < 0) | 387 if (Services.vc.compare(Utils.platformVersion, "18.0") < 0) |
388 httpTopic = "http-on-modify-request"; | 388 httpTopic = "http-on-modify-request"; |
389 | 389 |
390 Services.obs.addObserver(this, httpTopic, true); | 390 Services.obs.addObserver(this, httpTopic, true); |
391 Services.obs.addObserver(this, "content-document-global-created", true); | 391 Services.obs.addObserver(this, "content-document-global-created", true); |
392 Services.obs.addObserver(this, "xpcom-category-entry-removed", true); | 392 Services.obs.addObserver(this, "xpcom-category-entry-removed", true); |
393 Services.obs.addObserver(this, "xpcom-category-cleared", true); | 393 Services.obs.addObserver(this, "xpcom-category-cleared", true); |
394 | 394 |
395 onShutdown.add(function() | 395 onShutdown.add(function() |
396 { | 396 { |
397 // Our category observers should be removed before changing category | 397 // Our category observers should be removed before changing category |
398 // memberships, just in case. | 398 // memberships, just in case. |
399 Services.obs.removeObserver(this, httpTopic); | 399 Services.obs.removeObserver(this, httpTopic); |
400 Services.obs.removeObserver(this, "content-document-global-created"); | 400 Services.obs.removeObserver(this, "content-document-global-created"); |
401 Services.obs.removeObserver(this, "xpcom-category-entry-removed"); | 401 Services.obs.removeObserver(this, "xpcom-category-entry-removed"); |
402 Services.obs.removeObserver(this, "xpcom-category-cleared"); | 402 Services.obs.removeObserver(this, "xpcom-category-cleared"); |
403 | 403 |
404 for each (let category in this.xpcom_categories) | 404 for (let category of this.xpcom_categories) |
405 catMan.deleteCategoryEntry(category, this.contractID, false); | 405 catMan.deleteCategoryEntry(category, this.contractID, false); |
406 | 406 |
407 // This needs to run asynchronously, see bug 753687 | 407 // This needs to run asynchronously, see bug 753687 |
408 Utils.runAsync(function() | 408 Utils.runAsync(function() |
409 { | 409 { |
410 registrar.unregisterFactory(this.classID, this); | 410 registrar.unregisterFactory(this.classID, this); |
411 }.bind(this)); | 411 }.bind(this)); |
412 | 412 |
413 this.previousRequest = null; | 413 this.previousRequest = null; |
414 }.bind(this)); | 414 }.bind(this)); |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
632 } | 632 } |
633 | 633 |
634 /** | 634 /** |
635 * Processes nodes scheduled for post-processing (typically hides them). | 635 * Processes nodes scheduled for post-processing (typically hides them). |
636 */ | 636 */ |
637 function postProcessNodes() | 637 function postProcessNodes() |
638 { | 638 { |
639 let nodes = scheduledNodes; | 639 let nodes = scheduledNodes; |
640 scheduledNodes = null; | 640 scheduledNodes = null; |
641 | 641 |
642 for each (let node in nodes) | 642 for (let node of nodes) |
643 { | 643 { |
644 // adjust frameset's cols/rows for frames | 644 // adjust frameset's cols/rows for frames |
645 let parentNode = node.parentNode; | 645 let parentNode = node.parentNode; |
646 if (parentNode && parentNode instanceof Ci.nsIDOMHTMLFrameSetElement) | 646 if (parentNode && parentNode instanceof Ci.nsIDOMHTMLFrameSetElement) |
647 { | 647 { |
648 let hasCols = (parentNode.cols && parentNode.cols.indexOf(",") > 0); | 648 let hasCols = (parentNode.cols && parentNode.cols.indexOf(",") > 0); |
649 let hasRows = (parentNode.rows && parentNode.rows.indexOf(",") > 0); | 649 let hasRows = (parentNode.rows && parentNode.rows.indexOf(",") > 0); |
650 if ((hasCols || hasRows) && !(hasCols && hasRows)) | 650 if ((hasCols || hasRows) && !(hasCols && hasRows)) |
651 { | 651 { |
652 let index = -1; | 652 let index = -1; |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
755 if (!wnd || wnd.closed) | 755 if (!wnd || wnd.closed) |
756 return; | 756 return; |
757 | 757 |
758 if (entry.type == Policy.type.OBJECT) | 758 if (entry.type == Policy.type.OBJECT) |
759 { | 759 { |
760 node.removeEventListener("mouseover", objectMouseEventHander, true); | 760 node.removeEventListener("mouseover", objectMouseEventHander, true); |
761 node.removeEventListener("mouseout", objectMouseEventHander, true); | 761 node.removeEventListener("mouseout", objectMouseEventHander, true); |
762 } | 762 } |
763 Policy.processNode(wnd, node, entry.type, Utils.makeURI(entry.location), true)
; | 763 Policy.processNode(wnd, node, entry.type, Utils.makeURI(entry.location), true)
; |
764 } | 764 } |
OLD | NEW |