summaryrefslogtreecommitdiffstats
path: root/base/android/trace_event_binding.cc
diff options
context:
space:
mode:
authorepenner@chromium.org <epenner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-23 23:10:10 +0000
committerepenner@chromium.org <epenner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-23 23:10:10 +0000
commit2df62300923e8a866f8fb392d74d615993671112 (patch)
tree788af86e3ebb29f223d283e97ad4d1d270b81021 /base/android/trace_event_binding.cc
parentc3ac87446a3964d40b17ee8178c175835f2ad5ae (diff)
downloadchromium_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.cc22
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) {