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 {Store} from 'common/store'; 18import {Trace} from 'trace/trace'; 19import {Traces} from 'trace/traces'; 20import {TraceType} from 'trace/trace_type'; 21import {HierarchyTreeNode} from 'trace/tree_node/hierarchy_tree_node'; 22import { 23 AbstractHierarchyViewerPresenter, 24 NotifyHierarchyViewCallbackType, 25} from 'viewers/common/abstract_hierarchy_viewer_presenter'; 26import {DisplayIdentifier} from 'viewers/common/display_identifier'; 27import {HierarchyPresenter} from 'viewers/common/hierarchy_presenter'; 28import {PropertiesPresenter} from 'viewers/common/properties_presenter'; 29import {RectsPresenter} from 'viewers/common/rects_presenter'; 30import {RectShowState} from 'viewers/common/rect_show_state'; 31import {TextFilter} from 'viewers/common/text_filter'; 32import {UiDataHierarchy} from 'viewers/common/ui_data_hierarchy'; 33import {UiHierarchyTreeNode} from 'viewers/common/ui_hierarchy_tree_node'; 34import {UiPropertyTreeNode} from 'viewers/common/ui_property_tree_node'; 35import {UserOptions} from 'viewers/common/user_options'; 36import {UiRect} from 'viewers/components/rects/ui_rect'; 37 38export class MockPresenter extends AbstractHierarchyViewerPresenter<UiDataHierarchy> { 39 protected override hierarchyPresenter = new HierarchyPresenter( 40 {opt: {name: '', enabled: false}}, 41 new TextFilter(), 42 [], 43 true, 44 false, 45 this.getEntryFormattedTimestamp, 46 ); 47 protected override propertiesPresenter = new PropertiesPresenter( 48 {opt: {name: '', enabled: false}}, 49 new TextFilter(), 50 [], 51 ); 52 uiRects: UiRect[] = []; 53 displays: DisplayIdentifier[] = []; 54 55 constructor( 56 trace: Trace<HierarchyTreeNode>, 57 traces: Traces, 58 storage: Store, 59 notifyViewCallback: NotifyHierarchyViewCallbackType<UiDataHierarchy>, 60 protected readonly multiTraceType: TraceType | undefined, 61 ) { 62 super(trace, traces, storage, notifyViewCallback, new MockData()); 63 } 64 65 initializeRectsPresenter() { 66 this.rectsPresenter = new RectsPresenter( 67 {opt: {name: 'Test opt', enabled: false}}, 68 () => this.uiRects, 69 () => this.displays, 70 ); 71 } 72 73 override async onHighlightedNodeChange(node: UiHierarchyTreeNode) { 74 await this.applyHighlightedNodeChange(node); 75 this.refreshHierarchyViewerUiData(); 76 } 77 78 override async onHighlightedIdChange(id: string) { 79 await this.applyHighlightedIdChange(id); 80 this.refreshHierarchyViewerUiData(); 81 } 82 83 protected override keepCalculated(): boolean { 84 return false; 85 } 86 87 protected override getOverrideDisplayName(): string | undefined { 88 return undefined; 89 } 90 91 protected override refreshUIData(): void { 92 this.refreshHierarchyViewerUiData(); 93 } 94} 95 96export class MockData implements UiDataHierarchy { 97 highlightedItem = ''; 98 pinnedItems: UiHierarchyTreeNode[] = []; 99 hierarchyUserOptions: UserOptions = {}; 100 hierarchyTrees: UiHierarchyTreeNode[] | undefined; 101 propertiesUserOptions: UserOptions = {}; 102 propertiesTree: UiPropertyTreeNode | undefined; 103 highlightedProperty = ''; 104 hierarchyFilter = new TextFilter(); 105 propertiesFilter = new TextFilter(); 106 isDarkMode?: boolean; 107 rectsToDraw: UiRect[] = []; 108 rectIdToShowState = new Map<string, RectShowState>(); 109 displays: DisplayIdentifier[] = []; 110 rectsUserOptions: UserOptions = {}; 111} 112