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 {AddDefaults} from 'parsers/operations/add_defaults'; 18import {SetFormatters} from 'parsers/operations/set_formatters'; 19import {TranslateIntDef} from 'parsers/operations/translate_intdef'; 20import {WM_DENYLIST_PROPERTIES} from 'parsers/window_manager/wm_denylist_properties'; 21import {WM_EAGER_PROPERTIES} from 'parsers/window_manager/wm_eager_properties'; 22import {WmProtoType} from 'parsers/window_manager/wm_proto_type'; 23import * as WmTamperedProtos from 'parsers/window_manager/wm_tampered_protos'; 24import {RECT_FORMATTER} from 'trace/tree_node/formatters'; 25import {Operation} from 'trace/tree_node/operations/operation'; 26import {PropertyTreeNode} from 'trace/tree_node/property_tree_node'; 27import {AddIsVisible} from './add_is_visible'; 28import {AddWindowType} from './add_window_type'; 29 30export interface OperationLists { 31 common: Array<Operation<PropertyTreeNode>>; 32 eager: Array<Operation<PropertyTreeNode>>; 33 lazy: Array<Operation<PropertyTreeNode>>; 34} 35 36export const WM_OPERATION_LISTS = new Map<WmProtoType, OperationLists>([ 37 [ 38 WmProtoType.WindowManagerService, 39 { 40 common: [ 41 new SetFormatters(WmTamperedProtos.WindowManagerServiceField), 42 new TranslateIntDef(WmTamperedProtos.WindowManagerServiceField), 43 ], 44 eager: [ 45 new AddDefaults( 46 WmTamperedProtos.WindowManagerServiceField, 47 WM_EAGER_PROPERTIES.get(WmProtoType.WindowManagerService), 48 ), 49 ], 50 lazy: [ 51 new AddDefaults( 52 WmTamperedProtos.WindowManagerServiceField, 53 undefined, 54 WM_DENYLIST_PROPERTIES.get(WmProtoType.WindowManagerService), 55 ), 56 ], 57 }, 58 ], 59 60 [ 61 WmProtoType.RootWindowContainer, 62 { 63 common: [ 64 new SetFormatters(WmTamperedProtos.RootWindowContainerField), 65 new TranslateIntDef(WmTamperedProtos.RootWindowContainerField), 66 ], 67 eager: [ 68 new AddDefaults( 69 WmTamperedProtos.RootWindowContainerField, 70 WM_EAGER_PROPERTIES.get(WmProtoType.RootWindowContainer), 71 ), 72 ], 73 lazy: [ 74 new AddDefaults( 75 WmTamperedProtos.RootWindowContainerField, 76 undefined, 77 WM_DENYLIST_PROPERTIES.get(WmProtoType.RootWindowContainer), 78 ), 79 ], 80 }, 81 ], 82 83 [ 84 WmProtoType.WindowContainer, 85 { 86 common: [ 87 new SetFormatters(WmTamperedProtos.WindowContainerField), 88 new TranslateIntDef(WmTamperedProtos.WindowContainerField), 89 ], 90 eager: [ 91 new AddDefaults( 92 WmTamperedProtos.WindowContainerField, 93 WM_EAGER_PROPERTIES.get(WmProtoType.WindowContainer), 94 ), 95 new AddIsVisible(), 96 ], 97 lazy: [ 98 new AddDefaults( 99 WmTamperedProtos.WindowContainerField, 100 undefined, 101 WM_DENYLIST_PROPERTIES.get(WmProtoType.WindowContainer), 102 ), 103 ], 104 }, 105 ], 106 107 [ 108 WmProtoType.DisplayContent, 109 { 110 common: [ 111 new SetFormatters(WmTamperedProtos.DisplayContentField), 112 new TranslateIntDef(WmTamperedProtos.DisplayContentField), 113 ], 114 eager: [ 115 new AddDefaults( 116 WmTamperedProtos.DisplayContentField, 117 WM_EAGER_PROPERTIES.get(WmProtoType.DisplayContent), 118 ), 119 ], 120 lazy: [ 121 new AddDefaults( 122 WmTamperedProtos.DisplayContentField, 123 undefined, 124 WM_DENYLIST_PROPERTIES.get(WmProtoType.DisplayContent), 125 ), 126 ], 127 }, 128 ], 129 130 [ 131 WmProtoType.DisplayArea, 132 { 133 common: [ 134 new SetFormatters(WmTamperedProtos.DisplayAreaField), 135 new TranslateIntDef(WmTamperedProtos.DisplayAreaField), 136 ], 137 eager: [ 138 new AddDefaults( 139 WmTamperedProtos.DisplayAreaField, 140 WM_EAGER_PROPERTIES.get(WmProtoType.DisplayArea), 141 ), 142 ], 143 lazy: [ 144 new AddDefaults( 145 WmTamperedProtos.DisplayAreaField, 146 undefined, 147 WM_DENYLIST_PROPERTIES.get(WmProtoType.DisplayArea), 148 ), 149 ], 150 }, 151 ], 152 153 [ 154 WmProtoType.Task, 155 { 156 common: [ 157 new SetFormatters(WmTamperedProtos.TaskField), 158 new TranslateIntDef(WmTamperedProtos.TaskField), 159 ], 160 eager: [ 161 new AddDefaults( 162 WmTamperedProtos.TaskField, 163 WM_EAGER_PROPERTIES.get(WmProtoType.Task), 164 ), 165 ], 166 lazy: [ 167 new AddDefaults( 168 WmTamperedProtos.TaskField, 169 undefined, 170 WM_DENYLIST_PROPERTIES.get(WmProtoType.Task), 171 ), 172 ], 173 }, 174 ], 175 176 [ 177 WmProtoType.Activity, 178 { 179 common: [ 180 new SetFormatters(WmTamperedProtos.ActivityField), 181 new TranslateIntDef(WmTamperedProtos.ActivityField), 182 ], 183 eager: [ 184 new AddDefaults( 185 WmTamperedProtos.ActivityField, 186 WM_EAGER_PROPERTIES.get(WmProtoType.Activity), 187 ), 188 new AddIsVisible(), 189 ], 190 lazy: [ 191 new AddDefaults( 192 WmTamperedProtos.ActivityField, 193 undefined, 194 WM_DENYLIST_PROPERTIES.get(WmProtoType.Activity), 195 ), 196 ], 197 }, 198 ], 199 200 [ 201 WmProtoType.WindowToken, 202 { 203 common: [ 204 new SetFormatters(WmTamperedProtos.WindowTokenField), 205 new TranslateIntDef(WmTamperedProtos.WindowTokenField), 206 ], 207 eager: [ 208 new AddDefaults( 209 WmTamperedProtos.WindowTokenField, 210 WM_EAGER_PROPERTIES.get(WmProtoType.WindowToken), 211 ), 212 ], 213 lazy: [ 214 new AddDefaults( 215 WmTamperedProtos.WindowTokenField, 216 undefined, 217 WM_DENYLIST_PROPERTIES.get(WmProtoType.WindowToken), 218 ), 219 ], 220 }, 221 ], 222 223 [ 224 WmProtoType.WindowState, 225 { 226 common: [ 227 new SetFormatters( 228 WmTamperedProtos.WindowStateField, 229 new Map([ 230 ['containingFrame', RECT_FORMATTER], 231 ['parentFrame', RECT_FORMATTER], 232 ]), 233 ), 234 new TranslateIntDef(WmTamperedProtos.WindowStateField), 235 ], 236 eager: [ 237 new AddDefaults( 238 WmTamperedProtos.WindowStateField, 239 WM_EAGER_PROPERTIES.get(WmProtoType.WindowState), 240 ), 241 new AddWindowType(), 242 new AddIsVisible(), 243 ], 244 lazy: [ 245 new AddDefaults( 246 WmTamperedProtos.WindowStateField, 247 undefined, 248 WM_DENYLIST_PROPERTIES.get(WmProtoType.WindowState), 249 ), 250 ], 251 }, 252 ], 253 254 [ 255 WmProtoType.TaskFragment, 256 { 257 common: [ 258 new SetFormatters(WmTamperedProtos.TaskFragmentField), 259 new TranslateIntDef(WmTamperedProtos.TaskFragmentField), 260 ], 261 eager: [ 262 new AddDefaults( 263 WmTamperedProtos.TaskFragmentField, 264 WM_EAGER_PROPERTIES.get(WmProtoType.TaskFragment), 265 ), 266 ], 267 lazy: [ 268 new AddDefaults( 269 WmTamperedProtos.TaskFragmentField, 270 undefined, 271 WM_DENYLIST_PROPERTIES.get(WmProtoType.TaskFragment), 272 ), 273 ], 274 }, 275 ], 276]); 277