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 COMPONENTS_SCHEDULER_BASE_VIRTUAL_TIME_DOMAIN_H_ | 5 #ifndef COMPONENTS_SCHEDULER_BASE_VIRTUAL_TIME_DOMAIN_H_ |
6 #define COMPONENTS_SCHEDULER_BASE_VIRTUAL_TIME_DOMAIN_H_ | 6 #define COMPONENTS_SCHEDULER_BASE_VIRTUAL_TIME_DOMAIN_H_ |
7 | 7 |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "components/scheduler/base/time_domain.h" | 10 #include "components/scheduler/base/time_domain.h" |
11 #include "components/scheduler/scheduler_export.h" | 11 #include "components/scheduler/scheduler_export.h" |
12 | 12 |
13 namespace scheduler { | 13 namespace scheduler { |
14 class TaskQueueManagerDelegate; | 14 class TaskQueueManagerDelegate; |
15 | 15 |
16 class SCHEDULER_EXPORT VirtualTimeDomain : public TimeDomain { | 16 class SCHEDULER_EXPORT VirtualTimeDomain : public TimeDomain { |
17 public: | 17 public: |
18 VirtualTimeDomain(base::TimeTicks initial_time); | 18 VirtualTimeDomain(base::TimeTicks initial_time); |
19 | 19 |
20 // TimeDomain implementation: | 20 // TimeDomain implementation: |
21 LazyNow CreateLazyNow() override; | 21 LazyNow CreateLazyNow() override; |
22 bool MaybeAdvanceTime() override; | 22 bool MaybeAdvanceTime() override; |
23 const char* GetName() const override; | 23 const char* GetName() const override; |
24 | 24 |
25 // Advances this time domain to |now|. NOTE |now| is supposed to be | 25 // Advances this time domain to |now|. NOTE |now| is supposed to be |
26 // monotonically increasing. | 26 // monotonically increasing. |
27 void AdvanceTo(base::TimeTicks now); | 27 void AdvanceTo(base::TimeTicks now); |
28 | 28 |
29 protected: | 29 protected: |
30 void RequestWakeup(base::TimeDelta delay) override; | 30 void OnRegisterWithTaskQueueManager( |
| 31 TaskQueueManagerDelegate* task_queue_manager_delegate, |
| 32 base::Closure do_work_closure) override; |
| 33 void RequestWakeup(LazyNow* lazy_now, base::TimeDelta delay) override; |
31 void AsValueIntoInternal( | 34 void AsValueIntoInternal( |
32 base::trace_event::TracedValue* state) const override; | 35 base::trace_event::TracedValue* state) const override; |
33 | 36 |
34 private: | 37 private: |
35 mutable base::Lock lock_; // Protects |now_|. | 38 mutable base::Lock lock_; // Protects |now_|. |
36 base::TimeTicks now_; | 39 base::TimeTicks now_; |
37 | 40 |
| 41 TaskQueueManagerDelegate* task_queue_manager_delegate_; // NOT OWNED |
| 42 base::Closure do_work_closure_; |
| 43 |
38 ~VirtualTimeDomain() override; | 44 ~VirtualTimeDomain() override; |
39 | 45 |
40 DISALLOW_COPY_AND_ASSIGN(VirtualTimeDomain); | 46 DISALLOW_COPY_AND_ASSIGN(VirtualTimeDomain); |
41 }; | 47 }; |
42 | 48 |
43 } // namespace scheduler | 49 } // namespace scheduler |
44 | 50 |
45 #endif // COMPONENTS_SCHEDULER_BASE_VIRTUAL_TIME_DOMAIN_H_ | 51 #endif // COMPONENTS_SCHEDULER_BASE_VIRTUAL_TIME_DOMAIN_H_ |
OLD | NEW |