| 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 27 matching lines...) Expand all Loading... |
| 38 #include "cc/output/gl_renderer.h" | 38 #include "cc/output/gl_renderer.h" |
| 39 #include "cc/output/latency_info_swap_promise.h" | 39 #include "cc/output/latency_info_swap_promise.h" |
| 40 #include "cc/quads/render_pass_draw_quad.h" | 40 #include "cc/quads/render_pass_draw_quad.h" |
| 41 #include "cc/quads/solid_color_draw_quad.h" | 41 #include "cc/quads/solid_color_draw_quad.h" |
| 42 #include "cc/quads/texture_draw_quad.h" | 42 #include "cc/quads/texture_draw_quad.h" |
| 43 #include "cc/quads/tile_draw_quad.h" | 43 #include "cc/quads/tile_draw_quad.h" |
| 44 #include "cc/test/animation_test_common.h" | 44 #include "cc/test/animation_test_common.h" |
| 45 #include "cc/test/begin_frame_args_test.h" | 45 #include "cc/test/begin_frame_args_test.h" |
| 46 #include "cc/test/fake_display_list_raster_source.h" | 46 #include "cc/test/fake_display_list_raster_source.h" |
| 47 #include "cc/test/fake_layer_tree_host_impl.h" | 47 #include "cc/test/fake_layer_tree_host_impl.h" |
| 48 #include "cc/test/fake_mask_layer_impl.h" |
| 48 #include "cc/test/fake_output_surface.h" | 49 #include "cc/test/fake_output_surface.h" |
| 49 #include "cc/test/fake_output_surface_client.h" | 50 #include "cc/test/fake_output_surface_client.h" |
| 50 #include "cc/test/fake_picture_layer_impl.h" | 51 #include "cc/test/fake_picture_layer_impl.h" |
| 51 #include "cc/test/fake_video_frame_provider.h" | 52 #include "cc/test/fake_video_frame_provider.h" |
| 52 #include "cc/test/geometry_test_utils.h" | 53 #include "cc/test/geometry_test_utils.h" |
| 53 #include "cc/test/gpu_rasterization_enabled_settings.h" | 54 #include "cc/test/gpu_rasterization_enabled_settings.h" |
| 54 #include "cc/test/layer_test_common.h" | 55 #include "cc/test/layer_test_common.h" |
| 55 #include "cc/test/layer_tree_test.h" | 56 #include "cc/test/layer_tree_test.h" |
| 56 #include "cc/test/test_gpu_memory_buffer_manager.h" | 57 #include "cc/test/test_gpu_memory_buffer_manager.h" |
| 57 #include "cc/test/test_shared_bitmap_manager.h" | 58 #include "cc/test/test_shared_bitmap_manager.h" |
| (...skipping 4296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4354 host_impl_->ScrollEnd(); | 4355 host_impl_->ScrollEnd(); |
| 4355 DrawOneFrame(); | 4356 DrawOneFrame(); |
| 4356 | 4357 |
| 4357 // Make sure all the layers are drawn with the page scale delta applied, i.e., | 4358 // Make sure all the layers are drawn with the page scale delta applied, i.e., |
| 4358 // the page scale delta on the root layer is applied hierarchically. | 4359 // the page scale delta on the root layer is applied hierarchically. |
| 4359 LayerTreeHostImpl::FrameData frame; | 4360 LayerTreeHostImpl::FrameData frame; |
| 4360 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); | 4361 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); |
| 4361 host_impl_->DrawLayers(&frame); | 4362 host_impl_->DrawLayers(&frame); |
| 4362 host_impl_->DidDrawAllLayers(frame); | 4363 host_impl_->DidDrawAllLayers(frame); |
| 4363 | 4364 |
| 4364 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(0, 0)); | 4365 EXPECT_EQ(1.f, root->DrawTransform().matrix().getDouble(0, 0)); |
| 4365 EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(1, 1)); | 4366 EXPECT_EQ(1.f, root->DrawTransform().matrix().getDouble(1, 1)); |
| 4366 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(0, 0)); | 4367 EXPECT_EQ(new_page_scale, scroll->DrawTransform().matrix().getDouble(0, 0)); |
| 4367 EXPECT_EQ(new_page_scale, scroll->draw_transform().matrix().getDouble(1, 1)); | 4368 EXPECT_EQ(new_page_scale, scroll->DrawTransform().matrix().getDouble(1, 1)); |
| 4368 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(0, 0)); | 4369 EXPECT_EQ(new_page_scale, child->DrawTransform().matrix().getDouble(0, 0)); |
| 4369 EXPECT_EQ(new_page_scale, child->draw_transform().matrix().getDouble(1, 1)); | 4370 EXPECT_EQ(new_page_scale, child->DrawTransform().matrix().getDouble(1, 1)); |
| 4370 EXPECT_EQ(new_page_scale, | 4371 EXPECT_EQ(new_page_scale, |
| 4371 grand_child->draw_transform().matrix().getDouble(0, 0)); | 4372 grand_child->DrawTransform().matrix().getDouble(0, 0)); |
| 4372 EXPECT_EQ(new_page_scale, | 4373 EXPECT_EQ(new_page_scale, |
| 4373 grand_child->draw_transform().matrix().getDouble(1, 1)); | 4374 grand_child->DrawTransform().matrix().getDouble(1, 1)); |
| 4374 } | 4375 } |
| 4375 | 4376 |
| 4376 TEST_F(LayerTreeHostImplTest, ScrollChildAndChangePageScaleOnMainThread) { | 4377 TEST_F(LayerTreeHostImplTest, ScrollChildAndChangePageScaleOnMainThread) { |
| 4377 SetupScrollAndContentsLayers(gfx::Size(30, 30)); | 4378 SetupScrollAndContentsLayers(gfx::Size(30, 30)); |
| 4378 | 4379 |
| 4379 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer(); | 4380 LayerImpl* outer_scroll = host_impl_->OuterViewportScrollLayer(); |
| 4380 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer(); | 4381 LayerImpl* inner_scroll = host_impl_->InnerViewportScrollLayer(); |
| 4381 | 4382 |
| 4382 // Make the outer scroll layer scrollable. | 4383 // Make the outer scroll layer scrollable. |
| 4383 outer_scroll->SetBounds(gfx::Size(50, 50)); | 4384 outer_scroll->SetBounds(gfx::Size(50, 50)); |
| (...skipping 2221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6605 } | 6606 } |
| 6606 | 6607 |
| 6607 // TODO(reveman): Remove this test and the ability to prevent on demand raster | 6608 // TODO(reveman): Remove this test and the ability to prevent on demand raster |
| 6608 // when delegating renderer supports PictureDrawQuads. crbug.com/342121 | 6609 // when delegating renderer supports PictureDrawQuads. crbug.com/342121 |
| 6609 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, PreventRasterizeOnDemand) { | 6610 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, PreventRasterizeOnDemand) { |
| 6610 LayerTreeSettings settings = DefaultSettings(); | 6611 LayerTreeSettings settings = DefaultSettings(); |
| 6611 CreateHostImpl(settings, CreateOutputSurface()); | 6612 CreateHostImpl(settings, CreateOutputSurface()); |
| 6612 EXPECT_FALSE(host_impl_->GetRendererCapabilities().allow_rasterize_on_demand); | 6613 EXPECT_FALSE(host_impl_->GetRendererCapabilities().allow_rasterize_on_demand); |
| 6613 } | 6614 } |
| 6614 | 6615 |
| 6615 class FakeMaskLayerImpl : public LayerImpl { | |
| 6616 public: | |
| 6617 static scoped_ptr<FakeMaskLayerImpl> Create(LayerTreeImpl* tree_impl, | |
| 6618 int id) { | |
| 6619 return make_scoped_ptr(new FakeMaskLayerImpl(tree_impl, id)); | |
| 6620 } | |
| 6621 | |
| 6622 void GetContentsResourceId(ResourceId* resource_id, | |
| 6623 gfx::Size* resource_size) const override { | |
| 6624 *resource_id = 0; | |
| 6625 } | |
| 6626 | |
| 6627 private: | |
| 6628 FakeMaskLayerImpl(LayerTreeImpl* tree_impl, int id) | |
| 6629 : LayerImpl(tree_impl, id) {} | |
| 6630 }; | |
| 6631 | |
| 6632 class GLRendererWithSetupQuadForAntialiasing : public GLRenderer { | 6616 class GLRendererWithSetupQuadForAntialiasing : public GLRenderer { |
| 6633 public: | 6617 public: |
| 6634 using GLRenderer::ShouldAntialiasQuad; | 6618 using GLRenderer::ShouldAntialiasQuad; |
| 6635 }; | 6619 }; |
| 6636 | 6620 |
| 6637 TEST_F(LayerTreeHostImplTest, FarAwayQuadsDontNeedAA) { | 6621 TEST_F(LayerTreeHostImplTest, FarAwayQuadsDontNeedAA) { |
| 6638 // Due to precision issues (especially on Android), sometimes far | 6622 // Due to precision issues (especially on Android), sometimes far |
| 6639 // away quads can end up thinking they need AA. | 6623 // away quads can end up thinking they need AA. |
| 6640 float device_scale_factor = 4.f / 3.f; | 6624 float device_scale_factor = 4.f / 3.f; |
| 6641 gfx::Size root_size(2000, 1000); | 6625 gfx::Size root_size(2000, 1000); |
| (...skipping 2544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9186 host_impl_->active_tree()->SetPageScaleOnActiveTree(2.f); | 9170 host_impl_->active_tree()->SetPageScaleOnActiveTree(2.f); |
| 9187 DrawFrame(); | 9171 DrawFrame(); |
| 9188 in_subtree_of_page_scale_layer = host_impl_->active_tree()->LayerById(100); | 9172 in_subtree_of_page_scale_layer = host_impl_->active_tree()->LayerById(100); |
| 9189 node = host_impl_->active_tree()->property_trees()->transform_tree.Node( | 9173 node = host_impl_->active_tree()->property_trees()->transform_tree.Node( |
| 9190 in_subtree_of_page_scale_layer->transform_tree_index()); | 9174 in_subtree_of_page_scale_layer->transform_tree_index()); |
| 9191 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(2.f, 2.f)); | 9175 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(2.f, 2.f)); |
| 9192 } | 9176 } |
| 9193 | 9177 |
| 9194 } // namespace | 9178 } // namespace |
| 9195 } // namespace cc | 9179 } // namespace cc |
| OLD | NEW |