You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.4 KiB
61 lines
2.4 KiB
// Copyright 2016 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "base/task_scheduler/task.h"
|
|
|
|
#include "base/bind.h"
|
|
#include "base/bind_helpers.h"
|
|
#include "base/location.h"
|
|
#include "base/task_scheduler/task_traits.h"
|
|
#include "base/time/time.h"
|
|
#include "testing/gtest/include/gtest/gtest.h"
|
|
|
|
namespace base {
|
|
namespace internal {
|
|
|
|
// Verify that the shutdown behavior of a BLOCK_SHUTDOWN delayed task is
|
|
// adjusted to SKIP_ON_SHUTDOWN. The shutown behavior of other delayed tasks
|
|
// should not change.
|
|
TEST(TaskSchedulerTaskTest, ShutdownBehaviorChangeWithDelay) {
|
|
Task continue_on_shutdown(FROM_HERE, DoNothing(),
|
|
{TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
|
|
TimeDelta::FromSeconds(1));
|
|
EXPECT_EQ(TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN,
|
|
continue_on_shutdown.traits.shutdown_behavior());
|
|
|
|
Task skip_on_shutdown(FROM_HERE, DoNothing(),
|
|
{TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
|
|
TimeDelta::FromSeconds(1));
|
|
EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
|
|
skip_on_shutdown.traits.shutdown_behavior());
|
|
|
|
Task block_shutdown(FROM_HERE, DoNothing(),
|
|
{TaskShutdownBehavior::BLOCK_SHUTDOWN},
|
|
TimeDelta::FromSeconds(1));
|
|
EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
|
|
block_shutdown.traits.shutdown_behavior());
|
|
}
|
|
|
|
// Verify that the shutdown behavior of undelayed tasks is not adjusted.
|
|
TEST(TaskSchedulerTaskTest, NoShutdownBehaviorChangeNoDelay) {
|
|
Task continue_on_shutdown(FROM_HERE, DoNothing(),
|
|
{TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
|
|
TimeDelta());
|
|
EXPECT_EQ(TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN,
|
|
continue_on_shutdown.traits.shutdown_behavior());
|
|
|
|
Task skip_on_shutdown(FROM_HERE, DoNothing(),
|
|
{TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, TimeDelta());
|
|
EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
|
|
skip_on_shutdown.traits.shutdown_behavior());
|
|
|
|
Task block_shutdown(FROM_HERE, DoNothing(),
|
|
{TaskShutdownBehavior::BLOCK_SHUTDOWN}, TimeDelta());
|
|
EXPECT_EQ(TaskShutdownBehavior::BLOCK_SHUTDOWN,
|
|
block_shutdown.traits.shutdown_behavior());
|
|
}
|
|
|
|
} // namespace internal
|
|
} // namespace base
|