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(TimeDomain::Observer* observer, |
| 19 base::TimeTicks initial_time); |
| 20 ~VirtualTimeDomain() override; |
19 | 21 |
20 // TimeDomain implementation: | 22 // TimeDomain implementation: |
21 LazyNow CreateLazyNow() override; | 23 LazyNow CreateLazyNow() override; |
22 bool MaybeAdvanceTime() override; | 24 bool MaybeAdvanceTime() override; |
23 const char* GetName() const override; | 25 const char* GetName() const override; |
24 | 26 |
25 // Advances this time domain to |now|. NOTE |now| is supposed to be | 27 // Advances this time domain to |now|. NOTE |now| is supposed to be |
26 // monotonically increasing. | 28 // monotonically increasing. |
27 void AdvanceTo(base::TimeTicks now); | 29 void AdvanceTo(base::TimeTicks now); |
28 | 30 |
29 protected: | 31 protected: |
30 void OnRegisterWithTaskQueueManager( | 32 void OnRegisterWithTaskQueueManager( |
31 TaskQueueManagerDelegate* task_queue_manager_delegate, | 33 TaskQueueManagerDelegate* task_queue_manager_delegate, |
32 base::Closure do_work_closure) override; | 34 base::Closure do_work_closure) override; |
33 void RequestWakeup(LazyNow* lazy_now, base::TimeDelta delay) override; | 35 void RequestWakeup(LazyNow* lazy_now, base::TimeDelta delay) override; |
34 void AsValueIntoInternal( | 36 void AsValueIntoInternal( |
35 base::trace_event::TracedValue* state) const override; | 37 base::trace_event::TracedValue* state) const override; |
36 | 38 |
37 private: | 39 private: |
38 mutable base::Lock lock_; // Protects |now_|. | 40 mutable base::Lock lock_; // Protects |now_|. |
39 base::TimeTicks now_; | 41 base::TimeTicks now_; |
40 | 42 |
41 TaskQueueManagerDelegate* task_queue_manager_delegate_; // NOT OWNED | 43 TaskQueueManagerDelegate* task_queue_manager_delegate_; // NOT OWNED |
42 base::Closure do_work_closure_; | 44 base::Closure do_work_closure_; |
43 | 45 |
44 ~VirtualTimeDomain() override; | |
45 | |
46 DISALLOW_COPY_AND_ASSIGN(VirtualTimeDomain); | 46 DISALLOW_COPY_AND_ASSIGN(VirtualTimeDomain); |
47 }; | 47 }; |
48 | 48 |
49 } // namespace scheduler | 49 } // namespace scheduler |
50 | 50 |
51 #endif // COMPONENTS_SCHEDULER_BASE_VIRTUAL_TIME_DOMAIN_H_ | 51 #endif // COMPONENTS_SCHEDULER_BASE_VIRTUAL_TIME_DOMAIN_H_ |
OLD | NEW |