зеркало из https://github.com/mozilla/gecko-dev.git
142 строки
3.7 KiB
JavaScript
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,
|
|
};
|
|
},
|
|
};
|