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/libs/WindowManager/Shell/Android.bp b/libs/WindowManager/Shell/Android.bp
index 307b82e..16b87c4 100644
--- a/libs/WindowManager/Shell/Android.bp
+++ b/libs/WindowManager/Shell/Android.bp
@@ -83,6 +83,16 @@
}
// End ProtoLog
+java_library {
+ name: "WindowManager-Shell-proto",
+
+ srcs: ["proto/*.proto"],
+
+ proto: {
+ type: "nano",
+ },
+}
+
android_library {
name: "WindowManager-Shell",
srcs: [
@@ -94,6 +104,7 @@
],
static_libs: [
"protolog-lib",
+ "WindowManager-Shell-proto",
],
manifest: "AndroidManifest.xml",
}
\ No newline at end of file
diff --git a/libs/WindowManager/Shell/proto/wm_shell_trace.proto b/libs/WindowManager/Shell/proto/wm_shell_trace.proto
new file mode 100644
index 0000000..b9e7252
--- /dev/null
+++ b/libs/WindowManager/Shell/proto/wm_shell_trace.proto
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package com.android.wm.shell;
+
+option java_multiple_files = true;
+
+message WmShellTraceProto {
+
+ // Not used, just a test value
+ optional bool test_value = 1;
+}
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++) {