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

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

Issue 2118993002: Detemplatize cc property nodes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months 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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <cmath> 10 #include <cmath>
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 #include "cc/test/fake_raster_source.h" 55 #include "cc/test/fake_raster_source.h"
56 #include "cc/test/fake_video_frame_provider.h" 56 #include "cc/test/fake_video_frame_provider.h"
57 #include "cc/test/geometry_test_utils.h" 57 #include "cc/test/geometry_test_utils.h"
58 #include "cc/test/gpu_rasterization_enabled_settings.h" 58 #include "cc/test/gpu_rasterization_enabled_settings.h"
59 #include "cc/test/layer_test_common.h" 59 #include "cc/test/layer_test_common.h"
60 #include "cc/test/layer_tree_test.h" 60 #include "cc/test/layer_tree_test.h"
61 #include "cc/test/test_gpu_memory_buffer_manager.h" 61 #include "cc/test/test_gpu_memory_buffer_manager.h"
62 #include "cc/test/test_shared_bitmap_manager.h" 62 #include "cc/test/test_shared_bitmap_manager.h"
63 #include "cc/test/test_task_graph_runner.h" 63 #include "cc/test/test_task_graph_runner.h"
64 #include "cc/test/test_web_graphics_context_3d.h" 64 #include "cc/test/test_web_graphics_context_3d.h"
65 #include "cc/trees/effect_node.h"
65 #include "cc/trees/layer_tree_impl.h" 66 #include "cc/trees/layer_tree_impl.h"
66 #include "cc/trees/single_thread_proxy.h" 67 #include "cc/trees/single_thread_proxy.h"
68 #include "cc/trees/transform_node.h"
67 #include "media/base/media.h" 69 #include "media/base/media.h"
68 #include "testing/gmock/include/gmock/gmock.h" 70 #include "testing/gmock/include/gmock/gmock.h"
69 #include "testing/gtest/include/gtest/gtest.h" 71 #include "testing/gtest/include/gtest/gtest.h"
70 #include "third_party/skia/include/core/SkMallocPixelRef.h" 72 #include "third_party/skia/include/core/SkMallocPixelRef.h"
71 #include "ui/gfx/geometry/rect_conversions.h" 73 #include "ui/gfx/geometry/rect_conversions.h"
72 #include "ui/gfx/geometry/size_conversions.h" 74 #include "ui/gfx/geometry/size_conversions.h"
73 #include "ui/gfx/geometry/vector2d_conversions.h" 75 #include "ui/gfx/geometry/vector2d_conversions.h"
74 76
75 #define EXPECT_SCOPED(statements) \ 77 #define EXPECT_SCOPED(statements) \
76 { \ 78 { \
(...skipping 2846 matching lines...) Expand 10 before | Expand all | Expand 10 after
2923 host_impl_->pending_tree()->BuildPropertyTreesForTesting(); 2925 host_impl_->pending_tree()->BuildPropertyTreesForTesting();
2924 host_impl_->ActivateSyncTree(); 2926 host_impl_->ActivateSyncTree();
2925 2927
2926 LayerImpl* active_scrollbar_layer = 2928 LayerImpl* active_scrollbar_layer =
2927 host_impl_->active_tree()->LayerById(400); 2929 host_impl_->active_tree()->LayerById(400);
2928 2930
2929 EffectNode* active_tree_node = 2931 EffectNode* active_tree_node =
2930 host_impl_->active_tree()->property_trees()->effect_tree.Node( 2932 host_impl_->active_tree()->property_trees()->effect_tree.Node(
2931 active_scrollbar_layer->effect_tree_index()); 2933 active_scrollbar_layer->effect_tree_index());
2932 EXPECT_FLOAT_EQ(active_scrollbar_layer->Opacity(), 2934 EXPECT_FLOAT_EQ(active_scrollbar_layer->Opacity(),
2933 active_tree_node->data.opacity); 2935 active_tree_node->opacity);
2934 2936
2935 host_impl_->ScrollbarAnimationControllerForId(scroll->id()) 2937 host_impl_->ScrollbarAnimationControllerForId(scroll->id())
2936 ->DidMouseMoveNear(0); 2938 ->DidMouseMoveNear(0);
2937 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), 2939 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(),
2938 InputHandler::WHEEL); 2940 InputHandler::WHEEL);
2939 host_impl_->ScrollBy(UpdateState(gfx::Point(), gfx::Vector2dF(0, 5)).get()); 2941 host_impl_->ScrollBy(UpdateState(gfx::Point(), gfx::Vector2dF(0, 5)).get());
2940 host_impl_->ScrollEnd(EndState().get()); 2942 host_impl_->ScrollEnd(EndState().get());
2941 host_impl_->CreatePendingTree(); 2943 host_impl_->CreatePendingTree();
2942 // To test the case where the effect tree index of scrollbar layer changes, 2944 // To test the case where the effect tree index of scrollbar layer changes,
2943 // we force the container layer to create a render surface. 2945 // we force the container layer to create a render surface.
2944 container = host_impl_->pending_tree()->InnerViewportContainerLayer(); 2946 container = host_impl_->pending_tree()->InnerViewportContainerLayer();
2945 container->test_properties()->force_render_surface = true; 2947 container->test_properties()->force_render_surface = true;
2946 container->SetBounds(gfx::Size(10, 10)); 2948 container->SetBounds(gfx::Size(10, 10));
2947 host_impl_->pending_tree()->BuildPropertyTreesForTesting(); 2949 host_impl_->pending_tree()->BuildPropertyTreesForTesting();
2948 2950
2949 LayerImpl* pending_scrollbar_layer = 2951 LayerImpl* pending_scrollbar_layer =
2950 host_impl_->pending_tree()->LayerById(400); 2952 host_impl_->pending_tree()->LayerById(400);
2951 EffectNode* pending_tree_node = 2953 EffectNode* pending_tree_node =
2952 host_impl_->pending_tree()->property_trees()->effect_tree.Node( 2954 host_impl_->pending_tree()->property_trees()->effect_tree.Node(
2953 pending_scrollbar_layer->effect_tree_index()); 2955 pending_scrollbar_layer->effect_tree_index());
2954 host_impl_->pending_tree() 2956 host_impl_->pending_tree()
2955 ->property_trees() 2957 ->property_trees()
2956 ->always_use_active_tree_opacity_effect_ids.push_back(400); 2958 ->always_use_active_tree_opacity_effect_ids.push_back(400);
2957 EXPECT_FLOAT_EQ(1.f, active_tree_node->data.opacity); 2959 EXPECT_FLOAT_EQ(1.f, active_tree_node->opacity);
2958 EXPECT_FLOAT_EQ(1.f, active_scrollbar_layer->Opacity()); 2960 EXPECT_FLOAT_EQ(1.f, active_scrollbar_layer->Opacity());
2959 EXPECT_FLOAT_EQ(0.f, pending_tree_node->data.opacity); 2961 EXPECT_FLOAT_EQ(0.f, pending_tree_node->opacity);
2960 host_impl_->ActivateSyncTree(); 2962 host_impl_->ActivateSyncTree();
2961 active_tree_node = 2963 active_tree_node =
2962 host_impl_->active_tree()->property_trees()->effect_tree.Node( 2964 host_impl_->active_tree()->property_trees()->effect_tree.Node(
2963 active_scrollbar_layer->effect_tree_index()); 2965 active_scrollbar_layer->effect_tree_index());
2964 EXPECT_FLOAT_EQ(1.f, active_tree_node->data.opacity); 2966 EXPECT_FLOAT_EQ(1.f, active_tree_node->opacity);
2965 EXPECT_FLOAT_EQ(1.f, active_scrollbar_layer->Opacity()); 2967 EXPECT_FLOAT_EQ(1.f, active_scrollbar_layer->Opacity());
2966 } 2968 }
2967 }; 2969 };
2968 2970
2969 TEST_F(LayerTreeHostImplTestScrollbarOpacity, LinearFade) { 2971 TEST_F(LayerTreeHostImplTestScrollbarOpacity, LinearFade) {
2970 RunTest(LayerTreeSettings::LINEAR_FADE); 2972 RunTest(LayerTreeSettings::LINEAR_FADE);
2971 } 2973 }
2972 2974
2973 TEST_F(LayerTreeHostImplTestScrollbarOpacity, Thinning) { 2975 TEST_F(LayerTreeHostImplTestScrollbarOpacity, Thinning) {
2974 RunTest(LayerTreeSettings::THINNING); 2976 RunTest(LayerTreeSettings::THINNING);
(...skipping 6782 matching lines...) Expand 10 before | Expand all | Expand 10 after
9757 test_layer->SetTransform(perspective_transform); 9759 test_layer->SetTransform(perspective_transform);
9758 host_impl_->active_tree()->BuildPropertyTreesForTesting(); 9760 host_impl_->active_tree()->BuildPropertyTreesForTesting();
9759 9761
9760 bool update_lcd_text = false; 9762 bool update_lcd_text = false;
9761 9763
9762 host_impl_->SetViewportSize(gfx::Size(50, 50)); 9764 host_impl_->SetViewportSize(gfx::Size(50, 50));
9763 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); 9765 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text);
9764 TransformNode* node = 9766 TransformNode* node =
9765 host_impl_->active_tree()->property_trees()->transform_tree.Node( 9767 host_impl_->active_tree()->property_trees()->transform_tree.Node(
9766 test_layer->transform_tree_index()); 9768 test_layer->transform_tree_index());
9767 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(1.f, 1.f)); 9769 EXPECT_EQ(node->sublayer_scale, gfx::Vector2dF(1.f, 1.f));
9768 9770
9769 gfx::Transform external_transform; 9771 gfx::Transform external_transform;
9770 external_transform.Translate(10, 10); 9772 external_transform.Translate(10, 10);
9771 external_transform.Scale(2, 2); 9773 external_transform.Scale(2, 2);
9772 gfx::Rect external_viewport; 9774 gfx::Rect external_viewport;
9773 gfx::Rect external_clip(layer_size); 9775 gfx::Rect external_clip(layer_size);
9774 bool resourceless_software_draw = false; 9776 bool resourceless_software_draw = false;
9775 host_impl_->SetExternalTilePriorityConstraints(external_viewport, 9777 host_impl_->SetExternalTilePriorityConstraints(external_viewport,
9776 external_transform); 9778 external_transform);
9777 9779
9778 // Transform node's sublayer scale should include the device transform scale. 9780 // Transform node's sublayer scale should include the device transform scale.
9779 host_impl_->OnDraw(external_transform, external_viewport, external_clip, 9781 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
9780 resourceless_software_draw); 9782 resourceless_software_draw);
9781 node = host_impl_->active_tree()->property_trees()->transform_tree.Node( 9783 node = host_impl_->active_tree()->property_trees()->transform_tree.Node(
9782 test_layer->transform_tree_index()); 9784 test_layer->transform_tree_index());
9783 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(2.f, 2.f)); 9785 EXPECT_EQ(node->sublayer_scale, gfx::Vector2dF(2.f, 2.f));
9784 9786
9785 // Clear the external transform. 9787 // Clear the external transform.
9786 external_transform = gfx::Transform(); 9788 external_transform = gfx::Transform();
9787 host_impl_->SetExternalTilePriorityConstraints(external_viewport, 9789 host_impl_->SetExternalTilePriorityConstraints(external_viewport,
9788 external_transform); 9790 external_transform);
9789 9791
9790 host_impl_->OnDraw(external_transform, external_viewport, external_clip, 9792 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
9791 resourceless_software_draw); 9793 resourceless_software_draw);
9792 node = host_impl_->active_tree()->property_trees()->transform_tree.Node( 9794 node = host_impl_->active_tree()->property_trees()->transform_tree.Node(
9793 test_layer->transform_tree_index()); 9795 test_layer->transform_tree_index());
9794 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(1.f, 1.f)); 9796 EXPECT_EQ(node->sublayer_scale, gfx::Vector2dF(1.f, 1.f));
9795 } 9797 }
9796 9798
9797 TEST_F(LayerTreeHostImplTest, ScrollAnimated) { 9799 TEST_F(LayerTreeHostImplTest, ScrollAnimated) {
9798 const gfx::Size content_size(1000, 1000); 9800 const gfx::Size content_size(1000, 1000);
9799 const gfx::Size viewport_size(50, 100); 9801 const gfx::Size viewport_size(50, 100);
9800 CreateBasicVirtualViewportLayers(viewport_size, content_size); 9802 CreateBasicVirtualViewportLayers(viewport_size, content_size);
9801 9803
9802 DrawFrame(); 9804 DrawFrame();
9803 9805
9804 base::TimeTicks start_time = 9806 base::TimeTicks start_time =
(...skipping 996 matching lines...) Expand 10 before | Expand all | Expand 10 after
10801 DrawFrame(); 10803 DrawFrame();
10802 10804
10803 host_impl_->CreatePendingTree(); 10805 host_impl_->CreatePendingTree();
10804 host_impl_->active_tree()->SetPageScaleOnActiveTree(2.f); 10806 host_impl_->active_tree()->SetPageScaleOnActiveTree(2.f);
10805 LayerImpl* page_scale_layer = host_impl_->active_tree()->PageScaleLayer(); 10807 LayerImpl* page_scale_layer = host_impl_->active_tree()->PageScaleLayer();
10806 10808
10807 TransformNode* active_tree_node = 10809 TransformNode* active_tree_node =
10808 host_impl_->active_tree()->property_trees()->transform_tree.Node( 10810 host_impl_->active_tree()->property_trees()->transform_tree.Node(
10809 page_scale_layer->transform_tree_index()); 10811 page_scale_layer->transform_tree_index());
10810 // SetPageScaleOnActiveTree also updates the factors in property trees. 10812 // SetPageScaleOnActiveTree also updates the factors in property trees.
10811 EXPECT_EQ(active_tree_node->data.post_local_scale_factor, 2.f); 10813 EXPECT_EQ(active_tree_node->post_local_scale_factor, 2.f);
10812 EXPECT_EQ(host_impl_->active_tree()->current_page_scale_factor(), 2.f); 10814 EXPECT_EQ(host_impl_->active_tree()->current_page_scale_factor(), 2.f);
10813 10815
10814 TransformNode* pending_tree_node = 10816 TransformNode* pending_tree_node =
10815 host_impl_->pending_tree()->property_trees()->transform_tree.Node( 10817 host_impl_->pending_tree()->property_trees()->transform_tree.Node(
10816 page_scale_layer->transform_tree_index()); 10818 page_scale_layer->transform_tree_index());
10817 EXPECT_EQ(pending_tree_node->data.post_local_scale_factor, 1.f); 10819 EXPECT_EQ(pending_tree_node->post_local_scale_factor, 1.f);
10818 EXPECT_EQ(host_impl_->pending_tree()->current_page_scale_factor(), 2.f); 10820 EXPECT_EQ(host_impl_->pending_tree()->current_page_scale_factor(), 2.f);
10819 10821
10820 host_impl_->pending_tree()->UpdateDrawProperties(false); 10822 host_impl_->pending_tree()->UpdateDrawProperties(false);
10821 pending_tree_node = 10823 pending_tree_node =
10822 host_impl_->pending_tree()->property_trees()->transform_tree.Node( 10824 host_impl_->pending_tree()->property_trees()->transform_tree.Node(
10823 page_scale_layer->transform_tree_index()); 10825 page_scale_layer->transform_tree_index());
10824 EXPECT_EQ(pending_tree_node->data.post_local_scale_factor, 2.f); 10826 EXPECT_EQ(pending_tree_node->post_local_scale_factor, 2.f);
10825 10827
10826 host_impl_->ActivateSyncTree(); 10828 host_impl_->ActivateSyncTree();
10827 host_impl_->active_tree()->UpdateDrawProperties(false); 10829 host_impl_->active_tree()->UpdateDrawProperties(false);
10828 active_tree_node = 10830 active_tree_node =
10829 host_impl_->active_tree()->property_trees()->transform_tree.Node( 10831 host_impl_->active_tree()->property_trees()->transform_tree.Node(
10830 page_scale_layer->transform_tree_index()); 10832 page_scale_layer->transform_tree_index());
10831 EXPECT_EQ(active_tree_node->data.post_local_scale_factor, 2.f); 10833 EXPECT_EQ(active_tree_node->post_local_scale_factor, 2.f);
10832 } 10834 }
10833 10835
10834 TEST_F(LayerTreeHostImplTest, SubLayerScaleForNodeInSubtreeOfPageScaleLayer) { 10836 TEST_F(LayerTreeHostImplTest, SubLayerScaleForNodeInSubtreeOfPageScaleLayer) {
10835 // Checks that the sublayer scale of a transform node in the subtree of the 10837 // Checks that the sublayer scale of a transform node in the subtree of the
10836 // page scale layer is updated without a property tree rebuild. 10838 // page scale layer is updated without a property tree rebuild.
10837 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 3.f); 10839 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 3.f);
10838 CreateScrollAndContentsLayers(host_impl_->active_tree(), gfx::Size(100, 100)); 10840 CreateScrollAndContentsLayers(host_impl_->active_tree(), gfx::Size(100, 100));
10839 LayerImpl* page_scale_layer = host_impl_->active_tree()->PageScaleLayer(); 10841 LayerImpl* page_scale_layer = host_impl_->active_tree()->PageScaleLayer();
10840 page_scale_layer->test_properties()->AddChild( 10842 page_scale_layer->test_properties()->AddChild(
10841 LayerImpl::Create(host_impl_->active_tree(), 100)); 10843 LayerImpl::Create(host_impl_->active_tree(), 100));
10842 10844
10843 LayerImpl* in_subtree_of_page_scale_layer = 10845 LayerImpl* in_subtree_of_page_scale_layer =
10844 host_impl_->active_tree()->LayerById(100); 10846 host_impl_->active_tree()->LayerById(100);
10845 in_subtree_of_page_scale_layer->test_properties()->force_render_surface = 10847 in_subtree_of_page_scale_layer->test_properties()->force_render_surface =
10846 true; 10848 true;
10847 host_impl_->active_tree()->BuildPropertyTreesForTesting(); 10849 host_impl_->active_tree()->BuildPropertyTreesForTesting();
10848 10850
10849 DrawFrame(); 10851 DrawFrame();
10850 10852
10851 TransformNode* node = 10853 TransformNode* node =
10852 host_impl_->active_tree()->property_trees()->transform_tree.Node( 10854 host_impl_->active_tree()->property_trees()->transform_tree.Node(
10853 in_subtree_of_page_scale_layer->transform_tree_index()); 10855 in_subtree_of_page_scale_layer->transform_tree_index());
10854 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(1.f, 1.f)); 10856 EXPECT_EQ(node->sublayer_scale, gfx::Vector2dF(1.f, 1.f));
10855 10857
10856 host_impl_->active_tree()->SetPageScaleOnActiveTree(2.f); 10858 host_impl_->active_tree()->SetPageScaleOnActiveTree(2.f);
10857 10859
10858 DrawFrame(); 10860 DrawFrame();
10859 10861
10860 in_subtree_of_page_scale_layer = host_impl_->active_tree()->LayerById(100); 10862 in_subtree_of_page_scale_layer = host_impl_->active_tree()->LayerById(100);
10861 node = host_impl_->active_tree()->property_trees()->transform_tree.Node( 10863 node = host_impl_->active_tree()->property_trees()->transform_tree.Node(
10862 in_subtree_of_page_scale_layer->transform_tree_index()); 10864 in_subtree_of_page_scale_layer->transform_tree_index());
10863 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(2.f, 2.f)); 10865 EXPECT_EQ(node->sublayer_scale, gfx::Vector2dF(2.f, 2.f));
10864 } 10866 }
10865 10867
10866 TEST_F(LayerTreeHostImplTest, JitterTest) { 10868 TEST_F(LayerTreeHostImplTest, JitterTest) {
10867 host_impl_->SetViewportSize(gfx::Size(100, 100)); 10869 host_impl_->SetViewportSize(gfx::Size(100, 100));
10868 10870
10869 host_impl_->CreatePendingTree(); 10871 host_impl_->CreatePendingTree();
10870 CreateScrollAndContentsLayers(host_impl_->pending_tree(), 10872 CreateScrollAndContentsLayers(host_impl_->pending_tree(),
10871 gfx::Size(100, 100)); 10873 gfx::Size(100, 100));
10872 host_impl_->pending_tree()->BuildPropertyTreesForTesting(); 10874 host_impl_->pending_tree()->BuildPropertyTreesForTesting();
10873 10875
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
10952 10954
10953 // Re-initialize with a software output surface. 10955 // Re-initialize with a software output surface.
10954 output_surface_ = FakeOutputSurface::CreateSoftware( 10956 output_surface_ = FakeOutputSurface::CreateSoftware(
10955 base::WrapUnique(new SoftwareOutputDevice)); 10957 base::WrapUnique(new SoftwareOutputDevice));
10956 host_impl_->InitializeRenderer(output_surface_.get()); 10958 host_impl_->InitializeRenderer(output_surface_.get());
10957 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 10959 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
10958 } 10960 }
10959 10961
10960 } // namespace 10962 } // namespace
10961 } // namespace cc 10963 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698