Commit 6f7e985a authored by Alexander Timin's avatar Alexander Timin Committed by Commit Bot

[scheduler] Use thread type from WebThreadCreationParams.

Use thread type passed to the scheduler from WebThreadCreationParams
instead of having to call SetThreadType manually.

R=kinuko@chromium.org

Change-Id: I28ea429917191d3f561774be7d2b54ac29322517
Reviewed-on: https://chromium-review.googlesource.com/973366Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Alexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545165}
parent c6670f7f
...@@ -383,7 +383,6 @@ void WorkerThread::InitializeSchedulerOnWorkerThread( ...@@ -383,7 +383,6 @@ void WorkerThread::InitializeSchedulerOnWorkerThread(
global_scope_scheduler_ = global_scope_scheduler_ =
std::make_unique<scheduler::WorkerGlobalScopeScheduler>( std::make_unique<scheduler::WorkerGlobalScopeScheduler>(
web_thread_for_worker.GetWorkerScheduler()); web_thread_for_worker.GetWorkerScheduler());
web_thread_for_worker.GetWorkerScheduler()->SetThreadType(GetThreadType());
waitable_event->Signal(); waitable_event->Signal();
} }
......
...@@ -98,7 +98,5 @@ base::TimeTicks CompositorWorkerScheduler::NowTicks() { ...@@ -98,7 +98,5 @@ base::TimeTicks CompositorWorkerScheduler::NowTicks() {
return base::TimeTicks::Now(); return base::TimeTicks::Now();
} }
void CompositorWorkerScheduler::SetThreadType(WebThreadType thread_type) {}
} // namespace scheduler } // namespace scheduler
} // namespace blink } // namespace blink
...@@ -40,7 +40,6 @@ class PLATFORM_EXPORT CompositorWorkerScheduler ...@@ -40,7 +40,6 @@ class PLATFORM_EXPORT CompositorWorkerScheduler
base::TimeTicks start, base::TimeTicks start,
base::TimeTicks end, base::TimeTicks end,
base::Optional<base::TimeDelta> thread_time) override; base::Optional<base::TimeDelta> thread_time) override;
void SetThreadType(WebThreadType thread_type) override;
// ChildScheduler: // ChildScheduler:
scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() override; scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() override;
......
...@@ -80,9 +80,5 @@ void MetricsHelper::RecordCommonTaskMetrics( ...@@ -80,9 +80,5 @@ void MetricsHelper::RecordCommonTaskMetrics(
} }
} }
void MetricsHelper::SetThreadType(WebThreadType thread_type) {
thread_type_ = thread_type;
}
} // namespace scheduler } // namespace scheduler
} // namespace blink } // namespace blink
...@@ -44,8 +44,6 @@ class PLATFORM_EXPORT MetricsHelper { ...@@ -44,8 +44,6 @@ class PLATFORM_EXPORT MetricsHelper {
base::TimeTicks end_time, base::TimeTicks end_time,
base::Optional<base::TimeDelta> thread_time); base::Optional<base::TimeDelta> thread_time);
void SetThreadType(WebThreadType thread_type);
protected: protected:
WebThreadType thread_type_; WebThreadType thread_type_;
......
...@@ -21,6 +21,7 @@ namespace scheduler { ...@@ -21,6 +21,7 @@ namespace scheduler {
WebThreadImplForWorkerScheduler::WebThreadImplForWorkerScheduler( WebThreadImplForWorkerScheduler::WebThreadImplForWorkerScheduler(
const WebThreadCreationParams& params) const WebThreadCreationParams& params)
: thread_(new base::Thread(params.name ? params.name : std::string())), : thread_(new base::Thread(params.name ? params.name : std::string())),
thread_type_(params.thread_type),
worker_scheduler_proxy_( worker_scheduler_proxy_(
params.frame_scheduler params.frame_scheduler
? std::make_unique<WorkerSchedulerProxy>(params.frame_scheduler) ? std::make_unique<WorkerSchedulerProxy>(params.frame_scheduler)
...@@ -86,7 +87,7 @@ void WebThreadImplForWorkerScheduler::ShutdownOnThread( ...@@ -86,7 +87,7 @@ void WebThreadImplForWorkerScheduler::ShutdownOnThread(
std::unique_ptr<WorkerScheduler> std::unique_ptr<WorkerScheduler>
WebThreadImplForWorkerScheduler::CreateWorkerScheduler() { WebThreadImplForWorkerScheduler::CreateWorkerScheduler() {
return WorkerScheduler::Create(worker_scheduler_proxy_.get()); return WorkerScheduler::Create(thread_type_, worker_scheduler_proxy_.get());
} }
void WebThreadImplForWorkerScheduler::WillDestroyCurrentMessageLoop() { void WebThreadImplForWorkerScheduler::WillDestroyCurrentMessageLoop() {
......
...@@ -70,6 +70,7 @@ class PLATFORM_EXPORT WebThreadImplForWorkerScheduler ...@@ -70,6 +70,7 @@ class PLATFORM_EXPORT WebThreadImplForWorkerScheduler
void ShutdownOnThread(base::WaitableEvent* completion); void ShutdownOnThread(base::WaitableEvent* completion);
std::unique_ptr<base::Thread> thread_; std::unique_ptr<base::Thread> thread_;
const WebThreadType thread_type_;
std::unique_ptr<scheduler::WorkerSchedulerProxy> worker_scheduler_proxy_; std::unique_ptr<scheduler::WorkerSchedulerProxy> worker_scheduler_proxy_;
std::unique_ptr<scheduler::WorkerScheduler> worker_scheduler_; std::unique_ptr<scheduler::WorkerScheduler> worker_scheduler_;
std::unique_ptr<scheduler::WebSchedulerImpl> web_scheduler_; std::unique_ptr<scheduler::WebSchedulerImpl> web_scheduler_;
......
...@@ -32,6 +32,7 @@ class WorkerGlobalScopeSchedulerTest : public ::testing::Test { ...@@ -32,6 +32,7 @@ class WorkerGlobalScopeSchedulerTest : public ::testing::Test {
WorkerGlobalScopeSchedulerTest() WorkerGlobalScopeSchedulerTest()
: mock_task_runner_(new base::TestSimpleTaskRunner()), : mock_task_runner_(new base::TestSimpleTaskRunner()),
scheduler_(new WorkerSchedulerImpl( scheduler_(new WorkerSchedulerImpl(
WebThreadType::kTestThread,
TaskQueueManagerForTest::Create(nullptr, TaskQueueManagerForTest::Create(nullptr,
mock_task_runner_, mock_task_runner_,
&clock_), &clock_),
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
namespace blink { namespace blink {
namespace scheduler { namespace scheduler {
WorkerMetricsHelper::WorkerMetricsHelper() WorkerMetricsHelper::WorkerMetricsHelper(WebThreadType thread_type)
: MetricsHelper(WebThreadType::kUnspecifiedWorkerThread), : MetricsHelper(thread_type),
dedicated_worker_per_task_type_duration_reporter_( dedicated_worker_per_task_type_duration_reporter_(
"RendererScheduler.TaskDurationPerTaskType.DedicatedWorker"), "RendererScheduler.TaskDurationPerTaskType.DedicatedWorker"),
dedicated_worker_per_task_type_cpu_duration_reporter_( dedicated_worker_per_task_type_cpu_duration_reporter_(
......
...@@ -16,7 +16,7 @@ namespace scheduler { ...@@ -16,7 +16,7 @@ namespace scheduler {
class PLATFORM_EXPORT WorkerMetricsHelper : public MetricsHelper { class PLATFORM_EXPORT WorkerMetricsHelper : public MetricsHelper {
public: public:
WorkerMetricsHelper(); explicit WorkerMetricsHelper(WebThreadType thread_type);
~WorkerMetricsHelper(); ~WorkerMetricsHelper();
void RecordTaskMetrics(WorkerTaskQueue* queue, void RecordTaskMetrics(WorkerTaskQueue* queue,
...@@ -25,8 +25,6 @@ class PLATFORM_EXPORT WorkerMetricsHelper : public MetricsHelper { ...@@ -25,8 +25,6 @@ class PLATFORM_EXPORT WorkerMetricsHelper : public MetricsHelper {
base::TimeTicks end_time, base::TimeTicks end_time,
base::Optional<base::TimeDelta> thread_time); base::Optional<base::TimeDelta> thread_time);
using MetricsHelper::SetThreadType;
void SetParentFrameType(FrameOriginType frame_type); void SetParentFrameType(FrameOriginType frame_type);
private: private:
......
...@@ -20,9 +20,10 @@ WorkerScheduler::~WorkerScheduler() = default; ...@@ -20,9 +20,10 @@ WorkerScheduler::~WorkerScheduler() = default;
// static // static
std::unique_ptr<WorkerScheduler> WorkerScheduler::Create( std::unique_ptr<WorkerScheduler> WorkerScheduler::Create(
WebThreadType thread_type,
WorkerSchedulerProxy* proxy) { WorkerSchedulerProxy* proxy) {
return base::WrapUnique(new WorkerSchedulerImpl( return std::make_unique<WorkerSchedulerImpl>(
TaskQueueManager::TakeOverCurrentThread(), proxy)); thread_type, TaskQueueManager::TakeOverCurrentThread(), proxy);
} }
scoped_refptr<WorkerTaskQueue> WorkerScheduler::CreateTaskRunner() { scoped_refptr<WorkerTaskQueue> WorkerScheduler::CreateTaskRunner() {
......
...@@ -25,7 +25,8 @@ class PLATFORM_EXPORT WorkerScheduler : public ChildScheduler { ...@@ -25,7 +25,8 @@ class PLATFORM_EXPORT WorkerScheduler : public ChildScheduler {
public: public:
~WorkerScheduler() override; ~WorkerScheduler() override;
static std::unique_ptr<WorkerScheduler> Create(WorkerSchedulerProxy* proxy); static std::unique_ptr<WorkerScheduler> Create(WebThreadType thread_type,
WorkerSchedulerProxy* proxy);
// Blink should use WorkerScheduler::DefaultTaskQueue instead of // Blink should use WorkerScheduler::DefaultTaskQueue instead of
// ChildScheduler::DefaultTaskRunner. // ChildScheduler::DefaultTaskRunner.
...@@ -35,8 +36,6 @@ class PLATFORM_EXPORT WorkerScheduler : public ChildScheduler { ...@@ -35,8 +36,6 @@ class PLATFORM_EXPORT WorkerScheduler : public ChildScheduler {
// initialization needed such as initializing idle period detection. // initialization needed such as initializing idle period detection.
virtual void Init() = 0; virtual void Init() = 0;
virtual void SetThreadType(WebThreadType thread_type) = 0;
virtual void OnTaskCompleted(WorkerTaskQueue* worker_task_queue, virtual void OnTaskCompleted(WorkerTaskQueue* worker_task_queue,
const TaskQueue::Task& task, const TaskQueue::Task& task,
base::TimeTicks start, base::TimeTicks start,
......
...@@ -46,6 +46,7 @@ base::TimeTicks MonotonicTimeInSecondsToTimeTicks( ...@@ -46,6 +46,7 @@ base::TimeTicks MonotonicTimeInSecondsToTimeTicks(
} // namespace } // namespace
WorkerSchedulerImpl::WorkerSchedulerImpl( WorkerSchedulerImpl::WorkerSchedulerImpl(
WebThreadType thread_type,
std::unique_ptr<TaskQueueManager> task_queue_manager, std::unique_ptr<TaskQueueManager> task_queue_manager,
WorkerSchedulerProxy* proxy) WorkerSchedulerProxy* proxy)
: WorkerScheduler( : WorkerScheduler(
...@@ -64,6 +65,7 @@ WorkerSchedulerImpl::WorkerSchedulerImpl( ...@@ -64,6 +65,7 @@ WorkerSchedulerImpl::WorkerSchedulerImpl(
throttling_state_( throttling_state_(
proxy ? proxy->throttling_state() proxy ? proxy->throttling_state()
: WebFrameScheduler::ThrottlingState::kNotThrottled), : WebFrameScheduler::ThrottlingState::kNotThrottled),
worker_metrics_helper_(thread_type),
weak_factory_(this) { weak_factory_(this) {
thread_start_time_ = helper_->NowTicks(); thread_start_time_ = helper_->NowTicks();
load_tracker_.Resume(thread_start_time_); load_tracker_.Resume(thread_start_time_);
...@@ -182,11 +184,6 @@ void WorkerSchedulerImpl::DidProcessTask(double start_time, double end_time) { ...@@ -182,11 +184,6 @@ void WorkerSchedulerImpl::DidProcessTask(double start_time, double end_time) {
load_tracker_.RecordTaskTime(start_time_ticks, end_time_ticks); load_tracker_.RecordTaskTime(start_time_ticks, end_time_ticks);
} }
void WorkerSchedulerImpl::SetThreadType(WebThreadType thread_type) {
DCHECK_NE(thread_type, WebThreadType::kMainThread);
worker_metrics_helper_.SetThreadType(thread_type);
}
void WorkerSchedulerImpl::OnThrottlingStateChanged( void WorkerSchedulerImpl::OnThrottlingStateChanged(
WebFrameScheduler::ThrottlingState throttling_state) { WebFrameScheduler::ThrottlingState throttling_state) {
throttling_state_ = throttling_state; throttling_state_ = throttling_state;
......
...@@ -29,7 +29,8 @@ class PLATFORM_EXPORT WorkerSchedulerImpl : public WorkerScheduler, ...@@ -29,7 +29,8 @@ class PLATFORM_EXPORT WorkerSchedulerImpl : public WorkerScheduler,
public IdleHelper::Delegate, public IdleHelper::Delegate,
public TaskTimeObserver { public TaskTimeObserver {
public: public:
WorkerSchedulerImpl(std::unique_ptr<TaskQueueManager> task_queue_manager, WorkerSchedulerImpl(WebThreadType thread_type,
std::unique_ptr<TaskQueueManager> task_queue_manager,
WorkerSchedulerProxy* proxy); WorkerSchedulerProxy* proxy);
~WorkerSchedulerImpl() override; ~WorkerSchedulerImpl() override;
...@@ -60,8 +61,6 @@ class PLATFORM_EXPORT WorkerSchedulerImpl : public WorkerScheduler, ...@@ -60,8 +61,6 @@ class PLATFORM_EXPORT WorkerSchedulerImpl : public WorkerScheduler,
SchedulerHelper* GetSchedulerHelperForTesting(); SchedulerHelper* GetSchedulerHelperForTesting();
base::TimeTicks CurrentIdleTaskDeadlineForTesting() const; base::TimeTicks CurrentIdleTaskDeadlineForTesting() const;
void SetThreadType(WebThreadType thread_type) override;
// Virtual for test. // Virtual for test.
virtual void OnThrottlingStateChanged( virtual void OnThrottlingStateChanged(
WebFrameScheduler::ThrottlingState throttling_state); WebFrameScheduler::ThrottlingState throttling_state);
......
...@@ -55,7 +55,9 @@ class WorkerSchedulerImplForTest : public WorkerSchedulerImpl { ...@@ -55,7 +55,9 @@ class WorkerSchedulerImplForTest : public WorkerSchedulerImpl {
public: public:
WorkerSchedulerImplForTest(std::unique_ptr<TaskQueueManager> manager, WorkerSchedulerImplForTest(std::unique_ptr<TaskQueueManager> manager,
base::SimpleTestTickClock* clock_) base::SimpleTestTickClock* clock_)
: WorkerSchedulerImpl(std::move(manager), nullptr), : WorkerSchedulerImpl(WebThreadType::kTestThread,
std::move(manager),
nullptr),
clock_(clock_), clock_(clock_),
timeline_(nullptr) {} timeline_(nullptr) {}
......
...@@ -25,7 +25,9 @@ class WorkerSchedulerImplForTest : public WorkerSchedulerImpl { ...@@ -25,7 +25,9 @@ class WorkerSchedulerImplForTest : public WorkerSchedulerImpl {
WorkerSchedulerImplForTest(std::unique_ptr<TaskQueueManager> manager, WorkerSchedulerImplForTest(std::unique_ptr<TaskQueueManager> manager,
WorkerSchedulerProxy* proxy, WorkerSchedulerProxy* proxy,
WaitableEvent* throtting_state_changed) WaitableEvent* throtting_state_changed)
: WorkerSchedulerImpl(std::move(manager), proxy), : WorkerSchedulerImpl(WebThreadType::kTestThread,
std::move(manager),
proxy),
throtting_state_changed_(throtting_state_changed) {} throtting_state_changed_(throtting_state_changed) {}
void OnThrottlingStateChanged( void OnThrottlingStateChanged(
......
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