1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CC_TREES_PROXY_TIMING_HISTORY_H_ 6 #define CC_TREES_PROXY_TIMING_HISTORY_H_ 7 8 #include "cc/base/rolling_time_delta_history.h" 9 #include "cc/debug/rendering_stats_instrumentation.h" 10 11 namespace cc { 12 13 class ProxyTimingHistory { 14 public: 15 explicit ProxyTimingHistory( 16 RenderingStatsInstrumentation* rendering_stats_instrumentation); 17 ~ProxyTimingHistory(); 18 19 base::TimeDelta DrawDurationEstimate() const; 20 base::TimeDelta BeginMainFrameToCommitDurationEstimate() const; 21 base::TimeDelta CommitToActivateDurationEstimate() const; 22 23 void DidBeginMainFrame(); 24 void DidCommit(); 25 void DidActivateSyncTree(); 26 void DidStartDrawing(); 27 void DidFinishDrawing(); 28 29 protected: 30 void AddDrawDurationUMA(base::TimeDelta draw_duration, 31 base::TimeDelta draw_duration_estimate); 32 33 RollingTimeDeltaHistory draw_duration_history_; 34 RollingTimeDeltaHistory begin_main_frame_to_commit_duration_history_; 35 RollingTimeDeltaHistory commit_to_activate_duration_history_; 36 37 base::TimeTicks begin_main_frame_sent_time_; 38 base::TimeTicks commit_complete_time_; 39 base::TimeTicks start_draw_time_; 40 41 RenderingStatsInstrumentation* rendering_stats_instrumentation_; 42 }; 43 44 } // namespace cc 45 46 #endif // CC_TREES_PROXY_TIMING_HISTORY_H_ 47