Chromium Code Reviews| 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(); |