blob: 31a59ded9feb613497a913bc6f395ffd8a9ed6ed [file] [log] [blame]
fdorayeea351d2016-10-04 06:35:40 +09001// Copyright 2016 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/task_scheduler/task.h"
6
7#include "base/bind.h"
Peter Kasting88430fa2018-02-13 15:22:40 +09008#include "base/bind_helpers.h"
fdorayeea351d2016-10-04 06:35:40 +09009#include "base/location.h"
10#include "base/task_scheduler/task_traits.h"
11#include "base/time/time.h"
12#include "testing/gtest/include/gtest/gtest.h"
13
14namespace base {
15namespace internal {
16
17// Verify that the shutdown behavior of a BLOCK_SHUTDOWN delayed task is
18// adjusted to SKIP_ON_SHUTDOWN. The shutown behavior of other delayed tasks
19// should not change.
20TEST(TaskSchedulerTaskTest, ShutdownBehaviorChangeWithDelay) {
Peter Kasting24efe5e2018-02-24 09:03:01 +090021 Task continue_on_shutdown(FROM_HERE, DoNothing(),
fdorayb7013402017-05-09 13:18:32 +090022 {TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
fdorayeea351d2016-10-04 06:35:40 +090023 TimeDelta::FromSeconds(1));
24 EXPECT_EQ(TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN,
25 continue_on_shutdown.traits.shutdown_behavior());
26
Peter Kasting24efe5e2018-02-24 09:03:01 +090027 Task skip_on_shutdown(FROM_HERE, DoNothing(),
fdorayb7013402017-05-09 13:18:32 +090028 {TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
29 TimeDelta::FromSeconds(1));
fdorayeea351d2016-10-04 06:35:40 +090030 EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
31 skip_on_shutdown.traits.shutdown_behavior());
32
Peter Kasting24efe5e2018-02-24 09:03:01 +090033 Task block_shutdown(FROM_HERE, DoNothing(),
fdorayb7013402017-05-09 13:18:32 +090034 {TaskShutdownBehavior::BLOCK_SHUTDOWN},
35 TimeDelta::FromSeconds(1));
fdorayeea351d2016-10-04 06:35:40 +090036 EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
37 block_shutdown.traits.shutdown_behavior());
38}
39
40// Verify that the shutdown behavior of undelayed tasks is not adjusted.
41TEST(TaskSchedulerTaskTest, NoShutdownBehaviorChangeNoDelay) {
Peter Kasting24efe5e2018-02-24 09:03:01 +090042 Task continue_on_shutdown(FROM_HERE, DoNothing(),
fdorayb7013402017-05-09 13:18:32 +090043 {TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
fdorayeea351d2016-10-04 06:35:40 +090044 TimeDelta());
45 EXPECT_EQ(TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN,
46 continue_on_shutdown.traits.shutdown_behavior());
47
Peter Kasting24efe5e2018-02-24 09:03:01 +090048 Task skip_on_shutdown(FROM_HERE, DoNothing(),
fdorayb7013402017-05-09 13:18:32 +090049 {TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, TimeDelta());
fdorayeea351d2016-10-04 06:35:40 +090050 EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
51 skip_on_shutdown.traits.shutdown_behavior());
52
Peter Kasting24efe5e2018-02-24 09:03:01 +090053 Task block_shutdown(FROM_HERE, DoNothing(),
fdorayb7013402017-05-09 13:18:32 +090054 {TaskShutdownBehavior::BLOCK_SHUTDOWN}, TimeDelta());
fdorayeea351d2016-10-04 06:35:40 +090055 EXPECT_EQ(TaskShutdownBehavior::BLOCK_SHUTDOWN,
56 block_shutdown.traits.shutdown_behavior());
57}
58
59} // namespace internal
60} // namespace base