gecko-dev/devtools/shared/performance/recording-common.js

142 строки
3.7 KiB
JavaScript

/* 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.
*/
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()) {
this._estimatedDuration = Date.now() - this._localStartTime;
return this._estimatedDuration;
}
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() {
const label = this.getLabel();
const duration = this.getDuration();
const markers = this.getMarkers();
const frames = this.getFrames();
const memory = this.getMemory();
const ticks = this.getTicks();
const allocations = this.getAllocations();
const profile = this.getProfile();
const configuration = this.getConfiguration();
const systemHost = this.getHostSystemInfo();
const systemClient = this.getClientSystemInfo();
return {
label,
duration,
markers,
frames,
memory,
ticks,
allocations,
profile,
configuration,
systemHost,
systemClient,
};
},
};