Extending SysUI proto dump to WMShell
Bug: 161980310
Test: adb shell cmd statusbar tracing start/stop
adb pull /data/user_de/0/com.android.systemui/files/sysui_trace.pb
Change-Id: Ie99eac753905ee9938a84571943c85b0a2ad29ee
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index 0f2e25c..a9a5671 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -22,6 +22,10 @@
proto: {
type: "nano",
},
+
+ libs: [
+ "WindowManager-Shell-proto",
+ ],
}
java_library {
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java
index a1b55c4..92d2f42 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java
@@ -584,7 +584,7 @@
}
}
- Dependency.get(ProtoTracer.class).update();
+ Dependency.get(ProtoTracer.class).scheduleFrameUpdate();
}
private void updateDisabledForQuickstep() {
diff --git a/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto b/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto
index d940a6b..eb23b9d 100644
--- a/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto
+++ b/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto
@@ -16,6 +16,8 @@
syntax = "proto2";
+import "frameworks/base/libs/WindowManager/Shell/proto/wm_shell_trace.proto";
+
package com.android.systemui.tracing;
option java_multiple_files = true;
@@ -23,6 +25,7 @@
message SystemUiTraceProto {
optional EdgeBackGestureHandlerProto edge_back_gesture_handler = 1;
+ optional com.android.wm.shell.WmShellTraceProto wm_shell = 2;
}
message EdgeBackGestureHandlerProto {
diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java
index e4ff1b5..ee404ca 100644
--- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java
+++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java
@@ -27,8 +27,12 @@
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.TaskStackChangeListener;
+import com.android.systemui.shared.tracing.ProtoTraceable;
import com.android.systemui.stackdivider.SplitScreen;
+import com.android.systemui.tracing.ProtoTracer;
+import com.android.systemui.tracing.nano.SystemUiTraceProto;
import com.android.wm.shell.common.DisplayImeController;
+import com.android.wm.shell.nano.WmShellTraceProto;
import com.android.wm.shell.protolog.ShellProtoLogImpl;
import java.io.FileDescriptor;
@@ -42,19 +46,23 @@
* Proxy in SysUiScope to delegate events to controllers in WM Shell library.
*/
@SysUISingleton
-public final class WMShell extends SystemUI {
+public final class WMShell extends SystemUI implements ProtoTraceable<SystemUiTraceProto> {
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
private final DisplayImeController mDisplayImeController;
private final Optional<SplitScreen> mSplitScreenOptional;
+ private final ProtoTracer mProtoTracer;
@Inject
WMShell(Context context, KeyguardUpdateMonitor keyguardUpdateMonitor,
DisplayImeController displayImeController,
- Optional<SplitScreen> splitScreenOptional) {
+ Optional<SplitScreen> splitScreenOptional,
+ ProtoTracer protoTracer) {
super(context);
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mDisplayImeController = displayImeController;
mSplitScreenOptional = splitScreenOptional;
+ mProtoTracer = protoTracer;
+ mProtoTracer.add(this);
}
@Override
@@ -114,6 +122,15 @@
}
@Override
+ public void writeToProto(SystemUiTraceProto proto) {
+ if (proto.wmShell == null) {
+ proto.wmShell = new WmShellTraceProto();
+ }
+ // Dump to WMShell proto here
+ // TODO: Figure out how we want to synchronize while dumping to proto
+ }
+
+ @Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
// Handle commands if provided
for (int i = 0; i < args.length; i++) {