| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-2016 Eyeo GmbH | 3  * Copyright (C) 2006-2016 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 /** @module messaging */ | 18 /** @module messaging */ | 
| 19 | 19 | 
| 20 "use strict"; | 20 "use strict"; | 
| 21 | 21 | 
| 22 let {EventEmitter} = require("events"); | 22 const {EventEmitter} = require("events"); | 
| 23 | 23 | 
| 24 /** | 24 /** | 
| 25  * Communication port wrapping ext.onMessage to receive messages. | 25  * Communication port wrapping ext.onMessage to receive messages. | 
| 26  * | 26  * | 
| 27  * @constructor | 27  * @constructor | 
| 28  */ | 28  */ | 
| 29 function Port() | 29 function Port() | 
| 30 { | 30 { | 
| 31   this._eventEmitter = new EventEmitter(); | 31   this._eventEmitter = new EventEmitter(); | 
| 32   this._onMessage = this._onMessage.bind(this); | 32   this._onMessage = this._onMessage.bind(this); | 
| 33   ext.onMessage.addListener(this._onMessage); | 33   ext.onMessage.addListener(this._onMessage); | 
| 34 }; | 34 }; | 
| 35 | 35 | 
| 36 Port.prototype = { | 36 Port.prototype = { | 
| 37   _onMessage: function(message, sender, sendResponse) | 37   _onMessage(message, sender, sendResponse) | 
| 38   { | 38   { | 
| 39     let async = false; | 39     let async = false; | 
| 40     let callbacks = this._eventEmitter.listeners(message.type); | 40     let callbacks = this._eventEmitter.listeners(message.type); | 
| 41 | 41 | 
| 42     for (let callback of callbacks) | 42     for (let callback of callbacks) | 
| 43     { | 43     { | 
| 44       let response = callback(message, sender); | 44       let response = callback(message, sender); | 
| 45 | 45 | 
| 46       if (response && typeof response.then == "function") | 46       if (response && typeof response.then == "function") | 
| 47       { | 47       { | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
| 74    *         or a promise (asynchronous response). | 74    *         or a promise (asynchronous response). | 
| 75    */ | 75    */ | 
| 76 | 76 | 
| 77   /** | 77   /** | 
| 78    * Adds a callback for the specified message. | 78    * Adds a callback for the specified message. | 
| 79    * | 79    * | 
| 80    * The return value of the callback (if not undefined) is sent as response. | 80    * The return value of the callback (if not undefined) is sent as response. | 
| 81    * @param {string}   name | 81    * @param {string}   name | 
| 82    * @param {Port~messageCallback} callback | 82    * @param {Port~messageCallback} callback | 
| 83    */ | 83    */ | 
| 84   on: function(name, callback) | 84   on(name, callback) | 
| 85   { | 85   { | 
| 86     this._eventEmitter.on(name, callback); | 86     this._eventEmitter.on(name, callback); | 
| 87   }, | 87   }, | 
| 88 | 88 | 
| 89   /** | 89   /** | 
| 90    * Removes a callback for the specified message. | 90    * Removes a callback for the specified message. | 
| 91    * | 91    * | 
| 92    * @param {string}   name | 92    * @param {string}   name | 
| 93    * @param {Port~messageCallback} callback | 93    * @param {Port~messageCallback} callback | 
| 94    */ | 94    */ | 
| 95   off: function(name, callback) | 95   off(name, callback) | 
| 96   { | 96   { | 
| 97     this._eventEmitter.off(name, callback); | 97     this._eventEmitter.off(name, callback); | 
| 98   }, | 98   }, | 
| 99 | 99 | 
| 100   /** | 100   /** | 
| 101    * Disables the port and makes it stop listening to incoming messages. | 101    * Disables the port and makes it stop listening to incoming messages. | 
| 102    */ | 102    */ | 
| 103   disconnect: function() | 103   disconnect() | 
| 104   { | 104   { | 
| 105     ext.onMessage.removeListener(this._onMessage); | 105     ext.onMessage.removeListener(this._onMessage); | 
| 106   } | 106   } | 
| 107 }; | 107 }; | 
| 108 | 108 | 
| 109 /** | 109 /** | 
| 110  * The default port to receive messages. | 110  * The default port to receive messages. | 
| 111  * | 111  * | 
| 112  * @type {Port} | 112  * @type {Port} | 
| 113  */ | 113  */ | 
| 114 exports.port = new Port(); | 114 exports.port = new Port(); | 
| 115 | 115 | 
| 116 /** | 116 /** | 
| 117  * Creates a new port that is disconnected when the given window is unloaded. | 117  * Creates a new port that is disconnected when the given window is unloaded. | 
| 118  * | 118  * | 
| 119  * @param {Window} window | 119  * @param {Window} window | 
| 120  * @return {Port} | 120  * @return {Port} | 
| 121  */ | 121  */ | 
| 122 exports.getPort = function(window) | 122 exports.getPort = function(window) | 
| 123 { | 123 { | 
| 124   let port = new Port(); | 124   let port = new Port(); | 
| 125   window.addEventListener("unload", () => | 125   window.addEventListener("unload", () => | 
| 126   { | 126   { | 
| 127     port.disconnect(); | 127     port.disconnect(); | 
| 128   }); | 128   }); | 
| 129   return port; | 129   return port; | 
| 130 }; | 130 }; | 
| 131 | 131 | 
| OLD | NEW | 
|---|