1 /*
2  * Copyright (C) 2020 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 
17 package com.android.internal.protolog;
18 
19 import com.android.internal.protolog.common.IProtoLogGroup;
20 
21 /**
22  * Defines logging groups for ProtoLog.
23  *
24  * This file is used by the ProtoLogTool to generate optimized logging code. All of its dependencies
25  * must be included in services.core.wm.protologgroups build target.
26  */
27 public enum ProtoLogGroup implements IProtoLogGroup {
28     WM_ERROR(true, true, true, Consts.TAG_WM),
29     WM_DEBUG_ORIENTATION(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
30             Consts.TAG_WM),
31     WM_DEBUG_FOCUS_LIGHT(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
32             Consts.TAG_WM),
33     WM_DEBUG_BOOT(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
34             Consts.TAG_WM),
35     WM_DEBUG_RESIZE(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
36             Consts.TAG_WM),
37     WM_DEBUG_ADD_REMOVE(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
38             Consts.TAG_WM),
39     WM_DEBUG_CONFIGURATION(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
40             Consts.TAG_WM),
41     WM_DEBUG_SWITCH(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
42             Consts.TAG_WM),
43     WM_DEBUG_CONTAINERS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
44             Consts.TAG_WM),
45     WM_DEBUG_FOCUS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
46             Consts.TAG_WM),
47     WM_DEBUG_IMMERSIVE(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
48             Consts.TAG_WM),
49     WM_DEBUG_LOCKTASK(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
50             Consts.TAG_WM),
51     WM_DEBUG_STATES(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
52             Consts.TAG_WM),
53     WM_DEBUG_TASKS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
54             Consts.TAG_WM),
55     WM_DEBUG_STARTING_WINDOW(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
56             Consts.TAG_WM),
57     WM_SHOW_TRANSACTIONS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
58             Consts.TAG_WM),
59     WM_SHOW_SURFACE_ALLOC(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
60             Consts.TAG_WM),
61     WM_DEBUG_APP_TRANSITIONS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
62             Consts.TAG_WM),
63     WM_DEBUG_APP_TRANSITIONS_ANIM(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
64             Consts.TAG_WM),
65     WM_DEBUG_RECENTS_ANIMATIONS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
66             Consts.TAG_WM),
67     WM_DEBUG_DRAW(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM),
68     WM_DEBUG_REMOTE_ANIMATIONS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
69             Consts.TAG_WM),
70     WM_DEBUG_SCREEN_ON(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM),
71     WM_DEBUG_KEEP_SCREEN_ON(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
72             Consts.TAG_WM),
73     WM_DEBUG_WINDOW_MOVEMENT(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
74             Consts.TAG_WM),
75     WM_DEBUG_IME(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
76             Consts.TAG_WM),
77     WM_DEBUG_WINDOW_ORGANIZER(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
78             Consts.TAG_WM),
79     WM_DEBUG_SYNC_ENGINE(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
80             Consts.TAG_WM),
81     WM_DEBUG_WINDOW_TRANSITIONS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, true,
82             Consts.TAG_WM),
83     WM_DEBUG_WINDOW_INSETS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
84             Consts.TAG_WM),
85     WM_DEBUG_LAYER_MIRRORING(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, true,
86             Consts.TAG_WM),
87     WM_DEBUG_WALLPAPER(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM),
88     TEST_GROUP(true, true, false, "WindowManagerProtoLogTest");
89 
90     private final boolean mEnabled;
91     private volatile boolean mLogToProto;
92     private volatile boolean mLogToLogcat;
93     private final String mTag;
94 
95     /**
96      * @param enabled     set to false to exclude all log statements for this group from
97      *                    compilation,
98      *                    they will not be available in runtime.
99      * @param logToProto  enable binary logging for the group
100      * @param logToLogcat enable text logging for the group
101      * @param tag         name of the source of the logged message
102      */
ProtoLogGroup(boolean enabled, boolean logToProto, boolean logToLogcat, String tag)103     ProtoLogGroup(boolean enabled, boolean logToProto, boolean logToLogcat, String tag) {
104         this.mEnabled = enabled;
105         this.mLogToProto = logToProto;
106         this.mLogToLogcat = logToLogcat;
107         this.mTag = tag;
108     }
109 
110     @Override
isEnabled()111     public boolean isEnabled() {
112         return mEnabled;
113     }
114 
115     @Override
isLogToProto()116     public boolean isLogToProto() {
117         return mLogToProto;
118     }
119 
120     @Override
isLogToLogcat()121     public boolean isLogToLogcat() {
122         return mLogToLogcat;
123     }
124 
125     @Override
isLogToAny()126     public boolean isLogToAny() {
127         return mLogToLogcat || mLogToProto;
128     }
129 
130     @Override
getTag()131     public String getTag() {
132         return mTag;
133     }
134 
135     @Override
setLogToProto(boolean logToProto)136     public void setLogToProto(boolean logToProto) {
137         this.mLogToProto = logToProto;
138     }
139 
140     @Override
setLogToLogcat(boolean logToLogcat)141     public void setLogToLogcat(boolean logToLogcat) {
142         this.mLogToLogcat = logToLogcat;
143     }
144 
145     private static class Consts {
146         private static final String TAG_WM = "WindowManager";
147 
148         private static final boolean ENABLE_DEBUG = true;
149         private static final boolean ENABLE_LOG_TO_PROTO_DEBUG = true;
150     }
151 }
152