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

Unified Diff: base/task_scheduler/task_traits_unittest.cc

Issue 2873453002: Add base::TaskTraits::Override(). (Closed)
Patch Set: CR-gab Created 3 years, 7 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/task_scheduler/task_traits.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/task_scheduler/task_traits_unittest.cc
diff --git a/base/task_scheduler/task_traits_unittest.cc b/base/task_scheduler/task_traits_unittest.cc
index ed9065f7144ac0d20f6906879f991213f7d2b3be..2a3504844b826b37a1d0ac66e508a83c1728c791 100644
--- a/base/task_scheduler/task_traits_unittest.cc
+++ b/base/task_scheduler/task_traits_unittest.cc
@@ -78,4 +78,98 @@ TEST(TaskSchedulerTaskTraitsTest, Copy) {
traits_copy.with_base_sync_primitives());
}
+TEST(TaskSchedulerTaskTraitsTest, OverridePriority) {
+ constexpr TaskTraits left = {TaskPriority::BACKGROUND};
+ constexpr TaskTraits right = {TaskPriority::USER_BLOCKING};
+ constexpr TaskTraits overridden = TaskTraits::Override(left, right);
+ EXPECT_TRUE(overridden.priority_set_explicitly());
+ EXPECT_EQ(TaskPriority::USER_BLOCKING, overridden.priority());
+ EXPECT_FALSE(overridden.shutdown_behavior_set_explicitly());
+ EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
+ overridden.shutdown_behavior());
+ EXPECT_FALSE(overridden.may_block());
+ EXPECT_FALSE(overridden.with_base_sync_primitives());
+}
+
+TEST(TaskSchedulerTaskTraitsTest, OverrideShutdownBehavior) {
+ constexpr TaskTraits left = {TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN};
+ constexpr TaskTraits right = {TaskShutdownBehavior::BLOCK_SHUTDOWN};
+ constexpr TaskTraits overridden = TaskTraits::Override(left, right);
+ EXPECT_FALSE(overridden.priority_set_explicitly());
+ EXPECT_EQ(TaskPriority::USER_VISIBLE, overridden.priority());
+ EXPECT_TRUE(overridden.shutdown_behavior_set_explicitly());
+ EXPECT_EQ(TaskShutdownBehavior::BLOCK_SHUTDOWN,
+ overridden.shutdown_behavior());
+ EXPECT_FALSE(overridden.may_block());
+ EXPECT_FALSE(overridden.with_base_sync_primitives());
+}
+
+TEST(TaskSchedulerTaskTraitsTest, OverrideMayBlock) {
+ {
+ constexpr TaskTraits left = {MayBlock()};
+ constexpr TaskTraits right = {};
+ constexpr TaskTraits overridden = TaskTraits::Override(left, right);
+ EXPECT_FALSE(overridden.priority_set_explicitly());
+ EXPECT_EQ(TaskPriority::USER_VISIBLE, overridden.priority());
+ EXPECT_FALSE(overridden.shutdown_behavior_set_explicitly());
+ EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
+ overridden.shutdown_behavior());
+ EXPECT_TRUE(overridden.may_block());
+ EXPECT_FALSE(overridden.with_base_sync_primitives());
+ }
+ {
+ constexpr TaskTraits left = {};
+ constexpr TaskTraits right = {MayBlock()};
+ constexpr TaskTraits overridden = TaskTraits::Override(left, right);
+ EXPECT_FALSE(overridden.priority_set_explicitly());
+ EXPECT_EQ(TaskPriority::USER_VISIBLE, overridden.priority());
+ EXPECT_FALSE(overridden.shutdown_behavior_set_explicitly());
+ EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
+ overridden.shutdown_behavior());
+ EXPECT_TRUE(overridden.may_block());
+ EXPECT_FALSE(overridden.with_base_sync_primitives());
+ }
+}
+
+TEST(TaskSchedulerTaskTraitsTest, OverrideWithBaseSyncPrimitives) {
+ {
+ constexpr TaskTraits left = {WithBaseSyncPrimitives()};
+ constexpr TaskTraits right = {};
+ constexpr TaskTraits overridden = TaskTraits::Override(left, right);
+ EXPECT_FALSE(overridden.priority_set_explicitly());
+ EXPECT_EQ(TaskPriority::USER_VISIBLE, overridden.priority());
+ EXPECT_FALSE(overridden.shutdown_behavior_set_explicitly());
+ EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
+ overridden.shutdown_behavior());
+ EXPECT_FALSE(overridden.may_block());
+ EXPECT_TRUE(overridden.with_base_sync_primitives());
+ }
+ {
+ constexpr TaskTraits left = {};
+ constexpr TaskTraits right = {WithBaseSyncPrimitives()};
+ constexpr TaskTraits overridden = TaskTraits::Override(left, right);
+ EXPECT_FALSE(overridden.priority_set_explicitly());
+ EXPECT_EQ(TaskPriority::USER_VISIBLE, overridden.priority());
+ EXPECT_FALSE(overridden.shutdown_behavior_set_explicitly());
+ EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
+ overridden.shutdown_behavior());
+ EXPECT_FALSE(overridden.may_block());
+ EXPECT_TRUE(overridden.with_base_sync_primitives());
+ }
+}
+
+TEST(TaskSchedulerTaskTraitsTest, OverrideMultipleTraits) {
+ constexpr TaskTraits left = {MayBlock(), TaskPriority::BACKGROUND,
+ TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN};
+ constexpr TaskTraits right = {WithBaseSyncPrimitives(),
+ TaskPriority::USER_BLOCKING};
+ constexpr TaskTraits overridden = TaskTraits::Override(left, right);
+ EXPECT_TRUE(overridden.priority_set_explicitly());
+ EXPECT_EQ(right.priority(), overridden.priority());
+ EXPECT_TRUE(overridden.shutdown_behavior_set_explicitly());
+ EXPECT_EQ(left.shutdown_behavior(), overridden.shutdown_behavior());
+ EXPECT_TRUE(overridden.may_block());
+ EXPECT_TRUE(overridden.with_base_sync_primitives());
+}
+
} // namespace base
« no previous file with comments | « base/task_scheduler/task_traits.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698