1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_BROWSER_ANDROID_TRACING_CONTROLLER_ANDROID_H_ 6 #define CONTENT_BROWSER_ANDROID_TRACING_CONTROLLER_ANDROID_H_ 7 8 #include <set> 9 10 #include "base/android/jni_weak_ref.h" 11 #include "base/files/file_path.h" 12 #include "base/memory/weak_ptr.h" 13 14 namespace content { 15 16 // This class implements the native methods of TracingControllerAndroid.java 17 class TracingControllerAndroid { 18 public: 19 TracingControllerAndroid(JNIEnv* env, jobject obj); 20 void Destroy(JNIEnv* env, jobject obj); 21 22 bool StartTracing(JNIEnv* env, 23 jobject obj, 24 jstring categories, 25 jstring trace_options); 26 void StopTracing(JNIEnv* env, jobject obj, jstring jfilepath); 27 bool GetKnownCategoryGroupsAsync(JNIEnv* env, jobject obj); 28 static void GenerateTracingFilePath(base::FilePath* file_path); 29 30 private: 31 ~TracingControllerAndroid(); 32 void OnTracingStopped(); 33 void OnKnownCategoriesReceived( 34 const std::set<std::string>& categories_received); 35 36 JavaObjectWeakGlobalRef weak_java_object_; 37 base::WeakPtrFactory<TracingControllerAndroid> weak_factory_; 38 39 DISALLOW_COPY_AND_ASSIGN(TracingControllerAndroid); 40 }; 41 42 // Register this class's native methods through jni. 43 bool RegisterTracingControllerAndroid(JNIEnv* env); 44 45 } // namespace content 46 47 #endif // CONTENT_BROWSER_ANDROID_TRACING_CONTROLLER_ANDROID_H_ 48