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