summaryrefslogtreecommitdiffstats
path: root/chromium/content/browser/android/tracing_controller_android.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/android/tracing_controller_android.cc')
-rw-r--r--chromium/content/browser/android/tracing_controller_android.cc50
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();