• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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