| Index: lib/api.js | 
| =================================================================== | 
| --- a/lib/api.js | 
| +++ b/lib/api.js | 
| @@ -10,215 +10,222 @@ | 
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| * GNU General Public License for more details. | 
| * | 
| * You should have received a copy of the GNU General Public License | 
| * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| */ | 
|  | 
| -var API = (function() | 
| +"use strict"; | 
| + | 
| +let API = (() => | 
| { | 
| const {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); | 
| -  var Filter = require("filterClasses").Filter; | 
| -  var Subscription = require("subscriptionClasses").Subscription; | 
| -  var SpecialSubscription = require("subscriptionClasses").SpecialSubscription; | 
| -  var FilterStorage = require("filterStorage").FilterStorage; | 
| -  var defaultMatcher = require("matcher").defaultMatcher; | 
| -  var ElemHide = require("elemHide").ElemHide; | 
| -  var Synchronizer = require("synchronizer").Synchronizer; | 
| -  var Prefs = require("prefs").Prefs; | 
| -  var checkForUpdates = require("updater").checkForUpdates; | 
| -  var Notification = require("notification").Notification; | 
| +  const {Filter} = require("filterClasses"); | 
| +  const {Subscription} = require("subscriptionClasses"); | 
| +  const {SpecialSubscription} = require("subscriptionClasses"); | 
| +  const {FilterStorage} = require("filterStorage"); | 
| +  const {defaultMatcher} = require("matcher"); | 
| +  const {ElemHide} = require("elemHide"); | 
| +  const {Synchronizer} = require("synchronizer"); | 
| +  const {Prefs} = require("prefs"); | 
| +  const {checkForUpdates} = require("updater"); | 
| +  const {Notification} = require("notification"); | 
|  | 
| return { | 
| -    getFilterFromText: function(text) | 
| +    getFilterFromText(text) | 
| { | 
| text = Filter.normalize(text); | 
| if (!text) | 
| throw "Attempted to create a filter from empty text"; | 
| return Filter.fromText(text); | 
| }, | 
|  | 
| -    isListedFilter: function(filter) | 
| +    isListedFilter(filter) | 
| { | 
| -      return filter.subscriptions.some(function(s) | 
| +      return filter.subscriptions.some(s => | 
| { | 
| return (s instanceof SpecialSubscription && !s.disabled); | 
| }); | 
| }, | 
|  | 
| -    addFilterToList: function(filter) | 
| +    addFilterToList(filter) | 
| { | 
| FilterStorage.addFilter(filter); | 
| }, | 
|  | 
| -    removeFilterFromList: function(filter) | 
| +    removeFilterFromList(filter) | 
| { | 
| FilterStorage.removeFilter(filter); | 
| }, | 
|  | 
| -    getListedFilters: function() | 
| +    getListedFilters() | 
| { | 
| -      var filters = {}; | 
| -      for (var i = 0; i < FilterStorage.subscriptions.length; i++) | 
| +      let filters = {}; | 
| +      for (let i = 0; i < FilterStorage.subscriptions.length; i++) | 
| { | 
| -        var subscription = FilterStorage.subscriptions[i]; | 
| +        let subscription = FilterStorage.subscriptions[i]; | 
| if (subscription instanceof SpecialSubscription) | 
| { | 
| -          for (var j = 0; j < subscription.filters.length; j++) | 
| +          for (let j = 0; j < subscription.filters.length; j++) | 
| { | 
| -            var filter = subscription.filters[j]; | 
| +            let filter = subscription.filters[j]; | 
| if (!(filter.text in filters)) | 
| filters[filter.text] = filter; | 
| } | 
| } | 
| } | 
| -      return Object.keys(filters).map(function(k) | 
| +      return Object.keys(filters).map(k => | 
| { | 
| return filters[k]; | 
| }); | 
| }, | 
|  | 
| -    getSubscriptionFromUrl: function(url) | 
| +    getSubscriptionFromUrl(url) | 
| { | 
| return Subscription.fromURL(url); | 
| }, | 
|  | 
| -    isListedSubscription: function(subscription) | 
| +    isListedSubscription(subscription) | 
| { | 
| return subscription.url in FilterStorage.knownSubscriptions; | 
| }, | 
|  | 
| -    addSubscriptionToList: function(subscription) | 
| +    addSubscriptionToList(subscription) | 
| { | 
| FilterStorage.addSubscription(subscription); | 
|  | 
| if (!subscription.lastDownload) | 
| Synchronizer.execute(subscription); | 
| }, | 
|  | 
| -    removeSubscriptionFromList: function(subscription) | 
| +    removeSubscriptionFromList(subscription) | 
| { | 
| FilterStorage.removeSubscription(subscription); | 
| }, | 
|  | 
| -    updateSubscription: function(subscription) | 
| +    updateSubscription(subscription) | 
| { | 
| Synchronizer.execute(subscription); | 
| }, | 
|  | 
| -    isSubscriptionUpdating: function(subscription) | 
| +    isSubscriptionUpdating(subscription) | 
| { | 
| return Synchronizer.isExecuting(subscription.url); | 
| }, | 
|  | 
| -    getListedSubscriptions: function() | 
| +    getListedSubscriptions() | 
| { | 
| -      return FilterStorage.subscriptions.filter(function(s) | 
| +      return FilterStorage.subscriptions.filter(s => | 
| { | 
| -        return !(s instanceof SpecialSubscription) | 
| +        return !(s instanceof SpecialSubscription); | 
| }); | 
| }, | 
|  | 
| -    getRecommendedSubscriptions: function() | 
| +    getRecommendedSubscriptions() | 
| { | 
| -      var subscriptions = require("subscriptions.xml"); | 
| -      var result = []; | 
| -      for (var i = 0; i < subscriptions.length; i++) | 
| +      let subscriptions = require("subscriptions.xml"); | 
| +      let result = []; | 
| +      for (let i = 0; i < subscriptions.length; i++) | 
| { | 
| -        var subscription = Subscription.fromURL(subscriptions[i].url); | 
| +        let subscription = Subscription.fromURL(subscriptions[i].url); | 
| subscription.title = subscriptions[i].title; | 
| subscription.homepage = subscriptions[i].homepage; | 
|  | 
| // These aren't normally properties of a Subscription object | 
| subscription.author = subscriptions[i].author; | 
| subscription.prefixes = subscriptions[i].prefixes; | 
| subscription.specialization = subscriptions[i].specialization; | 
| result.push(subscription); | 
| } | 
| return result; | 
| }, | 
|  | 
| -    isAASubscription: function(subscription) | 
| +    isAASubscription(subscription) | 
| { | 
| return subscription.url == Prefs.subscriptions_exceptionsurl; | 
| }, | 
|  | 
| -    setAASubscriptionEnabled: function(enabled) | 
| +    setAASubscriptionEnabled(enabled) | 
| { | 
| -      var aaSubscription = FilterStorage.subscriptions.find(API.isAASubscription); | 
| +      let aaSubscription = FilterStorage.subscriptions.find( | 
| +        API.isAASubscription); | 
| if (!enabled) | 
| { | 
| if (aaSubscription && !aaSubscription.disabled) | 
| aaSubscription.disabled = true; | 
| return; | 
| } | 
| if (!aaSubscription) | 
| { | 
| -        aaSubscription = Subscription.fromURL(Prefs.subscriptions_exceptionsurl); | 
| +        aaSubscription = Subscription.fromURL( | 
| +          Prefs.subscriptions_exceptionsurl); | 
| FilterStorage.addSubscription(aaSubscription); | 
| } | 
| if (aaSubscription.disabled) | 
| aaSubscription.disabled = false; | 
| if (!aaSubscription.lastDownload) | 
| Synchronizer.execute(aaSubscription); | 
| }, | 
|  | 
| -    isAASubscriptionEnabled: function() | 
| +    isAASubscriptionEnabled() | 
| { | 
| -      var aaSubscription = FilterStorage.subscriptions.find(API.isAASubscription); | 
| +      let aaSubscription = FilterStorage.subscriptions.find( | 
| +        API.isAASubscription); | 
| return aaSubscription && !aaSubscription.disabled; | 
| }, | 
|  | 
| -    showNextNotification: function(url) | 
| +    showNextNotification(url) | 
| { | 
| Notification.showNext(url); | 
| }, | 
|  | 
| -    getNotificationTexts: function(notification) | 
| +    getNotificationTexts(notification) | 
| { | 
| return Notification.getLocalizedTexts(notification); | 
| }, | 
|  | 
| -    markNotificationAsShown: function(id) | 
| +    markNotificationAsShown(id) | 
| { | 
| Notification.markAsShown(id); | 
| }, | 
| -    checkFilterMatch: function(url, contentTypeMask, documentUrl) | 
| +    checkFilterMatch(url, contentTypeMask, documentUrl) | 
| { | 
| -      var requestHost = extractHostFromURL(url); | 
| -      var documentHost = extractHostFromURL(documentUrl); | 
| -      var thirdParty = isThirdParty(requestHost, documentHost); | 
| -      return defaultMatcher.matchesAny(url, contentTypeMask, documentHost, thirdParty); | 
| +      let requestHost = extractHostFromURL(url); | 
| +      let documentHost = extractHostFromURL(documentUrl); | 
| +      let thirdParty = isThirdParty(requestHost, documentHost); | 
| +      return defaultMatcher.matchesAny( | 
| +        url, contentTypeMask, documentHost, thirdParty); | 
| }, | 
|  | 
| -    getElementHidingSelectors: function(domain) | 
| +    getElementHidingSelectors(domain) | 
| { | 
| -      return ElemHide.getSelectorsForDomain(domain, ElemHide.ALL_MATCHING, false); | 
| +      return ElemHide.getSelectorsForDomain(domain, | 
| +                                            ElemHide.ALL_MATCHING, false); | 
| }, | 
|  | 
| -    getPref: function(pref) | 
| +    getPref(pref) | 
| { | 
| return Prefs[pref]; | 
| }, | 
|  | 
| -    setPref: function(pref, value) | 
| +    setPref(pref, value) | 
| { | 
| Prefs[pref] = value; | 
| }, | 
|  | 
| -    forceUpdateCheck: function(eventName) | 
| +    forceUpdateCheck(eventName) | 
| { | 
| checkForUpdates(eventName ? _triggerEvent.bind(null, eventName) : null); | 
| }, | 
|  | 
| -    getHostFromUrl: function(url) | 
| +    getHostFromUrl(url) | 
| { | 
| return extractHostFromURL(url); | 
| }, | 
|  | 
| -    compareVersions: function(v1, v2) | 
| +    compareVersions(v1, v2) | 
| { | 
| return Services.vc.compare(v1, v2); | 
| } | 
| }; | 
| })(); | 
|  |