1/* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17import {TraceEntry} from 'trace/trace'; 18import {TraceType} from 'trace/trace_type'; 19import {HierarchyTreeNode} from 'trace/tree_node/hierarchy_tree_node'; 20import {PropertyTreeNode} from 'trace/tree_node/property_tree_node'; 21import {DisplayIdentifier} from 'viewers/common/display_identifier'; 22import {RectShowState} from 'viewers/common/rect_show_state'; 23import {TextFilter} from 'viewers/common/text_filter'; 24import { 25 LogEntry, 26 LogField, 27 LogHeader, 28 UiDataLog, 29} from 'viewers/common/ui_data_log'; 30import {UiPropertyTreeNode} from 'viewers/common/ui_property_tree_node'; 31import {UserOptions} from 'viewers/common/user_options'; 32import {RectSpec} from 'viewers/components/rects/rect_spec'; 33import {UiRect} from 'viewers/components/rects/ui_rect'; 34 35export class UiData implements UiDataLog { 36 constructor( 37 public headers: LogHeader[], 38 public entries: LogEntry[], 39 public selectedIndex: undefined | number, 40 public scrollToIndex: undefined | number, 41 public currentIndex: undefined | number, 42 public propertiesTree: undefined | UiPropertyTreeNode, 43 ) {} 44 45 isFetchingData = false; 46 47 highlightedProperty: string = ''; 48 dispatchPropertiesTree: UiPropertyTreeNode | undefined; 49 50 rectsToDraw: UiRect[] | undefined; 51 rectIdToShowState: Map<string, RectShowState> | undefined; 52 highlightedRect = ''; 53 rectsUserOptions: UserOptions | undefined; 54 displays: DisplayIdentifier[] = []; 55 rectSpec: RectSpec | undefined; 56 isDarkMode = false; 57 propertiesFilter = new TextFilter(); 58 dispatchPropertiesFilter = new TextFilter(); 59 60 readonly dependencies: TraceType[] = [TraceType.INPUT_EVENT_MERGED]; 61 62 static createEmpty(): UiData { 63 return new UiData([], [], undefined, undefined, undefined, undefined); 64 } 65} 66 67export class InputEntry implements LogEntry { 68 constructor( 69 public traceEntry: TraceEntry<PropertyTreeNode>, 70 public fields: LogField[], 71 public propertiesTree: PropertyTreeNode | undefined, 72 public dispatchPropertiesTree: PropertyTreeNode | undefined, 73 public surfaceFlingerEntry: TraceEntry<HierarchyTreeNode> | undefined, 74 ) {} 75} 76