diff options
Diffstat (limited to 'chromium/cc/scheduler/delay_based_time_source.cc')
-rw-r--r-- | chromium/cc/scheduler/delay_based_time_source.cc | 56 |
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 |