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"
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
};
21 TestPendingTask(const tracked_objects::Location
& location
,
25 TestNestability nestability
);
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
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:
43 // but the following STL functions don't:
47 bool ShouldRunBefore(const TestPendingTask
& other
) const;
49 tracked_objects::Location location
;
53 TestNestability nestability
;
58 #endif // BASE_TEST_TEST_TASK_RUNNER_H_