Index: base/android/java/src/org/chromium/base/TraceEvent.java |
diff --git a/base/android/java/src/org/chromium/base/TraceEvent.java b/base/android/java/src/org/chromium/base/TraceEvent.java |
index 71bfac1ef9a345526d135caefdb03d84e8bc4a39..b2f978244b16f61083be1c6a5feecb9b5a71f502 100644 |
--- a/base/android/java/src/org/chromium/base/TraceEvent.java |
+++ b/base/android/java/src/org/chromium/base/TraceEvent.java |
@@ -38,7 +38,14 @@ public class TraceEvent { |
} |
void beginHandling(final String line) { |
- if (sEnabled) nativeBeginToplevel(); |
+ if (sEnabled) { |
+ // Android Looper formats |line| as ">>>>> Dispatching to (TARGET) [...]" since at |
+ // least 2009 (Donut). Extracts the TARGET part of the message. |
+ int start = line.indexOf('(', 21); // strlen(">>>>> Dispatching to ") |
+ int end = start == -1 ? -1 : line.indexOf(')', start); |
+ String target = end != -1 ? line.substring(start + 1, end) : ""; |
+ nativeBeginToplevel(target); |
+ } |
} |
void endHandling(final String line) { |
@@ -307,7 +314,7 @@ public class TraceEvent { |
private static native void nativeInstant(String name, String arg); |
private static native void nativeBegin(String name, String arg); |
private static native void nativeEnd(String name, String arg); |
- private static native void nativeBeginToplevel(); |
+ private static native void nativeBeginToplevel(String target); |
private static native void nativeEndToplevel(); |
private static native void nativeStartAsync(String name, long id); |
private static native void nativeFinishAsync(String name, long id); |