| 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());
|
| }
|
|
|