diff options
Diffstat (limited to 'chromium/content/browser/android/tracing_controller_android.cc')
-rw-r--r-- | chromium/content/browser/android/tracing_controller_android.cc | 50 |
1 files changed, 43 insertions, 7 deletions
diff --git a/chromium/content/browser/android/tracing_controller_android.cc b/chromium/content/browser/android/tracing_controller_android.cc index 75ac6d7c238..a9c5b408147 100644 --- a/chromium/content/browser/android/tracing_controller_android.cc +++ b/chromium/content/browser/android/tracing_controller_android.cc @@ -7,6 +7,7 @@ #include "base/android/jni_android.h" #include "base/android/jni_string.h" #include "base/debug/trace_event.h" +#include "base/json/json_writer.h" #include "base/logging.h" #include "content/public/browser/tracing_controller.h" #include "jni/TracingControllerAndroid_jni.h" @@ -30,16 +31,13 @@ void TracingControllerAndroid::Destroy(JNIEnv* env, jobject obj) { bool TracingControllerAndroid::StartTracing(JNIEnv* env, jobject obj, - jstring jfilename, jstring jcategories, jboolean record_continuously) { - file_path_ = base::FilePath( - base::android::ConvertJavaStringToUTF8(env, jfilename)); std::string categories = base::android::ConvertJavaStringToUTF8(env, jcategories); // This log is required by adb_profile_chrome.py. - LOG(WARNING) << "Logging performance trace to file: " << file_path_.value(); + LOG(WARNING) << "Logging performance trace to file"; return TracingController::GetInstance()->EnableRecording( categories, @@ -48,16 +46,29 @@ bool TracingControllerAndroid::StartTracing(JNIEnv* env, TracingController::EnableRecordingDoneCallback()); } -void TracingControllerAndroid::StopTracing(JNIEnv* env, jobject obj) { +void TracingControllerAndroid::StopTracing(JNIEnv* env, + jobject obj, + jstring jfilepath) { + base::FilePath file_path( + base::android::ConvertJavaStringToUTF8(env, jfilepath)); if (!TracingController::GetInstance()->DisableRecording( - file_path_, + file_path, base::Bind(&TracingControllerAndroid::OnTracingStopped, weak_factory_.GetWeakPtr()))) { LOG(ERROR) << "EndTracingAsync failed, forcing an immediate stop"; - OnTracingStopped(file_path_); + OnTracingStopped(file_path); } } +void TracingControllerAndroid::GenerateTracingFilePath( + base::FilePath* file_path) { + JNIEnv* env = base::android::AttachCurrentThread(); + ScopedJavaLocalRef<jstring> jfilename = + Java_TracingControllerAndroid_generateTracingFilePath(env); + *file_path = base::FilePath( + base::android::ConvertJavaStringToUTF8(env, jfilename.obj())); +} + void TracingControllerAndroid::OnTracingStopped( const base::FilePath& file_path) { JNIEnv* env = base::android::AttachCurrentThread(); @@ -66,6 +77,31 @@ void TracingControllerAndroid::OnTracingStopped( Java_TracingControllerAndroid_onTracingStopped(env, obj.obj()); } +bool TracingControllerAndroid::GetKnownCategoryGroupsAsync(JNIEnv* env, + jobject obj) { + if (!TracingController::GetInstance()->GetCategories( + base::Bind(&TracingControllerAndroid::OnKnownCategoriesReceived, + weak_factory_.GetWeakPtr()))) { + return false; + } + return true; +} + +void TracingControllerAndroid::OnKnownCategoriesReceived( + const std::set<std::string>& categories_received) { + scoped_ptr<base::ListValue> category_list(new base::ListValue()); + for (std::set<std::string>::const_iterator it = categories_received.begin(); + it != categories_received.end(); + ++it) { + category_list->AppendString(*it); + } + std::string received_category_list; + base::JSONWriter::Write(category_list.get(), &received_category_list); + + // This log is required by adb_profile_chrome.py. + LOG(WARNING) << "{\"traceCategoriesList\": " << received_category_list << "}"; +} + static jstring GetDefaultCategories(JNIEnv* env, jobject obj) { return base::android::ConvertUTF8ToJavaString(env, base::debug::CategoryFilter::kDefaultCategoryFilterString).Release(); |