Bug 1363445: Speed up MessageChannel.addListener. r?aswan
MozReview-Commit-ID: iYavkWIQC
--- a/toolkit/components/extensions/MessageChannel.jsm
+++ b/toolkit/components/extensions/MessageChannel.jsm
@@ -453,33 +453,39 @@ this.MessageChannel = {
* matches this filter, as determined by `matchesFilter` with
* `strict=false`.
*
* filterMessage:
* An optional function that prevents the handler from handling a
* message by returning `false`. See `getHandlers` for the parameters.
*/
addListener(targets, messageName, handler) {
- for (let target of [].concat(targets)) {
+ if (!Array.isArray(targets)) {
+ targets = [targets];
+ }
+ for (let target of targets) {
this.messageManagers.get(target).addHandler(messageName, handler);
}
},
/**
* Removes a message listener from the given message manager.
*
* @param {nsIMessageListenerManager|Array<nsIMessageListenerManager>} targets
* The message managers on which to stop listening.
* @param {string|number} messageName
* The name of the message to stop listening for.
* @param {MessageReceiver} handler
* The handler to stop dispatching to.
*/
removeListener(targets, messageName, handler) {
- for (let target of [].concat(targets)) {
+ if (!Array.isArray(targets)) {
+ targets = [targets];
+ }
+ for (let target of targets) {
if (this.messageManagers.has(target)) {
this.messageManagers.get(target).removeHandler(messageName, handler);
}
}
},
/**
* Sends a message via the given message manager. Returns a promise which