Commit b85e25b5 authored by Jesse McKenna's avatar Jesse McKenna Committed by Commit Bot

TaskScheduler: Create UpdateableSequencedTaskRunner class to control access to UpdatePriority()

Bug: 889029
Change-Id: Ib8e3967d73a0844ba0d0a9ddb318168e0de1594d
Reviewed-on: https://chromium-review.googlesource.com/c/1349459
Commit-Queue: François Doray <fdoray@chromium.org>
Reviewed-by: default avatarFrançois Doray <fdoray@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611339}
parent 47438b75
...@@ -984,6 +984,7 @@ jumbo_component("base") { ...@@ -984,6 +984,7 @@ jumbo_component("base") {
"tuple.h", "tuple.h",
"unguessable_token.cc", "unguessable_token.cc",
"unguessable_token.h", "unguessable_token.h",
"updateable_sequenced_task_runner.h",
"value_conversions.cc", "value_conversions.cc",
"value_conversions.h", "value_conversions.h",
"value_iterators.cc", "value_iterators.cc",
......
...@@ -11,21 +11,22 @@ ...@@ -11,21 +11,22 @@
#include "base/task/task_scheduler/scheduler_task_runner_delegate.h" #include "base/task/task_scheduler/scheduler_task_runner_delegate.h"
#include "base/task/task_scheduler/sequence.h" #include "base/task/task_scheduler/sequence.h"
#include "base/task/task_traits.h" #include "base/task/task_traits.h"
#include "base/task_runner.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "base/updateable_sequenced_task_runner.h"
namespace base { namespace base {
namespace internal { namespace internal {
// A task runner that runs tasks in sequence. // A task runner that runs tasks in sequence.
class BASE_EXPORT SchedulerSequencedTaskRunner : public SequencedTaskRunner { class BASE_EXPORT SchedulerSequencedTaskRunner
: public UpdateableSequencedTaskRunner {
public: public:
// Constructs a SchedulerSequencedTaskRunner which can be used to post tasks. // Constructs a SchedulerSequencedTaskRunner which can be used to post tasks.
SchedulerSequencedTaskRunner( SchedulerSequencedTaskRunner(
const TaskTraits& traits, const TaskTraits& traits,
SchedulerTaskRunnerDelegate* scheduler_task_runner_delegate); SchedulerTaskRunnerDelegate* scheduler_task_runner_delegate);
// SequencedTaskRunner: // UpdateableSequencedTaskRunner:
bool PostDelayedTask(const Location& from_here, bool PostDelayedTask(const Location& from_here,
OnceClosure closure, OnceClosure closure,
TimeDelta delay) override; TimeDelta delay) override;
...@@ -36,13 +37,11 @@ class BASE_EXPORT SchedulerSequencedTaskRunner : public SequencedTaskRunner { ...@@ -36,13 +37,11 @@ class BASE_EXPORT SchedulerSequencedTaskRunner : public SequencedTaskRunner {
bool RunsTasksInCurrentSequence() const override; bool RunsTasksInCurrentSequence() const override;
void UpdatePriority(TaskPriority priority) override;
private: private:
~SchedulerSequencedTaskRunner() override; ~SchedulerSequencedTaskRunner() override;
// Updates the priority for tasks posted through this TaskRunner to
// |priority|.
void UpdatePriority(TaskPriority priority);
SchedulerTaskRunnerDelegate* const scheduler_task_runner_delegate_; SchedulerTaskRunnerDelegate* const scheduler_task_runner_delegate_;
// Sequence for all Tasks posted through this TaskRunner. // Sequence for all Tasks posted through this TaskRunner.
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BASE_UPDATEABLE_SEQUENCED_TASK_RUNNER_H_
#define BASE_UPDATEABLE_SEQUENCED_TASK_RUNNER_H_
#include "base/sequenced_task_runner.h"
#include "base/task/task_traits.h"
namespace base {
// A SequencedTaskRunner whose posted tasks' priorities can be updated.
class BASE_EXPORT UpdateableSequencedTaskRunner : public SequencedTaskRunner {
public:
// Updates the priority for tasks posted through this TaskRunner to
// |priority|.
virtual void UpdatePriority(TaskPriority priority) = 0;
protected:
UpdateableSequencedTaskRunner() = default;
~UpdateableSequencedTaskRunner() override = default;
DISALLOW_COPY_AND_ASSIGN(UpdateableSequencedTaskRunner);
};
} // namespace base
#endif // BASE_UPDATEABLE_SEQUENCED_TASK_RUNNER_H_
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