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(TimeDomain::Observer* observer, | 18 VirtualTimeDomain(base::TimeTicks initial_time); |
19 base::TimeTicks initial_time); | |
20 ~VirtualTimeDomain() override; | |
21 | 19 |
22 // TimeDomain implementation: | 20 // TimeDomain implementation: |
23 LazyNow CreateLazyNow() override; | 21 LazyNow CreateLazyNow() override; |
24 bool MaybeAdvanceTime() override; | 22 bool MaybeAdvanceTime() override; |
25 const char* GetName() const override; | 23 const char* GetName() const override; |
26 | 24 |
27 // 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 |
28 // monotonically increasing. | 26 // monotonically increasing. |
29 void AdvanceTo(base::TimeTicks now); | 27 void AdvanceTo(base::TimeTicks now); |
30 | 28 |
31 protected: | 29 protected: |
32 void OnRegisterWithTaskQueueManager( | 30 void OnRegisterWithTaskQueueManager( |
33 TaskQueueManagerDelegate* task_queue_manager_delegate, | 31 TaskQueueManagerDelegate* task_queue_manager_delegate, |
34 base::Closure do_work_closure) override; | 32 base::Closure do_work_closure) override; |
35 void RequestWakeup(LazyNow* lazy_now, base::TimeDelta delay) override; | 33 void RequestWakeup(LazyNow* lazy_now, base::TimeDelta delay) override; |
36 void AsValueIntoInternal( | 34 void AsValueIntoInternal( |
37 base::trace_event::TracedValue* state) const override; | 35 base::trace_event::TracedValue* state) const override; |
38 | 36 |
39 private: | 37 private: |
40 mutable base::Lock lock_; // Protects |now_|. | 38 mutable base::Lock lock_; // Protects |now_|. |
41 base::TimeTicks now_; | 39 base::TimeTicks now_; |
42 | 40 |
43 TaskQueueManagerDelegate* task_queue_manager_delegate_; // NOT OWNED | 41 TaskQueueManagerDelegate* task_queue_manager_delegate_; // NOT OWNED |
44 base::Closure do_work_closure_; | 42 base::Closure do_work_closure_; |
45 | 43 |
| 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 |