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 3c3ee756434fa57490f67648d142d139041fd99e..1d1478a9b880ae85d0a744982d89da12bedb6bb6 100644 |
--- a/content/browser/android/tracing_controller_android.cc |
+++ b/content/browser/android/tracing_controller_android.cc |
@@ -7,7 +7,9 @@ |
#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 "base/memory/ref_counted_memory.h" |
#include "content/public/browser/tracing_controller.h" |
#include "jni/TracingControllerAndroid_jni.h" |
@@ -76,6 +78,38 @@ 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) { |
Xianzhu
2014/05/05 16:32:21
As the Java side doesn't actually need the categor
r.kasibhatla
2014/05/06 11:04:06
Done.
|
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ |
+ 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); |
+ } |
+ base::RefCountedString* res = new base::RefCountedString(); |
+ base::JSONWriter::Write(category_list.get(), &res->data()); |
+ |
+ std::string received_category_list = res->data(); |
+ jstring category_list_as_json_string = base::android::ConvertUTF8ToJavaString( |
+ env, received_category_list).Release(); |
+ base::android::ScopedJavaLocalRef<jobject> obj = weak_java_object_.get(env); |
+ if (obj.obj()) |
+ Java_TracingControllerAndroid_onCategoryGroupsReceived( |
+ env, obj.obj(), category_list_as_json_string); |
+} |
+ |
static jstring GetDefaultCategories(JNIEnv* env, jobject obj) { |
return base::android::ConvertUTF8ToJavaString(env, |
base::debug::CategoryFilter::kDefaultCategoryFilterString).Release(); |