summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/IWindowManager.aidl15
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java19
-rw-r--r--services/core/java/com/android/server/wm/WindowTracing.java13
3 files changed, 42 insertions, 5 deletions
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index 9e103a38263c..700106739665 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -396,4 +396,19 @@ interface IWindowManager
* Return the touch region for the current IME window, or an empty region if there is none.
*/
Region getCurrentImeTouchRegion();
+
+ /**
+ * Starts a window trace.
+ */
+ void startWindowTrace();
+
+ /**
+ * Stops a window trace.
+ */
+ void stopWindowTrace();
+
+ /**
+ * Returns true if window trace is enabled.
+ */
+ boolean isWindowTraceEnabled();
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index e91b16d013c6..c6eb12b1bd86 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -5327,6 +5327,25 @@ public class WindowManagerService extends IWindowManager.Stub
reconfigureDisplayLocked(displayContent);
}
+ @Override
+ public void startWindowTrace(){
+ try {
+ mWindowTracing.startTrace(null /* printwriter */);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void stopWindowTrace(){
+ mWindowTracing.stopTrace(null /* printwriter */);
+ }
+
+ @Override
+ public boolean isWindowTraceEnabled() {
+ return mWindowTracing.isEnabled();
+ }
+
// -------------------------------------------------------------
// Internals
// -------------------------------------------------------------
diff --git a/services/core/java/com/android/server/wm/WindowTracing.java b/services/core/java/com/android/server/wm/WindowTracing.java
index c858b198df4f..a29978154a92 100644
--- a/services/core/java/com/android/server/wm/WindowTracing.java
+++ b/services/core/java/com/android/server/wm/WindowTracing.java
@@ -29,6 +29,7 @@ import android.content.Context;
import android.os.ShellCommand;
import android.os.SystemClock;
import android.os.Trace;
+import android.annotation.Nullable;
import android.util.Log;
import android.util.proto.ProtoOutputStream;
@@ -62,7 +63,7 @@ class WindowTracing {
mTraceFile = file;
}
- void startTrace(PrintWriter pw) throws IOException {
+ void startTrace(@Nullable PrintWriter pw) throws IOException {
if (IS_USER){
logAndPrintln(pw, "Error: Tracing is not supported on user builds.");
return;
@@ -81,13 +82,15 @@ class WindowTracing {
}
}
- private void logAndPrintln(PrintWriter pw, String msg) {
+ private void logAndPrintln(@Nullable PrintWriter pw, String msg) {
Log.i(TAG, msg);
- pw.println(msg);
- pw.flush();
+ if (pw != null) {
+ pw.println(msg);
+ pw.flush();
+ }
}
- void stopTrace(PrintWriter pw) {
+ void stopTrace(@Nullable PrintWriter pw) {
if (IS_USER){
logAndPrintln(pw, "Error: Tracing is not supported on user builds.");
return;