blob: bfba70fc3ecdefe949c03f8d1200aac430340068 [file] [log] [blame]
// Copyright 2017 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.
export class TimelineModelFilter {
/**
* @param {!SDK.TracingModel.Event} event
* @return {boolean}
*/
accept(event) {
return true;
}
}
export class TimelineVisibleEventsFilter extends TimelineModelFilter {
/**
* @param {!Array<string>} visibleTypes
*/
constructor(visibleTypes) {
super();
this._visibleTypes = new Set(visibleTypes);
}
/**
* @override
* @param {!SDK.TracingModel.Event} event
* @return {boolean}
*/
accept(event) {
return this._visibleTypes.has(TimelineVisibleEventsFilter._eventType(event));
}
/**
* @return {!TimelineModel.TimelineModel.RecordType}
*/
static _eventType(event) {
if (event.hasCategory(TimelineModel.TimelineModel.Category.Console)) {
return TimelineModel.TimelineModel.RecordType.ConsoleTime;
}
if (event.hasCategory(TimelineModel.TimelineModel.Category.UserTiming)) {
return TimelineModel.TimelineModel.RecordType.UserTiming;
}
if (event.hasCategory(TimelineModel.TimelineModel.Category.LatencyInfo)) {
return TimelineModel.TimelineModel.RecordType.LatencyInfo;
}
return /** @type !TimelineModel.TimelineModel.RecordType */ (event.name);
}
}
export class TimelineInvisibleEventsFilter extends TimelineModelFilter {
/**
* @param {!Array<string>} invisibleTypes
*/
constructor(invisibleTypes) {
super();
this._invisibleTypes = new Set(invisibleTypes);
}
/**
* @override
* @param {!SDK.TracingModel.Event} event
* @return {boolean}
*/
accept(event) {
return !this._invisibleTypes.has(TimelineVisibleEventsFilter._eventType(event));
}
}
export class ExclusiveNameFilter extends TimelineModelFilter {
/**
* @param {!Array<string>} excludeNames
*/
constructor(excludeNames) {
super();
this._excludeNames = new Set(excludeNames);
}
/**
* @override
* @param {!SDK.TracingModel.Event} event
* @return {boolean}
*/
accept(event) {
return !this._excludeNames.has(event.name);
}
}
/* Legacy exported object */
self.TimelineModel = self.TimelineModel || {};
/* Legacy exported object */
TimelineModel = TimelineModel || {};
/** @constructor */
TimelineModel.TimelineModelFilter = TimelineModelFilter;
/** @constructor */
TimelineModel.TimelineVisibleEventsFilter = TimelineVisibleEventsFilter;
/** @constructor */
TimelineModel.TimelineInvisibleEventsFilter = TimelineInvisibleEventsFilter;
/** @constructor */
TimelineModel.ExclusiveNameFilter = ExclusiveNameFilter;