1 // Copyright 2017 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 THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_MAIN_THREAD_SCHEDULER_HELPER_H_
6 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_MAIN_THREAD_SCHEDULER_HELPER_H_
7 
8 #include "third_party/blink/renderer/platform/scheduler/common/scheduler_helper.h"
9 
10 #include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h"
11 
12 namespace blink {
13 namespace scheduler {
14 
15 class MainThreadSchedulerImpl;
16 
17 // TODO(carlscab): This class is not really needed and should be removed
18 class PLATFORM_EXPORT MainThreadSchedulerHelper : public SchedulerHelper {
19  public:
20   // |sequence_manager| must remain valid until Shutdown() is called or the
21   // object is destroyed. |main_thread_scheduler| must remain valid for the
22   // entire lifetime of this object.
23   MainThreadSchedulerHelper(
24       base::sequence_manager::SequenceManager* sequence_manager,
25       MainThreadSchedulerImpl* main_thread_scheduler);
26   ~MainThreadSchedulerHelper() override;
27 
28   scoped_refptr<MainThreadTaskQueue> NewTaskQueue(
29       const MainThreadTaskQueue::QueueCreationParams& params);
30 
31   scoped_refptr<MainThreadTaskQueue> DefaultMainThreadTaskQueue();
32   scoped_refptr<MainThreadTaskQueue> ControlMainThreadTaskQueue();
33   scoped_refptr<base::SingleThreadTaskRunner> DeprecatedDefaultTaskRunner();
34 
35   const scoped_refptr<base::SingleThreadTaskRunner>& DefaultTaskRunner()
36       override;
37   const scoped_refptr<base::SingleThreadTaskRunner>& ControlTaskRunner()
38       override;
39 
40  protected:
41   void ShutdownAllQueues() override;
42 
43  private:
44   MainThreadSchedulerImpl* main_thread_scheduler_;  // NOT OWNED
45 
46   const scoped_refptr<MainThreadTaskQueue> default_task_queue_;
47   const scoped_refptr<MainThreadTaskQueue> control_task_queue_;
48 
49 #if DCHECK_IS_ON()
50   bool created_compositor_task_queue_ = false;
51 #endif  // DCHECK_IS_ON()
52 
53   DISALLOW_COPY_AND_ASSIGN(MainThreadSchedulerHelper);
54 };
55 
56 }  // namespace scheduler
57 }  // namespace blink
58 
59 #endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_MAIN_THREAD_SCHEDULER_HELPER_H_
60