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

Unified Diff: chrome/renderer/paint_aggregator_unittest.cc

Issue 5613002: Allow painting multiple paint rects.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years 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
Index: chrome/renderer/paint_aggregator_unittest.cc
===================================================================
--- chrome/renderer/paint_aggregator_unittest.cc (revision 68349)
+++ chrome/renderer/paint_aggregator_unittest.cc (working copy)
@@ -17,17 +17,20 @@
greg.InvalidateRect(rect);
EXPECT_TRUE(greg.HasPendingUpdate());
- EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- ASSERT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_EQ(rect, greg.GetPendingUpdate().paint_rects[0]);
+ EXPECT_TRUE(update.scroll_rect.IsEmpty());
+ ASSERT_EQ(1U, update.paint_rects.size());
+
+ EXPECT_EQ(rect, update.paint_rects[0]);
}
TEST(PaintAggregator, DoubleDisjointInvalidation) {
PaintAggregator greg;
- gfx::Rect r1(2, 4, 2, 4);
- gfx::Rect r2(4, 2, 4, 2);
+ gfx::Rect r1(2, 4, 2, 40);
+ gfx::Rect r2(4, 2, 40, 2);
greg.InvalidateRect(r1);
greg.InvalidateRect(r2);
@@ -35,12 +38,36 @@
gfx::Rect expected_bounds = r1.Union(r2);
EXPECT_TRUE(greg.HasPendingUpdate());
- EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- ASSERT_EQ(2U, greg.GetPendingUpdate().paint_rects.size());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_EQ(expected_bounds, greg.GetPendingUpdate().GetPaintBounds());
+ EXPECT_TRUE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(2U, update.paint_rects.size());
+
+ EXPECT_EQ(expected_bounds, update.GetPaintBounds());
}
+TEST(PaintAggregator, DisjointInvalidationsCombined) {
+ PaintAggregator greg;
+
+ gfx::Rect r1(2, 4, 2, 2);
+ gfx::Rect r2(4, 2, 2, 2);
+
+ greg.InvalidateRect(r1);
+ greg.InvalidateRect(r2);
+
+ gfx::Rect expected_bounds = r1.Union(r2);
+
+ EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
+
+ EXPECT_TRUE(update.scroll_rect.IsEmpty());
+ ASSERT_EQ(1U, update.paint_rects.size());
+
+ EXPECT_EQ(expected_bounds, update.paint_rects[0]);
+}
+
TEST(PaintAggregator, SingleScroll) {
PaintAggregator greg;
@@ -49,15 +76,18 @@
greg.ScrollRect(delta.x(), delta.y(), rect);
EXPECT_TRUE(greg.HasPendingUpdate());
- EXPECT_TRUE(greg.GetPendingUpdate().paint_rects.empty());
- EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_EQ(rect, greg.GetPendingUpdate().scroll_rect);
+ EXPECT_TRUE(update.paint_rects.empty());
+ EXPECT_FALSE(update.scroll_rect.IsEmpty());
- EXPECT_EQ(delta.x(), greg.GetPendingUpdate().scroll_delta.x());
- EXPECT_EQ(delta.y(), greg.GetPendingUpdate().scroll_delta.y());
+ EXPECT_EQ(rect, update.scroll_rect);
- gfx::Rect resulting_damage = greg.GetPendingUpdate().GetScrollDamage();
+ EXPECT_EQ(delta.x(), update.scroll_delta.x());
+ EXPECT_EQ(delta.y(), update.scroll_delta.y());
+
+ gfx::Rect resulting_damage = update.GetScrollDamage();
gfx::Rect expected_damage(1, 2, 1, 4);
EXPECT_EQ(expected_damage, resulting_damage);
}
@@ -72,17 +102,20 @@
greg.ScrollRect(delta2.x(), delta2.y(), rect);
EXPECT_TRUE(greg.HasPendingUpdate());
- EXPECT_TRUE(greg.GetPendingUpdate().paint_rects.empty());
- EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_EQ(rect, greg.GetPendingUpdate().scroll_rect);
+ EXPECT_TRUE(update.paint_rects.empty());
+ EXPECT_FALSE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(rect, update.scroll_rect);
+
gfx::Point expected_delta(delta1.x() + delta2.x(),
delta1.y() + delta2.y());
- EXPECT_EQ(expected_delta.x(), greg.GetPendingUpdate().scroll_delta.x());
- EXPECT_EQ(expected_delta.y(), greg.GetPendingUpdate().scroll_delta.y());
+ EXPECT_EQ(expected_delta.x(), update.scroll_delta.x());
+ EXPECT_EQ(expected_delta.y(), update.scroll_delta.y());
- gfx::Rect resulting_damage = greg.GetPendingUpdate().GetScrollDamage();
+ gfx::Rect resulting_damage = update.GetScrollDamage();
gfx::Rect expected_damage(1, 2, 2, 4);
EXPECT_EQ(expected_damage, resulting_damage);
}
@@ -113,10 +146,13 @@
greg.ScrollRect(delta.x(), delta.y(), rect);
EXPECT_TRUE(greg.HasPendingUpdate());
- EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- ASSERT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_EQ(rect, greg.GetPendingUpdate().paint_rects[0]);
+ EXPECT_TRUE(update.scroll_rect.IsEmpty());
+ ASSERT_EQ(1U, update.paint_rects.size());
+
+ EXPECT_EQ(rect, update.paint_rects[0]);
}
TEST(PaintAggregator, ContainedPaintAfterScroll) {
@@ -129,13 +165,15 @@
greg.InvalidateRect(paint_rect);
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
// expecting a paint rect inside the scroll rect
- EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ EXPECT_FALSE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(1U, update.paint_rects.size());
- EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect);
- EXPECT_EQ(paint_rect, greg.GetPendingUpdate().paint_rects[0]);
+ EXPECT_EQ(scroll_rect, update.scroll_rect);
+ EXPECT_EQ(paint_rect, update.paint_rects[0]);
}
TEST(PaintAggregator, ContainedPaintBeforeScroll) {
@@ -148,15 +186,17 @@
greg.ScrollRect(2, 0, scroll_rect);
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
// Expecting a paint rect inside the scroll rect
- EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ EXPECT_FALSE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(1U, update.paint_rects.size());
paint_rect.Offset(2, 0);
- EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect);
- EXPECT_EQ(paint_rect, greg.GetPendingUpdate().paint_rects[0]);
+ EXPECT_EQ(scroll_rect, update.scroll_rect);
+ EXPECT_EQ(paint_rect, update.paint_rects[0]);
}
TEST(PaintAggregator, ContainedPaintsBeforeAndAfterScroll) {
@@ -174,13 +214,15 @@
gfx::Rect expected_paint_rect = paint_rect2;
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
// Expecting a paint rect inside the scroll rect
- EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ EXPECT_FALSE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(1U, update.paint_rects.size());
- EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect);
- EXPECT_EQ(expected_paint_rect, greg.GetPendingUpdate().paint_rects[0]);
+ EXPECT_EQ(scroll_rect, update.scroll_rect);
+ EXPECT_EQ(expected_paint_rect, update.paint_rects[0]);
}
TEST(PaintAggregator, LargeContainedPaintAfterScroll) {
@@ -193,11 +235,13 @@
greg.InvalidateRect(paint_rect);
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ EXPECT_TRUE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(1U, update.paint_rects.size());
- EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().paint_rects[0]);
+ EXPECT_EQ(scroll_rect, update.paint_rects[0]);
}
TEST(PaintAggregator, LargeContainedPaintBeforeScroll) {
@@ -210,11 +254,13 @@
greg.ScrollRect(0, 1, scroll_rect);
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ EXPECT_TRUE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(1U, update.paint_rects.size());
- EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().paint_rects[0]);
+ EXPECT_EQ(scroll_rect, update.paint_rects[0]);
}
TEST(PaintAggregator, OverlappingPaintBeforeScroll) {
@@ -229,11 +275,13 @@
gfx::Rect expected_paint_rect = scroll_rect.Union(paint_rect);
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ EXPECT_TRUE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(1U, update.paint_rects.size());
- EXPECT_EQ(expected_paint_rect, greg.GetPendingUpdate().paint_rects[0]);
+ EXPECT_EQ(expected_paint_rect, update.paint_rects[0]);
}
TEST(PaintAggregator, OverlappingPaintAfterScroll) {
@@ -248,11 +296,13 @@
gfx::Rect expected_paint_rect = scroll_rect.Union(paint_rect);
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ EXPECT_TRUE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(1U, update.paint_rects.size());
- EXPECT_EQ(expected_paint_rect, greg.GetPendingUpdate().paint_rects[0]);
+ EXPECT_EQ(expected_paint_rect, update.paint_rects[0]);
}
TEST(PaintAggregator, DisjointPaintBeforeScroll) {
@@ -265,12 +315,14 @@
greg.ScrollRect(2, 0, scroll_rect);
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ EXPECT_FALSE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(1U, update.paint_rects.size());
- EXPECT_EQ(paint_rect, greg.GetPendingUpdate().paint_rects[0]);
- EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect);
+ EXPECT_EQ(paint_rect, update.paint_rects[0]);
+ EXPECT_EQ(scroll_rect, update.scroll_rect);
}
TEST(PaintAggregator, DisjointPaintAfterScroll) {
@@ -283,12 +335,14 @@
greg.InvalidateRect(paint_rect);
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ EXPECT_FALSE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(1U, update.paint_rects.size());
- EXPECT_EQ(paint_rect, greg.GetPendingUpdate().paint_rects[0]);
- EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect);
+ EXPECT_EQ(paint_rect, update.paint_rects[0]);
+ EXPECT_EQ(scroll_rect, update.scroll_rect);
}
TEST(PaintAggregator, ContainedPaintTrimmedByScroll) {
@@ -304,12 +358,14 @@
gfx::Rect expected_paint_rect(6, 4, 4, 6);
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ EXPECT_FALSE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(1U, update.paint_rects.size());
- EXPECT_EQ(expected_paint_rect, greg.GetPendingUpdate().paint_rects[0]);
- EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect);
+ EXPECT_EQ(expected_paint_rect, update.paint_rects[0]);
+ EXPECT_EQ(scroll_rect, update.scroll_rect);
}
TEST(PaintAggregator, ContainedPaintEliminatedByScroll) {
@@ -322,11 +378,13 @@
greg.ScrollRect(6, 0, scroll_rect);
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_TRUE(greg.GetPendingUpdate().paint_rects.empty());
+ EXPECT_FALSE(update.scroll_rect.IsEmpty());
+ EXPECT_TRUE(update.paint_rects.empty());
- EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect);
+ EXPECT_EQ(scroll_rect, update.scroll_rect);
}
TEST(PaintAggregator, ContainedPaintAfterScrollTrimmedByScrollDamage) {
@@ -342,13 +400,15 @@
gfx::Rect expected_paint_rect(4, 0, 2, 10);
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size());
+ EXPECT_FALSE(update.scroll_rect.IsEmpty());
+ EXPECT_EQ(1U, update.paint_rects.size());
- EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect);
- EXPECT_EQ(expected_scroll_damage, greg.GetPendingUpdate().GetScrollDamage());
- EXPECT_EQ(expected_paint_rect, greg.GetPendingUpdate().paint_rects[0]);
+ EXPECT_EQ(scroll_rect, update.scroll_rect);
+ EXPECT_EQ(expected_scroll_damage, update.GetScrollDamage());
+ EXPECT_EQ(expected_paint_rect, update.paint_rects[0]);
}
TEST(PaintAggregator, ContainedPaintAfterScrollEliminatedByScrollDamage) {
@@ -363,10 +423,12 @@
gfx::Rect expected_scroll_damage(0, 0, 4, 10);
EXPECT_TRUE(greg.HasPendingUpdate());
+ PaintAggregator::PendingUpdate update;
+ greg.PopPendingUpdate(&update);
- EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty());
- EXPECT_TRUE(greg.GetPendingUpdate().paint_rects.empty());
+ EXPECT_FALSE(update.scroll_rect.IsEmpty());
+ EXPECT_TRUE(update.paint_rects.empty());
- EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect);
- EXPECT_EQ(expected_scroll_damage, greg.GetPendingUpdate().GetScrollDamage());
+ EXPECT_EQ(scroll_rect, update.scroll_rect);
+ EXPECT_EQ(expected_scroll_damage, update.GetScrollDamage());
}

Powered by Google App Engine
This is Rietveld 408576698