| 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 | 
|---|