diff -r 000000000000 -r 6474c204b198 security/sandbox/chromium/base/pending_task.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/security/sandbox/chromium/base/pending_task.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,60 @@ +// Copyright (c) 2011 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 PENDING_TASK_H_ +#define PENDING_TASK_H_ + +#include + +#include "base/base_export.h" +#include "base/callback.h" +#include "base/location.h" +#include "base/time/time.h" +#include "base/tracking_info.h" + +namespace base { + +// Contains data about a pending task. Stored in TaskQueue and DelayedTaskQueue +// for use by classes that queue and execute tasks. +struct BASE_EXPORT PendingTask : public TrackingInfo { +#if _MSC_VER >= 1700 + PendingTask(); +#endif + PendingTask(const tracked_objects::Location& posted_from, + const Closure& task); + PendingTask(const tracked_objects::Location& posted_from, + const Closure& task, + TimeTicks delayed_run_time, + bool nestable); + ~PendingTask(); + + // Used to support sorting. + bool operator<(const PendingTask& other) const; + + // The task to run. + Closure task; + + // The site this PendingTask was posted from. + tracked_objects::Location posted_from; + + // Secondary sort key for run time. + int sequence_num; + + // OK to dispatch from a nested loop. + bool nestable; +}; + +// Wrapper around std::queue specialized for PendingTask which adds a Swap +// helper method. +class BASE_EXPORT TaskQueue : public std::queue { + public: + void Swap(TaskQueue* queue); +}; + +// PendingTasks are sorted by their |delayed_run_time| property. +typedef std::priority_queue DelayedTaskQueue; + +} // namespace base + +#endif // PENDING_TASK_H_