@quick-game/cli
Version:
Command line interface for rapid qg development
60 lines • 2.82 kB
JavaScript
// Copyright 2023 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as TimelineModel from '../../models/timeline_model/timeline_model.js';
import * as TraceEngine from '../../models/trace/trace.js';
const SelectionRangeSymbol = Symbol('SelectionRange');
export class TimelineSelection {
startTime;
endTime;
object;
constructor(startTime, endTime, object) {
this.startTime = startTime;
this.endTime = endTime;
this.object = object;
}
static isFrameObject(object) {
return object instanceof TimelineModel.TimelineFrameModel.TimelineFrame;
}
static fromFrame(frame) {
return new TimelineSelection(TraceEngine.Types.Timing.MilliSeconds(frame.startTime), TraceEngine.Types.Timing.MilliSeconds(frame.endTime), frame);
}
static isSyntheticNetworkRequestDetailsEventSelection(object) {
if (object instanceof TraceEngine.Legacy.Event) {
return false;
}
// Sadly new trace events are just raw objects, so now we have to confirm it is a trace event by ruling everything else out.
if (TimelineSelection.isFrameObject(object) || TimelineSelection.isRangeSelection(object)) {
return false;
}
if (TraceEngine.Legacy.eventIsFromNewEngine(object)) {
return TraceEngine.Types.TraceEvents.isSyntheticNetworkRequestDetailsEvent(object);
}
return false;
}
static isTraceEventSelection(object) {
if (object instanceof TraceEngine.Legacy.Event) {
return true;
}
// Sadly new trace events are just raw objects, so now we have to confirm it is a trace event by ruling everything else out.
if (TimelineSelection.isFrameObject(object) || TimelineSelection.isRangeSelection(object)) {
return false;
}
// Now the network request will be handled separately, so return false here.
if (TraceEngine.Types.TraceEvents.isSyntheticNetworkRequestDetailsEvent(object)) {
return false;
}
return TraceEngine.Legacy.eventIsFromNewEngine(object);
}
static fromTraceEvent(event) {
const { startTime, endTime } = TraceEngine.Legacy.timesForEventInMilliseconds(event);
return new TimelineSelection(startTime, TraceEngine.Types.Timing.MilliSeconds(endTime || (startTime + 1)), event);
}
static isRangeSelection(object) {
return object === SelectionRangeSymbol;
}
static fromRange(startTime, endTime) {
return new TimelineSelection(TraceEngine.Types.Timing.MilliSeconds(startTime), TraceEngine.Types.Timing.MilliSeconds(endTime), SelectionRangeSymbol);
}
}
//# sourceMappingURL=TimelineSelection.js.map