Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1285)

Unified Diff: content/public/android/java/src/org/chromium/content/common/TraceEvent.java

Issue 11345019: Make Chrome Trace work with Android ATrace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove redundant checking Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/common/TraceEvent.java
diff --git a/content/public/android/java/src/org/chromium/content/common/TraceEvent.java b/content/public/android/java/src/org/chromium/content/common/TraceEvent.java
index 143ca2be23a0c02674238429acc12395ea48f1f4..b9d5f38cf3e7de89b303d7bffe054f1b526289c7 100644
--- a/content/public/android/java/src/org/chromium/content/common/TraceEvent.java
+++ b/content/public/android/java/src/org/chromium/content/common/TraceEvent.java
@@ -5,8 +5,13 @@
package org.chromium.content.common;
import android.os.Looper;
+import android.util.Log;
import android.util.Printer;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
// Java mirror of Chrome trace event API. See
// base/debug/trace_event.h. Unlike the native version, Java does not
// have stack objects, so a TRACE_EVENT() which does both
@@ -36,7 +41,29 @@ public class TraceEvent {
* The native library must be loaded before calling this method.
*/
public static void setEnabledToMatchNative() {
- setEnabled(nativeTraceEnabled());
+ boolean enabled = nativeTraceEnabled();
+ try {
+ Class<?> traceClass = Class.forName("android.os.Trace");
+ Method m = traceClass.getDeclaredMethod("isTagEnabled", Long.TYPE);
+ Field f = traceClass.getField("TRACE_TAG_VIEW");
+ boolean atraceEnabled = (Boolean) m.invoke(traceClass, f.getLong(null));
+ if (atraceEnabled) nativeInitATrace();
+ enabled = enabled || atraceEnabled;
+ } catch (ClassNotFoundException e) {
+ Log.e("TraceEvent", "setEnabledToMatchNative", e);
+ } catch (NoSuchMethodException e) {
+ Log.e("TraceEvent", "setEnabledToMatchNative", e);
+ } catch (NoSuchFieldException e) {
+ Log.e("TraceEvent", "setEnabledToMatchNative", e);
+ } catch (IllegalArgumentException e) {
+ Log.e("TraceEvent", "setEnabledToMatchNative", e);
+ } catch (IllegalAccessException e) {
+ Log.e("TraceEvent", "setEnabledToMatchNative", e);
+ } catch (InvocationTargetException e) {
+ Log.e("TraceEvent", "setEnabledToMatchNative", e);
+ }
+
+ setEnabled(enabled);
}
/**
@@ -169,9 +196,7 @@ public class TraceEvent {
* for more information.
*/
public static void end() {
- if (sEnabled) {
- nativeEnd(getCallerName(), null);
- }
+ if (sEnabled) nativeEnd(getCallerName(), null);
}
/**
@@ -179,9 +204,7 @@ public class TraceEvent {
* @param name The name of the event.
*/
public static void end(String name) {
- if (sEnabled) {
- nativeEnd(name, null);
- }
+ if (sEnabled) nativeEnd(name, null);
}
/**
@@ -190,9 +213,7 @@ public class TraceEvent {
* @param arg The arguments of the event.
*/
public static void end(String name, String arg) {
- if (sEnabled) {
- nativeEnd(name, arg);
- }
+ if (sEnabled) nativeEnd(name, arg);
}
private static String getCallerName() {
@@ -211,6 +232,7 @@ public class TraceEvent {
}
private static native boolean nativeTraceEnabled();
+ private static native void nativeInitATrace();
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);
« base/debug/trace_event_android.cc ('K') | « content/common/android/trace_event_binding.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698