task_runner_android.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright 2018 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. #ifndef BASE_ANDROID_TASK_SCHEDULER_TASK_RUNNER_ANDROID_H_
  5. #define BASE_ANDROID_TASK_SCHEDULER_TASK_RUNNER_ANDROID_H_
  6. #include <memory>
  7. #include "base/android/jni_weak_ref.h"
  8. #include "base/task/single_thread_task_runner.h"
  9. namespace base {
  10. // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.base.task
  11. enum class TaskRunnerType { BASE, SEQUENCED, SINGLE_THREAD };
  12. // Native implementation backing TaskRunnerImpl.java which posts java tasks onto
  13. // a C++ TaskRunner.
  14. class TaskRunnerAndroid {
  15. public:
  16. explicit TaskRunnerAndroid(scoped_refptr<TaskRunner> task_runner,
  17. TaskRunnerType type);
  18. TaskRunnerAndroid(const TaskRunnerAndroid&) = delete;
  19. TaskRunnerAndroid& operator=(const TaskRunnerAndroid&) = delete;
  20. ~TaskRunnerAndroid();
  21. void Destroy(JNIEnv* env);
  22. void PostDelayedTask(JNIEnv* env,
  23. const base::android::JavaRef<jobject>& task,
  24. jlong delay,
  25. jstring runnable_class_name);
  26. bool BelongsToCurrentThread(JNIEnv* env);
  27. static std::unique_ptr<TaskRunnerAndroid> Create(
  28. JNIEnv* env,
  29. jint task_runner_type,
  30. jint priority,
  31. jboolean may_block,
  32. jboolean use_thread_pool,
  33. jbyte extension_id,
  34. const base::android::JavaParamRef<jbyteArray>& extension_data);
  35. private:
  36. const scoped_refptr<TaskRunner> task_runner_;
  37. const TaskRunnerType type_;
  38. };
  39. } // namespace base
  40. #endif // BASE_ANDROID_TASK_SCHEDULER_TASK_RUNNER_ANDROID_H_