Support for unpacked ARM packed relocations.
[chromium-blink-merge.git] / base / test / test_pending_task.h
blob024e281a8d299ab357e668f61a889c48de6f4ee0
1 // Copyright (c) 2012 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.
5 #ifndef BASE_TEST_TEST_PENDING_TASK_H_
6 #define BASE_TEST_TEST_PENDING_TASK_H_
8 #include "base/callback.h"
9 #include "base/location.h"
10 #include "base/time/time.h"
12 namespace base {
14 // TestPendingTask is a helper class for test TaskRunner
15 // implementations. See test_simple_task_runner.h for example usage.
17 struct TestPendingTask {
18 enum TestNestability { NESTABLE, NON_NESTABLE };
20 TestPendingTask();
21 TestPendingTask(const tracked_objects::Location& location,
22 const Closure& task,
23 TimeTicks post_time,
24 TimeDelta delay,
25 TestNestability nestability);
26 ~TestPendingTask();
28 // Returns post_time + delay.
29 TimeTicks GetTimeToRun() const;
31 // Returns true if this task is nestable and |other| isn't, or if
32 // this task's time to run is strictly earlier than |other|'s time
33 // to run.
35 // Note that two tasks may both have the same nestability and delay.
36 // In that case, the caller must use some other criterion (probably
37 // the position in some queue) to break the tie. Conveniently, the
38 // following STL functions already do so:
40 // - std::min_element
41 // - std::stable_sort
43 // but the following STL functions don't:
45 // - std::max_element
46 // - std::sort.
47 bool ShouldRunBefore(const TestPendingTask& other) const;
49 tracked_objects::Location location;
50 Closure task;
51 TimeTicks post_time;
52 TimeDelta delay;
53 TestNestability nestability;
56 } // namespace base
58 #endif // BASE_TEST_TEST_TASK_RUNNER_H_