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") {
"tuple.h",
"unguessable_token.cc",
"unguessable_token.h",
"updateable_sequenced_task_runner.h",
"value_conversions.cc",
"value_conversions.h",
"value_iterators.cc",
......
......@@ -11,21 +11,22 @@
#include "base/task/task_scheduler/scheduler_task_runner_delegate.h"
#include "base/task/task_scheduler/sequence.h"
#include "base/task/task_traits.h"
#include "base/task_runner.h"
#include "base/time/time.h"
#include "base/updateable_sequenced_task_runner.h"
namespace base {
namespace internal {
// A task runner that runs tasks in sequence.
class BASE_EXPORT SchedulerSequencedTaskRunner : public SequencedTaskRunner {
class BASE_EXPORT SchedulerSequencedTaskRunner
: public UpdateableSequencedTaskRunner {
public:
// Constructs a SchedulerSequencedTaskRunner which can be used to post tasks.
SchedulerSequencedTaskRunner(
const TaskTraits& traits,
SchedulerTaskRunnerDelegate* scheduler_task_runner_delegate);
// SequencedTaskRunner:
// UpdateableSequencedTaskRunner:
bool PostDelayedTask(const Location& from_here,
OnceClosure closure,
TimeDelta delay) override;
......@@ -36,13 +37,11 @@ class BASE_EXPORT SchedulerSequencedTaskRunner : public SequencedTaskRunner {
bool RunsTasksInCurrentSequence() const override;
void UpdatePriority(TaskPriority priority) override;
private:
~SchedulerSequencedTaskRunner() override;
// Updates the priority for tasks posted through this TaskRunner to
// |priority|.
void UpdatePriority(TaskPriority priority);
SchedulerTaskRunnerDelegate* const scheduler_task_runner_delegate_;
// 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