60 lines
1.8 KiB
C++
60 lines
1.8 KiB
C++
// Copyright 2018 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef BASE_ANDROID_TASK_SCHEDULER_TASK_RUNNER_ANDROID_H_
|
|
#define BASE_ANDROID_TASK_SCHEDULER_TASK_RUNNER_ANDROID_H_
|
|
|
|
#include <memory>
|
|
|
|
#include "base/android/jni_weak_ref.h"
|
|
#include "base/android/task_scheduler/task_traits_android.h"
|
|
#include "base/base_export.h"
|
|
#include "base/functional/callback_forward.h"
|
|
#include "base/task/single_thread_task_runner.h"
|
|
|
|
namespace base {
|
|
|
|
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.base.task
|
|
enum class TaskRunnerType { BASE, SEQUENCED, SINGLE_THREAD };
|
|
|
|
// Native implementation backing TaskRunnerImpl.java which posts java tasks onto
|
|
// a C++ TaskRunner.
|
|
class BASE_EXPORT TaskRunnerAndroid {
|
|
public:
|
|
explicit TaskRunnerAndroid(scoped_refptr<TaskRunner> task_runner,
|
|
TaskRunnerType type);
|
|
|
|
TaskRunnerAndroid(const TaskRunnerAndroid&) = delete;
|
|
TaskRunnerAndroid& operator=(const TaskRunnerAndroid&) = delete;
|
|
|
|
~TaskRunnerAndroid();
|
|
|
|
void Destroy(JNIEnv* env);
|
|
|
|
void PostDelayedTask(JNIEnv* env,
|
|
const base::android::JavaRef<jobject>& task,
|
|
jlong delay,
|
|
jstring runnable_class_name);
|
|
|
|
bool BelongsToCurrentThread(JNIEnv* env);
|
|
|
|
static std::unique_ptr<TaskRunnerAndroid> Create(jint task_runner_type,
|
|
jint j_task_traits);
|
|
|
|
using UiThreadTaskRunnerCallback =
|
|
RepeatingCallback<scoped_refptr<base::SingleThreadTaskRunner>(
|
|
::TaskTraits)>;
|
|
|
|
static void SetUiThreadTaskRunnerCallback(
|
|
UiThreadTaskRunnerCallback callback);
|
|
|
|
private:
|
|
const scoped_refptr<TaskRunner> task_runner_;
|
|
const TaskRunnerType type_;
|
|
};
|
|
|
|
} // namespace base
|
|
|
|
#endif // BASE_ANDROID_TASK_SCHEDULER_TASK_RUNNER_ANDROID_H_
|