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