diff options
author | epenner@chromium.org <epenner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-23 23:10:10 +0000 |
---|---|---|
committer | epenner@chromium.org <epenner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-23 23:10:10 +0000 |
commit | 2df62300923e8a866f8fb392d74d615993671112 (patch) | |
tree | 788af86e3ebb29f223d283e97ad4d1d270b81021 /base/android/trace_event_binding.cc | |
parent | c3ac87446a3964d40b17ee8178c175835f2ad5ae (diff) | |
download | chromium_src-2df62300923e8a866f8fb392d74d615993671112.zip chromium_src-2df62300923e8a866f8fb392d74d615993671112.tar.gz chromium_src-2df62300923e8a866f8fb392d74d615993671112.tar.bz2 |
TRACING: Enable java tracing from native also
Currently java traces are enabled in Java only when tracing
that is triggered from an Android intent. This flips it
around so we always notify Java to start tracing, no
matter how tracing is enabled.
The case that wasn't working in this case is the 'dev tools
tracing handler' which is how tracing is enabled for
telemetry.
BUG=None
Review URL: https://codereview.chromium.org/237853005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@265763 0039d316-1c4b-4281-b951-d872f2087c98
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) { |