diff options
author | kangyuan.shu@intel.com <kangyuan.shu@intel.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-09 07:42:05 +0000 |
---|---|---|
committer | kangyuan.shu@intel.com <kangyuan.shu@intel.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-09 07:42:05 +0000 |
commit | 7e5eb31c900e0a5f00f76d8171a552f669b0073d (patch) | |
tree | 88156a511b2fb2590e8002fbc5b76759008f451c /content/browser | |
parent | 1e0f8d69ddd5b4c0223033d84305869e3a399563 (diff) | |
download | chromium_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.cc | 2 | ||||
-rw-r--r-- | content/browser/android/tracing_intent_handler.cc | 53 | ||||
-rw-r--r-- | content/browser/android/tracing_intent_handler.h | 32 |
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 |