summaryrefslogtreecommitdiffstats
path: root/chromium/cc/scheduler/delay_based_time_source.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/cc/scheduler/delay_based_time_source.cc')
-rw-r--r--chromium/cc/scheduler/delay_based_time_source.cc56
1 files changed, 50 insertions, 6 deletions
diff --git a/chromium/cc/scheduler/delay_based_time_source.cc b/chromium/cc/scheduler/delay_based_time_source.cc
index 00515b72f76..2be3d3d472a 100644
--- a/chromium/cc/scheduler/delay_based_time_source.cc
+++ b/chromium/cc/scheduler/delay_based_time_source.cc
@@ -6,6 +6,7 @@
#include <algorithm>
#include <cmath>
+#include <string>
#include "base/bind.h"
#include "base/debug/trace_event.h"
@@ -43,8 +44,10 @@ scoped_refptr<DelayBasedTimeSourceHighRes> DelayBasedTimeSourceHighRes::Create(
}
DelayBasedTimeSourceHighRes::DelayBasedTimeSourceHighRes(
- base::TimeDelta interval, base::SingleThreadTaskRunner* task_runner)
- : DelayBasedTimeSource(interval, task_runner) {}
+ base::TimeDelta interval,
+ base::SingleThreadTaskRunner* task_runner)
+ : DelayBasedTimeSource(interval, task_runner) {
+}
DelayBasedTimeSourceHighRes::~DelayBasedTimeSourceHighRes() {}
@@ -61,14 +64,17 @@ scoped_refptr<DelayBasedTimeSource> DelayBasedTimeSource::Create(
}
DelayBasedTimeSource::DelayBasedTimeSource(
- base::TimeDelta interval, base::SingleThreadTaskRunner* task_runner)
+ base::TimeDelta interval,
+ base::SingleThreadTaskRunner* task_runner)
: client_(NULL),
last_tick_time_(base::TimeTicks() - interval),
current_parameters_(interval, base::TimeTicks()),
next_parameters_(interval, base::TimeTicks()),
active_(false),
task_runner_(task_runner),
- weak_factory_(this) {}
+ weak_factory_(this) {
+ DCHECK_GT(interval.ToInternalValue(), 0);
+}
DelayBasedTimeSource::~DelayBasedTimeSource() {}
@@ -100,9 +106,11 @@ base::TimeTicks DelayBasedTimeSource::SetActive(bool active) {
bool DelayBasedTimeSource::Active() const { return active_; }
-base::TimeTicks DelayBasedTimeSource::LastTickTime() { return last_tick_time_; }
+base::TimeTicks DelayBasedTimeSource::LastTickTime() const {
+ return last_tick_time_;
+}
-base::TimeTicks DelayBasedTimeSource::NextTickTime() {
+base::TimeTicks DelayBasedTimeSource::NextTickTime() const {
return Active() ? current_parameters_.tick_target : base::TimeTicks();
}
@@ -124,6 +132,7 @@ void DelayBasedTimeSource::SetClient(TimeSourceClient* client) {
void DelayBasedTimeSource::SetTimebaseAndInterval(base::TimeTicks timebase,
base::TimeDelta interval) {
+ DCHECK_GT(interval.ToInternalValue(), 0);
next_parameters_.interval = interval;
next_parameters_.tick_target = timebase;
@@ -272,4 +281,39 @@ void DelayBasedTimeSource::PostNextTickTask(base::TimeTicks now) {
current_parameters_ = next_parameters_;
}
+std::string DelayBasedTimeSource::TypeString() const {
+ return "DelayBasedTimeSource";
+}
+
+std::string DelayBasedTimeSourceHighRes::TypeString() const {
+ return "DelayBasedTimeSourceHighRes";
+}
+
+scoped_ptr<base::Value> DelayBasedTimeSource::AsValue() const {
+ scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue);
+ state->SetString("type", TypeString());
+ state->SetDouble("last_tick_time_us", LastTickTime().ToInternalValue());
+ state->SetDouble("next_tick_time_us", NextTickTime().ToInternalValue());
+
+ scoped_ptr<base::DictionaryValue> state_current_parameters(
+ new base::DictionaryValue);
+ state_current_parameters->SetDouble(
+ "interval_us", current_parameters_.interval.InMicroseconds());
+ state_current_parameters->SetDouble(
+ "tick_target_us", current_parameters_.tick_target.ToInternalValue());
+ state->Set("current_parameters", state_current_parameters.release());
+
+ scoped_ptr<base::DictionaryValue> state_next_parameters(
+ new base::DictionaryValue);
+ state_next_parameters->SetDouble("interval_us",
+ next_parameters_.interval.InMicroseconds());
+ state_next_parameters->SetDouble(
+ "tick_target_us", next_parameters_.tick_target.ToInternalValue());
+ state->Set("next_parameters", state_next_parameters.release());
+
+ state->SetBoolean("active", active_);
+
+ return state.PassAs<base::Value>();
+}
+
} // namespace cc