#ifndef CC_DEBUG_RENDERING_STATS_H_
#define CC_DEBUG_RENDERING_STATS_H_
+#include <list>
+
#include "base/basictypes.h"
+#include "base/debug/trace_event_argument.h"
#include "base/time/time.h"
+#include "base/values.h"
#include "cc/base/cc_export.h"
#include "cc/debug/traced_value.h"
namespace cc {
-struct CC_EXPORT MainThreadRenderingStats {
- // Note: when adding new members, please remember to update EnumerateFields
- // and Add in rendering_stats.cc.
+struct CC_EXPORT RenderingStats {
+ // Stores a sequence of TimeDelta objects.
+ class CC_EXPORT TimeDeltaList {
+ public:
+ TimeDeltaList();
+ ~TimeDeltaList();
- int64 frame_count;
- base::TimeDelta paint_time;
- int64 painted_pixel_count;
- base::TimeDelta record_time;
- int64 recorded_pixel_count;
+ void Append(base::TimeDelta value);
+ void AddToTracedValue(base::debug::TracedValue* list_value) const;
- MainThreadRenderingStats();
- scoped_refptr<base::debug::ConvertableToTraceFormat> AsTraceableData() const;
- void Add(const MainThreadRenderingStats& other);
-};
+ void Add(const TimeDeltaList& other);
-struct CC_EXPORT ImplThreadRenderingStats {
- // Note: when adding new members, please remember to update EnumerateFields
- // and Add in rendering_stats.cc.
+ private:
+ std::list<base::TimeDelta> values;
+ };
- int64 frame_count;
- base::TimeDelta rasterize_time;
- base::TimeDelta analysis_time;
- int64 rasterized_pixel_count;
- int64 visible_content_area;
- int64 approximated_visible_content_area;
+ struct CC_EXPORT MainThreadRenderingStats {
+ // Note: when adding new members, please remember to update Add in
+ // rendering_stats.cc.
- ImplThreadRenderingStats();
- scoped_refptr<base::debug::ConvertableToTraceFormat> AsTraceableData() const;
- void Add(const ImplThreadRenderingStats& other);
-};
+ int64 frame_count;
+ base::TimeDelta paint_time;
+ int64 painted_pixel_count;
+ base::TimeDelta record_time;
+ int64 recorded_pixel_count;
+
+ MainThreadRenderingStats();
+ ~MainThreadRenderingStats();
+ scoped_refptr<base::debug::ConvertableToTraceFormat> AsTraceableData()
+ const;
+ void Add(const MainThreadRenderingStats& other);
+ };
+
+ struct CC_EXPORT ImplThreadRenderingStats {
+ // Note: when adding new members, please remember to update Add in
+ // rendering_stats.cc.
+
+ int64 frame_count;
+ base::TimeDelta rasterize_time;
+ base::TimeDelta analysis_time;
+ int64 rasterized_pixel_count;
+ int64 visible_content_area;
+ int64 approximated_visible_content_area;
+
+ TimeDeltaList draw_duration;
+ TimeDeltaList draw_duration_estimate;
+ TimeDeltaList begin_main_frame_to_commit_duration;
+ TimeDeltaList begin_main_frame_to_commit_duration_estimate;
+ TimeDeltaList commit_to_activate_duration;
+ TimeDeltaList commit_to_activate_duration_estimate;
+
+ ImplThreadRenderingStats();
+ ~ImplThreadRenderingStats();
+ scoped_refptr<base::debug::ConvertableToTraceFormat> AsTraceableData()
+ const;
+ void Add(const ImplThreadRenderingStats& other);
+ };
-struct CC_EXPORT RenderingStats {
MainThreadRenderingStats main_stats;
ImplThreadRenderingStats impl_stats;