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 {assertDefined} from 'common/assert_utils'; 18import {TamperedMessageType} from 'parsers/tampered_message_type'; 19import {TamperedProtos} from 'parsers/window_manager/tampered_protos'; 20import root from 'protos/windowmanager/latest/json'; 21 22const Wrapper = TamperedMessageType.tamper( 23 root.lookupType('perfetto.protos.Wrapper'), 24); 25 26const entryField = assertDefined(Wrapper.fields['windowmanagerTraceEntry']); 27 28const windowManagerServiceField = assertDefined(entryField.tamperedMessageType) 29 .fields['windowManagerService']; 30 31const rootWindowContainerField = assertDefined( 32 windowManagerServiceField.tamperedMessageType, 33).fields['rootWindowContainer']; 34 35const windowContainerField = assertDefined( 36 rootWindowContainerField.tamperedMessageType, 37).fields['windowContainer']; 38 39const windowContainerChildField = assertDefined( 40 windowContainerField.tamperedMessageType, 41).fields['children']; 42 43export const TAMPERED_PROTOS_LATEST: TamperedProtos = { 44 entryField, 45 46 windowManagerServiceField, 47 48 rootWindowContainerField: assertDefined( 49 windowManagerServiceField.tamperedMessageType, 50 ).fields['rootWindowContainer'], 51 52 windowContainerField: assertDefined( 53 rootWindowContainerField.tamperedMessageType, 54 ).fields['windowContainer'], 55 56 windowContainerChildField: assertDefined( 57 windowContainerField.tamperedMessageType, 58 ).fields['children'], 59 60 displayContentField: assertDefined( 61 windowContainerChildField.tamperedMessageType, 62 ).fields['displayContent'], 63 64 displayAreaField: assertDefined(windowContainerChildField.tamperedMessageType) 65 .fields['displayArea'], 66 67 taskField: assertDefined(windowContainerChildField.tamperedMessageType) 68 .fields['task'], 69 70 activityField: assertDefined(windowContainerChildField.tamperedMessageType) 71 .fields['activity'], 72 73 windowTokenField: assertDefined(windowContainerChildField.tamperedMessageType) 74 .fields['windowToken'], 75 76 windowStateField: assertDefined(windowContainerChildField.tamperedMessageType) 77 .fields['window'], 78 79 taskFragmentField: assertDefined( 80 windowContainerChildField.tamperedMessageType, 81 ).fields['taskFragment'], 82}; 83