| 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 #ifndef THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_BASE_TIME_DOMAIN_H_ | 5 #ifndef THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_BASE_TIME_DOMAIN_H_ |
| 6 #define THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_BASE_TIME_DOMAIN_H_ | 6 #define THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_BASE_TIME_DOMAIN_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 virtual ~TimeDomain(); | 55 virtual ~TimeDomain(); |
| 56 | 56 |
| 57 // Returns a LazyNow that evaluate this TimeDomain's Now. Can be called from | 57 // Returns a LazyNow that evaluate this TimeDomain's Now. Can be called from |
| 58 // any thread. | 58 // any thread. |
| 59 // TODO(alexclarke): Make this main thread only. | 59 // TODO(alexclarke): Make this main thread only. |
| 60 virtual LazyNow CreateLazyNow() const = 0; | 60 virtual LazyNow CreateLazyNow() const = 0; |
| 61 | 61 |
| 62 // Evaluate this TimeDomain's Now. Can be called from any thread. | 62 // Evaluate this TimeDomain's Now. Can be called from any thread. |
| 63 virtual base::TimeTicks Now() const = 0; | 63 virtual base::TimeTicks Now() const = 0; |
| 64 | 64 |
| 65 // Some TimeDomains support virtual time, this method tells us to advance time | 65 // Computes the delay until the next task the TimeDomain is aware of, if any. |
| 66 // if possible and return true if time was advanced. | 66 // Note virtual time domains may return base::TimeDelta() if they have any |
| 67 virtual bool MaybeAdvanceTime() = 0; | 67 // tasks that are eligible to run. |
| 68 virtual base::Optional<base::TimeDelta> DelayTillNextTask( |
| 69 LazyNow* lazy_now) = 0; |
| 68 | 70 |
| 69 // Returns the name of this time domain for tracing. | 71 // Returns the name of this time domain for tracing. |
| 70 virtual const char* GetName() const = 0; | 72 virtual const char* GetName() const = 0; |
| 71 | 73 |
| 72 // If there is a scheduled delayed task, |out_time| is set to the scheduled | 74 // If there is a scheduled delayed task, |out_time| is set to the scheduled |
| 73 // runtime for the next one and it returns true. Returns false otherwise. | 75 // runtime for the next one and it returns true. Returns false otherwise. |
| 74 bool NextScheduledRunTime(base::TimeTicks* out_time) const; | 76 bool NextScheduledRunTime(base::TimeTicks* out_time) const; |
| 75 | 77 |
| 76 protected: | 78 protected: |
| 77 friend class internal::TaskQueueImpl; | 79 friend class internal::TaskQueueImpl; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 103 void RegisterQueue(internal::TaskQueueImpl* queue); | 105 void RegisterQueue(internal::TaskQueueImpl* queue); |
| 104 | 106 |
| 105 // Removes |queue| from the set of task queues that UpdateWorkQueues calls | 107 // Removes |queue| from the set of task queues that UpdateWorkQueues calls |
| 106 // UpdateWorkQueue on. Returns true if |queue| was updatable. | 108 // UpdateWorkQueue on. Returns true if |queue| was updatable. |
| 107 bool UnregisterAsUpdatableTaskQueue(internal::TaskQueueImpl* queue); | 109 bool UnregisterAsUpdatableTaskQueue(internal::TaskQueueImpl* queue); |
| 108 | 110 |
| 109 // Removes |queue| from all internal data structures. | 111 // Removes |queue| from all internal data structures. |
| 110 void UnregisterQueue(internal::TaskQueueImpl* queue); | 112 void UnregisterQueue(internal::TaskQueueImpl* queue); |
| 111 | 113 |
| 112 // Updates active queues associated with this TimeDomain. | 114 // Updates active queues associated with this TimeDomain. |
| 113 void UpdateWorkQueues(LazyNow lazy_now); | 115 void UpdateWorkQueues(LazyNow* lazy_now); |
| 114 | 116 |
| 115 // Called by the TaskQueueManager when the TimeDomain is registered. | 117 // Called by the TaskQueueManager when the TimeDomain is registered. |
| 116 virtual void OnRegisterWithTaskQueueManager( | 118 virtual void OnRegisterWithTaskQueueManager( |
| 117 TaskQueueManager* task_queue_manager) = 0; | 119 TaskQueueManager* task_queue_manager) = 0; |
| 118 | 120 |
| 119 // The implementaion will secedule task processing to run with |delay| with | 121 // The implementaion will secedule task processing to run with |delay| with |
| 120 // respect to the TimeDomain's time source. Always called on the main thread. | 122 // respect to the TimeDomain's time source. Always called on the main thread. |
| 121 // NOTE this is only called by ScheduleDelayedWork if the scheduled runtime | 123 // NOTE this is only called by ScheduleDelayedWork if the scheduled runtime |
| 122 // is sooner than any previously sheduled work or if there is no other | 124 // is sooner than any previously sheduled work or if there is no other |
| 123 // scheduled work. | 125 // scheduled work. |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 | 179 |
| 178 base::ThreadChecker main_thread_checker_; | 180 base::ThreadChecker main_thread_checker_; |
| 179 | 181 |
| 180 DISALLOW_COPY_AND_ASSIGN(TimeDomain); | 182 DISALLOW_COPY_AND_ASSIGN(TimeDomain); |
| 181 }; | 183 }; |
| 182 | 184 |
| 183 } // namespace scheduler | 185 } // namespace scheduler |
| 184 } // namespace blink | 186 } // namespace blink |
| 185 | 187 |
| 186 #endif // THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_BASE_TIME_DOMAIN_H_ | 188 #endif // THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_BASE_TIME_DOMAIN_H_ |
| OLD | NEW |