Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(582)

Side by Side Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 1479883002: cc: Fix draw transform computation for non-drawn layers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove LayerImpl::draw_transform() Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698