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..d5fc4f9e2755a0c02d411a6a1ad48508e259ac79 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,48 @@ 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<SequenceNumber>( |
+ 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_++}; |
+} |
+ |
+EnqueueOrder::EnqueueOrder() : sequence_num(0) {} |
+ |
+EnqueueOrder::EnqueueOrder(base::TimeTicks delayed_run_time, |
+ SequenceNumber sequence_num) |
+ : delayed_run_time(delayed_run_time), sequence_num(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 |