Commit 4febae06 authored by Minoru Chikamune's avatar Minoru Chikamune Committed by Commit Bot

[MBI] Add default_task_queue to AgentGroupSchedulerImpl

[related design doc]
https://docs.google.com/document/d/1y-vHkrD1z2RtyWYwT6rJkSLHClYNjDDpUbTtBU7l95A

Bug: 1105403
Change-Id: I28ca5b34a0285d679e98786c84ed9c1b08a230a9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2413929
Commit-Queue: Minoru Chikamune <chikamune@chromium.org>
Reviewed-by: default avatarTal Pressman <talp@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#808185}
parent ee748aa1
...@@ -4,11 +4,18 @@ ...@@ -4,11 +4,18 @@
#include "third_party/blink/renderer/platform/scheduler/main_thread/agent_group_scheduler_impl.h" #include "third_party/blink/renderer/platform/scheduler/main_thread/agent_group_scheduler_impl.h"
#include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h" #include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h"
namespace blink { namespace blink {
namespace scheduler { namespace scheduler {
MainThreadTaskQueue::QueueCreationParams DefaultTaskQueueCreationParams() {
return MainThreadTaskQueue::QueueCreationParams(
MainThreadTaskQueue::QueueType::kDefault)
.SetShouldMonitorQuiescence(true);
}
static AgentGroupSchedulerImpl* g_current_agent_group_scheduler_impl; static AgentGroupSchedulerImpl* g_current_agent_group_scheduler_impl;
// static // static
...@@ -26,9 +33,14 @@ void AgentGroupSchedulerImpl::SetCurrent( ...@@ -26,9 +33,14 @@ void AgentGroupSchedulerImpl::SetCurrent(
AgentGroupSchedulerImpl::AgentGroupSchedulerImpl( AgentGroupSchedulerImpl::AgentGroupSchedulerImpl(
MainThreadSchedulerImpl* main_thread_scheduler) MainThreadSchedulerImpl* main_thread_scheduler)
: main_thread_scheduler_(main_thread_scheduler) {} : default_task_queue_(main_thread_scheduler->NewTaskQueue(
DefaultTaskQueueCreationParams())),
default_task_runner_(default_task_queue_->CreateTaskRunner(
TaskType::kMainThreadTaskQueueDefault)),
main_thread_scheduler_(main_thread_scheduler) {}
AgentGroupSchedulerImpl::~AgentGroupSchedulerImpl() { AgentGroupSchedulerImpl::~AgentGroupSchedulerImpl() {
default_task_queue_->ShutdownTaskQueue();
if (main_thread_scheduler_) { if (main_thread_scheduler_) {
main_thread_scheduler_->RemoveAgentGroupScheduler(this); main_thread_scheduler_->RemoveAgentGroupScheduler(this);
} }
......
...@@ -5,14 +5,18 @@ ...@@ -5,14 +5,18 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_AGENT_GROUP_SCHEDULER_IMPL_H_ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_AGENT_GROUP_SCHEDULER_IMPL_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_AGENT_GROUP_SCHEDULER_IMPL_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_AGENT_GROUP_SCHEDULER_IMPL_H_
#include "base/memory/scoped_refptr.h"
#include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/platform_export.h"
#include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h" #include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h"
#include <memory> namespace base {
class SingleThreadTaskRunner;
}
namespace blink { namespace blink {
namespace scheduler { namespace scheduler {
class MainThreadSchedulerImpl; class MainThreadSchedulerImpl;
class MainThreadTaskQueue;
// AgentGroupScheduler implementation which schedules per-AgentSchedulingGroup // AgentGroupScheduler implementation which schedules per-AgentSchedulingGroup
// tasks. // tasks.
...@@ -26,11 +30,16 @@ class PLATFORM_EXPORT AgentGroupSchedulerImpl ...@@ -26,11 +30,16 @@ class PLATFORM_EXPORT AgentGroupSchedulerImpl
AgentGroupSchedulerImpl(const AgentGroupSchedulerImpl&) = delete; AgentGroupSchedulerImpl(const AgentGroupSchedulerImpl&) = delete;
AgentGroupSchedulerImpl& operator=(const AgentGroupSchedulerImpl&) = delete; AgentGroupSchedulerImpl& operator=(const AgentGroupSchedulerImpl&) = delete;
~AgentGroupSchedulerImpl() override; ~AgentGroupSchedulerImpl() override;
scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() {
return default_task_runner_;
}
MainThreadSchedulerImpl* GetMainThreadScheduler() { MainThreadSchedulerImpl* GetMainThreadScheduler() {
return main_thread_scheduler_; return main_thread_scheduler_;
} }
private: private:
scoped_refptr<MainThreadTaskQueue> default_task_queue_;
scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_;
MainThreadSchedulerImpl* main_thread_scheduler_; // Not owned. MainThreadSchedulerImpl* main_thread_scheduler_; // Not owned.
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment