| 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-2013 Eyeo GmbH | 3  * Copyright (C) 2006-2013 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 | 
| 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 12  * GNU General Public License for more details. | 12  * GNU General Public License for more details. | 
| 13  * | 13  * | 
| 14  * You should have received a copy of the GNU General Public License | 14  * You should have received a copy of the GNU General Public License | 
| 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| 16  */ | 16  */ | 
| 17 | 17 | 
| 18 Cu.import("resource://gre/modules/XPCOMUtils.jsm"); | 18 Cu.import("resource://gre/modules/XPCOMUtils.jsm"); | 
| 19 Cu.import("resource://gre/modules/Services.jsm"); | 19 Cu.import("resource://gre/modules/Services.jsm"); | 
| 20 | 20 | 
| 21 let {Utils} = require("utils"); | 21 let {Utils} = require("utils"); | 
| 22 let {Prefs} = require("prefs"); | 22 let {Prefs} = require("prefs"); | 
| 23 let {Policy} = require("contentPolicy"); | 23 let {Policy} = require("contentPolicy"); | 
| 24 let {FilterListener} = require("filterListener"); | 24 let {FilterListener} = require("filterListener"); | 
| 25 let {FilterStorage} = require("filterStorage"); | 25 let {FilterStorage} = require("filterStorage"); | 
| 26 let {FilterNotifier} = require("filterNotifier"); | 26 let {FilterNotifier} = require("filterNotifier"); | 
| 27 let {RequestNotifier} = require("requestNotifier"); | 27 let {RequestNotifier} = require("requestNotifier"); | 
| 28 let {Filter, ActiveFilter} = require("filterClasses"); | 28 let {Filter} = require("filterClasses"); | 
| 29 let {Subscription, SpecialSubscription, DownloadableSubscription} = require("sub
      scriptionClasses"); | 29 let {Subscription, SpecialSubscription, DownloadableSubscription} = require("sub
      scriptionClasses"); | 
| 30 let {Synchronizer} = require("synchronizer"); | 30 let {Synchronizer} = require("synchronizer"); | 
| 31 let {KeySelector} = require("keySelector"); | 31 let {KeySelector} = require("keySelector"); | 
| 32 let {Notification} = require("notification"); | 32 let {Notification} = require("notification"); | 
|  | 33 let {initAntiAdblockNotification} = require("antiadblockInit"); | 
| 33 | 34 | 
| 34 let CustomizableUI; | 35 let CustomizableUI; | 
| 35 try | 36 try | 
| 36 { | 37 { | 
| 37   ({CustomizableUI}) = Cu.import("resource:///modules/CustomizableUI.jsm", null)
      ; | 38   ({CustomizableUI}) = Cu.import("resource:///modules/CustomizableUI.jsm", null)
      ; | 
| 38 } | 39 } | 
| 39 catch (e) | 40 catch (e) | 
| 40 { | 41 { | 
| 41   // No built-in CustomizableUI API, use our own implementation. | 42   // No built-in CustomizableUI API, use our own implementation. | 
| 42   ({CustomizableUI}) = require("customizableUI"); | 43   ({CustomizableUI}) = require("customizableUI"); | 
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 391 | 392 | 
| 392       if (this.overlay.all.length) | 393       if (this.overlay.all.length) | 
| 393         this.overlay.all[0].appendChild(menuSource); | 394         this.overlay.all[0].appendChild(menuSource); | 
| 394       if ("abp-toolbarbutton" in this.overlay) | 395       if ("abp-toolbarbutton" in this.overlay) | 
| 395         this.overlay["abp-toolbarbutton"].appendChild(fixId(menuSource.cloneNode
      (true), "abp-toolbar")); | 396         this.overlay["abp-toolbarbutton"].appendChild(fixId(menuSource.cloneNode
      (true), "abp-toolbar")); | 
| 396       if ("abp-menuitem" in this.overlay) | 397       if ("abp-menuitem" in this.overlay) | 
| 397         this.overlay["abp-menuitem"].appendChild(fixId(menuSource.cloneNode(true
      ), "abp-menuitem")); | 398         this.overlay["abp-menuitem"].appendChild(fixId(menuSource.cloneNode(true
      ), "abp-menuitem")); | 
| 398     } | 399     } | 
| 399   }, | 400   }, | 
| 400 | 401 | 
| 401   _initAntiAdblockNotification: function() |  | 
| 402   { |  | 
| 403     let notification = { |  | 
| 404       id: "antiadblock", |  | 
| 405       type: "question", |  | 
| 406       title: Utils.getString("notification_antiadblock_title"), |  | 
| 407       message: Utils.getString("notification_antiadblock_message"), |  | 
| 408       urlFilters: [] |  | 
| 409     }; |  | 
| 410 |  | 
| 411     function notificationListener(approved) |  | 
| 412     { |  | 
| 413       let subscription = Subscription.fromURL(Prefs.subscriptions_antiadblockurl
      ); |  | 
| 414       if (subscription.url in FilterStorage.knownSubscriptions) |  | 
| 415         subscription.disabled = !approved; |  | 
| 416     } |  | 
| 417 |  | 
| 418     function addAntiAdblockNotification(subscription) |  | 
| 419     { |  | 
| 420       let urlFilters = []; |  | 
| 421       for each (let filter in subscription.filters) |  | 
| 422         if (filter instanceof ActiveFilter) |  | 
| 423           for (let domain in filter.domains) |  | 
| 424             if (domain && urlFilters.indexOf(domain) == -1) |  | 
| 425               urlFilters.push(domain); |  | 
| 426       notification.urlFilters = urlFilters; |  | 
| 427       Notification.addNotification(notification); |  | 
| 428       Notification.addQuestionListener(notification.id, notificationListener); |  | 
| 429     } |  | 
| 430 |  | 
| 431     function removeAntiAdblockNotification() |  | 
| 432     { |  | 
| 433       Notification.removeNotification(notification); |  | 
| 434       Notification.removeQuestionListener(notification.id, notificationListener)
      ; |  | 
| 435     } |  | 
| 436 |  | 
| 437     let subscription = Subscription.fromURL(Prefs.subscriptions_antiadblockurl); |  | 
| 438     if (subscription.lastDownload && subscription.disabled) |  | 
| 439       addAntiAdblockNotification(subscription); |  | 
| 440 |  | 
| 441     FilterNotifier.addListener(function(action, value, newItem, oldItem) |  | 
| 442     { |  | 
| 443       if (!/^subscription\.(updated|removed|disabled)$/.test(action) || value.ur
      l != Prefs.subscriptions_antiadblockurl) |  | 
| 444         return; |  | 
| 445 |  | 
| 446       if (action == "subscription.updated") |  | 
| 447         addAntiAdblockNotification(value); |  | 
| 448       else if (action == "subscription.removed" || (action == "subscription.disa
      bled" && !value.disabled)) |  | 
| 449         removeAntiAdblockNotification(); |  | 
| 450     }); |  | 
| 451 |  | 
| 452     var documentCreationObserver = { |  | 
| 453       observe: function(subject, topic, data) |  | 
| 454       { |  | 
| 455         if (!(subject instanceof Ci.nsIDOMWindow)) |  | 
| 456           return; |  | 
| 457 |  | 
| 458         this._showNextNotification(subject.location.href); |  | 
| 459       }.bind(this) |  | 
| 460     }; |  | 
| 461     Services.obs.addObserver(documentCreationObserver, "content-document-global-
      created", false); |  | 
| 462     onShutdown.add(function() |  | 
| 463     { |  | 
| 464       Services.obs.removeObserver(documentCreationObserver, "content-document-gl
      obal-created", false); |  | 
| 465     }); |  | 
| 466   }, |  | 
| 467 |  | 
| 468   /** | 402   /** | 
| 469    * Gets called once the initialization is finished and Adblock Plus elements | 403    * Gets called once the initialization is finished and Adblock Plus elements | 
| 470    * can be added to the UI. | 404    * can be added to the UI. | 
| 471    */ | 405    */ | 
| 472   initDone: function() | 406   initDone: function() | 
| 473   { | 407   { | 
| 474     let {WindowObserver} = require("windowObserver"); | 408     let {WindowObserver} = require("windowObserver"); | 
| 475     new WindowObserver(this); | 409     new WindowObserver(this); | 
| 476 | 410 | 
| 477     // Add toolbar icon | 411     // Add toolbar icon | 
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 515           this.updateStatusbarIcon(window); | 449           this.updateStatusbarIcon(window); | 
| 516       } | 450       } | 
| 517     }.bind(this)); | 451     }.bind(this)); | 
| 518     FilterNotifier.addListener(function(action) | 452     FilterNotifier.addListener(function(action) | 
| 519     { | 453     { | 
| 520       if (/^(filter|subscription)\.(added|removed|disabled|updated)$/.test(actio
      n) || action == "load") | 454       if (/^(filter|subscription)\.(added|removed|disabled|updated)$/.test(actio
      n) || action == "load") | 
| 521         this.updateState(); | 455         this.updateState(); | 
| 522     }.bind(this)); | 456     }.bind(this)); | 
| 523 | 457 | 
| 524     notificationTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); | 458     notificationTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); | 
| 525     notificationTimer.initWithCallback(this._showNextNotification.bind(this), | 459     notificationTimer.initWithCallback(this.showNextNotification.bind(this), | 
| 526                                        3 * 60 * 1000, Ci.nsITimer.TYPE_ONE_SHOT)
      ; | 460                                        3 * 60 * 1000, Ci.nsITimer.TYPE_ONE_SHOT)
      ; | 
| 527     onShutdown.add(function() notificationTimer.cancel()); | 461     onShutdown.add(function() notificationTimer.cancel()); | 
| 528   }, | 462   }, | 
| 529 | 463 | 
| 530   /** | 464   /** | 
| 531    * Will be set to true after the check whether first-run actions should run | 465    * Will be set to true after the check whether first-run actions should run | 
| 532    * has been performed. | 466    * has been performed. | 
| 533    * @type Boolean | 467    * @type Boolean | 
| 534    */ | 468    */ | 
| 535   firstRunDone: false, | 469   firstRunDone: false, | 
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 591       this.updateIconState(window, window.document.getElementById("abp-toolbarbu
      tton")); | 525       this.updateIconState(window, window.document.getElementById("abp-toolbarbu
      tton")); | 
| 592     }.bind(this)); | 526     }.bind(this)); | 
| 593     addBrowserClickListener(window, this.onBrowserClick.bind(this, window)); | 527     addBrowserClickListener(window, this.onBrowserClick.bind(this, window)); | 
| 594 | 528 | 
| 595     window.document.getElementById("abp-notification-close").addEventListener("c
      ommand", function(event) | 529     window.document.getElementById("abp-notification-close").addEventListener("c
      ommand", function(event) | 
| 596     { | 530     { | 
| 597       window.document.getElementById("abp-notification").hidePopup(); | 531       window.document.getElementById("abp-notification").hidePopup(); | 
| 598     }, false); | 532     }, false); | 
| 599 | 533 | 
| 600     // Add "anti-adblock messages" notification | 534     // Add "anti-adblock messages" notification | 
| 601     this._initAntiAdblockNotification(); | 535     initAntiAdblockNotification(); | 
|  | 536 | 
|  | 537     let documentCreationObserver = { | 
|  | 538       observe: function(subject, topic, data) | 
|  | 539       { | 
|  | 540         if (!(subject instanceof Ci.nsIDOMWindow)) | 
|  | 541           return; | 
|  | 542 | 
|  | 543         this.showNextNotification(subject.location.href); | 
|  | 544       }.bind(UI) | 
|  | 545     }; | 
|  | 546     Services.obs.addObserver(documentCreationObserver, "content-document-global-
      created", false); | 
|  | 547     onShutdown.add(function() | 
|  | 548     { | 
|  | 549       Services.obs.removeObserver(documentCreationObserver, "content-document-gl
      obal-created", false); | 
|  | 550     }); | 
| 602 | 551 | 
| 603     // First-run actions? | 552     // First-run actions? | 
| 604     if (!this.firstRunDone) | 553     if (!this.firstRunDone) | 
| 605     { | 554     { | 
| 606       this.firstRunDone = true; | 555       this.firstRunDone = true; | 
| 607 | 556 | 
| 608       let {addonVersion} = require("info"); | 557       let {addonVersion} = require("info"); | 
| 609       let prevVersion = Prefs.currentVersion; | 558       let prevVersion = Prefs.currentVersion; | 
| 610       if (prevVersion != addonVersion) | 559       if (prevVersion != addonVersion) | 
| 611       { | 560       { | 
| (...skipping 1231 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1843     Prefs.hideContributeButton = true; | 1792     Prefs.hideContributeButton = true; | 
| 1844 | 1793 | 
| 1845     for each (let id in ["abp-status-contributebutton", "abp-toolbar-contributeb
      utton", "abp-menuitem-contributebutton"]) | 1794     for each (let id in ["abp-status-contributebutton", "abp-toolbar-contributeb
      utton", "abp-menuitem-contributebutton"]) | 
| 1846     { | 1795     { | 
| 1847       let button = window.document.getElementById(id); | 1796       let button = window.document.getElementById(id); | 
| 1848       if (button) | 1797       if (button) | 
| 1849         button.hidden = true; | 1798         button.hidden = true; | 
| 1850     } | 1799     } | 
| 1851   }, | 1800   }, | 
| 1852 | 1801 | 
| 1853   _showNextNotification: function(url) | 1802   showNextNotification: function(url) | 
| 1854   { | 1803   { | 
| 1855     let window = this.currentWindow; | 1804     let window = this.currentWindow; | 
| 1856     if (!window) | 1805     if (!window) | 
| 1857       return; | 1806       return; | 
| 1858 | 1807 | 
| 1859     let button = window.document.getElementById("abp-toolbarbutton") | 1808     let button = window.document.getElementById("abp-toolbarbutton") | 
| 1860       || window.document.getElementById("abp-status"); | 1809       || window.document.getElementById("abp-status"); | 
| 1861     if (!button) | 1810     if (!button) | 
| 1862       return; | 1811       return; | 
| 1863 | 1812 | 
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1963   ["abp-command-contribute", "command", UI.openContributePage.bind(UI)], | 1912   ["abp-command-contribute", "command", UI.openContributePage.bind(UI)], | 
| 1964   ["abp-command-contribute-hide", "command", UI.hideContributeButton.bind(UI)] | 1913   ["abp-command-contribute-hide", "command", UI.hideContributeButton.bind(UI)] | 
| 1965 ]; | 1914 ]; | 
| 1966 | 1915 | 
| 1967 onShutdown.add(function() | 1916 onShutdown.add(function() | 
| 1968 { | 1917 { | 
| 1969   for (let window in UI.applicationWindows) | 1918   for (let window in UI.applicationWindows) | 
| 1970     if (UI.isBottombarOpen(window)) | 1919     if (UI.isBottombarOpen(window)) | 
| 1971       UI.toggleBottombar(window); | 1920       UI.toggleBottombar(window); | 
| 1972 }); | 1921 }); | 
| OLD | NEW | 
|---|