Index: cc/trees/layer_tree_host_impl_unittest.cc |
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc |
index 8f412565b6deff37e1d5bb3cde73b7b953005ef5..4b768282b897f46e7075e89d2d3e8fadc2516e10 100644 |
--- a/cc/trees/layer_tree_host_impl_unittest.cc |
+++ b/cc/trees/layer_tree_host_impl_unittest.cc |
@@ -222,7 +222,7 @@ class LayerTreeHostImplTest : public testing::Test, |
void InitializeRendererAndDrawFrame() { |
host_impl_->InitializeRenderer(CreateOutputSurface()); |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
} |
@@ -240,7 +240,7 @@ class LayerTreeHostImplTest : public testing::Test, |
void DrawOneFrame() { |
LayerTreeHostImpl::FrameData frame_data; |
- host_impl_->PrepareToDraw(&frame_data); |
+ host_impl_->PrepareToDraw(&frame_data, gfx::Rect()); |
host_impl_->DidDrawAllLayers(frame_data); |
} |
@@ -1056,7 +1056,7 @@ TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) { |
EXPECT_FALSE(layer->will_draw_called()); |
EXPECT_FALSE(layer->did_draw_called()); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -1071,7 +1071,7 @@ TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) { |
EXPECT_FALSE(layer->will_draw_called()); |
EXPECT_FALSE(layer->did_draw_called()); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -1110,7 +1110,7 @@ TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) { |
EXPECT_FALSE(top_layer->will_draw_called()); |
EXPECT_FALSE(top_layer->did_draw_called()); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -1142,7 +1142,7 @@ TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) { |
EXPECT_FALSE(layer2->did_draw_called()); |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -1214,7 +1214,7 @@ TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) { |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -1232,7 +1232,7 @@ TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) { |
false, |
host_impl_->resource_provider())); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -1250,7 +1250,7 @@ TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) { |
true, |
host_impl_->resource_provider())); |
- EXPECT_FALSE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_FALSE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -1267,7 +1267,7 @@ TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) { |
true, |
host_impl_->resource_provider())); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
} |
@@ -1306,6 +1306,7 @@ TEST_F(LayerTreeHostImplTest, ScrollNonScrollableRootWithTopControls) { |
root->SetContentBounds(layer_size); |
root->SetPosition(gfx::PointF()); |
root->SetAnchorPoint(gfx::PointF()); |
+ root->SetDrawsContent(false); |
host_impl_->active_tree()->SetRootLayer(root.Pass()); |
host_impl_->active_tree()->FindRootScrollLayer(); |
InitializeRendererAndDrawFrame(); |
@@ -1607,7 +1608,7 @@ TEST_F(LayerTreeHostImplTest, PageScaleDeltaAppliedToRootScrollLayerOnly) { |
// Make sure all the layers are drawn with the page scale delta applied, i.e., |
// the page scale delta on the root layer is applied hierarchically. |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -2143,7 +2144,8 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
// Opaque layer, drawn without blending. |
layer1->SetContentsOpaque(true); |
layer1->SetExpectation(false, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -2151,7 +2153,8 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
// Layer with translucent content and painting, so drawn with blending. |
layer1->SetContentsOpaque(false); |
layer1->SetExpectation(true, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -2160,7 +2163,8 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
layer1->SetContentsOpaque(true); |
layer1->SetOpacity(0.5f); |
layer1->SetExpectation(true, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -2169,7 +2173,8 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
layer1->SetContentsOpaque(true); |
layer1->SetOpacity(0.5f); |
layer1->SetExpectation(true, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -2186,10 +2191,12 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
layer1->SetContentsOpaque(true); |
layer1->SetOpacity(1.f); |
layer1->SetExpectation(false, false); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
layer2->SetContentsOpaque(true); |
layer2->SetOpacity(1.f); |
layer2->SetExpectation(false, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
EXPECT_TRUE(layer2->quads_appended()); |
@@ -2199,8 +2206,10 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
// Child layer with opaque content, drawn without blending. |
layer1->SetContentsOpaque(false); |
layer1->SetExpectation(true, false); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
layer2->SetExpectation(false, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
EXPECT_TRUE(layer2->quads_appended()); |
@@ -2211,8 +2220,10 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
// Child layer with opaque content, drawn without blending. |
layer1->SetContentsOpaque(true); |
layer1->SetExpectation(false, false); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
layer2->SetExpectation(false, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
EXPECT_TRUE(layer2->quads_appended()); |
@@ -2226,8 +2237,10 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
layer1->SetContentsOpaque(true); |
layer1->SetOpacity(0.5f); |
layer1->SetExpectation(false, true); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
layer2->SetExpectation(false, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
EXPECT_TRUE(layer2->quads_appended()); |
@@ -2238,10 +2251,12 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
layer1->SetContentsOpaque(true); |
layer1->SetOpacity(1.f); |
layer1->SetExpectation(false, false); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
layer2->SetContentsOpaque(true); |
layer2->SetOpacity(0.5f); |
layer2->SetExpectation(true, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
EXPECT_TRUE(layer2->quads_appended()); |
@@ -2251,10 +2266,12 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
layer1->SetContentsOpaque(true); |
layer1->SetOpacity(1.f); |
layer1->SetExpectation(false, false); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
layer2->SetContentsOpaque(false); |
layer2->SetOpacity(1.f); |
layer2->SetExpectation(true, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
EXPECT_TRUE(layer2->quads_appended()); |
@@ -2265,10 +2282,12 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
layer1->SetContentsOpaque(true); |
layer1->SetOpacity(1.f); |
layer1->SetExpectation(false, false); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
layer2->SetContentsOpaque(true); |
layer2->SetOpacity(1.f); |
layer2->SetExpectation(false, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer2->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
EXPECT_TRUE(layer2->quads_appended()); |
@@ -2280,7 +2299,8 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 5)); |
layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); |
layer1->SetExpectation(true, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -2291,7 +2311,8 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 5, 2)); |
layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); |
layer1->SetExpectation(true, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -2302,7 +2323,8 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
layer1->SetQuadVisibleRect(gfx::Rect(7, 5, 3, 5)); |
layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); |
layer1->SetExpectation(true, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -2314,7 +2336,8 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) { |
layer1->SetQuadVisibleRect(gfx::Rect(5, 5, 2, 5)); |
layer1->SetOpaqueContentRect(gfx::Rect(5, 5, 2, 5)); |
layer1->SetExpectation(false, false); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ layer1->set_update_rect(gfx::RectF(layer1->content_bounds())); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(layer1->quads_appended()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -2349,7 +2372,7 @@ TEST_F(LayerTreeHostImplTest, ViewportCovered) { |
child->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
ASSERT_EQ(1u, frame.render_passes.size()); |
size_t num_gutter_quads = 0; |
@@ -2374,7 +2397,7 @@ TEST_F(LayerTreeHostImplTest, ViewportCovered) { |
child->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
ASSERT_EQ(1u, frame.render_passes.size()); |
size_t num_gutter_quads = 0; |
@@ -2399,7 +2422,7 @@ TEST_F(LayerTreeHostImplTest, ViewportCovered) { |
child->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
ASSERT_EQ(1u, frame.render_passes.size()); |
size_t num_gutter_quads = 0; |
@@ -2456,12 +2479,13 @@ TEST_F(LayerTreeHostImplTest, ReshapeNotCalledUntilDraw) { |
FakeDrawableLayerImpl::Create(host_impl_->active_tree(), 1); |
root->SetAnchorPoint(gfx::PointF()); |
root->SetBounds(gfx::Size(10, 10)); |
+ root->SetContentBounds(gfx::Size(10, 10)); |
root->SetDrawsContent(true); |
host_impl_->active_tree()->SetRootLayer(root.Pass()); |
EXPECT_FALSE(reshape_tracker->reshape_called()); |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
EXPECT_TRUE(reshape_tracker->reshape_called()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -2530,10 +2554,10 @@ TEST_F(LayerTreeHostImplTest, PartialSwapReceivesDamageRect) { |
LayerTreeHostImpl::FrameData frame; |
// First frame, the entire screen should get swapped. |
- EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
layer_tree_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); |
layer_tree_host_impl->DidDrawAllLayers(frame); |
- layer_tree_host_impl->SwapBuffers(); |
+ layer_tree_host_impl->SwapBuffers(frame); |
gfx::Rect actual_swap_rect = partial_swap_tracker->partial_swap_rect(); |
gfx::Rect expected_swap_rect = gfx::Rect(0, 0, 500, 500); |
EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x()); |
@@ -2547,10 +2571,10 @@ TEST_F(LayerTreeHostImplTest, PartialSwapReceivesDamageRect) { |
// expected swap rect: vertically flipped, with origin at bottom left corner. |
layer_tree_host_impl->active_tree()->root_layer()->children()[0]->SetPosition( |
gfx::PointF()); |
- EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
layer_tree_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
- layer_tree_host_impl->SwapBuffers(); |
+ layer_tree_host_impl->SwapBuffers(frame); |
actual_swap_rect = partial_swap_tracker->partial_swap_rect(); |
expected_swap_rect = gfx::Rect(0, 500-28, 26, 28); |
EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x()); |
@@ -2564,10 +2588,10 @@ TEST_F(LayerTreeHostImplTest, PartialSwapReceivesDamageRect) { |
layer_tree_host_impl->SetViewportSize(gfx::Size(10, 10), gfx::Size(10, 10)); |
// This will damage everything. |
layer_tree_host_impl->active_tree()->root_layer()->SetOpacity(0.7f); |
- EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
layer_tree_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
- layer_tree_host_impl->SwapBuffers(); |
+ layer_tree_host_impl->SwapBuffers(frame); |
actual_swap_rect = partial_swap_tracker->partial_swap_rect(); |
expected_swap_rect = gfx::Rect(10, 10); |
EXPECT_EQ(expected_swap_rect.x(), actual_swap_rect.x()); |
@@ -2596,7 +2620,7 @@ TEST_F(LayerTreeHostImplTest, RootLayerDoesntCreateExtraSurface) { |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
EXPECT_EQ(1u, frame.render_surface_layer_list->size()); |
EXPECT_EQ(1u, frame.render_passes.size()); |
host_impl_->DidDrawAllLayers(frame); |
@@ -2742,7 +2766,7 @@ TEST_F(LayerTreeHostImplTest, NoPartialSwap) { |
harness.MustSetNoScissor(); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
} |
@@ -2755,7 +2779,7 @@ TEST_F(LayerTreeHostImplTest, NoPartialSwap) { |
harness.MustSetScissor(0, 0, 10, 10); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
} |
@@ -2778,7 +2802,7 @@ TEST_F(LayerTreeHostImplTest, PartialSwap) { |
harness.MustDrawSolidQuad(); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
} |
@@ -2793,7 +2817,7 @@ TEST_F(LayerTreeHostImplTest, PartialSwap) { |
harness.MustDrawSolidQuad(); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
} |
@@ -2902,7 +2926,7 @@ TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorPartialSwap) { |
SetupLayersForOpacity(true, this, &proxy_, &stats_instrumentation_); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Verify all quads have been computed |
ASSERT_EQ(2U, frame.render_passes.size()); |
@@ -2923,7 +2947,7 @@ TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { |
SetupLayersForOpacity(false, this, &proxy_, &stats_instrumentation_); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Verify all quads have been computed |
ASSERT_EQ(2U, frame.render_passes.size()); |
@@ -3030,10 +3054,10 @@ TEST_F(LayerTreeHostImplTest, LayersFreeTextures) { |
EXPECT_EQ(0u, context3d->NumTextures()); |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
- host_impl_->SwapBuffers(); |
+ host_impl_->SwapBuffers(frame); |
EXPECT_GT(context3d->NumTextures(), 0u); |
@@ -3073,14 +3097,15 @@ TEST_F(LayerTreeHostImplTest, HasTransparentBackground) { |
EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) |
.Times(1); |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
Mock::VerifyAndClearExpectations(&mock_context); |
// Verify no quads are drawn when transparent background is set. |
host_impl_->active_tree()->set_has_transparent_background(true); |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ host_impl_->SetFullRootLayerDamage(); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
Mock::VerifyAndClearExpectations(&mock_context); |
@@ -3225,7 +3250,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusion) { |
// Initial draw - must receive all quads |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive 3 render passes. |
// For Root, there are 2 quads; for S1, there are 2 quads (1 is occluded); |
@@ -3248,7 +3273,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusion) { |
layer_s2_ptr->SetTransform(transform); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive 2 render passes. |
// For Root, there are 2 quads |
@@ -3272,7 +3297,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusion) { |
layer_s2_ptr->SetTransform(transform); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive 1 render pass - for the root. |
ASSERT_EQ(1U, frame.render_passes.size()); |
@@ -3347,7 +3372,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusionEarlyOut) { |
// Initial draw - must receive all quads |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive 3 render passes. |
// For Root, there are 2 quads; for S1, there are 3 quads; for S2, there is |
@@ -3372,7 +3397,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusionEarlyOut) { |
layer_s2_ptr->SetTransform(transform); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive 2 render passes. |
// For Root, there are 2 quads |
@@ -3396,7 +3421,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusionEarlyOut) { |
layer_s2_ptr->SetTransform(transform); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive 1 render pass - for the root. |
ASSERT_EQ(1U, frame.render_passes.size()); |
@@ -3464,7 +3489,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusionExternalOverInternal) { |
// Initial draw - must receive all quads |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive 3 render passes. |
// For Root, there are 2 quads; for S1, there are 3 quads; for S2, there is |
@@ -3487,7 +3512,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusionExternalOverInternal) { |
layer_s2_ptr->SetTransform(transform); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive 2 render passes. |
// For Root, there are 2 quads |
@@ -3555,7 +3580,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusionExternalNotAligned) { |
// Initial draw - must receive all quads |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive 2 render passes. |
ASSERT_EQ(2U, frame.render_passes.size()); |
@@ -3571,7 +3596,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusionExternalNotAligned) { |
layer_s1_ptr->SetOpacity(0.2f); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// One render pass must be gone due to cached texture. |
ASSERT_EQ(1U, frame.render_passes.size()); |
@@ -3647,7 +3672,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusionPartialSwap) { |
// Initial draw - must receive all quads |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive 3 render passes. |
// For Root, there are 2 quads; for S1, there are 2 quads (one is occluded); |
@@ -3670,7 +3695,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusionPartialSwap) { |
layer_s2_ptr->SetTransform(transform); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive 2 render passes. |
// For Root, there are 2 quads. |
@@ -3693,7 +3718,7 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithOcclusionPartialSwap) { |
layer_s2_ptr->SetTransform(transform); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Root render pass only. |
ASSERT_EQ(1U, frame.render_passes.size()); |
@@ -3787,7 +3812,8 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithScissor) { |
child_pass_id)); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ host_impl_->SetFullRootLayerDamage(); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
my_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); |
my_host_impl->DidDrawAllLayers(frame); |
} |
@@ -3797,7 +3823,8 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithScissor) { |
child_pass_id)); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ host_impl_->SetFullRootLayerDamage(); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
my_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); |
my_host_impl->DidDrawAllLayers(frame); |
} |
@@ -3811,7 +3838,8 @@ TEST_F(LayerTreeHostImplTest, TextureCachingWithScissor) { |
child_ptr->set_update_rect(gfx::Rect(10, 10, 10, 10)); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ host_impl_->SetFullRootLayerDamage(); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
my_host_impl->DrawLayers(&frame, base::TimeTicks::Now()); |
my_host_impl->DidDrawAllLayers(frame); |
} |
@@ -3846,7 +3874,7 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCaching) { |
gfx::Size(100, 100)); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive two render passes, each with one quad |
ASSERT_EQ(2U, frame.render_passes.size()); |
@@ -3868,7 +3896,8 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCaching) { |
// Draw without any change |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ host_impl_->SetFullRootLayerDamage(); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive one render pass, as the other one should be culled |
ASSERT_EQ(1U, frame.render_passes.size()); |
@@ -3889,7 +3918,7 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCaching) { |
surface_layer_ptr->SetOpacity(0.6f); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive one render pass, as the other one should be culled |
ASSERT_EQ(1U, frame.render_passes.size()); |
@@ -3910,7 +3939,7 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCaching) { |
surface_layer_ptr->SetStackingOrderChanged(true); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive two render passes, each with one quad |
ASSERT_EQ(2U, frame.render_passes.size()); |
@@ -3940,7 +3969,7 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCaching) { |
surface_layer_ptr->SetOpacity(0.6f); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive two render passes |
ASSERT_EQ(2U, frame.render_passes.size()); |
@@ -3969,7 +3998,8 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCaching) { |
// Draw without any change, to make sure the state is clear |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ host_impl_->SetFullRootLayerDamage(); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive one render pass, as the other one should be culled |
ASSERT_EQ(1U, frame.render_passes.size()); |
@@ -3992,7 +4022,7 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCaching) { |
intermediate_layer_ptr->SetTransform(transform); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive one render pass, as the other one should be culled. |
ASSERT_EQ(1U, frame.render_passes.size()); |
@@ -4033,7 +4063,7 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCachingNoPartialSwap) { |
gfx::Size(100, 100)); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive two render passes, each with one quad |
ASSERT_EQ(2U, frame.render_passes.size()); |
@@ -4062,7 +4092,8 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCachingNoPartialSwap) { |
// Draw without any change |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ host_impl_->SetFullRootLayerDamage(); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Even though there was no change, we set the damage to entire viewport. |
// One of the passes should be culled as a result, since contents didn't |
@@ -4080,7 +4111,7 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCachingNoPartialSwap) { |
surface_layer_ptr->SetOpacity(0.6f); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive one render pass, as the other one should be culled |
ASSERT_EQ(1U, frame.render_passes.size()); |
@@ -4101,7 +4132,7 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCachingNoPartialSwap) { |
surface_layer_ptr->SetStackingOrderChanged(true); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive two render passes, each with one quad |
ASSERT_EQ(2U, frame.render_passes.size()); |
@@ -4131,7 +4162,7 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCachingNoPartialSwap) { |
surface_layer_ptr->SetOpacity(0.6f); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive two render passes |
ASSERT_EQ(2U, frame.render_passes.size()); |
@@ -4160,7 +4191,8 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCachingNoPartialSwap) { |
// Draw without any change, to make sure the state is clear |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ host_impl_->SetFullRootLayerDamage(); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Even though there was no change, we set the damage to entire viewport. |
// One of the passes should be culled as a result, since contents didn't |
@@ -4178,7 +4210,7 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCachingNoPartialSwap) { |
intermediate_layer_ptr->SetTransform(transform); |
{ |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame, gfx::Rect())); |
// Must receive one render pass, as the other one should be culled. |
ASSERT_EQ(1U, frame.render_passes.size()); |
@@ -4627,23 +4659,32 @@ class LayerTreeHostImplTestWithDelegatingRenderer |
} |
void DrawFrameAndTestDamage(const gfx::RectF& expected_damage) { |
- LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
- ASSERT_EQ(1u, frame.render_passes.size()); |
- |
- // Verify the damage rect for the root render pass. |
- const RenderPass* root_render_pass = frame.render_passes.back(); |
- EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect); |
+ bool expect_to_draw = !expected_damage.IsEmpty(); |
- // Verify the root layer's quad is generated and not being culled. |
- ASSERT_EQ(1u, root_render_pass->quad_list.size()); |
- gfx::Rect expected_visible_rect( |
- host_impl_->active_tree()->root_layer()->content_bounds()); |
- EXPECT_RECT_EQ(expected_visible_rect, |
- root_render_pass->quad_list[0]->visible_rect); |
+ LayerTreeHostImpl::FrameData frame; |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
+ |
+ if (!expect_to_draw) { |
+ // With no damage, we don't draw, and no quads are created. |
+ ASSERT_EQ(0u, frame.render_passes.size()); |
+ } else { |
+ ASSERT_EQ(1u, frame.render_passes.size()); |
+ |
+ // Verify the damage rect for the root render pass. |
+ const RenderPass* root_render_pass = frame.render_passes.back(); |
+ EXPECT_RECT_EQ(expected_damage, root_render_pass->damage_rect); |
+ |
+ // Verify the root layer's quad is generated and not being culled. |
+ ASSERT_EQ(1u, root_render_pass->quad_list.size()); |
+ gfx::Rect expected_visible_rect( |
+ host_impl_->active_tree()->root_layer()->content_bounds()); |
+ EXPECT_RECT_EQ(expected_visible_rect, |
+ root_render_pass->quad_list[0]->visible_rect); |
+ } |
host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
host_impl_->DidDrawAllLayers(frame); |
+ EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame)); |
} |
}; |
@@ -4657,12 +4698,27 @@ TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) { |
root->SetDrawsContent(true); |
host_impl_->active_tree()->SetRootLayer(root.PassAs<LayerImpl>()); |
+ // Child layer is in the bottom right corner. |
+ scoped_ptr<SolidColorLayerImpl> child = |
+ SolidColorLayerImpl::Create(host_impl_->active_tree(), 2); |
+ child->SetAnchorPoint(gfx::PointF(0.f, 0.f)); |
+ child->SetPosition(gfx::PointF(9.f, 9.f)); |
+ child->SetBounds(gfx::Size(1, 1)); |
+ child->SetContentBounds(gfx::Size(1, 1)); |
+ child->SetDrawsContent(true); |
+ root->AddChild(child.PassAs<LayerImpl>()); |
+ |
// Draw a frame. In the first frame, the entire viewport should be damaged. |
gfx::Rect full_frame_damage = gfx::Rect(host_impl_->device_viewport_size()); |
DrawFrameAndTestDamage(full_frame_damage); |
- // The second frame should have no damage, but the quads should still be |
- // generated. |
+ // The second frame has damage that doesn't touch the child layer. Its quads |
+ // should still be generated. |
+ gfx::Rect small_damage = gfx::Rect(0, 0, 1, 1); |
+ host_impl_->active_tree()->root_layer()->set_update_rect(small_damage); |
+ DrawFrameAndTestDamage(small_damage); |
+ |
+ // The third frame should have no damage, so no quads should be generated. |
gfx::Rect no_damage; |
DrawFrameAndTestDamage(no_damage); |
} |
@@ -4744,7 +4800,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithScaling) { |
host_impl_->SetViewportSize(root_size, root_size); |
host_impl_->SetDeviceScaleFactor(device_scale_factor); { |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
ASSERT_EQ(1u, frame.render_passes.size()); |
ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
@@ -4771,7 +4827,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithScaling) { |
host_impl_->SetDeviceScaleFactor(device_scale_factor); |
host_impl_->active_tree()->set_needs_update_draw_properties(); { |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
ASSERT_EQ(1u, frame.render_passes.size()); |
ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
@@ -4800,7 +4856,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithScaling) { |
mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
host_impl_->active_tree()->set_needs_update_draw_properties(); { |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
ASSERT_EQ(1u, frame.render_passes.size()); |
ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
@@ -4863,7 +4919,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) { |
host_impl_->SetViewportSize(root_size, root_size); |
host_impl_->SetDeviceScaleFactor(device_scale_factor); { |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
ASSERT_EQ(1u, frame.render_passes.size()); |
ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
@@ -4890,7 +4946,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) { |
host_impl_->SetDeviceScaleFactor(device_scale_factor); |
host_impl_->active_tree()->set_needs_update_draw_properties(); { |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
ASSERT_EQ(1u, frame.render_passes.size()); |
ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
@@ -4920,7 +4976,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) { |
mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
host_impl_->active_tree()->set_needs_update_draw_properties(); { |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
ASSERT_EQ(1u, frame.render_passes.size()); |
ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
@@ -4943,7 +4999,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) { |
mask_layer->SetContentsScale(device_scale_factor, device_scale_factor); |
host_impl_->active_tree()->set_needs_update_draw_properties(); { |
LayerTreeHostImpl::FrameData frame; |
- EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); |
+ EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
ASSERT_EQ(1u, frame.render_passes.size()); |
ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |