| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 // Set the BeginFrameArgs so that methods which use it are able to. | 181 // Set the BeginFrameArgs so that methods which use it are able to. |
| 182 host_impl_->WillBeginImplFrame( | 182 host_impl_->WillBeginImplFrame( |
| 183 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | 183 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); |
| 184 return init; | 184 return init; |
| 185 } | 185 } |
| 186 | 186 |
| 187 void SetupRootLayerImpl(scoped_ptr<LayerImpl> root) { | 187 void SetupRootLayerImpl(scoped_ptr<LayerImpl> root) { |
| 188 root->SetPosition(gfx::PointF()); | 188 root->SetPosition(gfx::PointF()); |
| 189 root->SetBounds(gfx::Size(10, 10)); | 189 root->SetBounds(gfx::Size(10, 10)); |
| 190 root->SetDrawsContent(true); | 190 root->SetDrawsContent(true); |
| 191 root->draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10); | 191 root->draw_properties().visible_layer_rect = gfx::Rect(0, 0, 10, 10); |
| 192 root->SetHasRenderSurface(true); | 192 root->SetHasRenderSurface(true); |
| 193 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 193 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
| 194 } | 194 } |
| 195 | 195 |
| 196 static void ExpectClearedScrollDeltasRecursive(LayerImpl* layer) { | 196 static void ExpectClearedScrollDeltasRecursive(LayerImpl* layer) { |
| 197 ASSERT_EQ(layer->ScrollDelta(), gfx::Vector2d()); | 197 ASSERT_EQ(layer->ScrollDelta(), gfx::Vector2d()); |
| 198 for (size_t i = 0; i < layer->children().size(); ++i) | 198 for (size_t i = 0; i < layer->children().size(); ++i) |
| 199 ExpectClearedScrollDeltasRecursive(layer->children()[i]); | 199 ExpectClearedScrollDeltasRecursive(layer->children()[i]); |
| 200 } | 200 } |
| 201 | 201 |
| (...skipping 1943 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2145 | 2145 |
| 2146 protected: | 2146 protected: |
| 2147 DidDrawCheckLayer(LayerTreeImpl* tree_impl, int id) | 2147 DidDrawCheckLayer(LayerTreeImpl* tree_impl, int id) |
| 2148 : LayerImpl(tree_impl, id), | 2148 : LayerImpl(tree_impl, id), |
| 2149 will_draw_returns_false_(false), | 2149 will_draw_returns_false_(false), |
| 2150 will_draw_called_(false), | 2150 will_draw_called_(false), |
| 2151 append_quads_called_(false), | 2151 append_quads_called_(false), |
| 2152 did_draw_called_(false) { | 2152 did_draw_called_(false) { |
| 2153 SetBounds(gfx::Size(10, 10)); | 2153 SetBounds(gfx::Size(10, 10)); |
| 2154 SetDrawsContent(true); | 2154 SetDrawsContent(true); |
| 2155 draw_properties().visible_content_rect = gfx::Rect(0, 0, 10, 10); | 2155 draw_properties().visible_layer_rect = gfx::Rect(0, 0, 10, 10); |
| 2156 } | 2156 } |
| 2157 | 2157 |
| 2158 private: | 2158 private: |
| 2159 bool will_draw_returns_false_; | 2159 bool will_draw_returns_false_; |
| 2160 bool will_draw_called_; | 2160 bool will_draw_called_; |
| 2161 bool append_quads_called_; | 2161 bool append_quads_called_; |
| 2162 bool did_draw_called_; | 2162 bool did_draw_called_; |
| 2163 }; | 2163 }; |
| 2164 | 2164 |
| 2165 TEST_F(LayerTreeHostImplTest, WillDrawReturningFalseDoesNotCall) { | 2165 TEST_F(LayerTreeHostImplTest, WillDrawReturningFalseDoesNotCall) { |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2209 // will be masked out by the root layer's bounds. | 2209 // will be masked out by the root layer's bounds. |
| 2210 host_impl_->active_tree()->SetRootLayer( | 2210 host_impl_->active_tree()->SetRootLayer( |
| 2211 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 2211 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 2212 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( | 2212 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>( |
| 2213 host_impl_->active_tree()->root_layer()); | 2213 host_impl_->active_tree()->root_layer()); |
| 2214 root->SetMasksToBounds(true); | 2214 root->SetMasksToBounds(true); |
| 2215 root->SetHasRenderSurface(true); | 2215 root->SetHasRenderSurface(true); |
| 2216 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 2216 root->AddChild(DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |
| 2217 DidDrawCheckLayer* layer = | 2217 DidDrawCheckLayer* layer = |
| 2218 static_cast<DidDrawCheckLayer*>(root->children()[0]); | 2218 static_cast<DidDrawCheckLayer*>(root->children()[0]); |
| 2219 // Ensure visible_content_rect for layer is empty. | 2219 // Ensure visible_layer_rect for layer is empty. |
| 2220 layer->SetPosition(gfx::PointF(100.f, 100.f)); | 2220 layer->SetPosition(gfx::PointF(100.f, 100.f)); |
| 2221 layer->SetBounds(gfx::Size(10, 10)); | 2221 layer->SetBounds(gfx::Size(10, 10)); |
| 2222 | 2222 |
| 2223 LayerTreeHostImpl::FrameData frame; | 2223 LayerTreeHostImpl::FrameData frame; |
| 2224 | 2224 |
| 2225 EXPECT_FALSE(layer->will_draw_called()); | 2225 EXPECT_FALSE(layer->will_draw_called()); |
| 2226 EXPECT_FALSE(layer->did_draw_called()); | 2226 EXPECT_FALSE(layer->did_draw_called()); |
| 2227 | 2227 |
| 2228 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 2228 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2229 host_impl_->DrawLayers(&frame); | 2229 host_impl_->DrawLayers(&frame); |
| 2230 host_impl_->DidDrawAllLayers(frame); | 2230 host_impl_->DidDrawAllLayers(frame); |
| 2231 | 2231 |
| 2232 EXPECT_FALSE(layer->will_draw_called()); | 2232 EXPECT_FALSE(layer->will_draw_called()); |
| 2233 EXPECT_FALSE(layer->did_draw_called()); | 2233 EXPECT_FALSE(layer->did_draw_called()); |
| 2234 | 2234 |
| 2235 EXPECT_TRUE(layer->visible_content_rect().IsEmpty()); | 2235 EXPECT_TRUE(layer->visible_layer_rect().IsEmpty()); |
| 2236 | 2236 |
| 2237 // Ensure visible_content_rect for layer is not empty | 2237 // Ensure visible_layer_rect for layer is not empty |
| 2238 layer->SetPosition(gfx::PointF()); | 2238 layer->SetPosition(gfx::PointF()); |
| 2239 | 2239 |
| 2240 EXPECT_FALSE(layer->will_draw_called()); | 2240 EXPECT_FALSE(layer->will_draw_called()); |
| 2241 EXPECT_FALSE(layer->did_draw_called()); | 2241 EXPECT_FALSE(layer->did_draw_called()); |
| 2242 | 2242 |
| 2243 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 2243 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 2244 host_impl_->DrawLayers(&frame); | 2244 host_impl_->DrawLayers(&frame); |
| 2245 host_impl_->DidDrawAllLayers(frame); | 2245 host_impl_->DidDrawAllLayers(frame); |
| 2246 | 2246 |
| 2247 EXPECT_TRUE(layer->will_draw_called()); | 2247 EXPECT_TRUE(layer->will_draw_called()); |
| 2248 EXPECT_TRUE(layer->did_draw_called()); | 2248 EXPECT_TRUE(layer->did_draw_called()); |
| 2249 | 2249 |
| 2250 EXPECT_FALSE(layer->visible_content_rect().IsEmpty()); | 2250 EXPECT_FALSE(layer->visible_layer_rect().IsEmpty()); |
| 2251 } | 2251 } |
| 2252 | 2252 |
| 2253 TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) { | 2253 TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) { |
| 2254 gfx::Size big_size(1000, 1000); | 2254 gfx::Size big_size(1000, 1000); |
| 2255 host_impl_->SetViewportSize(big_size); | 2255 host_impl_->SetViewportSize(big_size); |
| 2256 | 2256 |
| 2257 host_impl_->active_tree()->SetRootLayer( | 2257 host_impl_->active_tree()->SetRootLayer( |
| 2258 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 2258 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 2259 DidDrawCheckLayer* root = | 2259 DidDrawCheckLayer* root = |
| 2260 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); | 2260 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); |
| (...skipping 3261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5522 scoped_ptr<LayerImpl> grand_child = | 5522 scoped_ptr<LayerImpl> grand_child = |
| 5523 FakeLayerWithQuads::Create(my_host_impl->active_tree(), 3); | 5523 FakeLayerWithQuads::Create(my_host_impl->active_tree(), 3); |
| 5524 | 5524 |
| 5525 gfx::Rect root_rect(0, 0, 100, 100); | 5525 gfx::Rect root_rect(0, 0, 100, 100); |
| 5526 gfx::Rect child_rect(10, 10, 50, 50); | 5526 gfx::Rect child_rect(10, 10, 50, 50); |
| 5527 gfx::Rect grand_child_rect(5, 5, 150, 150); | 5527 gfx::Rect grand_child_rect(5, 5, 150, 150); |
| 5528 | 5528 |
| 5529 root->SetHasRenderSurface(true); | 5529 root->SetHasRenderSurface(true); |
| 5530 root->SetPosition(root_rect.origin()); | 5530 root->SetPosition(root_rect.origin()); |
| 5531 root->SetBounds(root_rect.size()); | 5531 root->SetBounds(root_rect.size()); |
| 5532 root->draw_properties().visible_content_rect = root_rect; | 5532 root->draw_properties().visible_layer_rect = root_rect; |
| 5533 root->SetDrawsContent(false); | 5533 root->SetDrawsContent(false); |
| 5534 root->render_surface()->SetContentRect(gfx::Rect(root_rect.size())); | 5534 root->render_surface()->SetContentRect(gfx::Rect(root_rect.size())); |
| 5535 | 5535 |
| 5536 child->SetPosition(gfx::PointF(child_rect.x(), child_rect.y())); | 5536 child->SetPosition(gfx::PointF(child_rect.x(), child_rect.y())); |
| 5537 child->SetOpacity(0.5f); | 5537 child->SetOpacity(0.5f); |
| 5538 child->SetBounds(gfx::Size(child_rect.width(), child_rect.height())); | 5538 child->SetBounds(gfx::Size(child_rect.width(), child_rect.height())); |
| 5539 child->draw_properties().visible_content_rect = child_rect; | 5539 child->draw_properties().visible_layer_rect = child_rect; |
| 5540 child->SetDrawsContent(false); | 5540 child->SetDrawsContent(false); |
| 5541 child->SetHasRenderSurface(true); | 5541 child->SetHasRenderSurface(true); |
| 5542 | 5542 |
| 5543 grand_child->SetPosition(grand_child_rect.origin()); | 5543 grand_child->SetPosition(grand_child_rect.origin()); |
| 5544 grand_child->SetBounds(grand_child_rect.size()); | 5544 grand_child->SetBounds(grand_child_rect.size()); |
| 5545 grand_child->draw_properties().visible_content_rect = grand_child_rect; | 5545 grand_child->draw_properties().visible_layer_rect = grand_child_rect; |
| 5546 grand_child->SetDrawsContent(true); | 5546 grand_child->SetDrawsContent(true); |
| 5547 | 5547 |
| 5548 child->AddChild(grand_child.Pass()); | 5548 child->AddChild(grand_child.Pass()); |
| 5549 root->AddChild(child.Pass()); | 5549 root->AddChild(child.Pass()); |
| 5550 | 5550 |
| 5551 my_host_impl->active_tree()->SetRootLayer(root.Pass()); | 5551 my_host_impl->active_tree()->SetRootLayer(root.Pass()); |
| 5552 return my_host_impl.Pass(); | 5552 return my_host_impl.Pass(); |
| 5553 } | 5553 } |
| 5554 | 5554 |
| 5555 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorPartialSwap) { | 5555 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorPartialSwap) { |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5893 | 5893 |
| 5894 LayerTreeHostImpl::FrameData frame; | 5894 LayerTreeHostImpl::FrameData frame; |
| 5895 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5895 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5896 | 5896 |
| 5897 ASSERT_EQ(1u, frame.render_passes.size()); | 5897 ASSERT_EQ(1u, frame.render_passes.size()); |
| 5898 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); | 5898 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); |
| 5899 const DrawQuad* quad = frame.render_passes[0]->quad_list.front(); | 5899 const DrawQuad* quad = frame.render_passes[0]->quad_list.front(); |
| 5900 | 5900 |
| 5901 bool clipped = false, force_aa = false; | 5901 bool clipped = false, force_aa = false; |
| 5902 gfx::QuadF device_layer_quad = MathUtil::MapQuad( | 5902 gfx::QuadF device_layer_quad = MathUtil::MapQuad( |
| 5903 quad->shared_quad_state->content_to_target_transform, | 5903 quad->shared_quad_state->quad_to_target_transform, |
| 5904 gfx::QuadF(quad->shared_quad_state->visible_content_rect), &clipped); | 5904 gfx::QuadF(quad->shared_quad_state->visible_quad_layer_rect), &clipped); |
| 5905 EXPECT_FALSE(clipped); | 5905 EXPECT_FALSE(clipped); |
| 5906 bool antialiased = | 5906 bool antialiased = |
| 5907 GLRendererWithSetupQuadForAntialiasing::ShouldAntialiasQuad( | 5907 GLRendererWithSetupQuadForAntialiasing::ShouldAntialiasQuad( |
| 5908 device_layer_quad, clipped, force_aa); | 5908 device_layer_quad, clipped, force_aa); |
| 5909 EXPECT_FALSE(antialiased); | 5909 EXPECT_FALSE(antialiased); |
| 5910 | 5910 |
| 5911 host_impl_->DrawLayers(&frame); | 5911 host_impl_->DrawLayers(&frame); |
| 5912 host_impl_->DidDrawAllLayers(frame); | 5912 host_impl_->DidDrawAllLayers(frame); |
| 5913 } | 5913 } |
| 5914 | 5914 |
| (...skipping 2055 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7970 // Hold an unowned pointer to the output surface to use for mock expectations. | 7970 // Hold an unowned pointer to the output surface to use for mock expectations. |
| 7971 MockReclaimResourcesOutputSurface* mock_output_surface = output_surface.get(); | 7971 MockReclaimResourcesOutputSurface* mock_output_surface = output_surface.get(); |
| 7972 | 7972 |
| 7973 CreateHostImpl(DefaultSettings(), output_surface.Pass()); | 7973 CreateHostImpl(DefaultSettings(), output_surface.Pass()); |
| 7974 EXPECT_CALL(*mock_output_surface, ForceReclaimResources()).Times(1); | 7974 EXPECT_CALL(*mock_output_surface, ForceReclaimResources()).Times(1); |
| 7975 host_impl_->BeginCommit(); | 7975 host_impl_->BeginCommit(); |
| 7976 } | 7976 } |
| 7977 | 7977 |
| 7978 } // namespace | 7978 } // namespace |
| 7979 } // namespace cc | 7979 } // namespace cc |
| OLD | NEW |