// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_SINGLE_THREAD_IDLE_TASK_RUNNER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_SINGLE_THREAD_IDLE_TASK_RUNNER_H_ #include <map> #include <utility> #include "base/functional/bind.h" #include "base/functional/callback.h" #include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" #include "third_party/blink/renderer/platform/allow_discouraged_type.h" #include "third_party/blink/renderer/platform/platform_export.h" namespace blink { namespace scheduler { class IdleHelper; // A SingleThreadIdleTaskRunner is a task runner for running idle tasks. Idle // tasks have an unbound argument which is bound to a deadline // (in base::TimeTicks) when they are run. The idle task is expected to // complete by this deadline. // // This class uses base::RefCountedThreadSafe instead of WTF::ThreadSafe- // RefCounted, which is against the general rule for code in platform/ // (see audit_non_blink_usage.py). This is because SingleThreadIdleTaskRunner // is held by MainThreadSchedulerImpl and MainThreadSchedulerImpl is created // before WTF (and PartitionAlloc) is initialized. // TODO(yutak): Fix this. class SingleThreadIdleTaskRunner : public base::RefCountedThreadSafe<SingleThreadIdleTaskRunner> { … }; } // namespace scheduler } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_SINGLE_THREAD_IDLE_TASK_RUNNER_H_