| 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) {
|
|
|