diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /devtools/server/actors/profiler.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/server/actors/profiler.js')
-rw-r--r-- | devtools/server/actors/profiler.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/devtools/server/actors/profiler.js b/devtools/server/actors/profiler.js new file mode 100644 index 000000000..c4b594408 --- /dev/null +++ b/devtools/server/actors/profiler.js @@ -0,0 +1,60 @@ +/* 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, ActorClassWithSpec } = require("devtools/shared/protocol"); +const { Profiler } = require("devtools/server/performance/profiler"); +const { actorBridgeWithSpec } = require("devtools/server/actors/common"); +const { profilerSpec } = require("devtools/shared/specs/profiler"); + +loader.lazyRequireGetter(this, "events", "sdk/event/core"); + +/** + * This actor wraps the Profiler module at devtools/server/performance/profiler.js + * and provides RDP definitions. + * + * @see devtools/server/performance/profiler.js for documentation. + */ +var ProfilerActor = exports.ProfilerActor = ActorClassWithSpec(profilerSpec, { + initialize: function (conn) { + Actor.prototype.initialize.call(this, conn); + this._onProfilerEvent = this._onProfilerEvent.bind(this); + + this.bridge = new Profiler(); + events.on(this.bridge, "*", this._onProfilerEvent); + }, + + /** + * `disconnect` method required to call destroy, since this + * actor is not managed by a parent actor. + */ + disconnect: function () { + this.destroy(); + }, + + destroy: function () { + events.off(this.bridge, "*", this._onProfilerEvent); + this.bridge.destroy(); + Actor.prototype.destroy.call(this); + }, + + startProfiler: actorBridgeWithSpec("start"), + stopProfiler: actorBridgeWithSpec("stop"), + getProfile: actorBridgeWithSpec("getProfile"), + getFeatures: actorBridgeWithSpec("getFeatures"), + getBufferInfo: actorBridgeWithSpec("getBufferInfo"), + getStartOptions: actorBridgeWithSpec("getStartOptions"), + isActive: actorBridgeWithSpec("isActive"), + getSharedLibraryInformation: actorBridgeWithSpec("getSharedLibraryInformation"), + registerEventNotifications: actorBridgeWithSpec("registerEventNotifications"), + unregisterEventNotifications: actorBridgeWithSpec("unregisterEventNotifications"), + setProfilerStatusInterval: actorBridgeWithSpec("setProfilerStatusInterval"), + + /** + * Pipe events from Profiler module to this actor. + */ + _onProfilerEvent: function (eventName, ...data) { + events.emit(this, eventName, ...data); + }, +}); |