Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2104)

Unified Diff: content/shell/android/tracing_shell.cc

Issue 11647013: Enable Tracing on content shell for Android (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Add license header, javadoc comment and some minor fix Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/shell/android/tracing_shell.cc
diff --git a/content/shell/android/tracing_shell.cc b/content/shell/android/tracing_shell.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9ce19e49012ad3c41f899370d42212a7a745ed4e
--- /dev/null
+++ b/content/shell/android/tracing_shell.cc
@@ -0,0 +1,91 @@
+// 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 "tracing_shell.h"
Ted C 2012/12/26 16:18:28 should be the full path
+
+#include "base/android/jni_android.h"
+#include "base/android/jni_string.h"
+#include "base/bind.h"
+#include "base/bind_helpers.h"
+#include "base/lazy_instance.h"
+#include "base/logging.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/trace_controller.h"
+#include "jni/TraceController_jni.h"
+
+namespace content {
+
+base::LazyInstance<TracingIntentHandler> g_traceIntentHandler =
Ted C 2012/12/26 16:18:28 no camel caps in the name, so this should be g_tra
+ LAZY_INSTANCE_INITIALIZER;
+
+void WriteTraceFileCallback(const FilePath& path, std::string* contents) {
+ if (file_util::WriteFile(path, contents->c_str(), contents->size()) <= 0)
+ LOG(INFO) << "fail to write trace file";
+}
+
+TracingIntentHandler::TracingIntentHandler()
+ : in_tracing_(false) {
Ted C 2012/12/26 16:18:28 indent to 4
+}
+
+void TracingIntentHandler::OnEndTracingComplete() {
+ trace_data_to_save_.Finish();
+ BrowserThread::PostTask(
+ BrowserThread::FILE, FROM_HERE,
+ base::Bind(&WriteTraceFileCallback,
+ path_to_save_,
Ted C 2012/12/26 16:18:28 align with the (
+ &trace_data_to_save_.data_));
+ SetInTracing(false);
+}
+
+void TracingIntentHandler::OnTraceDataCollected(
+ const scoped_refptr<base::RefCountedString>& trace_fragment) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ trace_data_to_save_.AddFragment(trace_fragment->data());
+}
+
+void TracingIntentHandler::OnBeginTracing(std::string path) {
+ SetInTracing(true);
+ path_to_save_ = FilePath(path);
+ trace_data_to_save_.Start();
+ TraceController::GetInstance()->BeginTracing(this, std::string("-test*"));
+}
+
+void TracingIntentHandler::OnEndTracing() {
+ if (in_tracing() && !TraceController::GetInstance()->EndTracingAsync(this))
+ OnEndTracingComplete();
+}
+
+void TracingIntentHandler::JsonString::Start() {
+ first_ = true;
+ data_ = "[";
+}
+
+void TracingIntentHandler::JsonString::Finish() {
+ data_ += "]";
+}
+
+void TracingIntentHandler::JsonString::AddFragment(
+ const std::string& fragment) {
+ if (first_)
+ first_ = false;
+ else
+ data_ += ",";
+ data_ += fragment;
+}
+
+static void BeginTracing(JNIEnv* env, jclass clazz, jstring jspath) {
+ std::string path(base::android::ConvertJavaStringToUTF8(env, jspath));
+ g_traceIntentHandler.Get().OnBeginTracing(path);
+}
+
+static void EndTracing(JNIEnv* env, jclass clazz) {
+ g_traceIntentHandler.Get().OnEndTracing();
+}
+
+bool RegisterTracingHandler(JNIEnv* env) {
+ return RegisterNativesImpl(env);
+}
+
+} // namespace content
« content/shell/android/tracing_shell.h ('K') | « content/shell/android/tracing_shell.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698