browser/devtools/app-manager/connection-store.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 const ObservableObject = require("devtools/shared/observable-object");
     6 const {Connection} = require("devtools/client/connection-manager");
     8 const _knownConnectionStores = new WeakMap();
    10 let ConnectionStore;
    12 module.exports = ConnectionStore = function(connection) {
    13   // If we already know about this connection,
    14   // let's re-use the existing store.
    15   if (_knownConnectionStores.has(connection)) {
    16     return _knownConnectionStores.get(connection);
    17   }
    18   _knownConnectionStores.set(connection, this);
    20   ObservableObject.call(this, {status:null,host:null,port:null});
    22   this.destroy = this.destroy.bind(this);
    23   this._feedStore = this._feedStore.bind(this);
    25   this._connection = connection;
    26   this._connection.once(Connection.Events.DESTROYED, this.destroy);
    27   this._connection.on(Connection.Events.STATUS_CHANGED, this._feedStore);
    28   this._connection.on(Connection.Events.PORT_CHANGED, this._feedStore);
    29   this._connection.on(Connection.Events.HOST_CHANGED, this._feedStore);
    30   this._feedStore();
    31   return this;
    32 }
    34 ConnectionStore.prototype = {
    35   destroy: function() {
    36     if (this._connection) {
    37       // While this.destroy is bound using .once() above, that event may not
    38       // have occurred when the ConnectionStore client calls destroy, so we
    39       // manually remove it here.
    40       this._connection.off(Connection.Events.DESTROYED, this.destroy);
    41       this._connection.off(Connection.Events.STATUS_CHANGED, this._feedStore);
    42       this._connection.off(Connection.Events.PORT_CHANGED, this._feedStore);
    43       this._connection.off(Connection.Events.HOST_CHANGED, this._feedStore);
    44       _knownConnectionStores.delete(this._connection);
    45       this._connection = null;
    46     }
    47   },
    49   _feedStore: function() {
    50     this.object.status = this._connection.status;
    51     this.object.host = this._connection.host;
    52     this.object.port = this._connection.port;
    53   }
    54 }

mercurial