| Index: messageResponder.js | 
| diff --git a/messageResponder.js b/messageResponder.js | 
| index e8b911a4519f8a20e86cb53a04d9b330753b127f..2ec5edcc19945dadb695fec434fa2848e1c0a70a 100644 | 
| --- a/messageResponder.js | 
| +++ b/messageResponder.js | 
| @@ -18,7 +18,8 @@ | 
| "use strict"; | 
| { | 
| - var ext = ext || require("ext_background"); | 
| + if (typeof ext == "undefined") | 
| + window.ext = require("ext_background"); | 
| const {port} = require("messaging"); | 
| const {Prefs} = require("prefs"); | 
| @@ -77,29 +78,28 @@ | 
| let changeListeners = new ext.PageMap(); | 
| let listenedPreferences = Object.create(null); | 
| let listenedFilterChanges = Object.create(null); | 
| - let messageTypes = { | 
| - "app": "app.respond", | 
| - "filter": "filters.respond", | 
| - "pref": "prefs.respond", | 
| - "subscription": "subscriptions.respond" | 
| - }; | 
| - | 
| - function sendMessage(type, action) | 
| + let messageTypes = new Map([ | 
| + ["app", "app.respond"], | 
| + ["filter", "filters.respond"], | 
| + ["pref", "prefs.respond"], | 
| + ["subscription", "subscriptions.respond"] | 
| + ]); | 
| + | 
| + function sendMessage(type, action, ...args) | 
| { | 
| let pages = changeListeners.keys(); | 
| if (pages.length == 0) | 
| return; | 
| - let args = []; | 
| - for (let i = 2; i < arguments.length; i++) | 
| + let convertedArgs = []; | 
| + for (let arg of args) | 
| { | 
| - let arg = arguments[i]; | 
| if (arg instanceof Subscription) | 
| - args.push(convertSubscription(arg)); | 
| + convertedArgs.push(convertSubscription(arg)); | 
| else if (arg instanceof Filter) | 
| - args.push(convertFilter(arg)); | 
| + convertedArgs.push(convertFilter(arg)); | 
| else | 
| - args.push(arg); | 
| + convertedArgs.push(arg); | 
| } | 
| for (let page of pages) | 
| @@ -109,9 +109,9 @@ | 
| if (actions && actions.indexOf(action) != -1) | 
| { | 
| page.sendMessage({ | 
| - type: messageTypes[type], | 
| - action: action, | 
| - args: args | 
| + type: messageTypes.get(type), | 
| + action, | 
| + args: convertedArgs | 
| }); | 
| } | 
| } | 
| @@ -130,12 +130,9 @@ | 
| if (!(name in listenedFilterChanges)) | 
| { | 
| listenedFilterChanges[name] = null; | 
| - FilterNotifier.on(name, function() | 
| + FilterNotifier.on(name, (...args) => | 
| { | 
| - let args = [type, action]; | 
| - for (let arg of arguments) | 
| - args.push(arg); | 
| - sendMessage.apply(null, args); | 
| + sendMessage(type, action, ...args); | 
| }); | 
| } | 
| } | 
| @@ -158,7 +155,8 @@ | 
| { | 
| let subscriptionInit = tryRequire("subscriptionInit"); | 
| return { | 
| - filterlistsReinitialized: subscriptionInit ? subscriptionInit.reinitialized : false | 
| + filterlistsReinitialized: subscriptionInit | 
| + ? subscriptionInit.reinitialized : false | 
| }; | 
| } | 
| @@ -169,11 +167,14 @@ | 
| { | 
| let bidiDir; | 
| if ("chromeRegistry" in Utils) | 
| - bidiDir = Utils.chromeRegistry.isLocaleRTL("adblockplus") ? "rtl" : "ltr"; | 
| + { | 
| + let isRtl = Utils.chromeRegistry.isLocaleRTL("adblockplus"); | 
| + bidiDir = isRtl ? "rtl" : "ltr"; | 
| + } | 
| else | 
| bidiDir = ext.i18n.getMessage("@@bidi_dir"); | 
| - return {locale: Utils.appLocale, bidiDir: bidiDir}; | 
| + return {locale: Utils.appLocale, bidiDir}; | 
| } | 
| if (message.what == "features") | 
| @@ -229,9 +230,9 @@ | 
| RegExpFilter.typeMap.DOCUMENT | | 
| RegExpFilter.typeMap.ELEMHIDE)) | 
| { | 
| - let hostname = sender.frame.url.hostname; | 
| + let {hostname} = sender.frame.url; | 
| filters = ElemHideEmulation.getRulesForDomain(hostname); | 
| - filters = filters.map(filter => | 
| + filters = filters.map((filter) => | 
| { | 
| return { | 
| selector: filter.selector, | 
| @@ -280,7 +281,7 @@ | 
| for (let j = subscription.filters.length - 1; j >= 0; j--) | 
| { | 
| let filter = subscription.filters[j]; | 
| - if (/^@@\|\|([^\/:]+)\^\$document$/.test(filter.text)) | 
| + if (/^@@\|\|([^/:]+)\^\$document$/.test(filter.text)) | 
| continue; | 
| if (!(filter.text in seenFilter)) | 
| @@ -359,14 +360,15 @@ | 
| subscription.disabled = false; | 
| FilterStorage.addSubscription(subscription); | 
| - if (subscription instanceof DownloadableSubscription && !subscription.lastDownload) | 
| + if (subscription instanceof DownloadableSubscription && | 
| + !subscription.lastDownload) | 
| Synchronizer.execute(subscription); | 
| } | 
| }); | 
| port.on("subscriptions.get", (message, sender) => | 
| { | 
| - let subscriptions = FilterStorage.subscriptions.filter(s => | 
| + let subscriptions = FilterStorage.subscriptions.filter((s) => | 
| { | 
| if (message.ignoreDisabled && s.disabled) | 
| return false; | 
| @@ -416,8 +418,10 @@ | 
| port.on("subscriptions.update", (message, sender) => | 
| { | 
| - let subscriptions = message.url ? [Subscription.fromURL(message.url)] : | 
| - FilterStorage.subscriptions; | 
| + let {subscriptions} = FilterStorage; | 
| + if (message.url) | 
| + subscriptions = [Subscription.fromURL(message.url)]; | 
| + | 
| for (let subscription of subscriptions) | 
| { | 
| if (subscription instanceof DownloadableSubscription) |