summaryrefslogtreecommitdiffstats
path: root/content/browser
diff options
context:
space:
mode:
authorkangyuan.shu@intel.com <kangyuan.shu@intel.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-09 07:42:05 +0000
committerkangyuan.shu@intel.com <kangyuan.shu@intel.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-09 07:42:05 +0000
commit7e5eb31c900e0a5f00f76d8171a552f669b0073d (patch)
tree88156a511b2fb2590e8002fbc5b76759008f451c /content/browser
parent1e0f8d69ddd5b4c0223033d84305869e3a399563 (diff)
downloadchromium_src-7e5eb31c900e0a5f00f76d8171a552f669b0073d.zip
chromium_src-7e5eb31c900e0a5f00f76d8171a552f669b0073d.tar.gz
chromium_src-7e5eb31c900e0a5f00f76d8171a552f669b0073d.tar.bz2
Enable Tracing on content shell for Android
BUG=166802 Review URL: https://chromiumcodereview.appspot.com/11647013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@175730 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser')
-rw-r--r--content/browser/android/browser_jni_registrar.cc2
-rw-r--r--content/browser/android/tracing_intent_handler.cc53
-rw-r--r--content/browser/android/tracing_intent_handler.h32
3 files changed, 87 insertions, 0 deletions
diff --git a/content/browser/android/browser_jni_registrar.cc b/content/browser/android/browser_jni_registrar.cc
index 15f8594..4d2b7ea 100644
--- a/content/browser/android/browser_jni_registrar.cc
+++ b/content/browser/android/browser_jni_registrar.cc
@@ -18,6 +18,7 @@
#include "content/browser/android/sandboxed_process_launcher.h"
#include "content/browser/android/surface_texture_peer_browser_impl.h"
#include "content/browser/android/touch_point.h"
+#include "content/browser/android/tracing_intent_handler.h"
#include "content/browser/android/web_contents_observer_android.h"
#include "content/browser/geolocation/location_api_adapter_android.h"
#include "content/browser/renderer_host/ime_adapter_android.h"
@@ -46,6 +47,7 @@ base::android::RegistrationMethod kContentRegisteredMethods[] = {
{ "RegisterImeAdapter", content::RegisterImeAdapter },
{ "SandboxedProcessLauncher", content::RegisterSandboxedProcessLauncher },
{ "TouchPoint", content::RegisterTouchPoint },
+ { "TracingIntentHandler", content::RegisterTracingIntentHandler },
{ "WebContentsObserverAndroid", content::RegisterWebContentsObserverAndroid },
{ "WebViewStatics", content::RegisterWebViewStatics },
};
diff --git a/content/browser/android/tracing_intent_handler.cc b/content/browser/android/tracing_intent_handler.cc
new file mode 100644
index 0000000..2b44a46
--- /dev/null
+++ b/content/browser/android/tracing_intent_handler.cc
@@ -0,0 +1,53 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/android/tracing_intent_handler.h"
+
+#include "base/android/jni_android.h"
+#include "base/android/jni_string.h"
+#include "base/logging.h"
+#include "content/public/browser/trace_controller.h"
+#include "jni/TracingIntentHandler_jni.h"
+
+namespace content {
+
+TracingIntentHandler* g_trace_intent_handler = NULL;
+
+TracingIntentHandler::TracingIntentHandler(const FilePath& path)
+ : TraceSubscriberStdio(path) {
+ TraceController::GetInstance()->BeginTracing(this, std::string("-test*"));
+}
+
+TracingIntentHandler::~TracingIntentHandler() {
+}
+
+void TracingIntentHandler::OnEndTracingComplete() {
+ TraceSubscriberStdio::OnEndTracingComplete();
+ delete this;
+}
+
+void TracingIntentHandler::OnEndTracing() {
+ if (!TraceController::GetInstance()->EndTracingAsync(this)) {
+ delete this;
+ }
+}
+
+static void BeginTracing(JNIEnv* env, jclass clazz, jstring jspath) {
+ std::string path(base::android::ConvertJavaStringToUTF8(env, jspath));
+ if (g_trace_intent_handler != NULL)
+ return;
+ g_trace_intent_handler = new TracingIntentHandler(FilePath(path));
+}
+
+static void EndTracing(JNIEnv* env, jclass clazz) {
+ DCHECK(!g_trace_intent_handler);
+ g_trace_intent_handler->OnEndTracing();
+ g_trace_intent_handler = NULL;
+}
+
+bool RegisterTracingIntentHandler(JNIEnv* env) {
+ return RegisterNativesImpl(env);
+}
+
+} // namespace content
diff --git a/content/browser/android/tracing_intent_handler.h b/content/browser/android/tracing_intent_handler.h
new file mode 100644
index 0000000..526f672e
--- /dev/null
+++ b/content/browser/android/tracing_intent_handler.h
@@ -0,0 +1,32 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_ANDROID_TRACING_INTENT_HANDLER_H
+#define CONTENT_BROWSER_ANDROID_TRACING_INTENT_HANDLER_H
+
+#include <jni.h>
+#include <string>
+
+#include "base/file_util.h"
+#include "content/browser/trace_subscriber_stdio.h"
+
+namespace content {
+
+// Registers the TracingIntentHandler native methods.
+bool RegisterTracingIntentHandler(JNIEnv* env);
+
+class TracingIntentHandler : public TraceSubscriberStdio {
+ public:
+ explicit TracingIntentHandler(const FilePath& path);
+ virtual ~TracingIntentHandler();
+
+ // TraceSubscriber implementation
+ virtual void OnEndTracingComplete() OVERRIDE;
+
+ // IntentHandler
+ void OnEndTracing();
+};
+
+} // namespace content
+#endif // CONTENT_BROWSER_ANDROID_TRACING_INTENT_HANDLER_H