Index: components/scheduler/renderer/auto_advancing_virtual_time_domain.cc |
diff --git a/components/scheduler/renderer/auto_advancing_virtual_time_domain.cc b/components/scheduler/renderer/auto_advancing_virtual_time_domain.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8d589a773fd5a47a5802f07dbb523510aabc6a68 |
--- /dev/null |
+++ b/components/scheduler/renderer/auto_advancing_virtual_time_domain.cc |
@@ -0,0 +1,43 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "components/scheduler/renderer/auto_advancing_virtual_time_domain.h" |
+ |
+namespace scheduler { |
+ |
+AutoAdvancingVirtualTimeDomain::AutoAdvancingVirtualTimeDomain( |
+ base::TimeTicks initial_time) |
+ : VirtualTimeDomain(nullptr, initial_time), |
+ can_advance_virtual_time_(true) {} |
+ |
+AutoAdvancingVirtualTimeDomain::~AutoAdvancingVirtualTimeDomain() {} |
+ |
+bool AutoAdvancingVirtualTimeDomain::MaybeAdvanceTime() { |
+ base::TimeTicks run_time; |
+ if (!can_advance_virtual_time_ || !NextScheduledRunTime(&run_time)) { |
+ return false; |
+ } |
+ AdvanceTo(run_time); |
+ return true; |
+} |
+ |
+void AutoAdvancingVirtualTimeDomain::RequestWakeup(base::TimeTicks now, |
+ base::TimeDelta delay) { |
+ base::TimeTicks dummy; |
+ if (can_advance_virtual_time_ && !NextScheduledRunTime(&dummy)) |
+ RequestDoWork(); |
+} |
+ |
+void AutoAdvancingVirtualTimeDomain::SetCanAdvanceVirtualTime( |
+ bool can_advance_virtual_time) { |
+ can_advance_virtual_time_ = can_advance_virtual_time; |
+ if (can_advance_virtual_time_) |
+ RequestDoWork(); |
+} |
+ |
+const char* AutoAdvancingVirtualTimeDomain::GetName() const { |
+ return "AutoAdvancingVirtualTimeDomain"; |
+} |
+ |
+} // namespace scheduler |