1// Copyright (C) 2024 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15import m from 'mithril'; 16import { 17 Details, 18 DetailsSchema, 19} from '../../components/widgets/sql/details/details'; 20import {DetailsShell} from '../../widgets/details_shell'; 21import {GridLayout, GridLayoutColumn} from '../../widgets/grid_layout'; 22import {TrackEventDetailsPanel} from '../../public/details_panel'; 23import {Trace} from '../../public/trace'; 24import d = DetailsSchema; 25 26export class ChromeTasksDetailsPanel implements TrackEventDetailsPanel { 27 private readonly data: Details; 28 29 constructor(trace: Trace, eventId: number) { 30 this.data = new Details(trace, 'chrome_tasks', eventId, { 31 'Task name': 'name', 32 'Start time': d.Timestamp('ts'), 33 'Duration': d.Interval('ts', 'dur'), 34 'Process': d.SqlIdRef('process', 'upid'), 35 'Thread': d.SqlIdRef('thread', 'utid'), 36 'Slice': d.SqlIdRef('slice', 'id'), 37 }); 38 } 39 40 render() { 41 return m( 42 DetailsShell, 43 { 44 title: 'Chrome Tasks', 45 }, 46 m(GridLayout, m(GridLayoutColumn, this.data.render())), 47 ); 48 } 49} 50