123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /* 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/. */
- /**
- * The performanceEntries actor emits events corresponding to performance
- * entries. It receives `performanceentry` events containing the performance
- * entry details and emits an event containing the name, type, origin, and
- * epoch of the performance entry.
- */
- const { Actor, ActorClassWithSpec } = require("devtools/shared/protocol");
- const performanceSpec = require("devtools/shared/specs/performance-entries");
- const events = require("sdk/event/core");
- var PerformanceEntriesActor = ActorClassWithSpec(performanceSpec, {
- listenerAdded: false,
- initialize: function (conn, tabActor) {
- Actor.prototype.initialize.call(this, conn);
- this.window = tabActor.window;
- },
- /**
- * Start tracking the user timings.
- */
- start: function () {
- if (!this.listenerAdded) {
- this.onPerformanceEntry = this.onPerformanceEntry.bind(this);
- this.window.addEventListener("performanceentry", this.onPerformanceEntry, true);
- this.listenerAdded = true;
- }
- },
- /**
- * Stop tracking the user timings.
- */
- stop: function () {
- if (this.listenerAdded) {
- this.window.removeEventListener("performanceentry", this.onPerformanceEntry, true);
- this.listenerAdded = false;
- }
- },
- disconnect: function () {
- this.destroy();
- },
- destroy: function () {
- this.stop();
- Actor.prototype.destroy.call(this);
- },
- onPerformanceEntry: function (e) {
- let emitDetail = {
- type: e.entryType,
- name: e.name,
- origin: e.origin,
- epoch: e.epoch
- };
- events.emit(this, "entry", emitDetail);
- }
- });
- exports.PerformanceEntriesActor = PerformanceEntriesActor;
|