Index: third_party/WebKit/Source/platform/scheduler/base/enqueue_order.cc |
diff --git a/third_party/WebKit/Source/platform/scheduler/base/enqueue_order.cc b/third_party/WebKit/Source/platform/scheduler/base/enqueue_order.cc |
index fcfd3ffdd817f4160af9c23e4f65752af447d972..a02f040cae3cd940c8bde75b17c8c4f33b881736 100644 |
--- a/third_party/WebKit/Source/platform/scheduler/base/enqueue_order.cc |
+++ b/third_party/WebKit/Source/platform/scheduler/base/enqueue_order.cc |
@@ -8,16 +8,42 @@ namespace blink { |
namespace scheduler { |
namespace internal { |
-// Note we set the first |enqueue_order_| to a specific non-zero value, because |
+// Note we set the first sequence number to a specific non-zero value, because |
// first N values of EnqueueOrder have special meaning (see EnqueueOrderValues). |
EnqueueOrderGenerator::EnqueueOrderGenerator() |
- : enqueue_order_(static_cast<EnqueueOrder>(EnqueueOrderValues::FIRST)) {} |
+ : sequence_num_( |
+ static_cast<uint64_t>(EnqueueOrderSequenceNumberValues::FIRST)) {} |
EnqueueOrderGenerator::~EnqueueOrderGenerator() {} |
-EnqueueOrder EnqueueOrderGenerator::GenerateNext() { |
+EnqueueOrder EnqueueOrderGenerator::GenerateNext( |
+ base::TimeTicks delayed_run_time) { |
base::AutoLock lock(lock_); |
- return enqueue_order_++; |
+ return {delayed_run_time, sequence_num_++}; |
+} |
+ |
+bool EnqueueOrder::operator==(const EnqueueOrder& other) const { |
+ return delayed_run_time == other.delayed_run_time && |
+ sequence_num == other.sequence_num; |
+} |
+ |
+bool EnqueueOrder::operator<=(const EnqueueOrder& other) const { |
+ if (delayed_run_time > other.delayed_run_time) |
+ return false; |
+ |
+ if (delayed_run_time < other.delayed_run_time) |
+ return true; |
+ |
+ return sequence_num <= other.sequence_num; |
+} |
+ |
+bool EnqueueOrder::operator<(const EnqueueOrder& other) const { |
+ return !(*this == other) && *this <= other; |
+} |
+ |
+std::ostream& operator<<(std::ostream& stream, const EnqueueOrder& value) { |
+ return stream << "(" << value.delayed_run_time << ", " << value.sequence_num |
+ << ")"; |
} |
} // namespace internal |