| 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 67c5413093dbb453698e1106eb46b1f7f8fc97ee..ffd25284de7c73b1af9ff47d4e8db099deae5b34 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
|
| @@ -37,6 +37,32 @@ public class TraceEvent {
|
| }
|
| }
|
|
|
| + static {
|
| + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
| + try {
|
| + Class<?> systemPropertiesClass = Class.forName("android.os.SystemProperties");
|
| + Method addChangeCallbackMethod = systemPropertiesClass.getDeclaredMethod(
|
| + "addChangeCallback", Runnable.class);
|
| + addChangeCallbackMethod.invoke(null, new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + setEnabledToMatchNative();
|
| + }
|
| + });
|
| + } catch (ClassNotFoundException e) {
|
| + Log.e("TraceEvent", "init", e);
|
| + } catch (NoSuchMethodException e) {
|
| + Log.e("TraceEvent", "init", e);
|
| + } catch (IllegalArgumentException e) {
|
| + Log.e("TraceEvent", "init", e);
|
| + } catch (IllegalAccessException e) {
|
| + Log.e("TraceEvent", "init", e);
|
| + } catch (InvocationTargetException e) {
|
| + Log.e("TraceEvent", "init", e);
|
| + }
|
| + }
|
| + }
|
| +
|
| /**
|
| * Calling this will cause enabled() to be updated to match that set on the native side.
|
| * The native library must be loaded before calling this method.
|
| @@ -47,11 +73,22 @@ public class TraceEvent {
|
| if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
| 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;
|
| + long traceTagView = traceClass.getField("TRACE_TAG_VIEW").getLong(null);
|
| + String propertyTraceTagEnableFlags = (String) traceClass.getField(
|
| + "PROPERTY_TRACE_TAG_ENABLEFLAGS").get(null);
|
| +
|
| + Class<?> systemPropertiesClass = Class.forName("android.os.SystemProperties");
|
| + Method systemPropertiesGetLongMethod = systemPropertiesClass.getDeclaredMethod(
|
| + "getLong", String.class, Long.TYPE);
|
| + long enabledFlags = (Long) systemPropertiesGetLongMethod.invoke(
|
| + null, propertyTraceTagEnableFlags, 0);
|
| + Log.d("TraceEvent", "New enabled flags: " + enabledFlags);
|
| + if ((enabledFlags & traceTagView) != 0) {
|
| + nativeStartATrace();
|
| + enabled = true;
|
| + } else {
|
| + nativeStopATrace();
|
| + }
|
| } catch (ClassNotFoundException e) {
|
| Log.e("TraceEvent", "setEnabledToMatchNative", e);
|
| } catch (NoSuchMethodException e) {
|
| @@ -236,7 +273,8 @@ public class TraceEvent {
|
| }
|
|
|
| private static native boolean nativeTraceEnabled();
|
| - private static native void nativeInitATrace();
|
| + private static native void nativeStartATrace();
|
| + private static native void nativeStopATrace();
|
| 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);
|
|
|