| 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 40d0ced3612ba17029c4ed5607395a130e810d28..49c9b0b514899938c30b558e6fbdf8d9f85b3e1c 100644
|
| --- a/cc/trees/layer_tree_host_impl_unittest.cc
|
| +++ b/cc/trees/layer_tree_host_impl_unittest.cc
|
| @@ -224,7 +224,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);
|
| }
|
| @@ -242,7 +242,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);
|
| }
|
|
|
| @@ -1058,7 +1058,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);
|
|
|
| @@ -1073,7 +1073,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);
|
|
|
| @@ -1112,7 +1112,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);
|
|
|
| @@ -1144,7 +1144,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);
|
|
|
| @@ -1216,7 +1216,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);
|
|
|
| @@ -1234,7 +1234,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);
|
|
|
| @@ -1252,7 +1252,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);
|
|
|
| @@ -1269,7 +1269,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);
|
| }
|
| @@ -1308,6 +1308,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();
|
| @@ -1610,7 +1611,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);
|
|
|
| @@ -2146,7 +2147,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);
|
| @@ -2154,7 +2156,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);
|
| @@ -2163,7 +2166,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);
|
| @@ -2172,7 +2176,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);
|
| @@ -2189,10 +2194,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());
|
| @@ -2202,8 +2209,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());
|
| @@ -2214,8 +2223,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());
|
| @@ -2229,8 +2240,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());
|
| @@ -2241,10 +2254,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());
|
| @@ -2254,10 +2269,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());
|
| @@ -2268,10 +2285,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());
|
| @@ -2283,7 +2302,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);
|
| @@ -2294,7 +2314,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);
|
| @@ -2305,7 +2326,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);
|
| @@ -2317,7 +2339,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);
|
| @@ -2351,7 +2374,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;
|
| @@ -2376,7 +2399,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;
|
| @@ -2401,7 +2424,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;
|
| @@ -2457,12 +2480,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);
|
| @@ -2531,10 +2555,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());
|
| @@ -2548,10 +2572,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());
|
| @@ -2565,10 +2589,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());
|
| @@ -2597,7 +2621,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);
|
| @@ -2743,7 +2767,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);
|
| }
|
| @@ -2756,7 +2780,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);
|
| }
|
| @@ -2779,7 +2803,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);
|
| }
|
| @@ -2794,7 +2818,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);
|
| }
|
| @@ -2903,7 +2927,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());
|
| @@ -2924,7 +2948,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());
|
| @@ -3019,10 +3043,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);
|
|
|
| @@ -3062,14 +3086,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);
|
| @@ -3214,7 +3239,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);
|
| @@ -3237,7 +3262,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
|
| @@ -3261,7 +3286,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());
|
| @@ -3335,7 +3360,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
|
| @@ -3360,7 +3385,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
|
| @@ -3384,7 +3409,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());
|
| @@ -3452,7 +3477,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
|
| @@ -3475,7 +3500,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
|
| @@ -3543,7 +3568,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());
|
| @@ -3559,7 +3584,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());
|
| @@ -3635,7 +3660,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);
|
| @@ -3658,7 +3683,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.
|
| @@ -3681,7 +3706,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());
|
| @@ -3775,7 +3800,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);
|
| }
|
| @@ -3785,7 +3811,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);
|
| }
|
| @@ -3799,7 +3826,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);
|
| }
|
| @@ -3834,7 +3862,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());
|
| @@ -3856,7 +3884,8 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCaching) {
|
| // Draw without any change
|
| {
|
| LayerTreeHostImpl::FrameData frame;
|
| - EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame));
|
| + my_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());
|
| @@ -3877,7 +3906,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());
|
| @@ -3898,7 +3927,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());
|
| @@ -3928,7 +3957,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());
|
| @@ -3957,7 +3986,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));
|
| + my_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());
|
| @@ -3980,7 +4010,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());
|
| @@ -4021,7 +4051,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());
|
| @@ -4050,7 +4080,8 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCachingNoPartialSwap) {
|
| // Draw without any change
|
| {
|
| LayerTreeHostImpl::FrameData frame;
|
| - EXPECT_TRUE(my_host_impl->PrepareToDraw(&frame));
|
| + my_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
|
| @@ -4058,8 +4089,6 @@ TEST_F(LayerTreeHostImplTest, SurfaceTextureCachingNoPartialSwap) {
|
| ASSERT_EQ(1U, frame.render_passes.size());
|
| EXPECT_EQ(1U, frame.render_passes[0]->quad_list.size());
|
|
|
| - EXPECT_TRUE(frame.render_passes[0]->damage_rect.IsEmpty());
|
| -
|
| my_host_impl->DrawLayers(&frame, base::TimeTicks::Now());
|
| my_host_impl->DidDrawAllLayers(frame);
|
| }
|
| @@ -4068,7 +4097,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());
|
| @@ -4089,7 +4118,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());
|
| @@ -4119,7 +4148,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());
|
| @@ -4148,7 +4177,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));
|
| + my_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
|
| @@ -4166,7 +4196,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());
|
| @@ -4645,23 +4675,39 @@ 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 and child layers' quads are generated and not being
|
| + // culled.
|
| + ASSERT_EQ(2u, root_render_pass->quad_list.size());
|
| +
|
| + LayerImpl* child = host_impl_->active_tree()->root_layer()->children()[0];
|
| + gfx::RectF expected_child_visible_rect(child->content_bounds());
|
| + EXPECT_RECT_EQ(expected_child_visible_rect,
|
| + root_render_pass->quad_list[0]->visible_rect);
|
| +
|
| + LayerImpl* root = host_impl_->active_tree()->root_layer();
|
| + gfx::RectF expected_root_visible_rect(root->content_bounds());
|
| + EXPECT_RECT_EQ(expected_root_visible_rect,
|
| + root_render_pass->quad_list[1]->visible_rect);
|
| + }
|
|
|
| host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
|
| host_impl_->DidDrawAllLayers(frame);
|
| + EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame));
|
| }
|
| };
|
|
|
| @@ -4673,14 +4719,30 @@ TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect) {
|
| root->SetBounds(gfx::Size(10, 10));
|
| root->SetContentBounds(gfx::Size(10, 10));
|
| root->SetDrawsContent(true);
|
| +
|
| + // 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>());
|
| +
|
| host_impl_->active_tree()->SetRootLayer(root.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);
|
| }
|
| @@ -4763,7 +4825,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithScaling) {
|
| 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());
|
| @@ -4791,7 +4853,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithScaling) {
|
| 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());
|
| @@ -4821,7 +4883,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithScaling) {
|
| 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());
|
| @@ -4885,7 +4947,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) {
|
| 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());
|
| @@ -4913,7 +4975,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) {
|
| 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());
|
| @@ -4944,7 +5006,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) {
|
| 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());
|
| @@ -4968,7 +5030,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) {
|
| 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());
|
|
|