diff options
Diffstat (limited to '')
-rw-r--r-- | devtools/server/actors/objects-manager.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/devtools/server/actors/objects-manager.js b/devtools/server/actors/objects-manager.js new file mode 100644 index 0000000000..529b33b246 --- /dev/null +++ b/devtools/server/actors/objects-manager.js @@ -0,0 +1,39 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const { Actor } = require("resource://devtools/shared/protocol.js"); +const { + objectsManagerSpec, +} = require("resource://devtools/shared/specs/objects-manager.js"); + +/** + * This actor is a singleton per Target which allows interacting with JS Object + * inspected by DevTools. Typically from the Console or Debugger. + */ +class ObjectsManagerActor extends Actor { + constructor(conn, targetActor) { + super(conn, objectsManagerSpec); + } + + /** + * Release Actors by bulk by specifying their actor IDs. + * (Passing the whole Front [i.e. Actor's form] would be more expensive than passing only their IDs) + * + * @param {Array<string>} actorIDs + * List of all actor's IDs to release. + */ + releaseObjects(actorIDs) { + for (const actorID of actorIDs) { + const actor = this.conn.getActor(actorID); + // Note that release will also typically call Actor's destroy and unregister the actor from its Pool + if (actor) { + actor.release(); + } + } + } +} + +exports.ObjectsManagerActor = ObjectsManagerActor; |