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 <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 settings.use_pinch_virtual_viewport = true; | 107 settings.use_pinch_virtual_viewport = true; |
108 return settings; | 108 return settings; |
109 } | 109 } |
110 | 110 |
111 virtual void SetUp() override { | 111 virtual void SetUp() override { |
112 CreateHostImpl(DefaultSettings(), CreateOutputSurface()); | 112 CreateHostImpl(DefaultSettings(), CreateOutputSurface()); |
113 } | 113 } |
114 | 114 |
115 virtual void TearDown() override {} | 115 virtual void TearDown() override {} |
116 | 116 |
117 virtual void UpdateRendererCapabilitiesOnImplThread() override {} | 117 void UpdateRendererCapabilitiesOnImplThread() override {} |
118 virtual void DidLoseOutputSurfaceOnImplThread() override {} | 118 void DidLoseOutputSurfaceOnImplThread() override {} |
119 virtual void CommitVSyncParameters(base::TimeTicks timebase, | 119 void CommitVSyncParameters(base::TimeTicks timebase, |
120 base::TimeDelta interval) override {} | 120 base::TimeDelta interval) override {} |
121 virtual void SetEstimatedParentDrawTime(base::TimeDelta draw_time) override {} | 121 void SetEstimatedParentDrawTime(base::TimeDelta draw_time) override {} |
122 virtual void SetMaxSwapsPendingOnImplThread(int max) override {} | 122 void SetMaxSwapsPendingOnImplThread(int max) override {} |
123 virtual void DidSwapBuffersOnImplThread() override {} | 123 void DidSwapBuffersOnImplThread() override {} |
124 virtual void DidSwapBuffersCompleteOnImplThread() override {} | 124 void DidSwapBuffersCompleteOnImplThread() override {} |
125 virtual void OnCanDrawStateChanged(bool can_draw) override { | 125 void OnCanDrawStateChanged(bool can_draw) override { |
126 on_can_draw_state_changed_called_ = true; | 126 on_can_draw_state_changed_called_ = true; |
127 } | 127 } |
128 virtual void NotifyReadyToActivate() override { | 128 void NotifyReadyToActivate() override { |
129 did_notify_ready_to_activate_ = true; | 129 did_notify_ready_to_activate_ = true; |
130 host_impl_->ActivateSyncTree(); | 130 host_impl_->ActivateSyncTree(); |
131 } | 131 } |
132 virtual void SetNeedsRedrawOnImplThread() override { | 132 void SetNeedsRedrawOnImplThread() override { did_request_redraw_ = true; } |
| 133 void SetNeedsRedrawRectOnImplThread(const gfx::Rect& damage_rect) override { |
133 did_request_redraw_ = true; | 134 did_request_redraw_ = true; |
134 } | 135 } |
135 virtual void SetNeedsRedrawRectOnImplThread( | 136 void SetNeedsAnimateOnImplThread() override { did_request_animate_ = true; } |
136 const gfx::Rect& damage_rect) override { | 137 void SetNeedsManageTilesOnImplThread() override { |
137 did_request_redraw_ = true; | |
138 } | |
139 virtual void SetNeedsAnimateOnImplThread() override { | |
140 did_request_animate_ = true; | |
141 } | |
142 virtual void SetNeedsManageTilesOnImplThread() override { | |
143 did_request_manage_tiles_ = true; | 138 did_request_manage_tiles_ = true; |
144 } | 139 } |
145 virtual void DidInitializeVisibleTileOnImplThread() override { | 140 void DidInitializeVisibleTileOnImplThread() override { |
146 did_upload_visible_tile_ = true; | 141 did_upload_visible_tile_ = true; |
147 } | 142 } |
148 virtual void SetNeedsCommitOnImplThread() override { | 143 void SetNeedsCommitOnImplThread() override { did_request_commit_ = true; } |
149 did_request_commit_ = true; | 144 void PostAnimationEventsToMainThreadOnImplThread( |
150 } | |
151 virtual void PostAnimationEventsToMainThreadOnImplThread( | |
152 scoped_ptr<AnimationEventsVector> events) override {} | 145 scoped_ptr<AnimationEventsVector> events) override {} |
153 virtual bool ReduceContentsTextureMemoryOnImplThread( | 146 bool ReduceContentsTextureMemoryOnImplThread(size_t limit_bytes, |
154 size_t limit_bytes, int priority_cutoff) override { | 147 int priority_cutoff) override { |
155 current_limit_bytes_ = limit_bytes; | 148 current_limit_bytes_ = limit_bytes; |
156 current_priority_cutoff_value_ = priority_cutoff; | 149 current_priority_cutoff_value_ = priority_cutoff; |
157 return reduce_memory_result_; | 150 return reduce_memory_result_; |
158 } | 151 } |
159 virtual bool IsInsideDraw() override { return false; } | 152 bool IsInsideDraw() override { return false; } |
160 virtual void RenewTreePriority() override {} | 153 void RenewTreePriority() override {} |
161 virtual void PostDelayedScrollbarFadeOnImplThread( | 154 void PostDelayedScrollbarFadeOnImplThread(const base::Closure& start_fade, |
162 const base::Closure& start_fade, | 155 base::TimeDelta delay) override { |
163 base::TimeDelta delay) override { | |
164 scrollbar_fade_start_ = start_fade; | 156 scrollbar_fade_start_ = start_fade; |
165 requested_scrollbar_animation_delay_ = delay; | 157 requested_scrollbar_animation_delay_ = delay; |
166 } | 158 } |
167 virtual void DidActivateSyncTree() override {} | 159 void DidActivateSyncTree() override {} |
168 virtual void DidManageTiles() override {} | 160 void DidManageTiles() override {} |
169 | 161 |
170 void set_reduce_memory_result(bool reduce_memory_result) { | 162 void set_reduce_memory_result(bool reduce_memory_result) { |
171 reduce_memory_result_ = reduce_memory_result; | 163 reduce_memory_result_ = reduce_memory_result; |
172 } | 164 } |
173 | 165 |
174 bool CreateHostImpl(const LayerTreeSettings& settings, | 166 bool CreateHostImpl(const LayerTreeSettings& settings, |
175 scoped_ptr<OutputSurface> output_surface) { | 167 scoped_ptr<OutputSurface> output_surface) { |
176 host_impl_ = LayerTreeHostImpl::Create(settings, | 168 host_impl_ = LayerTreeHostImpl::Create(settings, |
177 this, | 169 this, |
178 &proxy_, | 170 &proxy_, |
(...skipping 1196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1375 SharedBitmapManager* manager, | 1367 SharedBitmapManager* manager, |
1376 RenderingStatsInstrumentation* rendering_stats_instrumentation) | 1368 RenderingStatsInstrumentation* rendering_stats_instrumentation) |
1377 : LayerTreeHostImpl(settings, | 1369 : LayerTreeHostImpl(settings, |
1378 client, | 1370 client, |
1379 proxy, | 1371 proxy, |
1380 rendering_stats_instrumentation, | 1372 rendering_stats_instrumentation, |
1381 manager, | 1373 manager, |
1382 NULL, | 1374 NULL, |
1383 0) {} | 1375 0) {} |
1384 | 1376 |
1385 virtual BeginFrameArgs CurrentBeginFrameArgs() const override { | 1377 BeginFrameArgs CurrentBeginFrameArgs() const override { |
1386 return CreateBeginFrameArgsForTesting(fake_current_physical_time_); | 1378 return CreateBeginFrameArgsForTesting(fake_current_physical_time_); |
1387 } | 1379 } |
1388 | 1380 |
1389 void SetCurrentPhysicalTimeTicksForTest(base::TimeTicks fake_now) { | 1381 void SetCurrentPhysicalTimeTicksForTest(base::TimeTicks fake_now) { |
1390 fake_current_physical_time_ = fake_now; | 1382 fake_current_physical_time_ = fake_now; |
1391 } | 1383 } |
1392 | 1384 |
1393 private: | 1385 private: |
1394 base::TimeTicks fake_current_physical_time_; | 1386 base::TimeTicks fake_current_physical_time_; |
1395 }; | 1387 }; |
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1714 EXPECT_EQ(4.f, metadata.max_page_scale_factor); | 1706 EXPECT_EQ(4.f, metadata.max_page_scale_factor); |
1715 } | 1707 } |
1716 } | 1708 } |
1717 | 1709 |
1718 class DidDrawCheckLayer : public LayerImpl { | 1710 class DidDrawCheckLayer : public LayerImpl { |
1719 public: | 1711 public: |
1720 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { | 1712 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { |
1721 return make_scoped_ptr(new DidDrawCheckLayer(tree_impl, id)); | 1713 return make_scoped_ptr(new DidDrawCheckLayer(tree_impl, id)); |
1722 } | 1714 } |
1723 | 1715 |
1724 virtual bool WillDraw(DrawMode draw_mode, ResourceProvider* provider) | 1716 bool WillDraw(DrawMode draw_mode, ResourceProvider* provider) override { |
1725 override { | |
1726 will_draw_called_ = true; | 1717 will_draw_called_ = true; |
1727 if (will_draw_returns_false_) | 1718 if (will_draw_returns_false_) |
1728 return false; | 1719 return false; |
1729 return LayerImpl::WillDraw(draw_mode, provider); | 1720 return LayerImpl::WillDraw(draw_mode, provider); |
1730 } | 1721 } |
1731 | 1722 |
1732 virtual void AppendQuads(RenderPass* render_pass, | 1723 void AppendQuads(RenderPass* render_pass, |
1733 const Occlusion& occlusion_in_content_space, | 1724 const Occlusion& occlusion_in_content_space, |
1734 AppendQuadsData* append_quads_data) override { | 1725 AppendQuadsData* append_quads_data) override { |
1735 append_quads_called_ = true; | 1726 append_quads_called_ = true; |
1736 LayerImpl::AppendQuads( | 1727 LayerImpl::AppendQuads( |
1737 render_pass, occlusion_in_content_space, append_quads_data); | 1728 render_pass, occlusion_in_content_space, append_quads_data); |
1738 } | 1729 } |
1739 | 1730 |
1740 virtual void DidDraw(ResourceProvider* provider) override { | 1731 void DidDraw(ResourceProvider* provider) override { |
1741 did_draw_called_ = true; | 1732 did_draw_called_ = true; |
1742 LayerImpl::DidDraw(provider); | 1733 LayerImpl::DidDraw(provider); |
1743 } | 1734 } |
1744 | 1735 |
1745 bool will_draw_called() const { return will_draw_called_; } | 1736 bool will_draw_called() const { return will_draw_called_; } |
1746 bool append_quads_called() const { return append_quads_called_; } | 1737 bool append_quads_called() const { return append_quads_called_; } |
1747 bool did_draw_called() const { return did_draw_called_; } | 1738 bool did_draw_called() const { return did_draw_called_; } |
1748 | 1739 |
1749 void set_will_draw_returns_false() { will_draw_returns_false_ = true; } | 1740 void set_will_draw_returns_false() { will_draw_returns_false_ = true; } |
1750 | 1741 |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1946 bool animating, | 1937 bool animating, |
1947 ResourceProvider* resource_provider) { | 1938 ResourceProvider* resource_provider) { |
1948 return make_scoped_ptr(new MissingTextureAnimatingLayer(tree_impl, | 1939 return make_scoped_ptr(new MissingTextureAnimatingLayer(tree_impl, |
1949 id, | 1940 id, |
1950 tile_missing, | 1941 tile_missing, |
1951 had_incomplete_tile, | 1942 had_incomplete_tile, |
1952 animating, | 1943 animating, |
1953 resource_provider)); | 1944 resource_provider)); |
1954 } | 1945 } |
1955 | 1946 |
1956 virtual void AppendQuads(RenderPass* render_pass, | 1947 void AppendQuads(RenderPass* render_pass, |
1957 const Occlusion& occlusion_in_content_space, | 1948 const Occlusion& occlusion_in_content_space, |
1958 AppendQuadsData* append_quads_data) override { | 1949 AppendQuadsData* append_quads_data) override { |
1959 LayerImpl::AppendQuads( | 1950 LayerImpl::AppendQuads( |
1960 render_pass, occlusion_in_content_space, append_quads_data); | 1951 render_pass, occlusion_in_content_space, append_quads_data); |
1961 if (had_incomplete_tile_) | 1952 if (had_incomplete_tile_) |
1962 append_quads_data->num_incomplete_tiles++; | 1953 append_quads_data->num_incomplete_tiles++; |
1963 if (tile_missing_) | 1954 if (tile_missing_) |
1964 append_quads_data->num_missing_tiles++; | 1955 append_quads_data->num_missing_tiles++; |
1965 } | 1956 } |
1966 | 1957 |
1967 private: | 1958 private: |
1968 MissingTextureAnimatingLayer(LayerTreeImpl* tree_impl, | 1959 MissingTextureAnimatingLayer(LayerTreeImpl* tree_impl, |
(...skipping 1550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3519 inner_viewport_scroll_layer->MaxScrollOffset()); | 3510 inner_viewport_scroll_layer->MaxScrollOffset()); |
3520 } | 3511 } |
3521 | 3512 |
3522 class TestScrollOffsetDelegate : public LayerScrollOffsetDelegate { | 3513 class TestScrollOffsetDelegate : public LayerScrollOffsetDelegate { |
3523 public: | 3514 public: |
3524 TestScrollOffsetDelegate() | 3515 TestScrollOffsetDelegate() |
3525 : page_scale_factor_(0.f), | 3516 : page_scale_factor_(0.f), |
3526 min_page_scale_factor_(-1.f), | 3517 min_page_scale_factor_(-1.f), |
3527 max_page_scale_factor_(-1.f) {} | 3518 max_page_scale_factor_(-1.f) {} |
3528 | 3519 |
3529 virtual ~TestScrollOffsetDelegate() {} | 3520 ~TestScrollOffsetDelegate() override {} |
3530 | 3521 |
3531 virtual gfx::ScrollOffset GetTotalScrollOffset() override { | 3522 gfx::ScrollOffset GetTotalScrollOffset() override { |
3532 return getter_return_value_; | 3523 return getter_return_value_; |
3533 } | 3524 } |
3534 | 3525 |
3535 virtual bool IsExternalFlingActive() const override { return false; } | 3526 bool IsExternalFlingActive() const override { return false; } |
3536 | 3527 |
3537 virtual void UpdateRootLayerState( | 3528 void UpdateRootLayerState(const gfx::ScrollOffset& total_scroll_offset, |
3538 const gfx::ScrollOffset& total_scroll_offset, | 3529 const gfx::ScrollOffset& max_scroll_offset, |
3539 const gfx::ScrollOffset& max_scroll_offset, | 3530 const gfx::SizeF& scrollable_size, |
3540 const gfx::SizeF& scrollable_size, | 3531 float page_scale_factor, |
3541 float page_scale_factor, | 3532 float min_page_scale_factor, |
3542 float min_page_scale_factor, | 3533 float max_page_scale_factor) override { |
3543 float max_page_scale_factor) override { | |
3544 DCHECK(total_scroll_offset.x() <= max_scroll_offset.x()); | 3534 DCHECK(total_scroll_offset.x() <= max_scroll_offset.x()); |
3545 DCHECK(total_scroll_offset.y() <= max_scroll_offset.y()); | 3535 DCHECK(total_scroll_offset.y() <= max_scroll_offset.y()); |
3546 last_set_scroll_offset_ = total_scroll_offset; | 3536 last_set_scroll_offset_ = total_scroll_offset; |
3547 max_scroll_offset_ = max_scroll_offset; | 3537 max_scroll_offset_ = max_scroll_offset; |
3548 scrollable_size_ = scrollable_size; | 3538 scrollable_size_ = scrollable_size; |
3549 page_scale_factor_ = page_scale_factor; | 3539 page_scale_factor_ = page_scale_factor; |
3550 min_page_scale_factor_ = min_page_scale_factor; | 3540 min_page_scale_factor_ = min_page_scale_factor; |
3551 max_page_scale_factor_ = max_page_scale_factor; | 3541 max_page_scale_factor_ = max_page_scale_factor; |
3552 } | 3542 } |
3553 | 3543 |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3979 | 3969 |
3980 class BlendStateCheckLayer : public LayerImpl { | 3970 class BlendStateCheckLayer : public LayerImpl { |
3981 public: | 3971 public: |
3982 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, | 3972 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, |
3983 int id, | 3973 int id, |
3984 ResourceProvider* resource_provider) { | 3974 ResourceProvider* resource_provider) { |
3985 return make_scoped_ptr( | 3975 return make_scoped_ptr( |
3986 new BlendStateCheckLayer(tree_impl, id, resource_provider)); | 3976 new BlendStateCheckLayer(tree_impl, id, resource_provider)); |
3987 } | 3977 } |
3988 | 3978 |
3989 virtual void AppendQuads(RenderPass* render_pass, | 3979 void AppendQuads(RenderPass* render_pass, |
3990 const Occlusion& occlusion_in_content_space, | 3980 const Occlusion& occlusion_in_content_space, |
3991 AppendQuadsData* append_quads_data) override { | 3981 AppendQuadsData* append_quads_data) override { |
3992 quads_appended_ = true; | 3982 quads_appended_ = true; |
3993 | 3983 |
3994 gfx::Rect opaque_rect; | 3984 gfx::Rect opaque_rect; |
3995 if (contents_opaque()) | 3985 if (contents_opaque()) |
3996 opaque_rect = quad_rect_; | 3986 opaque_rect = quad_rect_; |
3997 else | 3987 else |
3998 opaque_rect = opaque_content_rect_; | 3988 opaque_rect = opaque_content_rect_; |
3999 gfx::Rect visible_quad_rect = quad_rect_; | 3989 gfx::Rect visible_quad_rect = quad_rect_; |
4000 | 3990 |
4001 SharedQuadState* shared_quad_state = | 3991 SharedQuadState* shared_quad_state = |
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4391 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4381 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
4392 ASSERT_EQ(1u, frame.render_passes.size()); | 4382 ASSERT_EQ(1u, frame.render_passes.size()); |
4393 | 4383 |
4394 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list)); | 4384 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list)); |
4395 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 4385 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
4396 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); | 4386 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); |
4397 | 4387 |
4398 host_impl_->DidDrawAllLayers(frame); | 4388 host_impl_->DidDrawAllLayers(frame); |
4399 } | 4389 } |
4400 | 4390 |
4401 virtual void DidActivateSyncTree() override { | 4391 void DidActivateSyncTree() override { did_activate_pending_tree_ = true; } |
4402 did_activate_pending_tree_ = true; | |
4403 } | |
4404 | 4392 |
4405 void set_gutter_quad_material(DrawQuad::Material material) { | 4393 void set_gutter_quad_material(DrawQuad::Material material) { |
4406 gutter_quad_material_ = material; | 4394 gutter_quad_material_ = material; |
4407 } | 4395 } |
4408 void set_gutter_texture_size(const gfx::Size& gutter_texture_size) { | 4396 void set_gutter_texture_size(const gfx::Size& gutter_texture_size) { |
4409 gutter_texture_size_ = gutter_texture_size; | 4397 gutter_texture_size_ = gutter_texture_size; |
4410 } | 4398 } |
4411 | 4399 |
4412 protected: | 4400 protected: |
4413 size_t CountGutterQuads(const QuadList& quad_list) { | 4401 size_t CountGutterQuads(const QuadList& quad_list) { |
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4743 EXPECT_EQ(1u, frame.render_passes.size()); | 4731 EXPECT_EQ(1u, frame.render_passes.size()); |
4744 host_impl_->DidDrawAllLayers(frame); | 4732 host_impl_->DidDrawAllLayers(frame); |
4745 } | 4733 } |
4746 | 4734 |
4747 class FakeLayerWithQuads : public LayerImpl { | 4735 class FakeLayerWithQuads : public LayerImpl { |
4748 public: | 4736 public: |
4749 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { | 4737 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { |
4750 return make_scoped_ptr(new FakeLayerWithQuads(tree_impl, id)); | 4738 return make_scoped_ptr(new FakeLayerWithQuads(tree_impl, id)); |
4751 } | 4739 } |
4752 | 4740 |
4753 virtual void AppendQuads(RenderPass* render_pass, | 4741 void AppendQuads(RenderPass* render_pass, |
4754 const Occlusion& occlusion_in_content_space, | 4742 const Occlusion& occlusion_in_content_space, |
4755 AppendQuadsData* append_quads_data) override { | 4743 AppendQuadsData* append_quads_data) override { |
4756 SharedQuadState* shared_quad_state = | 4744 SharedQuadState* shared_quad_state = |
4757 render_pass->CreateAndAppendSharedQuadState(); | 4745 render_pass->CreateAndAppendSharedQuadState(); |
4758 PopulateSharedQuadState(shared_quad_state); | 4746 PopulateSharedQuadState(shared_quad_state); |
4759 | 4747 |
4760 SkColor gray = SkColorSetRGB(100, 100, 100); | 4748 SkColor gray = SkColorSetRGB(100, 100, 100); |
4761 gfx::Rect quad_rect(content_bounds()); | 4749 gfx::Rect quad_rect(content_bounds()); |
4762 gfx::Rect visible_quad_rect(quad_rect); | 4750 gfx::Rect visible_quad_rect(quad_rect); |
4763 SolidColorDrawQuad* my_quad = | 4751 SolidColorDrawQuad* my_quad = |
4764 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 4752 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
4765 my_quad->SetNew( | 4753 my_quad->SetNew( |
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5193 // But if we set it to the same value that it was before, we shouldn't | 5181 // But if we set it to the same value that it was before, we shouldn't |
5194 // re-commit. | 5182 // re-commit. |
5195 host_impl_->SetMemoryPolicy(ManagedMemoryPolicy( | 5183 host_impl_->SetMemoryPolicy(ManagedMemoryPolicy( |
5196 host_impl_->memory_allocation_limit_bytes())); | 5184 host_impl_->memory_allocation_limit_bytes())); |
5197 EXPECT_FALSE(did_request_commit_); | 5185 EXPECT_FALSE(did_request_commit_); |
5198 } | 5186 } |
5199 | 5187 |
5200 class LayerTreeHostImplTestWithDelegatingRenderer | 5188 class LayerTreeHostImplTestWithDelegatingRenderer |
5201 : public LayerTreeHostImplTest { | 5189 : public LayerTreeHostImplTest { |
5202 protected: | 5190 protected: |
5203 virtual scoped_ptr<OutputSurface> CreateOutputSurface() override { | 5191 scoped_ptr<OutputSurface> CreateOutputSurface() override { |
5204 return FakeOutputSurface::CreateDelegating3d(); | 5192 return FakeOutputSurface::CreateDelegating3d(); |
5205 } | 5193 } |
5206 | 5194 |
5207 void DrawFrameAndTestDamage(const gfx::RectF& expected_damage) { | 5195 void DrawFrameAndTestDamage(const gfx::RectF& expected_damage) { |
5208 bool expect_to_draw = !expected_damage.IsEmpty(); | 5196 bool expect_to_draw = !expected_damage.IsEmpty(); |
5209 | 5197 |
5210 LayerTreeHostImpl::FrameData frame; | 5198 LayerTreeHostImpl::FrameData frame; |
5211 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5199 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5212 | 5200 |
5213 if (!expect_to_draw) { | 5201 if (!expect_to_draw) { |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5283 EXPECT_FALSE(host_impl_->GetRendererCapabilities().allow_rasterize_on_demand); | 5271 EXPECT_FALSE(host_impl_->GetRendererCapabilities().allow_rasterize_on_demand); |
5284 } | 5272 } |
5285 | 5273 |
5286 class FakeMaskLayerImpl : public LayerImpl { | 5274 class FakeMaskLayerImpl : public LayerImpl { |
5287 public: | 5275 public: |
5288 static scoped_ptr<FakeMaskLayerImpl> Create(LayerTreeImpl* tree_impl, | 5276 static scoped_ptr<FakeMaskLayerImpl> Create(LayerTreeImpl* tree_impl, |
5289 int id) { | 5277 int id) { |
5290 return make_scoped_ptr(new FakeMaskLayerImpl(tree_impl, id)); | 5278 return make_scoped_ptr(new FakeMaskLayerImpl(tree_impl, id)); |
5291 } | 5279 } |
5292 | 5280 |
5293 virtual void GetContentsResourceId(ResourceProvider::ResourceId* resource_id, | 5281 void GetContentsResourceId(ResourceProvider::ResourceId* resource_id, |
5294 gfx::Size* resource_size) const override { | 5282 gfx::Size* resource_size) const override { |
5295 *resource_id = 0; | 5283 *resource_id = 0; |
5296 } | 5284 } |
5297 | 5285 |
5298 private: | 5286 private: |
5299 FakeMaskLayerImpl(LayerTreeImpl* tree_impl, int id) | 5287 FakeMaskLayerImpl(LayerTreeImpl* tree_impl, int id) |
5300 : LayerImpl(tree_impl, id) {} | 5288 : LayerImpl(tree_impl, id) {} |
5301 }; | 5289 }; |
5302 | 5290 |
5303 TEST_F(LayerTreeHostImplTest, MaskLayerWithScaling) { | 5291 TEST_F(LayerTreeHostImplTest, MaskLayerWithScaling) { |
5304 LayerTreeSettings settings; | 5292 LayerTreeSettings settings; |
(...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6041 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 6029 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
6042 host_impl_->DidDrawAllLayers(frame); | 6030 host_impl_->DidDrawAllLayers(frame); |
6043 } | 6031 } |
6044 | 6032 |
6045 | 6033 |
6046 class CompositorFrameMetadataTest : public LayerTreeHostImplTest { | 6034 class CompositorFrameMetadataTest : public LayerTreeHostImplTest { |
6047 public: | 6035 public: |
6048 CompositorFrameMetadataTest() | 6036 CompositorFrameMetadataTest() |
6049 : swap_buffers_complete_(0) {} | 6037 : swap_buffers_complete_(0) {} |
6050 | 6038 |
6051 virtual void DidSwapBuffersCompleteOnImplThread() override { | 6039 void DidSwapBuffersCompleteOnImplThread() override { |
6052 swap_buffers_complete_++; | 6040 swap_buffers_complete_++; |
6053 } | 6041 } |
6054 | 6042 |
6055 int swap_buffers_complete_; | 6043 int swap_buffers_complete_; |
6056 }; | 6044 }; |
6057 | 6045 |
6058 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) { | 6046 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) { |
6059 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); | 6047 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); |
6060 { | 6048 { |
6061 LayerTreeHostImpl::FrameData frame; | 6049 LayerTreeHostImpl::FrameData frame; |
6062 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 6050 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
6063 host_impl_->DrawLayers(&frame, base::TimeTicks()); | 6051 host_impl_->DrawLayers(&frame, base::TimeTicks()); |
6064 host_impl_->DidDrawAllLayers(frame); | 6052 host_impl_->DidDrawAllLayers(frame); |
6065 } | 6053 } |
6066 CompositorFrameAck ack; | 6054 CompositorFrameAck ack; |
6067 host_impl_->ReclaimResources(&ack); | 6055 host_impl_->ReclaimResources(&ack); |
6068 host_impl_->DidSwapBuffersComplete(); | 6056 host_impl_->DidSwapBuffersComplete(); |
6069 EXPECT_EQ(swap_buffers_complete_, 1); | 6057 EXPECT_EQ(swap_buffers_complete_, 1); |
6070 } | 6058 } |
6071 | 6059 |
6072 class CountingSoftwareDevice : public SoftwareOutputDevice { | 6060 class CountingSoftwareDevice : public SoftwareOutputDevice { |
6073 public: | 6061 public: |
6074 CountingSoftwareDevice() : frames_began_(0), frames_ended_(0) {} | 6062 CountingSoftwareDevice() : frames_began_(0), frames_ended_(0) {} |
6075 | 6063 |
6076 virtual SkCanvas* BeginPaint(const gfx::Rect& damage_rect) override { | 6064 SkCanvas* BeginPaint(const gfx::Rect& damage_rect) override { |
6077 ++frames_began_; | 6065 ++frames_began_; |
6078 return SoftwareOutputDevice::BeginPaint(damage_rect); | 6066 return SoftwareOutputDevice::BeginPaint(damage_rect); |
6079 } | 6067 } |
6080 virtual void EndPaint(SoftwareFrameData* frame_data) override { | 6068 void EndPaint(SoftwareFrameData* frame_data) override { |
6081 ++frames_ended_; | 6069 ++frames_ended_; |
6082 SoftwareOutputDevice::EndPaint(frame_data); | 6070 SoftwareOutputDevice::EndPaint(frame_data); |
6083 } | 6071 } |
6084 | 6072 |
6085 int frames_began_, frames_ended_; | 6073 int frames_began_, frames_ended_; |
6086 }; | 6074 }; |
6087 | 6075 |
6088 TEST_F(LayerTreeHostImplTest, ForcedDrawToSoftwareDeviceBasicRender) { | 6076 TEST_F(LayerTreeHostImplTest, ForcedDrawToSoftwareDeviceBasicRender) { |
6089 // No main thread evictions in resourceless software mode. | 6077 // No main thread evictions in resourceless software mode. |
6090 set_reduce_memory_result(false); | 6078 set_reduce_memory_result(false); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6185 | 6173 |
6186 EXPECT_TRUE(CreateHostImpl(DefaultSettings(), output_surface.Pass())); | 6174 EXPECT_TRUE(CreateHostImpl(DefaultSettings(), output_surface.Pass())); |
6187 | 6175 |
6188 scoped_ptr<SolidColorLayerImpl> root_layer = | 6176 scoped_ptr<SolidColorLayerImpl> root_layer = |
6189 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); | 6177 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); |
6190 SetupRootLayerImpl(root_layer.Pass()); | 6178 SetupRootLayerImpl(root_layer.Pass()); |
6191 | 6179 |
6192 onscreen_context_provider_ = TestContextProvider::Create(); | 6180 onscreen_context_provider_ = TestContextProvider::Create(); |
6193 } | 6181 } |
6194 | 6182 |
6195 virtual void UpdateRendererCapabilitiesOnImplThread() override { | 6183 void UpdateRendererCapabilitiesOnImplThread() override { |
6196 did_update_renderer_capabilities_ = true; | 6184 did_update_renderer_capabilities_ = true; |
6197 } | 6185 } |
6198 | 6186 |
6199 FakeOutputSurface* output_surface_; | 6187 FakeOutputSurface* output_surface_; |
6200 scoped_refptr<TestContextProvider> onscreen_context_provider_; | 6188 scoped_refptr<TestContextProvider> onscreen_context_provider_; |
6201 bool did_update_renderer_capabilities_; | 6189 bool did_update_renderer_capabilities_; |
6202 }; | 6190 }; |
6203 | 6191 |
6204 | 6192 |
6205 TEST_F(LayerTreeHostImplTestDeferredInitialize, Success) { | 6193 TEST_F(LayerTreeHostImplTestDeferredInitialize, Success) { |
(...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6903 SimpleSwapPromiseMonitor(LayerTreeHost* layer_tree_host, | 6891 SimpleSwapPromiseMonitor(LayerTreeHost* layer_tree_host, |
6904 LayerTreeHostImpl* layer_tree_host_impl, | 6892 LayerTreeHostImpl* layer_tree_host_impl, |
6905 int* set_needs_commit_count, | 6893 int* set_needs_commit_count, |
6906 int* set_needs_redraw_count, | 6894 int* set_needs_redraw_count, |
6907 int* forward_to_main_count) | 6895 int* forward_to_main_count) |
6908 : SwapPromiseMonitor(layer_tree_host, layer_tree_host_impl), | 6896 : SwapPromiseMonitor(layer_tree_host, layer_tree_host_impl), |
6909 set_needs_commit_count_(set_needs_commit_count), | 6897 set_needs_commit_count_(set_needs_commit_count), |
6910 set_needs_redraw_count_(set_needs_redraw_count), | 6898 set_needs_redraw_count_(set_needs_redraw_count), |
6911 forward_to_main_count_(forward_to_main_count) {} | 6899 forward_to_main_count_(forward_to_main_count) {} |
6912 | 6900 |
6913 virtual ~SimpleSwapPromiseMonitor() {} | 6901 ~SimpleSwapPromiseMonitor() override {} |
6914 | 6902 |
6915 virtual void OnSetNeedsCommitOnMain() override { | 6903 void OnSetNeedsCommitOnMain() override { (*set_needs_commit_count_)++; } |
6916 (*set_needs_commit_count_)++; | |
6917 } | |
6918 | 6904 |
6919 virtual void OnSetNeedsRedrawOnImpl() override { | 6905 void OnSetNeedsRedrawOnImpl() override { (*set_needs_redraw_count_)++; } |
6920 (*set_needs_redraw_count_)++; | |
6921 } | |
6922 | 6906 |
6923 virtual void OnForwardScrollUpdateToMainThreadOnImpl() override { | 6907 void OnForwardScrollUpdateToMainThreadOnImpl() override { |
6924 (*forward_to_main_count_)++; | 6908 (*forward_to_main_count_)++; |
6925 } | 6909 } |
6926 | 6910 |
6927 private: | 6911 private: |
6928 int* set_needs_commit_count_; | 6912 int* set_needs_commit_count_; |
6929 int* set_needs_redraw_count_; | 6913 int* set_needs_redraw_count_; |
6930 int* forward_to_main_count_; | 6914 int* forward_to_main_count_; |
6931 }; | 6915 }; |
6932 | 6916 |
6933 TEST_F(LayerTreeHostImplTest, SimpleSwapPromiseMonitor) { | 6917 TEST_F(LayerTreeHostImplTest, SimpleSwapPromiseMonitor) { |
(...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7523 EXPECT_EQ(0u, raw_replica_mask_layer->did_become_active_call_count()); | 7507 EXPECT_EQ(0u, raw_replica_mask_layer->did_become_active_call_count()); |
7524 pending_tree->DidBecomeActive(); | 7508 pending_tree->DidBecomeActive(); |
7525 EXPECT_EQ(3u, raw_pending_layer->did_become_active_call_count()); | 7509 EXPECT_EQ(3u, raw_pending_layer->did_become_active_call_count()); |
7526 EXPECT_EQ(2u, raw_mask_layer->did_become_active_call_count()); | 7510 EXPECT_EQ(2u, raw_mask_layer->did_become_active_call_count()); |
7527 EXPECT_EQ(1u, raw_replica_mask_layer->did_become_active_call_count()); | 7511 EXPECT_EQ(1u, raw_replica_mask_layer->did_become_active_call_count()); |
7528 } | 7512 } |
7529 | 7513 |
7530 class LayerTreeHostImplCountingLostSurfaces : public LayerTreeHostImplTest { | 7514 class LayerTreeHostImplCountingLostSurfaces : public LayerTreeHostImplTest { |
7531 public: | 7515 public: |
7532 LayerTreeHostImplCountingLostSurfaces() : num_lost_surfaces_(0) {} | 7516 LayerTreeHostImplCountingLostSurfaces() : num_lost_surfaces_(0) {} |
7533 virtual void DidLoseOutputSurfaceOnImplThread() override { | 7517 void DidLoseOutputSurfaceOnImplThread() override { num_lost_surfaces_++; } |
7534 num_lost_surfaces_++; | |
7535 } | |
7536 | 7518 |
7537 protected: | 7519 protected: |
7538 int num_lost_surfaces_; | 7520 int num_lost_surfaces_; |
7539 }; | 7521 }; |
7540 | 7522 |
7541 TEST_F(LayerTreeHostImplCountingLostSurfaces, TwiceLostSurface) { | 7523 TEST_F(LayerTreeHostImplCountingLostSurfaces, TwiceLostSurface) { |
7542 // Really we just need at least one client notification each time | 7524 // Really we just need at least one client notification each time |
7543 // we go from having a valid output surface to not having a valid output | 7525 // we go from having a valid output surface to not having a valid output |
7544 // surface. | 7526 // surface. |
7545 EXPECT_EQ(0, num_lost_surfaces_); | 7527 EXPECT_EQ(0, num_lost_surfaces_); |
7546 host_impl_->DidLoseOutputSurface(); | 7528 host_impl_->DidLoseOutputSurface(); |
7547 EXPECT_EQ(1, num_lost_surfaces_); | 7529 EXPECT_EQ(1, num_lost_surfaces_); |
7548 host_impl_->DidLoseOutputSurface(); | 7530 host_impl_->DidLoseOutputSurface(); |
7549 EXPECT_LE(1, num_lost_surfaces_); | 7531 EXPECT_LE(1, num_lost_surfaces_); |
7550 } | 7532 } |
7551 | 7533 |
7552 } // namespace | 7534 } // namespace |
7553 } // namespace cc | 7535 } // namespace cc |
OLD | NEW |