Index: cc/debug/rendering_stats_instrumentation.cc |
diff --git a/cc/debug/rendering_stats_instrumentation.cc b/cc/debug/rendering_stats_instrumentation.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..462177293d159fdac4e90b10b53046ee5cc25071 |
--- /dev/null |
+++ b/cc/debug/rendering_stats_instrumentation.cc |
@@ -0,0 +1,122 @@ |
+// Copyright 2013 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. |
+ |
+#include "cc/debug/rendering_stats_instrumentation.h" |
+ |
+namespace cc { |
+ |
+// static |
+scoped_ptr<RenderingStatsInstrumentation> |
+ RenderingStatsInstrumentation::Create() { |
+ return make_scoped_ptr(new RenderingStatsInstrumentation()); |
+} |
+ |
+RenderingStatsInstrumentation::RenderingStatsInstrumentation() |
+ : record_rendering_stats_(false) { |
+} |
+ |
+RenderingStatsInstrumentation::~RenderingStatsInstrumentation() {} |
+ |
+RenderingStats RenderingStatsInstrumentation::impl_thread_rendering_stats() { |
+ base::AutoLock scoped_lock(lock_); |
+ return impl_thread_rendering_stats_; |
+} |
+ |
+RenderingStats RenderingStatsInstrumentation::GetRenderingStats() { |
+ base::AutoLock scoped_lock(lock_); |
+ RenderingStats rendering_stats; |
+ rendering_stats = impl_thread_rendering_stats_accu_; |
+ rendering_stats.Add(impl_thread_rendering_stats_); |
+ return rendering_stats; |
+} |
+ |
+void RenderingStatsInstrumentation::AccumulateAndClearImplThreadStats() { |
+ base::AutoLock scoped_lock(lock_); |
+ impl_thread_rendering_stats_accu_.Add(impl_thread_rendering_stats_); |
+ impl_thread_rendering_stats_ = RenderingStats(); |
+} |
+ |
+base::TimeDelta RenderingStatsInstrumentation::StartRecording() const { |
+ if (record_rendering_stats_) { |
+ if (base::ThreadTicks::IsSupported()) |
+ return base::ThreadTicks::Now() - base::ThreadTicks(); |
+ return base::TimeTicks::Now() - base::TimeTicks(); |
+ } |
+ return base::TimeDelta(); |
+} |
+ |
+base::TimeDelta RenderingStatsInstrumentation::EndRecording( |
+ base::TimeDelta start_time) const { |
+ if (start_time != base::TimeDelta()) { |
+ if (base::ThreadTicks::IsSupported()) |
+ return (base::ThreadTicks::Now() - base::ThreadTicks()) - start_time; |
+ return (base::TimeTicks::Now() - base::TimeTicks()) - start_time; |
+ } |
+ return base::TimeDelta(); |
+} |
+ |
+void RenderingStatsInstrumentation::IncrementFrameCount(int64 count) { |
+ if (!record_rendering_stats_) |
+ return; |
+ |
+ base::AutoLock scoped_lock(lock_); |
+ impl_thread_rendering_stats_.frame_count += count; |
+} |
+ |
+void RenderingStatsInstrumentation::AddVisibleContentArea(int64 area) { |
+ if (!record_rendering_stats_) |
+ return; |
+ |
+ base::AutoLock scoped_lock(lock_); |
+ impl_thread_rendering_stats_.visible_content_area += area; |
+} |
+ |
+void RenderingStatsInstrumentation::AddApproximatedVisibleContentArea( |
+ int64 area) { |
+ if (!record_rendering_stats_) |
+ return; |
+ |
+ base::AutoLock scoped_lock(lock_); |
+ impl_thread_rendering_stats_.approximated_visible_content_area += area; |
+} |
+ |
+void RenderingStatsInstrumentation::AddDrawDuration( |
+ base::TimeDelta draw_duration, |
+ base::TimeDelta draw_duration_estimate) { |
+ if (!record_rendering_stats_) |
+ return; |
+ |
+ base::AutoLock scoped_lock(lock_); |
+ impl_thread_rendering_stats_.draw_duration.Append(draw_duration); |
+ impl_thread_rendering_stats_.draw_duration_estimate.Append( |
+ draw_duration_estimate); |
+} |
+ |
+void RenderingStatsInstrumentation::AddBeginMainFrameToCommitDuration( |
+ base::TimeDelta begin_main_frame_to_commit_duration, |
+ base::TimeDelta begin_main_frame_to_commit_duration_estimate) { |
+ if (!record_rendering_stats_) |
+ return; |
+ |
+ base::AutoLock scoped_lock(lock_); |
+ impl_thread_rendering_stats_.begin_main_frame_to_commit_duration.Append( |
+ begin_main_frame_to_commit_duration); |
+ impl_thread_rendering_stats_.begin_main_frame_to_commit_duration_estimate |
+ .Append(begin_main_frame_to_commit_duration_estimate); |
+} |
+ |
+void RenderingStatsInstrumentation::AddCommitToActivateDuration( |
+ base::TimeDelta commit_to_activate_duration, |
+ base::TimeDelta commit_to_activate_duration_estimate) { |
+ if (!record_rendering_stats_) |
+ return; |
+ |
+ base::AutoLock scoped_lock(lock_); |
+ impl_thread_rendering_stats_.commit_to_activate_duration.Append( |
+ commit_to_activate_duration); |
+ impl_thread_rendering_stats_.commit_to_activate_duration_estimate.Append( |
+ commit_to_activate_duration_estimate); |
+} |
+ |
+} // namespace cc |