| Index: third_party/WebKit/Source/core/frame/DOMTimerCoordinator.cpp
|
| diff --git a/third_party/WebKit/Source/core/frame/DOMTimerCoordinator.cpp b/third_party/WebKit/Source/core/frame/DOMTimerCoordinator.cpp
|
| index 4401db92bd20fae0217377162b880c4e627fd185..240f8cb5d0d7c6abb041666c257b9f14056fb1e5 100644
|
| --- a/third_party/WebKit/Source/core/frame/DOMTimerCoordinator.cpp
|
| +++ b/third_party/WebKit/Source/core/frame/DOMTimerCoordinator.cpp
|
| @@ -42,6 +42,20 @@
|
| m_timers.remove(timeoutID);
|
| }
|
|
|
| +void DOMTimerCoordinator::didChangeTimerAlignmentInterval()
|
| +{
|
| + // Reschedule timers in increasing order of desired run time to maintain their relative order.
|
| + // TODO(skyostil): Move timer alignment into the scheduler.
|
| + WillBeHeapVector<RawPtrWillBeMember<DOMTimer>> timers;
|
| + timers.reserveCapacity(m_timers.size());
|
| + for (TimeoutMap::iterator iter = m_timers.begin(); iter != m_timers.end(); ++iter)
|
| + timers.append(iter->value.get());
|
| + std::sort(timers.begin(), timers.end(), TimerBase::Comparator());
|
| + double now = monotonicallyIncreasingTime();
|
| + for (DOMTimer* timer : timers)
|
| + timer->didChangeAlignmentInterval(now);
|
| +}
|
| +
|
| DEFINE_TRACE(DOMTimerCoordinator)
|
| {
|
| #if ENABLE(OILPAN)
|
|
|