xref: /aosp_15_r20/development/tools/winscope/src/test/unit/mock_hierarchy_viewer_presenter.ts (revision 90c8c64db3049935a07c6143d7fd006e26f8ecca)
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