Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Unified Diff: cc/debug/frame_timing_tracker.cc

Issue 1137823002: Pass collected frame timing events to Blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Missed implementing virtual function on Android html_viewer. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/debug/frame_timing_tracker.h ('k') | cc/debug/frame_timing_tracker_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/debug/frame_timing_tracker.cc
diff --git a/cc/debug/frame_timing_tracker.cc b/cc/debug/frame_timing_tracker.cc
index 50aa92be5aabed16abef231f50ba5509e8bd9842..38977ee6f326e3fe36cee65551101cfec6fd0a7d 100644
--- a/cc/debug/frame_timing_tracker.cc
+++ b/cc/debug/frame_timing_tracker.cc
@@ -8,9 +8,13 @@
#include <limits>
#include "base/metrics/histogram.h"
+#include "cc/trees/layer_tree_host_impl.h"
#include "cc/trees/proxy.h"
namespace cc {
+namespace {
+int kSendTimingIntervalMS = 200;
+}
FrameTimingTracker::CompositeTimingEvent::CompositeTimingEvent(
int _frame_id,
@@ -32,11 +36,19 @@ FrameTimingTracker::MainFrameTimingEvent::~MainFrameTimingEvent() {
}
// static
-scoped_ptr<FrameTimingTracker> FrameTimingTracker::Create() {
- return make_scoped_ptr(new FrameTimingTracker);
+scoped_ptr<FrameTimingTracker> FrameTimingTracker::Create(
+ LayerTreeHostImpl* layer_tree_host_impl) {
+ return make_scoped_ptr(new FrameTimingTracker(layer_tree_host_impl));
}
-FrameTimingTracker::FrameTimingTracker() {
+FrameTimingTracker::FrameTimingTracker(LayerTreeHostImpl* layer_tree_host_impl)
+ : layer_tree_host_impl_(layer_tree_host_impl),
+ post_events_notifier_(
+ layer_tree_host_impl_->proxy()->HasImplThread()
+ ? layer_tree_host_impl_->proxy()->ImplThreadTaskRunner()
+ : layer_tree_host_impl_->proxy()->MainThreadTaskRunner(),
+ base::Bind(&FrameTimingTracker::PostEvents, base::Unretained(this)),
+ base::TimeDelta::FromMilliseconds(kSendTimingIntervalMS)) {
}
FrameTimingTracker::~FrameTimingTracker() {
@@ -51,6 +63,8 @@ void FrameTimingTracker::SaveTimeStamps(
(*composite_events_)[pair.second].push_back(
CompositeTimingEvent(pair.first, timestamp));
}
+ if (!post_events_notifier_.HasPendingNotification())
+ post_events_notifier_.Schedule();
}
void FrameTimingTracker::SaveMainFrameTimeStamps(
@@ -65,6 +79,8 @@ void FrameTimingTracker::SaveMainFrameTimeStamps(
events.push_back(
MainFrameTimingEvent(source_frame_number, main_frame_time, end_time));
}
+ if (!post_events_notifier_.HasPendingNotification())
+ post_events_notifier_.Schedule();
}
scoped_ptr<FrameTimingTracker::CompositeTimingSet>
@@ -95,4 +111,9 @@ FrameTimingTracker::GroupMainFrameCountsByRectId() {
return main_frame_events_.Pass();
}
+void FrameTimingTracker::PostEvents() {
+ layer_tree_host_impl_->PostFrameTimingEvents(GroupCompositeCountsByRectId(),
+ GroupMainFrameCountsByRectId());
+}
+
} // namespace cc
« no previous file with comments | « cc/debug/frame_timing_tracker.h ('k') | cc/debug/frame_timing_tracker_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698