1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /* 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";
- /**
- * A mixin to be used for PerformanceRecordingActor, PerformanceRecordingFront,
- * and LegacyPerformanceRecording for helper methods to access data.
- */
- const PerformanceRecordingCommon = exports.PerformanceRecordingCommon = {
- // Private fields, only needed when a recording is started or stopped.
- _console: false,
- _imported: false,
- _recording: false,
- _completed: false,
- _configuration: {},
- _startingBufferStatus: null,
- _localStartTime: 0,
- // Serializable fields, necessary and sufficient for import and export.
- _label: "",
- _duration: 0,
- _markers: null,
- _frames: null,
- _memory: null,
- _ticks: null,
- _allocations: null,
- _profile: null,
- _systemHost: null,
- _systemClient: null,
- /**
- * Helper methods for returning the status of the recording.
- * These methods should be consistent on both the front and actor.
- */
- isRecording: function () { return this._recording; },
- isCompleted: function () { return this._completed || this.isImported(); },
- isFinalizing: function () { return !this.isRecording() && !this.isCompleted(); },
- isConsole: function () { return this._console; },
- isImported: function () { return this._imported; },
- /**
- * Helper methods for returning configuration for the recording.
- * These methods should be consistent on both the front and actor.
- */
- getConfiguration: function () { return this._configuration; },
- getLabel: function () { return this._label; },
- /**
- * Gets duration of this recording, in milliseconds.
- * @return number
- */
- getDuration: function () {
- // Compute an approximate ending time for the current recording if it is
- // still in progress. This is needed to ensure that the view updates even
- // when new data is not being generated. If recording is completed, use
- // the duration from the profiler; if between recording and being finalized,
- // use the last estimated duration.
- if (this.isRecording()) {
- return this._estimatedDuration = Date.now() - this._localStartTime;
- } else {
- return this._duration || this._estimatedDuration || 0;
- }
- },
- /**
- * Helper methods for returning recording data.
- * These methods should be consistent on both the front and actor.
- */
- getMarkers: function () { return this._markers; },
- getFrames: function () { return this._frames; },
- getMemory: function () { return this._memory; },
- getTicks: function () { return this._ticks; },
- getAllocations: function () { return this._allocations; },
- getProfile: function () { return this._profile; },
- getHostSystemInfo: function () { return this._systemHost; },
- getClientSystemInfo: function () { return this._systemClient; },
- getStartingBufferStatus: function () { return this._startingBufferStatus; },
- getAllData: function () {
- let label = this.getLabel();
- let duration = this.getDuration();
- let markers = this.getMarkers();
- let frames = this.getFrames();
- let memory = this.getMemory();
- let ticks = this.getTicks();
- let allocations = this.getAllocations();
- let profile = this.getProfile();
- let configuration = this.getConfiguration();
- let systemHost = this.getHostSystemInfo();
- let systemClient = this.getClientSystemInfo();
- return { label, duration, markers, frames, memory, ticks, allocations, profile, configuration, systemHost, systemClient };
- },
- };
|