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 "base/android/jni_helper.h"
9#include "base/files/file_path.h"
10#include "base/memory/weak_ptr.h"
11
12namespace content {
13
14// This class implements the native methods of TracingControllerAndroid.java
15class TracingControllerAndroid {
16 public:
17  TracingControllerAndroid(JNIEnv* env, jobject obj);
18  void Destroy(JNIEnv* env, jobject obj);
19
20  bool StartTracing(JNIEnv* env,
21                    jobject obj,
22                    jstring filename,
23                    jstring categories,
24                    jboolean record_continuously);
25  void StopTracing(JNIEnv* env, jobject obj);
26
27 private:
28  ~TracingControllerAndroid();
29  void OnTracingStopped(const base::FilePath& file_path);
30
31  JavaObjectWeakGlobalRef weak_java_object_;
32  base::FilePath file_path_;
33  base::WeakPtrFactory<TracingControllerAndroid> weak_factory_;
34
35  DISALLOW_COPY_AND_ASSIGN(TracingControllerAndroid);
36};
37
38// Register this class's native methods through jni.
39bool RegisterTracingControllerAndroid(JNIEnv* env);
40
41}  // namespace content
42
43#endif  // CONTENT_BROWSER_ANDROID_TRACING_CONTROLLER_ANDROID_H_
44