mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-01 01:36:09 +03:00
79 lines
2.3 KiB
C++
79 lines
2.3 KiB
C++
// Copyright (c) 2012 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.
|
|
|
|
#ifndef BASE_TEST_TEST_PENDING_TASK_H_
|
|
#define BASE_TEST_TEST_PENDING_TASK_H_
|
|
|
|
#include <string>
|
|
|
|
#include "base/callback.h"
|
|
#include "base/location.h"
|
|
#include "base/time/time.h"
|
|
#include "base/trace_event/trace_event_argument.h"
|
|
|
|
namespace base {
|
|
|
|
// TestPendingTask is a helper class for test TaskRunner
|
|
// implementations. See test_simple_task_runner.h for example usage.
|
|
|
|
struct TestPendingTask {
|
|
enum TestNestability { NESTABLE, NON_NESTABLE };
|
|
|
|
TestPendingTask();
|
|
TestPendingTask(TestPendingTask&& other);
|
|
TestPendingTask(const Location& location,
|
|
OnceClosure task,
|
|
TimeTicks post_time,
|
|
TimeDelta delay,
|
|
TestNestability nestability);
|
|
~TestPendingTask();
|
|
|
|
TestPendingTask& operator=(TestPendingTask&& other);
|
|
|
|
// Returns post_time + delay.
|
|
TimeTicks GetTimeToRun() const;
|
|
|
|
// Returns true if this task is nestable and |other| isn't, or if
|
|
// this task's time to run is strictly earlier than |other|'s time
|
|
// to run.
|
|
//
|
|
// Note that two tasks may both have the same nestability and delay.
|
|
// In that case, the caller must use some other criterion (probably
|
|
// the position in some queue) to break the tie. Conveniently, the
|
|
// following STL functions already do so:
|
|
//
|
|
// - std::min_element
|
|
// - std::stable_sort
|
|
//
|
|
// but the following STL functions don't:
|
|
//
|
|
// - std::max_element
|
|
// - std::sort.
|
|
bool ShouldRunBefore(const TestPendingTask& other) const;
|
|
|
|
Location location;
|
|
OnceClosure task;
|
|
TimeTicks post_time;
|
|
TimeDelta delay;
|
|
TestNestability nestability;
|
|
|
|
// Functions for using test pending task with tracing, useful in unit
|
|
// testing.
|
|
void AsValueInto(base::trace_event::TracedValue* state) const;
|
|
std::unique_ptr<base::trace_event::ConvertableToTraceFormat> AsValue() const;
|
|
std::string ToString() const;
|
|
|
|
private:
|
|
DISALLOW_COPY_AND_ASSIGN(TestPendingTask);
|
|
};
|
|
|
|
// gtest helpers which allow pretty printing of the tasks, very useful in unit
|
|
// testing.
|
|
std::ostream& operator<<(std::ostream& os, const TestPendingTask& task);
|
|
void PrintTo(const TestPendingTask& task, std::ostream* os);
|
|
|
|
} // namespace base
|
|
|
|
#endif // BASE_TEST_TEST_PENDING_TASK_H_
|