| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of the Adblock Plus, | 2 * This file is part of the Adblock Plus, |
| 3 * Copyright (C) 2006-2012 Eyeo GmbH | 3 * Copyright (C) 2006-2012 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 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 { | 366 { |
| 367 let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar); | 367 let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar); |
| 368 registrar.registerFactory(this.classID, this.classDescription, this.contract
ID, this); | 368 registrar.registerFactory(this.classID, this.classDescription, this.contract
ID, this); |
| 369 | 369 |
| 370 let catMan = Utils.categoryManager; | 370 let catMan = Utils.categoryManager; |
| 371 for each (let category in this.xpcom_categories) | 371 for each (let category in this.xpcom_categories) |
| 372 catMan.addCategoryEntry(category, this.contractID, this.contractID, false,
true); | 372 catMan.addCategoryEntry(category, this.contractID, this.contractID, false,
true); |
| 373 | 373 |
| 374 Services.obs.addObserver(this, "http-on-modify-request", true); | 374 Services.obs.addObserver(this, "http-on-modify-request", true); |
| 375 Services.obs.addObserver(this, "content-document-global-created", true); | 375 Services.obs.addObserver(this, "content-document-global-created", true); |
| 376 Services.obs.addObserver(this, "xpcom-category-entry-removed", true); |
| 377 Services.obs.addObserver(this, "xpcom-category-cleared", true); |
| 376 | 378 |
| 377 onShutdown.add(function() | 379 onShutdown.add(function() |
| 378 { | 380 { |
| 381 // Our category observers should be removed before changing category |
| 382 // memberships, just in case. |
| 383 Services.obs.removeObserver(this, "http-on-modify-request"); |
| 384 Services.obs.removeObserver(this, "content-document-global-created"); |
| 385 Services.obs.removeObserver(this, "xpcom-category-entry-removed"); |
| 386 Services.obs.removeObserver(this, "xpcom-category-cleared"); |
| 387 |
| 379 for each (let category in this.xpcom_categories) | 388 for each (let category in this.xpcom_categories) |
| 380 catMan.deleteCategoryEntry(category, this.contractID, false); | 389 catMan.deleteCategoryEntry(category, this.contractID, false); |
| 381 | 390 |
| 382 // This needs to run asynchronously, see bug 753687 | 391 // This needs to run asynchronously, see bug 753687 |
| 383 Utils.runAsync(function() | 392 Utils.runAsync(function() |
| 384 { | 393 { |
| 385 registrar.unregisterFactory(this.classID, this); | 394 registrar.unregisterFactory(this.classID, this); |
| 386 }.bind(this)); | 395 }.bind(this)); |
| 387 | 396 |
| 388 Services.obs.removeObserver(this, "http-on-modify-request"); | |
| 389 Services.obs.removeObserver(this, "content-document-global-created"); | |
| 390 | |
| 391 this.previousRequest = null; | 397 this.previousRequest = null; |
| 392 }.bind(this)); | 398 }.bind(this)); |
| 393 }, | 399 }, |
| 394 | 400 |
| 395 // | 401 // |
| 396 // nsISupports interface implementation | 402 // nsISupports interface implementation |
| 397 // | 403 // |
| 398 | 404 |
| 399 QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPolicy, Ci.nsIObserver, | 405 QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPolicy, Ci.nsIObserver, |
| 400 Ci.nsIChannelEventSink, Ci.nsIFactory, Ci.nsISupportsWeakReference]), | 406 Ci.nsIChannelEventSink, Ci.nsIFactory, Ci.nsISupportsWeakReference]), |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 | 495 |
| 490 if (this.expectingPopupLoad) | 496 if (this.expectingPopupLoad) |
| 491 { | 497 { |
| 492 let wnd = Utils.getRequestWindow(subject); | 498 let wnd = Utils.getRequestWindow(subject); |
| 493 if (wnd && wnd.opener && wnd.location.href == "about:blank") | 499 if (wnd && wnd.opener && wnd.location.href == "about:blank") |
| 494 this.observe(wnd, "content-document-global-created", null, subject.U
RI); | 500 this.observe(wnd, "content-document-global-created", null, subject.U
RI); |
| 495 } | 501 } |
| 496 | 502 |
| 497 break; | 503 break; |
| 498 } | 504 } |
| 505 case "xpcom-category-entry-removed": |
| 506 case "xpcom-category-cleared": |
| 507 { |
| 508 let category = data; |
| 509 if (this.xpcom_categories.indexOf(category) < 0) |
| 510 return; |
| 511 |
| 512 if (topic == "xpcom-category-entry-removed" && |
| 513 subject instanceof Ci.nsISupportsCString && |
| 514 subject.data != this.contractID) |
| 515 { |
| 516 return; |
| 517 } |
| 518 |
| 519 // Our category entry was removed, make sure to add it back |
| 520 let catMan = Utils.categoryManager; |
| 521 catMan.addCategoryEntry(category, this.contractID, this.contractID, fals
e, true); |
| 522 break; |
| 523 } |
| 499 } | 524 } |
| 500 }, | 525 }, |
| 501 | 526 |
| 502 // | 527 // |
| 503 // nsIChannelEventSink interface implementation | 528 // nsIChannelEventSink interface implementation |
| 504 // | 529 // |
| 505 | 530 |
| 506 asyncOnChannelRedirect: function(oldChannel, newChannel, flags, callback) | 531 asyncOnChannelRedirect: function(oldChannel, newChannel, flags, callback) |
| 507 { | 532 { |
| 508 let result = Cr.NS_OK; | 533 let result = Cr.NS_OK; |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 713 if (!wnd || wnd.closed) | 738 if (!wnd || wnd.closed) |
| 714 return; | 739 return; |
| 715 | 740 |
| 716 if (entry.type == Policy.type.OBJECT) | 741 if (entry.type == Policy.type.OBJECT) |
| 717 { | 742 { |
| 718 node.removeEventListener("mouseover", objectMouseEventHander, true); | 743 node.removeEventListener("mouseover", objectMouseEventHander, true); |
| 719 node.removeEventListener("mouseout", objectMouseEventHander, true); | 744 node.removeEventListener("mouseout", objectMouseEventHander, true); |
| 720 } | 745 } |
| 721 Policy.processNode(wnd, node, entry.type, Utils.makeURI(entry.location), true)
; | 746 Policy.processNode(wnd, node, entry.type, Utils.makeURI(entry.location), true)
; |
| 722 } | 747 } |
| OLD | NEW |