xref: /aosp_15_r20/external/libchrome/base/task_scheduler/task_unittest.cc (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
1*635a8641SAndroid Build Coastguard Worker // Copyright 2016 The Chromium Authors. All rights reserved.
2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file.
4*635a8641SAndroid Build Coastguard Worker 
5*635a8641SAndroid Build Coastguard Worker #include "base/task_scheduler/task.h"
6*635a8641SAndroid Build Coastguard Worker 
7*635a8641SAndroid Build Coastguard Worker #include "base/bind.h"
8*635a8641SAndroid Build Coastguard Worker #include "base/bind_helpers.h"
9*635a8641SAndroid Build Coastguard Worker #include "base/location.h"
10*635a8641SAndroid Build Coastguard Worker #include "base/task_scheduler/task_traits.h"
11*635a8641SAndroid Build Coastguard Worker #include "base/time/time.h"
12*635a8641SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
13*635a8641SAndroid Build Coastguard Worker 
14*635a8641SAndroid Build Coastguard Worker namespace base {
15*635a8641SAndroid Build Coastguard Worker namespace internal {
16*635a8641SAndroid Build Coastguard Worker 
17*635a8641SAndroid Build Coastguard Worker // Verify that the shutdown behavior of a BLOCK_SHUTDOWN delayed task is
18*635a8641SAndroid Build Coastguard Worker // adjusted to SKIP_ON_SHUTDOWN. The shutown behavior of other delayed tasks
19*635a8641SAndroid Build Coastguard Worker // should not change.
TEST(TaskSchedulerTaskTest,ShutdownBehaviorChangeWithDelay)20*635a8641SAndroid Build Coastguard Worker TEST(TaskSchedulerTaskTest, ShutdownBehaviorChangeWithDelay) {
21*635a8641SAndroid Build Coastguard Worker   Task continue_on_shutdown(FROM_HERE, DoNothing(),
22*635a8641SAndroid Build Coastguard Worker                             {TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
23*635a8641SAndroid Build Coastguard Worker                             TimeDelta::FromSeconds(1));
24*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN,
25*635a8641SAndroid Build Coastguard Worker             continue_on_shutdown.traits.shutdown_behavior());
26*635a8641SAndroid Build Coastguard Worker 
27*635a8641SAndroid Build Coastguard Worker   Task skip_on_shutdown(FROM_HERE, DoNothing(),
28*635a8641SAndroid Build Coastguard Worker                         {TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
29*635a8641SAndroid Build Coastguard Worker                         TimeDelta::FromSeconds(1));
30*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
31*635a8641SAndroid Build Coastguard Worker             skip_on_shutdown.traits.shutdown_behavior());
32*635a8641SAndroid Build Coastguard Worker 
33*635a8641SAndroid Build Coastguard Worker   Task block_shutdown(FROM_HERE, DoNothing(),
34*635a8641SAndroid Build Coastguard Worker                       {TaskShutdownBehavior::BLOCK_SHUTDOWN},
35*635a8641SAndroid Build Coastguard Worker                       TimeDelta::FromSeconds(1));
36*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
37*635a8641SAndroid Build Coastguard Worker             block_shutdown.traits.shutdown_behavior());
38*635a8641SAndroid Build Coastguard Worker }
39*635a8641SAndroid Build Coastguard Worker 
40*635a8641SAndroid Build Coastguard Worker // Verify that the shutdown behavior of undelayed tasks is not adjusted.
TEST(TaskSchedulerTaskTest,NoShutdownBehaviorChangeNoDelay)41*635a8641SAndroid Build Coastguard Worker TEST(TaskSchedulerTaskTest, NoShutdownBehaviorChangeNoDelay) {
42*635a8641SAndroid Build Coastguard Worker   Task continue_on_shutdown(FROM_HERE, DoNothing(),
43*635a8641SAndroid Build Coastguard Worker                             {TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
44*635a8641SAndroid Build Coastguard Worker                             TimeDelta());
45*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN,
46*635a8641SAndroid Build Coastguard Worker             continue_on_shutdown.traits.shutdown_behavior());
47*635a8641SAndroid Build Coastguard Worker 
48*635a8641SAndroid Build Coastguard Worker   Task skip_on_shutdown(FROM_HERE, DoNothing(),
49*635a8641SAndroid Build Coastguard Worker                         {TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, TimeDelta());
50*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
51*635a8641SAndroid Build Coastguard Worker             skip_on_shutdown.traits.shutdown_behavior());
52*635a8641SAndroid Build Coastguard Worker 
53*635a8641SAndroid Build Coastguard Worker   Task block_shutdown(FROM_HERE, DoNothing(),
54*635a8641SAndroid Build Coastguard Worker                       {TaskShutdownBehavior::BLOCK_SHUTDOWN}, TimeDelta());
55*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::BLOCK_SHUTDOWN,
56*635a8641SAndroid Build Coastguard Worker             block_shutdown.traits.shutdown_behavior());
57*635a8641SAndroid Build Coastguard Worker }
58*635a8641SAndroid Build Coastguard Worker 
59*635a8641SAndroid Build Coastguard Worker }  // namespace internal
60*635a8641SAndroid Build Coastguard Worker }  // namespace base
61