Index: content/browser/android/tracing_controller_android.cc |
diff --git a/content/browser/android/tracing_controller_android.cc b/content/browser/android/tracing_controller_android.cc |
index 42d147e821d6842a3b5cda028148a3df1a0879f6..75ac6d7c2385aaf4d7710990b9907b837683504e 100644 |
--- a/content/browser/android/tracing_controller_android.cc |
+++ b/content/browser/android/tracing_controller_android.cc |
@@ -6,12 +6,9 @@ |
#include "base/android/jni_android.h" |
#include "base/android/jni_string.h" |
-#include "base/command_line.h" |
#include "base/debug/trace_event.h" |
-#include "base/files/file_path.h" |
#include "base/logging.h" |
-#include "content/browser/tracing/trace_subscriber_stdio.h" |
-#include "content/public/browser/trace_controller.h" |
+#include "content/public/browser/tracing_controller.h" |
#include "jni/TracingControllerAndroid_jni.h" |
namespace content { |
@@ -21,29 +18,9 @@ static jlong Init(JNIEnv* env, jobject obj) { |
return reinterpret_cast<intptr_t>(profiler); |
} |
-class TracingControllerAndroid::Subscriber |
- : public content::TraceSubscriberStdio { |
- public: |
- Subscriber(TracingControllerAndroid* profiler, const base::FilePath& path) |
- : TraceSubscriberStdio(path, FILE_TYPE_ARRAY, false), |
- profiler_(profiler) {} |
- |
- void set_profiler(TracingControllerAndroid* profiler) { |
- CHECK(!profiler_); |
- profiler_ = profiler; |
- } |
- |
- virtual void OnEndTracingComplete() OVERRIDE { |
- TraceSubscriberStdio::OnEndTracingComplete(); |
- profiler_->OnTracingStopped(); |
- } |
- |
- private: |
- TracingControllerAndroid* profiler_; |
-}; |
- |
TracingControllerAndroid::TracingControllerAndroid(JNIEnv* env, jobject obj) |
- : weak_java_object_(env, obj) {} |
+ : weak_java_object_(env, obj), |
+ weak_factory_(this) {} |
TracingControllerAndroid::~TracingControllerAndroid() {} |
@@ -56,39 +33,37 @@ bool TracingControllerAndroid::StartTracing(JNIEnv* env, |
jstring jfilename, |
jstring jcategories, |
jboolean record_continuously) { |
- if (subscriber_.get()) { |
- return false; |
- } |
- std::string filename = base::android::ConvertJavaStringToUTF8(env, jfilename); |
+ file_path_ = base::FilePath( |
+ base::android::ConvertJavaStringToUTF8(env, jfilename)); |
std::string categories = |
base::android::ConvertJavaStringToUTF8(env, jcategories); |
- subscriber_.reset(new Subscriber(this, base::FilePath(filename))); |
- return TraceController::GetInstance()->BeginTracing( |
- subscriber_.get(), |
+ |
+ // This log is required by adb_profile_chrome.py. |
+ LOG(WARNING) << "Logging performance trace to file: " << file_path_.value(); |
+ |
+ return TracingController::GetInstance()->EnableRecording( |
categories, |
- record_continuously ? base::debug::TraceLog::RECORD_CONTINUOUSLY |
- : base::debug::TraceLog::RECORD_UNTIL_FULL); |
+ record_continuously ? TracingController::RECORD_CONTINUOUSLY |
+ : TracingController::DEFAULT_OPTIONS, |
+ TracingController::EnableRecordingDoneCallback()); |
} |
void TracingControllerAndroid::StopTracing(JNIEnv* env, jobject obj) { |
- if (!subscriber_.get()) { |
- return; |
- } |
- TraceController* controller = TraceController::GetInstance(); |
- if (!controller->EndTracingAsync(subscriber_.get())) { |
+ if (!TracingController::GetInstance()->DisableRecording( |
+ file_path_, |
+ base::Bind(&TracingControllerAndroid::OnTracingStopped, |
+ weak_factory_.GetWeakPtr()))) { |
LOG(ERROR) << "EndTracingAsync failed, forcing an immediate stop"; |
- controller->CancelSubscriber(subscriber_.get()); |
- OnTracingStopped(); |
+ OnTracingStopped(file_path_); |
} |
} |
-void TracingControllerAndroid::OnTracingStopped() { |
+void TracingControllerAndroid::OnTracingStopped( |
+ const base::FilePath& file_path) { |
JNIEnv* env = base::android::AttachCurrentThread(); |
base::android::ScopedJavaLocalRef<jobject> obj = weak_java_object_.get(env); |
- if (obj.obj()) { |
+ if (obj.obj()) |
Java_TracingControllerAndroid_onTracingStopped(env, obj.obj()); |
- } |
- subscriber_.reset(); |
} |
static jstring GetDefaultCategories(JNIEnv* env, jobject obj) { |