| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/scheduler/base/time_domain.h" | 5 #include "platform/scheduler/base/time_domain.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "platform/scheduler/base/task_queue_impl.h" | 9 #include "platform/scheduler/base/task_queue_impl.h" |
| 10 #include "platform/scheduler/base/task_queue_manager_delegate.h" | 10 #include "platform/scheduler/base/task_queue_manager_delegate.h" |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 base::TimeTicks now) { | 74 base::TimeTicks now) { |
| 75 DCHECK(main_thread_checker_.CalledOnValidThread()); | 75 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 76 if (delayed_wakeup_multimap_.empty() || | 76 if (delayed_wakeup_multimap_.empty() || |
| 77 delayed_run_time < delayed_wakeup_multimap_.begin()->first) { | 77 delayed_run_time < delayed_wakeup_multimap_.begin()->first) { |
| 78 base::TimeDelta delay = std::max(base::TimeDelta(), delayed_run_time - now); | 78 base::TimeDelta delay = std::max(base::TimeDelta(), delayed_run_time - now); |
| 79 RequestWakeup(now, delay); | 79 RequestWakeup(now, delay); |
| 80 } | 80 } |
| 81 | 81 |
| 82 delayed_wakeup_multimap_.insert(std::make_pair(delayed_run_time, queue)); | 82 delayed_wakeup_multimap_.insert(std::make_pair(delayed_run_time, queue)); |
| 83 if (observer_) | 83 if (observer_) |
| 84 observer_->OnTimeDomainHasDelayedWork(); | 84 observer_->OnTimeDomainHasDelayedWork(queue); |
| 85 } | 85 } |
| 86 | 86 |
| 87 void TimeDomain::CancelDelayedWork(internal::TaskQueueImpl* queue, | 87 void TimeDomain::CancelDelayedWork(internal::TaskQueueImpl* queue, |
| 88 base::TimeTicks delayed_run_time) { | 88 base::TimeTicks delayed_run_time) { |
| 89 DCHECK(main_thread_checker_.CalledOnValidThread()); | 89 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 90 | 90 |
| 91 auto iterpair = delayed_wakeup_multimap_.equal_range(delayed_run_time); | 91 auto iterpair = delayed_wakeup_multimap_.equal_range(delayed_run_time); |
| 92 for (auto it = iterpair.first; it != iterpair.second; ++it) { | 92 for (auto it = iterpair.first; it != iterpair.second; ++it) { |
| 93 if (it->second == queue) { | 93 if (it->second == queue) { |
| 94 base::TimeTicks prev_first_wakeup = | 94 base::TimeTicks prev_first_wakeup = |
| (...skipping 25 matching lines...) Expand all Loading... |
| 120 } | 120 } |
| 121 } | 121 } |
| 122 } | 122 } |
| 123 | 123 |
| 124 void TimeDomain::RegisterAsUpdatableTaskQueue(internal::TaskQueueImpl* queue) { | 124 void TimeDomain::RegisterAsUpdatableTaskQueue(internal::TaskQueueImpl* queue) { |
| 125 { | 125 { |
| 126 base::AutoLock lock(newly_updatable_lock_); | 126 base::AutoLock lock(newly_updatable_lock_); |
| 127 newly_updatable_.push_back(queue); | 127 newly_updatable_.push_back(queue); |
| 128 } | 128 } |
| 129 if (observer_) | 129 if (observer_) |
| 130 observer_->OnTimeDomainHasImmediateWork(); | 130 observer_->OnTimeDomainHasImmediateWork(queue); |
| 131 } | 131 } |
| 132 | 132 |
| 133 bool TimeDomain::UnregisterAsUpdatableTaskQueue( | 133 bool TimeDomain::UnregisterAsUpdatableTaskQueue( |
| 134 internal::TaskQueueImpl* queue) { | 134 internal::TaskQueueImpl* queue) { |
| 135 DCHECK(main_thread_checker_.CalledOnValidThread()); | 135 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 136 | 136 |
| 137 bool was_updatable = updatable_queue_set_.erase(queue) != 0; | 137 bool was_updatable = updatable_queue_set_.erase(queue) != 0; |
| 138 | 138 |
| 139 base::AutoLock lock(newly_updatable_lock_); | 139 base::AutoLock lock(newly_updatable_lock_); |
| 140 // Remove all copies of |queue| from |newly_updatable_|. | 140 // Remove all copies of |queue| from |newly_updatable_|. |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 if (!delayed_wakeup_multimap_.empty()) { | 245 if (!delayed_wakeup_multimap_.empty()) { |
| 246 base::TimeDelta delay = delayed_wakeup_multimap_.begin()->first - Now(); | 246 base::TimeDelta delay = delayed_wakeup_multimap_.begin()->first - Now(); |
| 247 state->SetDouble("next_delay_ms", delay.InMillisecondsF()); | 247 state->SetDouble("next_delay_ms", delay.InMillisecondsF()); |
| 248 } | 248 } |
| 249 AsValueIntoInternal(state); | 249 AsValueIntoInternal(state); |
| 250 state->EndDictionary(); | 250 state->EndDictionary(); |
| 251 } | 251 } |
| 252 | 252 |
| 253 } // namespace scheduler | 253 } // namespace scheduler |
| 254 } // namespace blink | 254 } // namespace blink |
| OLD | NEW |