// Copyright 2014 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.
#ifndef CC_TREES_PROXY_TIMING_HISTORY_H_
#define CC_TREES_PROXY_TIMING_HISTORY_H_
#include "cc/base/rolling_time_delta_history.h"
#include "cc/debug/rendering_stats_instrumentation.h"
namespace cc {
class ProxyTimingHistory {
public:
explicit ProxyTimingHistory(
RenderingStatsInstrumentation* rendering_stats_instrumentation);
~ProxyTimingHistory();
base::TimeDelta DrawDurationEstimate() const;
base::TimeDelta BeginMainFrameToCommitDurationEstimate() const;
base::TimeDelta CommitToActivateDurationEstimate() const;
void DidBeginMainFrame();
void DidCommit();
void DidActivateSyncTree();
void DidStartDrawing();
void DidFinishDrawing();
protected:
void AddDrawDurationUMA(base::TimeDelta draw_duration,
base::TimeDelta draw_duration_estimate);
RollingTimeDeltaHistory draw_duration_history_;
RollingTimeDeltaHistory begin_main_frame_to_commit_duration_history_;
RollingTimeDeltaHistory commit_to_activate_duration_history_;
base::TimeTicks begin_main_frame_sent_time_;
base::TimeTicks commit_complete_time_;
base::TimeTicks start_draw_time_;
RenderingStatsInstrumentation* rendering_stats_instrumentation_;
};
} // namespace cc
#endif // CC_TREES_PROXY_TIMING_HISTORY_H_