Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3447)

Unified Diff: base/task_scheduler/post_task.cc

Issue 2831883003: Do not inherit TaskPriority in TaskTraits. (Closed)
Patch Set: CR-gab-34 Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/BUILD.gn ('k') | base/task_scheduler/task_traits.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/task_scheduler/post_task.cc
diff --git a/base/task_scheduler/post_task.cc b/base/task_scheduler/post_task.cc
index 6f9adae27f4cc3312928d773a522058761e7ea32..6da11bd8dc15061bc6f0d23536b6df945c379adf 100644
--- a/base/task_scheduler/post_task.cc
+++ b/base/task_scheduler/post_task.cc
@@ -7,6 +7,7 @@
#include <utility>
#include "base/logging.h"
+#include "base/task_scheduler/scoped_set_task_priority_for_current_thread.h"
#include "base/task_scheduler/task_scheduler.h"
#include "base/threading/post_task_and_reply_impl.h"
@@ -29,6 +30,15 @@ class PostTaskAndReplyTaskRunner : public internal::PostTaskAndReplyImpl {
const TaskTraits traits_;
};
+// Returns TaskTraits based on |traits|. If TaskPriority hasn't been set
+// explicitly in |traits|, the returned TaskTraits have the current
+// TaskPriority.
+TaskTraits GetTaskTraitsWithExplicitPriority(const TaskTraits& traits) {
+ return traits.priority_set_explicitly()
+ ? traits
+ : TaskTraits(traits).WithPriority(
+ internal::GetTaskPriorityForCurrentThread());
+}
} // namespace
@@ -62,7 +72,8 @@ void PostDelayedTaskWithTraits(const tracked_objects::Location& from_here,
DCHECK(TaskScheduler::GetInstance())
<< "Ref. Prerequisite section of post_task.h";
TaskScheduler::GetInstance()->PostDelayedTaskWithTraits(
- from_here, traits, std::move(task), std::move(delay));
+ from_here, GetTaskTraitsWithExplicitPriority(traits), std::move(task),
+ std::move(delay));
}
void PostTaskWithTraitsAndReply(const tracked_objects::Location& from_here,
@@ -76,7 +87,8 @@ void PostTaskWithTraitsAndReply(const tracked_objects::Location& from_here,
scoped_refptr<TaskRunner> CreateTaskRunnerWithTraits(const TaskTraits& traits) {
DCHECK(TaskScheduler::GetInstance())
<< "Ref. Prerequisite section of post_task.h";
- return TaskScheduler::GetInstance()->CreateTaskRunnerWithTraits(traits);
+ return TaskScheduler::GetInstance()->CreateTaskRunnerWithTraits(
+ GetTaskTraitsWithExplicitPriority(traits));
}
scoped_refptr<SequencedTaskRunner> CreateSequencedTaskRunnerWithTraits(
@@ -84,7 +96,7 @@ scoped_refptr<SequencedTaskRunner> CreateSequencedTaskRunnerWithTraits(
DCHECK(TaskScheduler::GetInstance())
<< "Ref. Prerequisite section of post_task.h";
return TaskScheduler::GetInstance()->CreateSequencedTaskRunnerWithTraits(
- traits);
+ GetTaskTraitsWithExplicitPriority(traits));
}
scoped_refptr<SingleThreadTaskRunner> CreateSingleThreadTaskRunnerWithTraits(
@@ -92,7 +104,7 @@ scoped_refptr<SingleThreadTaskRunner> CreateSingleThreadTaskRunnerWithTraits(
DCHECK(TaskScheduler::GetInstance())
<< "Ref. Prerequisite section of post_task.h";
return TaskScheduler::GetInstance()->CreateSingleThreadTaskRunnerWithTraits(
- traits);
+ GetTaskTraitsWithExplicitPriority(traits));
}
#if defined(OS_WIN)
@@ -100,7 +112,8 @@ scoped_refptr<SingleThreadTaskRunner> CreateCOMSTATaskRunnerWithTraits(
const TaskTraits& traits) {
DCHECK(TaskScheduler::GetInstance())
<< "Ref. Prerequisite section of post_task.h";
- return TaskScheduler::GetInstance()->CreateCOMSTATaskRunnerWithTraits(traits);
+ return TaskScheduler::GetInstance()->CreateCOMSTATaskRunnerWithTraits(
+ GetTaskTraitsWithExplicitPriority(traits));
}
#endif // defined(OS_WIN)
« no previous file with comments | « base/BUILD.gn ('k') | base/task_scheduler/task_traits.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698