blob: bade8cd580ca71873bdad831b77efb4502020e3d [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.
(async function() {
TestRunner.addResult(`Test the set of visible records is correctly update when category filter changes\n`);
await TestRunner.loadModule('performance_test_runner');
await TestRunner.showPanel('timeline');
const sessionId = '4.20';
const mainThread = 1;
const pid = 100;
const testData = [
{
'args': {'data': {'sessionId': sessionId, 'frames': [
{'frame': 'frame1', 'url': 'frameurl', 'name': 'frame-name'}
]}},
'cat': 'disabled-by-default-devtools.timeline',
'name': 'TracingStartedInPage',
'ph': 'I',
'pid': pid,
'tid': mainThread,
'ts': 100,
},
{'name': 'foooooo', 'ts': 1000000, 'ph': 'B', 'tid': mainThread, 'pid': pid, 'cat': 'toplevel', 'args': {}},
{
'name': 'FunctionCall',
'ts': 1000001,
'ph': 'B',
'tid': mainThread,
'pid': pid,
'cat': 'disabled-by-default-devtools.timeline',
'args': {'data': {'frame': '0x2', 'scriptId': '3', 'scriptLine': 5, 'scriptName': 'http://example.com'}}
},
{
'name': 'ResourceSendRequest',
'ts': 1000002,
'tid': mainThread,
'pid': pid,
'cat': 'disabled-by-default-devtools.timeline',
'ph': 'I',
's': 'g',
'args':
{'data': {'frame': '0x2', 'requestId': '44.1', 'requestMethod': 'GET', 'url': 'http://example.com/foo.js'}}
},
{
'name': 'RecalculateStyles',
'ts': 1000003,
'ph': 'B',
'tid': mainThread,
'pid': pid,
'cat': 'disabled-by-default-devtools.timeline',
'args': {'beginData': {'frame': '0x2'}}
},
{
'name': 'RecalculateStyles',
'ts': 1009999,
'ph': 'E',
'tid': mainThread,
'pid': pid,
'cat': 'disabled-by-default-devtools.timeline',
'args': {'elementCount': 3}
},
{
'name': 'Layout',
'ts': 1010000,
'ph': 'B',
'tid': mainThread,
'pid': pid,
'cat': 'disabled-by-default-devtools.timeline',
'args': {'beginData': {'dirtyObjects': 1, 'frame': '0x2', 'partialLayout': false, 'totalObjects': 1}}
},
{
'name': 'Layout',
'ts': 1020999,
'ph': 'E',
'tid': mainThread,
'pid': pid,
'cat': 'disabled-by-default-devtools.timeline',
'args': {'endData': {'root': [0, 0, 1570, 0, 1570, 243, 0, 243], 'rootNode': 1}}
},
{
'name': 'FunctionCall',
'ts': 1099999,
'ph': 'E',
'tid': mainThread,
'pid': pid,
'cat': 'disabled-by-default-devtools.timeline',
'args': {}
},
{'name': 'foooooo', 'ts': 1099999, 'ph': 'E', 'tid': mainThread, 'pid': pid, 'cat': 'toplevel', 'args': {}}
];
const model = PerformanceTestRunner.createPerformanceModelWithEvents(testData);
const view = new Timeline.EventsTimelineTreeView(null);
view.setModel(model, PerformanceTestRunner.mainTrack());
view.updateContents(Timeline.TimelineSelection.fromRange(
model.timelineModel().minimumRecordTime(), model.timelineModel().maximumRecordTime()));
const filtersControl = view._filtersControl;
TestRunner.addResult('Original records');
filtersControl._notifyFiltersChanged();
await dumpVisibleRecords();
TestRunner.addResult(`Visible records when 'loading' is disabled`);
Timeline.TimelineUIUtils.categories().loading.hidden = true;
filtersControl._notifyFiltersChanged();
await dumpVisibleRecords();
TestRunner.addResult(`Visible records when 'scripting' is disabled`);
Timeline.TimelineUIUtils.categories().scripting.hidden = true;
filtersControl._notifyFiltersChanged();
await dumpVisibleRecords();
TestRunner.completeTest();
async function dumpVisibleRecords() {
await PerformanceTestRunner.walkTimelineEventTreeUnderNode(event => TestRunner.addResult(event.name), view._currentTree);
}
})();