UNPKG

chrome-devtools-frontend

Version:
64 lines (52 loc) 2.01 kB
// Copyright 2016 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 type * as Platform from '../../core/platform/platform.js'; import type * as SDK from '../../core/sdk/sdk.js'; import type * as Extensions from '../../models/extensions/extensions.js'; import type {PerformanceModel} from './PerformanceModel.js'; import type {Client} from './TimelineLoader.js'; import {TimelineLoader} from './TimelineLoader.js'; export class ExtensionTracingSession implements Extensions.ExtensionTraceProvider.TracingSession, Client { private readonly provider: Extensions.ExtensionTraceProvider.ExtensionTraceProvider; private readonly performanceModel: PerformanceModel; private completionCallback!: () => void; private readonly completionPromise: Promise<void>; private timeOffset: number; constructor(provider: Extensions.ExtensionTraceProvider.ExtensionTraceProvider, performanceModel: PerformanceModel) { this.provider = provider; this.performanceModel = performanceModel; this.completionPromise = new Promise(fulfill => { this.completionCallback = fulfill; }); this.timeOffset = 0; } loadingStarted(): void { } processingStarted(): void { } loadingProgress(_progress?: number): void { } loadingComplete(tracingModel: SDK.TracingModel.TracingModel|null): void { if (!tracingModel) { return; } this.performanceModel.addExtensionEvents(this.provider.longDisplayName(), tracingModel, this.timeOffset); this.completionCallback(); } complete(url: Platform.DevToolsPath.UrlString, timeOffsetMicroseconds: number): void { if (!url) { this.completionCallback(); return; } this.timeOffset = timeOffsetMicroseconds; TimelineLoader.loadFromURL(url, this); } start(): void { this.provider.start(this); } stop(): Promise<void> { this.provider.stop(); return this.completionPromise; } }