UNPKG

1.86 kBPlain TextView Raw
1// Copyright 2017 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5import type * as SDK from '../../core/sdk/sdk.js';
6
7import {RecordType, TimelineModelImpl} from './TimelineModel.js';
8
9export class TimelineModelFilter {
10 accept(_event: SDK.TracingModel.Event): boolean {
11 return true;
12 }
13}
14
15export class TimelineVisibleEventsFilter extends TimelineModelFilter {
16 private readonly visibleTypes: Set<string>;
17 constructor(visibleTypes: string[]) {
18 super();
19 this.visibleTypes = new Set(visibleTypes);
20 }
21
22 accept(event: SDK.TracingModel.Event): boolean {
23 return this.visibleTypes.has(TimelineVisibleEventsFilter.eventType(event));
24 }
25
26 static eventType(event: SDK.TracingModel.Event): RecordType {
27 if (event.hasCategory(TimelineModelImpl.Category.Console)) {
28 return RecordType.ConsoleTime;
29 }
30 if (event.hasCategory(TimelineModelImpl.Category.UserTiming)) {
31 return RecordType.UserTiming;
32 }
33 if (event.hasCategory(TimelineModelImpl.Category.LatencyInfo)) {
34 return RecordType.LatencyInfo;
35 }
36 return event.name as RecordType;
37 }
38}
39
40export class TimelineInvisibleEventsFilter extends TimelineModelFilter {
41 private invisibleTypes: Set<string>;
42 constructor(invisibleTypes: string[]) {
43 super();
44 this.invisibleTypes = new Set(invisibleTypes);
45 }
46
47 accept(event: SDK.TracingModel.Event): boolean {
48 return !this.invisibleTypes.has(TimelineVisibleEventsFilter.eventType(event));
49 }
50}
51
52export class ExclusiveNameFilter extends TimelineModelFilter {
53 private excludeNames: Set<string>;
54 constructor(excludeNames: string[]) {
55 super();
56 this.excludeNames = new Set(excludeNames);
57 }
58
59 accept(event: SDK.TracingModel.Event): boolean {
60 return !this.excludeNames.has(event.name);
61 }
62}