| 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 102 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 243   if (!delayed_wakeup_multimap_.empty()) { | 243   if (!delayed_wakeup_multimap_.empty()) { | 
| 244     base::TimeDelta delay = delayed_wakeup_multimap_.begin()->first - Now(); | 244     base::TimeDelta delay = delayed_wakeup_multimap_.begin()->first - Now(); | 
| 245     state->SetDouble("next_delay_ms", delay.InMillisecondsF()); | 245     state->SetDouble("next_delay_ms", delay.InMillisecondsF()); | 
| 246   } | 246   } | 
| 247   AsValueIntoInternal(state); | 247   AsValueIntoInternal(state); | 
| 248   state->EndDictionary(); | 248   state->EndDictionary(); | 
| 249 } | 249 } | 
| 250 | 250 | 
| 251 }  // namespace scheduler | 251 }  // namespace scheduler | 
| 252 }  // namespace blink | 252 }  // namespace blink | 
| OLD | NEW | 
|---|