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

Unified Diff: cc/debug/frame_timing_tracker_unittest.cc

Issue 914403003: cc: Add main frame timing info to frame timing tracker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 9 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.cc ('k') | cc/layers/layer_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/debug/frame_timing_tracker_unittest.cc
diff --git a/cc/debug/frame_timing_tracker_unittest.cc b/cc/debug/frame_timing_tracker_unittest.cc
index 85f571611ace7d527d7ec5f0d3e3126bd9a168e2..b5574435fbcfef1213ad22ff41bcfbaed883ff8a 100644
--- a/cc/debug/frame_timing_tracker_unittest.cc
+++ b/cc/debug/frame_timing_tracker_unittest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <set>
#include <string>
#include "base/time/time.h"
@@ -13,17 +14,50 @@
namespace cc {
namespace {
-static std::string ToString(
+std::string CompositeToString(
scoped_ptr<FrameTimingTracker::CompositeTimingSet> timingset) {
scoped_refptr<base::trace_event::TracedValue> value =
new base::trace_event::TracedValue();
value->BeginArray("values");
- for (const auto& it : *timingset) {
+ std::set<int> rect_ids;
+ for (const auto& pair : *timingset)
+ rect_ids.insert(pair.first);
+
+ for (const auto& rect_id : rect_ids) {
+ auto& events = (*timingset)[rect_id];
+ value->BeginDictionary();
+ value->SetInteger("rect_id", rect_id);
+ value->BeginArray("events");
+ for (const auto& event : events) {
+ value->BeginDictionary();
+ value->SetInteger("frame_id", event.frame_id);
+ value->SetInteger("timestamp", event.timestamp.ToInternalValue());
+ value->EndDictionary();
+ }
+ value->EndArray();
+ value->EndDictionary();
+ }
+ value->EndArray();
+ return value->ToString();
+}
+
+std::string MainFrameToString(
+ scoped_ptr<FrameTimingTracker::MainFrameTimingSet> timingset) {
+ scoped_refptr<base::trace_event::TracedValue> value =
+ new base::trace_event::TracedValue();
+ value->BeginArray("values");
+ std::set<int> rect_ids;
+ for (const auto& pair : *timingset)
+ rect_ids.insert(pair.first);
+
+ for (const auto& rect_id : rect_ids) {
+ auto& events = (*timingset)[rect_id];
value->BeginDictionary();
- value->SetInteger("rect_id", it.first);
+ value->SetInteger("rect_id", rect_id);
value->BeginArray("events");
- for (const auto& event : it.second) {
+ for (const auto& event : events) {
value->BeginDictionary();
+ value->SetInteger("end_time", event.end_time.ToInternalValue());
value->SetInteger("frame_id", event.frame_id);
value->SetInteger("timestamp", event.timestamp.ToInternalValue());
value->EndDictionary();
@@ -37,14 +71,27 @@ static std::string ToString(
TEST(FrameTimingTrackerTest, DefaultTrackerIsEmpty) {
scoped_ptr<FrameTimingTracker> tracker(FrameTimingTracker::Create());
- EXPECT_EQ("{\"values\":[]}", ToString(tracker->GroupCountsByRectId()));
+ EXPECT_EQ("{\"values\":[]}",
+ CompositeToString(tracker->GroupCompositeCountsByRectId()));
+ EXPECT_EQ("{\"values\":[]}",
+ MainFrameToString(tracker->GroupMainFrameCountsByRectId()));
}
TEST(FrameTimingTrackerTest, NoFrameIdsIsEmpty) {
scoped_ptr<FrameTimingTracker> tracker(FrameTimingTracker::Create());
std::vector<std::pair<int, int64_t>> ids;
tracker->SaveTimeStamps(base::TimeTicks::FromInternalValue(100), ids);
- EXPECT_EQ("{\"values\":[]}", ToString(tracker->GroupCountsByRectId()));
+ EXPECT_EQ("{\"values\":[]}",
+ CompositeToString(tracker->GroupCompositeCountsByRectId()));
+}
+
+TEST(FrameTimingTrackerTest, NoRectIdsYieldsNoMainFrameEvents) {
+ scoped_ptr<FrameTimingTracker> tracker(FrameTimingTracker::Create());
+ tracker->SaveMainFrameTimeStamps(std::vector<int64_t>(),
+ base::TimeTicks::FromInternalValue(100),
+ base::TimeTicks::FromInternalValue(110), 1);
+ EXPECT_EQ("{\"values\":[]}",
+ MainFrameToString(tracker->GroupMainFrameCountsByRectId()));
}
TEST(FrameTimingTrackerTest, OneFrameId) {
@@ -55,7 +102,20 @@ TEST(FrameTimingTrackerTest, OneFrameId) {
EXPECT_EQ(
"{\"values\":[{\"events\":["
"{\"frame_id\":1,\"timestamp\":100}],\"rect_id\":2}]}",
- ToString(tracker->GroupCountsByRectId()));
+ CompositeToString(tracker->GroupCompositeCountsByRectId()));
+}
+
+TEST(FrameTimingTrackerTest, OneMainFrameRect) {
+ scoped_ptr<FrameTimingTracker> tracker(FrameTimingTracker::Create());
+ std::vector<int64_t> rect_ids;
+ rect_ids.push_back(1);
+ tracker->SaveMainFrameTimeStamps(rect_ids,
+ base::TimeTicks::FromInternalValue(100),
+ base::TimeTicks::FromInternalValue(110), 2);
+ EXPECT_EQ(
+ "{\"values\":[{\"events\":["
+ "{\"end_time\":110,\"frame_id\":2,\"timestamp\":100}],\"rect_id\":1}]}",
+ MainFrameToString(tracker->GroupMainFrameCountsByRectId()));
}
TEST(FrameTimingTrackerTest, UnsortedTimestampsIds) {
@@ -70,7 +130,28 @@ TEST(FrameTimingTrackerTest, UnsortedTimestampsIds) {
"{\"frame_id\":1,\"timestamp\":100},"
"{\"frame_id\":1,\"timestamp\":200},"
"{\"frame_id\":1,\"timestamp\":400}],\"rect_id\":2}]}",
- ToString(tracker->GroupCountsByRectId()));
+ CompositeToString(tracker->GroupCompositeCountsByRectId()));
+}
+
+TEST(FrameTimingTrackerTest, MainFrameUnsortedTimestamps) {
+ scoped_ptr<FrameTimingTracker> tracker(FrameTimingTracker::Create());
+ std::vector<int64_t> rect_ids;
+ rect_ids.push_back(2);
+ tracker->SaveMainFrameTimeStamps(rect_ids,
+ base::TimeTicks::FromInternalValue(200),
+ base::TimeTicks::FromInternalValue(280), 1);
+ tracker->SaveMainFrameTimeStamps(rect_ids,
+ base::TimeTicks::FromInternalValue(400),
+ base::TimeTicks::FromInternalValue(470), 1);
+ tracker->SaveMainFrameTimeStamps(rect_ids,
+ base::TimeTicks::FromInternalValue(100),
+ base::TimeTicks::FromInternalValue(160), 1);
+ EXPECT_EQ(
+ "{\"values\":[{\"events\":["
+ "{\"end_time\":160,\"frame_id\":1,\"timestamp\":100},"
+ "{\"end_time\":280,\"frame_id\":1,\"timestamp\":200},"
+ "{\"end_time\":470,\"frame_id\":1,\"timestamp\":400}],\"rect_id\":2}]}",
+ MainFrameToString(tracker->GroupMainFrameCountsByRectId()));
}
TEST(FrameTimingTrackerTest, MultipleFrameIds) {
@@ -91,34 +172,56 @@ TEST(FrameTimingTrackerTest, MultipleFrameIds) {
ids100.push_back(std::make_pair(3, 4));
tracker->SaveTimeStamps(base::TimeTicks::FromInternalValue(100), ids100);
- std::string result = ToString(tracker->GroupCountsByRectId());
-
- EXPECT_EQ(strlen(
- "{\"values\":[{\"events\":["
- "{\"frame_id\":3,\"timestamp\":100},"
- "{\"frame_id\":1,\"timestamp\":200},"
- "{\"frame_id\":2,\"timestamp\":400}],\"rect_id\":2},"
- "{\"events\":["
- "{\"frame_id\":2,\"timestamp\":100},"
- "{\"frame_id\":1,\"timestamp\":200}],\"rect_id\":3},"
- "{\"events\":["
- "{\"frame_id\":3,\"timestamp\":100}],\"rect_id\":4}"
- "]}"),
- result.size());
- EXPECT_NE(std::string::npos,
- result.find(
- "{\"frame_id\":3,\"timestamp\":100},"
- "{\"frame_id\":1,\"timestamp\":200},"
- "{\"frame_id\":2,\"timestamp\":400}],\"rect_id\":2}"));
- EXPECT_NE(std::string::npos,
- result.find(
- "{\"events\":["
- "{\"frame_id\":2,\"timestamp\":100},"
- "{\"frame_id\":1,\"timestamp\":200}],\"rect_id\":3}"));
- EXPECT_NE(std::string::npos,
- result.find(
- "{\"events\":["
- "{\"frame_id\":3,\"timestamp\":100}],\"rect_id\":4}"));
+ EXPECT_EQ(
+ "{\"values\":[{\"events\":["
+ "{\"frame_id\":3,\"timestamp\":100},"
+ "{\"frame_id\":1,\"timestamp\":200},"
+ "{\"frame_id\":2,\"timestamp\":400}],\"rect_id\":2},"
+ "{\"events\":["
+ "{\"frame_id\":2,\"timestamp\":100},"
+ "{\"frame_id\":1,\"timestamp\":200}],\"rect_id\":3},"
+ "{\"events\":["
+ "{\"frame_id\":3,\"timestamp\":100}],\"rect_id\":4}"
+ "]}",
+ CompositeToString(tracker->GroupCompositeCountsByRectId()));
+}
+
+TEST(FrameTimingTrackerTest, MultipleMainFrameEvents) {
+ scoped_ptr<FrameTimingTracker> tracker(FrameTimingTracker::Create());
+
+ std::vector<int64_t> rect_ids200;
+ rect_ids200.push_back(2);
+ rect_ids200.push_back(3);
+ tracker->SaveMainFrameTimeStamps(rect_ids200,
+ base::TimeTicks::FromInternalValue(200),
+ base::TimeTicks::FromInternalValue(220), 1);
+
+ std::vector<int64_t> rect_ids400;
+ rect_ids400.push_back(2);
+ tracker->SaveMainFrameTimeStamps(rect_ids400,
+ base::TimeTicks::FromInternalValue(400),
+ base::TimeTicks::FromInternalValue(440), 2);
+
+ std::vector<int64_t> rect_ids100;
+ rect_ids100.push_back(2);
+ rect_ids100.push_back(3);
+ rect_ids100.push_back(4);
+ tracker->SaveMainFrameTimeStamps(rect_ids100,
+ base::TimeTicks::FromInternalValue(100),
+ base::TimeTicks::FromInternalValue(110), 3);
+
+ EXPECT_EQ(
+ "{\"values\":[{\"events\":["
+ "{\"end_time\":110,\"frame_id\":3,\"timestamp\":100},"
+ "{\"end_time\":220,\"frame_id\":1,\"timestamp\":200},"
+ "{\"end_time\":440,\"frame_id\":2,\"timestamp\":400}],\"rect_id\":2},"
+ "{\"events\":["
+ "{\"end_time\":110,\"frame_id\":3,\"timestamp\":100},"
+ "{\"end_time\":220,\"frame_id\":1,\"timestamp\":200}],\"rect_id\":3},"
+ "{\"events\":["
+ "{\"end_time\":110,\"frame_id\":3,\"timestamp\":100}],\"rect_id\":4}"
+ "]}",
+ MainFrameToString(tracker->GroupMainFrameCountsByRectId()));
}
} // namespace
« no previous file with comments | « cc/debug/frame_timing_tracker.cc ('k') | cc/layers/layer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698