Bug 1363445: Speed up MessageChannel.addListener. r?aswan draft
authorKris Maglione <maglione.k@gmail.com>
Tue, 09 May 2017 10:22:41 -0700
changeset 574994 daa51fbe326add1e7f95632a25c23003f8f7a85c
parent 574993 656d4714e8031d95fdf4d57b997215c1ced3364f
child 627758 96c3499dd6fb6c4032466d9d7200a3909d077b24
push id57880
push usermaglione.k@gmail.com
push dateTue, 09 May 2017 17:23:04 +0000
reviewersaswan
bugs1363445
milestone55.0a1
Bug 1363445: Speed up MessageChannel.addListener. r?aswan MozReview-Commit-ID: iYavkWIQC
toolkit/components/extensions/MessageChannel.jsm
--- 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