diff options
Diffstat (limited to 'base/android/trace_event_binding.cc')
-rw-r--r-- | base/android/trace_event_binding.cc | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/base/android/trace_event_binding.cc b/base/android/trace_event_binding.cc index f802f3d..e261411 100644 --- a/base/android/trace_event_binding.cc +++ b/base/android/trace_event_binding.cc @@ -9,6 +9,7 @@ #include <set> #include "base/debug/trace_event.h" +#include "base/debug/trace_event_impl.h" #include "base/lazy_instance.h" #include "jni/TraceEvent_jni.h" @@ -54,10 +55,27 @@ class TraceEventDataConverter { DISALLOW_COPY_AND_ASSIGN(TraceEventDataConverter); }; +class TraceEnabledObserver : public debug::TraceLog::EnabledStateObserver { + public: + virtual void OnTraceLogEnabled() OVERRIDE { + JNIEnv* env = base::android::AttachCurrentThread(); + base::android::Java_TraceEvent_setEnabled(env, true); + } + virtual void OnTraceLogDisabled() OVERRIDE { + JNIEnv* env = base::android::AttachCurrentThread(); + base::android::Java_TraceEvent_setEnabled(env, false); + } +}; + +base::LazyInstance<TraceEnabledObserver>::Leaky g_trace_enabled_state_observer_; + } // namespace -static jboolean TraceEnabled(JNIEnv* env, jclass clazz) { - return base::debug::TraceLog::GetInstance()->IsEnabled(); +static void RegisterEnabledObserver(JNIEnv* env, jclass clazz) { + bool enabled = debug::TraceLog::GetInstance()->IsEnabled(); + base::android::Java_TraceEvent_setEnabled(env, enabled); + debug::TraceLog::GetInstance()->AddEnabledStateObserver( + g_trace_enabled_state_observer_.Pointer()); } static void StartATrace(JNIEnv* env, jclass clazz) { |