diff --git a/libs/WindowManager/Shell/Android.bp b/libs/WindowManager/Shell/Android.bp index 307b82e695067..16b87c43fc584 100644 --- a/libs/WindowManager/Shell/Android.bp +++ b/libs/WindowManager/Shell/Android.bp @@ -83,6 +83,16 @@ genrule { } // End ProtoLog +java_library { + name: "WindowManager-Shell-proto", + + srcs: ["proto/*.proto"], + + proto: { + type: "nano", + }, +} + android_library { name: "WindowManager-Shell", srcs: [ @@ -94,6 +104,7 @@ android_library { ], 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 0000000000000..b9e72525f32b0 --- /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 0f2e25c7025bc..a9a5671d5b03b 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -22,6 +22,10 @@ java_library { 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 a1b55c4280290..92d2f421d6ee3 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 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa } } - 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 d940a6b5c4600..eb23b9d7a9942 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 @@ option java_multiple_files = true; 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 e4ff1b5dcf4f2..ee404ca980b20 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.SystemUI; 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 @@ import javax.inject.Inject; * 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 { private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final DisplayImeController mDisplayImeController; private final Optional mSplitScreenOptional; + private final ProtoTracer mProtoTracer; @Inject WMShell(Context context, KeyguardUpdateMonitor keyguardUpdateMonitor, DisplayImeController displayImeController, - Optional splitScreenOptional) { + Optional splitScreenOptional, + ProtoTracer protoTracer) { super(context); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mDisplayImeController = displayImeController; mSplitScreenOptional = splitScreenOptional; + mProtoTracer = protoTracer; + mProtoTracer.add(this); } @Override @@ -113,6 +121,15 @@ public final class WMShell extends SystemUI { }); } + @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