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