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 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 host_impl_->active_tree()->ResetContentsTexturesPurged(); | 372 host_impl_->active_tree()->ResetContentsTexturesPurged(); |
373 EXPECT_TRUE(host_impl_->CanDraw()); | 373 EXPECT_TRUE(host_impl_->CanDraw()); |
374 EXPECT_TRUE(on_can_draw_state_changed_called_); | 374 EXPECT_TRUE(on_can_draw_state_changed_called_); |
375 on_can_draw_state_changed_called_ = false; | 375 on_can_draw_state_changed_called_ = false; |
376 } | 376 } |
377 | 377 |
378 void SetupMouseMoveAtWithDeviceScale(float device_scale_factor); | 378 void SetupMouseMoveAtWithDeviceScale(float device_scale_factor); |
379 | 379 |
380 protected: | 380 protected: |
381 virtual scoped_ptr<OutputSurface> CreateOutputSurface() { | 381 virtual scoped_ptr<OutputSurface> CreateOutputSurface() { |
382 return FakeOutputSurface::Create3d().PassAs<OutputSurface>(); | 382 return FakeOutputSurface::Create3d(); |
383 } | 383 } |
384 | 384 |
385 void DrawOneFrame() { | 385 void DrawOneFrame() { |
386 LayerTreeHostImpl::FrameData frame_data; | 386 LayerTreeHostImpl::FrameData frame_data; |
387 host_impl_->PrepareToDraw(&frame_data); | 387 host_impl_->PrepareToDraw(&frame_data); |
388 host_impl_->DidDrawAllLayers(frame_data); | 388 host_impl_->DidDrawAllLayers(frame_data); |
389 } | 389 } |
390 | 390 |
391 FakeProxy proxy_; | 391 FakeProxy proxy_; |
392 DebugScopedSetImplThread always_impl_thread_; | 392 DebugScopedSetImplThread always_impl_thread_; |
(...skipping 15 matching lines...) Expand all Loading... |
408 size_t current_limit_bytes_; | 408 size_t current_limit_bytes_; |
409 int current_priority_cutoff_value_; | 409 int current_priority_cutoff_value_; |
410 }; | 410 }; |
411 | 411 |
412 TEST_F(LayerTreeHostImplTest, NotifyIfCanDrawChanged) { | 412 TEST_F(LayerTreeHostImplTest, NotifyIfCanDrawChanged) { |
413 bool always_draw = false; | 413 bool always_draw = false; |
414 CheckNotifyCalledIfCanDrawChanged(always_draw); | 414 CheckNotifyCalledIfCanDrawChanged(always_draw); |
415 } | 415 } |
416 | 416 |
417 TEST_F(LayerTreeHostImplTest, CanDrawIncompleteFrames) { | 417 TEST_F(LayerTreeHostImplTest, CanDrawIncompleteFrames) { |
418 scoped_ptr<FakeOutputSurface> output_surface( | 418 CreateHostImpl(DefaultSettings(), |
419 FakeOutputSurface::CreateAlwaysDrawAndSwap3d()); | 419 FakeOutputSurface::CreateAlwaysDrawAndSwap3d()); |
420 CreateHostImpl(DefaultSettings(), output_surface.PassAs<OutputSurface>()); | |
421 | 420 |
422 bool always_draw = true; | 421 bool always_draw = true; |
423 CheckNotifyCalledIfCanDrawChanged(always_draw); | 422 CheckNotifyCalledIfCanDrawChanged(always_draw); |
424 } | 423 } |
425 | 424 |
426 TEST_F(LayerTreeHostImplTest, ScrollDeltaNoLayers) { | 425 TEST_F(LayerTreeHostImplTest, ScrollDeltaNoLayers) { |
427 ASSERT_FALSE(host_impl_->active_tree()->root_layer()); | 426 ASSERT_FALSE(host_impl_->active_tree()->root_layer()); |
428 | 427 |
429 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); | 428 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); |
430 ASSERT_EQ(scroll_info->scrolls.size(), 0u); | 429 ASSERT_EQ(scroll_info->scrolls.size(), 0u); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
520 // We should not crash when trying to scroll an empty layer tree. | 519 // We should not crash when trying to scroll an empty layer tree. |
521 EXPECT_EQ(InputHandler::ScrollIgnored, | 520 EXPECT_EQ(InputHandler::ScrollIgnored, |
522 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel)); | 521 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel)); |
523 } | 522 } |
524 | 523 |
525 TEST_F(LayerTreeHostImplTest, ScrollWithoutRenderer) { | 524 TEST_F(LayerTreeHostImplTest, ScrollWithoutRenderer) { |
526 scoped_ptr<TestWebGraphicsContext3D> context_owned = | 525 scoped_ptr<TestWebGraphicsContext3D> context_owned = |
527 TestWebGraphicsContext3D::Create(); | 526 TestWebGraphicsContext3D::Create(); |
528 context_owned->set_context_lost(true); | 527 context_owned->set_context_lost(true); |
529 | 528 |
530 scoped_ptr<FakeOutputSurface> output_surface(FakeOutputSurface::Create3d( | |
531 context_owned.Pass())); | |
532 | |
533 // Initialization will fail. | 529 // Initialization will fail. |
534 EXPECT_FALSE(CreateHostImpl(DefaultSettings(), | 530 EXPECT_FALSE(CreateHostImpl( |
535 output_surface.PassAs<OutputSurface>())); | 531 DefaultSettings(), FakeOutputSurface::Create3d(context_owned.Pass()))); |
536 | 532 |
537 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 533 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
538 | 534 |
539 // We should not crash when trying to scroll after the renderer initialization | 535 // We should not crash when trying to scroll after the renderer initialization |
540 // fails. | 536 // fails. |
541 EXPECT_EQ(InputHandler::ScrollStarted, | 537 EXPECT_EQ(InputHandler::ScrollStarted, |
542 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel)); | 538 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel)); |
543 } | 539 } |
544 | 540 |
545 TEST_F(LayerTreeHostImplTest, ReplaceTreeWhileScrolling) { | 541 TEST_F(LayerTreeHostImplTest, ReplaceTreeWhileScrolling) { |
(...skipping 776 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1322 contents->SetContentBounds(content_size); \ | 1318 contents->SetContentBounds(content_size); \ |
1323 \ | 1319 \ |
1324 scoped_ptr<SolidColorScrollbarLayerImpl> scrollbar = \ | 1320 scoped_ptr<SolidColorScrollbarLayerImpl> scrollbar = \ |
1325 SolidColorScrollbarLayerImpl::Create( \ | 1321 SolidColorScrollbarLayerImpl::Create( \ |
1326 host_impl_->active_tree(), 4, VERTICAL, 10, 0, false, true); \ | 1322 host_impl_->active_tree(), 4, VERTICAL, 10, 0, false, true); \ |
1327 EXPECT_FLOAT_EQ(0.f, scrollbar->opacity()); \ | 1323 EXPECT_FLOAT_EQ(0.f, scrollbar->opacity()); \ |
1328 \ | 1324 \ |
1329 scroll->AddChild(contents.Pass()); \ | 1325 scroll->AddChild(contents.Pass()); \ |
1330 root->AddChild(scroll.Pass()); \ | 1326 root->AddChild(scroll.Pass()); \ |
1331 scrollbar->SetScrollLayerAndClipLayerByIds(2, 1); \ | 1327 scrollbar->SetScrollLayerAndClipLayerByIds(2, 1); \ |
1332 root->AddChild(scrollbar.PassAs<LayerImpl>()); \ | 1328 root->AddChild(scrollbar.Pass()); \ |
1333 \ | 1329 \ |
1334 host_impl_->active_tree()->SetRootLayer(root.Pass()); \ | 1330 host_impl_->active_tree()->SetRootLayer(root.Pass()); \ |
1335 host_impl_->active_tree()->SetViewportLayersFromIds( \ | 1331 host_impl_->active_tree()->SetViewportLayersFromIds( \ |
1336 1, 2, Layer::INVALID_ID); \ | 1332 1, 2, Layer::INVALID_ID); \ |
1337 host_impl_->active_tree()->DidBecomeActive(); \ | 1333 host_impl_->active_tree()->DidBecomeActive(); \ |
1338 DrawFrame(); | 1334 DrawFrame(); |
1339 | 1335 |
1340 TEST_F(LayerTreeHostImplTest, ScrollbarLinearFadeScheduling) { | 1336 TEST_F(LayerTreeHostImplTest, ScrollbarLinearFadeScheduling) { |
1341 LayerTreeSettings settings; | 1337 LayerTreeSettings settings; |
1342 settings.scrollbar_animator = LayerTreeSettings::LinearFade; | 1338 settings.scrollbar_animator = LayerTreeSettings::LinearFade; |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1490 scoped_ptr<PaintedScrollbarLayerImpl> scrollbar = | 1486 scoped_ptr<PaintedScrollbarLayerImpl> scrollbar = |
1491 PaintedScrollbarLayerImpl::Create(host_impl_->active_tree(), 5, VERTICAL); | 1487 PaintedScrollbarLayerImpl::Create(host_impl_->active_tree(), 5, VERTICAL); |
1492 scrollbar->SetDrawsContent(true); | 1488 scrollbar->SetDrawsContent(true); |
1493 scrollbar->SetBounds(gfx::Size(15, viewport_size.height())); | 1489 scrollbar->SetBounds(gfx::Size(15, viewport_size.height())); |
1494 scrollbar->SetContentBounds(gfx::Size(15, viewport_size.height())); | 1490 scrollbar->SetContentBounds(gfx::Size(15, viewport_size.height())); |
1495 scrollbar->SetPosition(gfx::Point(285, 0)); | 1491 scrollbar->SetPosition(gfx::Point(285, 0)); |
1496 | 1492 |
1497 scroll->AddChild(contents.Pass()); | 1493 scroll->AddChild(contents.Pass()); |
1498 root->AddChild(scroll.Pass()); | 1494 root->AddChild(scroll.Pass()); |
1499 scrollbar->SetScrollLayerAndClipLayerByIds(2, 1); | 1495 scrollbar->SetScrollLayerAndClipLayerByIds(2, 1); |
1500 root->AddChild(scrollbar.PassAs<LayerImpl>()); | 1496 root->AddChild(scrollbar.Pass()); |
1501 | 1497 |
1502 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 1498 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
1503 host_impl_->active_tree()->SetViewportLayersFromIds(1, 2, Layer::INVALID_ID); | 1499 host_impl_->active_tree()->SetViewportLayersFromIds(1, 2, Layer::INVALID_ID); |
1504 host_impl_->active_tree()->DidBecomeActive(); | 1500 host_impl_->active_tree()->DidBecomeActive(); |
1505 DrawFrame(); | 1501 DrawFrame(); |
1506 | 1502 |
1507 LayerImpl* root_scroll = | 1503 LayerImpl* root_scroll = |
1508 host_impl_->active_tree()->InnerViewportScrollLayer(); | 1504 host_impl_->active_tree()->InnerViewportScrollLayer(); |
1509 ASSERT_TRUE(root_scroll->scrollbar_animation_controller()); | 1505 ASSERT_TRUE(root_scroll->scrollbar_animation_controller()); |
1510 ScrollbarAnimationControllerThinning* scrollbar_animation_controller = | 1506 ScrollbarAnimationControllerThinning* scrollbar_animation_controller = |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1604 EXPECT_EQ(gfx::SizeF(12.5f, 12.5f), metadata.scrollable_viewport_size); | 1600 EXPECT_EQ(gfx::SizeF(12.5f, 12.5f), metadata.scrollable_viewport_size); |
1605 EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size); | 1601 EXPECT_EQ(gfx::SizeF(100.f, 100.f), metadata.root_layer_size); |
1606 EXPECT_EQ(0.5f, metadata.min_page_scale_factor); | 1602 EXPECT_EQ(0.5f, metadata.min_page_scale_factor); |
1607 EXPECT_EQ(4.f, metadata.max_page_scale_factor); | 1603 EXPECT_EQ(4.f, metadata.max_page_scale_factor); |
1608 } | 1604 } |
1609 } | 1605 } |
1610 | 1606 |
1611 class DidDrawCheckLayer : public LayerImpl { | 1607 class DidDrawCheckLayer : public LayerImpl { |
1612 public: | 1608 public: |
1613 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { | 1609 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { |
1614 return scoped_ptr<LayerImpl>(new DidDrawCheckLayer(tree_impl, id)); | 1610 return make_scoped_ptr(new DidDrawCheckLayer(tree_impl, id)); |
1615 } | 1611 } |
1616 | 1612 |
1617 virtual bool WillDraw(DrawMode draw_mode, ResourceProvider* provider) | 1613 virtual bool WillDraw(DrawMode draw_mode, ResourceProvider* provider) |
1618 OVERRIDE { | 1614 OVERRIDE { |
1619 will_draw_called_ = true; | 1615 will_draw_called_ = true; |
1620 if (will_draw_returns_false_) | 1616 if (will_draw_returns_false_) |
1621 return false; | 1617 return false; |
1622 return LayerImpl::WillDraw(draw_mode, provider); | 1618 return LayerImpl::WillDraw(draw_mode, provider); |
1623 } | 1619 } |
1624 | 1620 |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1830 } | 1826 } |
1831 | 1827 |
1832 class MissingTextureAnimatingLayer : public DidDrawCheckLayer { | 1828 class MissingTextureAnimatingLayer : public DidDrawCheckLayer { |
1833 public: | 1829 public: |
1834 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, | 1830 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, |
1835 int id, | 1831 int id, |
1836 bool tile_missing, | 1832 bool tile_missing, |
1837 bool had_incomplete_tile, | 1833 bool had_incomplete_tile, |
1838 bool animating, | 1834 bool animating, |
1839 ResourceProvider* resource_provider) { | 1835 ResourceProvider* resource_provider) { |
1840 return scoped_ptr<LayerImpl>( | 1836 return make_scoped_ptr(new MissingTextureAnimatingLayer(tree_impl, |
1841 new MissingTextureAnimatingLayer(tree_impl, | 1837 id, |
1842 id, | 1838 tile_missing, |
1843 tile_missing, | 1839 had_incomplete_tile, |
1844 had_incomplete_tile, | 1840 animating, |
1845 animating, | 1841 resource_provider)); |
1846 resource_provider)); | |
1847 } | 1842 } |
1848 | 1843 |
1849 virtual void AppendQuads(RenderPass* render_pass, | 1844 virtual void AppendQuads(RenderPass* render_pass, |
1850 const OcclusionTracker<LayerImpl>& occlusion_tracker, | 1845 const OcclusionTracker<LayerImpl>& occlusion_tracker, |
1851 AppendQuadsData* append_quads_data) OVERRIDE { | 1846 AppendQuadsData* append_quads_data) OVERRIDE { |
1852 LayerImpl::AppendQuads(render_pass, occlusion_tracker, append_quads_data); | 1847 LayerImpl::AppendQuads(render_pass, occlusion_tracker, append_quads_data); |
1853 if (had_incomplete_tile_) | 1848 if (had_incomplete_tile_) |
1854 append_quads_data->num_incomplete_tiles++; | 1849 append_quads_data->num_incomplete_tiles++; |
1855 if (tile_missing_) | 1850 if (tile_missing_) |
1856 append_quads_data->num_missing_tiles++; | 1851 append_quads_data->num_missing_tiles++; |
(...skipping 1776 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3633 host_impl_->accumulated_root_overscroll().ToString()); | 3628 host_impl_->accumulated_root_overscroll().ToString()); |
3634 host_impl_->ScrollEnd(); | 3629 host_impl_->ScrollEnd(); |
3635 } | 3630 } |
3636 } | 3631 } |
3637 | 3632 |
3638 class BlendStateCheckLayer : public LayerImpl { | 3633 class BlendStateCheckLayer : public LayerImpl { |
3639 public: | 3634 public: |
3640 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, | 3635 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, |
3641 int id, | 3636 int id, |
3642 ResourceProvider* resource_provider) { | 3637 ResourceProvider* resource_provider) { |
3643 return scoped_ptr<LayerImpl>(new BlendStateCheckLayer(tree_impl, | 3638 return make_scoped_ptr( |
3644 id, | 3639 new BlendStateCheckLayer(tree_impl, id, resource_provider)); |
3645 resource_provider)); | |
3646 } | 3640 } |
3647 | 3641 |
3648 virtual void AppendQuads(RenderPass* render_pass, | 3642 virtual void AppendQuads(RenderPass* render_pass, |
3649 const OcclusionTracker<LayerImpl>& occlusion_tracker, | 3643 const OcclusionTracker<LayerImpl>& occlusion_tracker, |
3650 AppendQuadsData* append_quads_data) OVERRIDE { | 3644 AppendQuadsData* append_quads_data) OVERRIDE { |
3651 quads_appended_ = true; | 3645 quads_appended_ = true; |
3652 | 3646 |
3653 gfx::Rect opaque_rect; | 3647 gfx::Rect opaque_rect; |
3654 if (contents_opaque()) | 3648 if (contents_opaque()) |
3655 opaque_rect = quad_rect_; | 3649 opaque_rect = quad_rect_; |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3947 | 3941 |
3948 class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest { | 3942 class LayerTreeHostImplViewportCoveredTest : public LayerTreeHostImplTest { |
3949 protected: | 3943 protected: |
3950 LayerTreeHostImplViewportCoveredTest() : | 3944 LayerTreeHostImplViewportCoveredTest() : |
3951 gutter_quad_material_(DrawQuad::SOLID_COLOR), | 3945 gutter_quad_material_(DrawQuad::SOLID_COLOR), |
3952 child_(NULL), | 3946 child_(NULL), |
3953 did_activate_pending_tree_(false) {} | 3947 did_activate_pending_tree_(false) {} |
3954 | 3948 |
3955 scoped_ptr<OutputSurface> CreateFakeOutputSurface(bool always_draw) { | 3949 scoped_ptr<OutputSurface> CreateFakeOutputSurface(bool always_draw) { |
3956 if (always_draw) { | 3950 if (always_draw) { |
3957 return FakeOutputSurface::CreateAlwaysDrawAndSwap3d() | 3951 return FakeOutputSurface::CreateAlwaysDrawAndSwap3d(); |
3958 .PassAs<OutputSurface>(); | |
3959 } | 3952 } |
3960 return FakeOutputSurface::Create3d().PassAs<OutputSurface>(); | 3953 return FakeOutputSurface::Create3d(); |
3961 } | 3954 } |
3962 | 3955 |
3963 void SetupActiveTreeLayers() { | 3956 void SetupActiveTreeLayers() { |
3964 host_impl_->active_tree()->set_background_color(SK_ColorGRAY); | 3957 host_impl_->active_tree()->set_background_color(SK_ColorGRAY); |
3965 host_impl_->active_tree()->SetRootLayer( | 3958 host_impl_->active_tree()->SetRootLayer( |
3966 LayerImpl::Create(host_impl_->active_tree(), 1)); | 3959 LayerImpl::Create(host_impl_->active_tree(), 1)); |
3967 host_impl_->active_tree()->root_layer()->AddChild( | 3960 host_impl_->active_tree()->root_layer()->AddChild( |
3968 BlendStateCheckLayer::Create(host_impl_->active_tree(), | 3961 BlendStateCheckLayer::Create(host_impl_->active_tree(), |
3969 2, | 3962 2, |
3970 host_impl_->resource_provider())); | 3963 host_impl_->resource_provider())); |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4230 | 4223 |
4231 SetupActiveTreeLayers(); | 4224 SetupActiveTreeLayers(); |
4232 TestEmptyLayer(); | 4225 TestEmptyLayer(); |
4233 TestLayerInMiddleOfViewport(); | 4226 TestLayerInMiddleOfViewport(); |
4234 TestLayerIsLargerThanViewport(); | 4227 TestLayerIsLargerThanViewport(); |
4235 } | 4228 } |
4236 | 4229 |
4237 class FakeDrawableLayerImpl: public LayerImpl { | 4230 class FakeDrawableLayerImpl: public LayerImpl { |
4238 public: | 4231 public: |
4239 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { | 4232 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { |
4240 return scoped_ptr<LayerImpl>(new FakeDrawableLayerImpl(tree_impl, id)); | 4233 return make_scoped_ptr(new FakeDrawableLayerImpl(tree_impl, id)); |
4241 } | 4234 } |
4242 protected: | 4235 protected: |
4243 FakeDrawableLayerImpl(LayerTreeImpl* tree_impl, int id) | 4236 FakeDrawableLayerImpl(LayerTreeImpl* tree_impl, int id) |
4244 : LayerImpl(tree_impl, id) {} | 4237 : LayerImpl(tree_impl, id) {} |
4245 }; | 4238 }; |
4246 | 4239 |
4247 // Only reshape when we know we are going to draw. Otherwise, the reshape | 4240 // Only reshape when we know we are going to draw. Otherwise, the reshape |
4248 // can leave the window at the wrong size if we never draw and the proper | 4241 // can leave the window at the wrong size if we never draw and the proper |
4249 // viewport size is never set. | 4242 // viewport size is never set. |
4250 TEST_F(LayerTreeHostImplTest, ReshapeNotCalledUntilDraw) { | 4243 TEST_F(LayerTreeHostImplTest, ReshapeNotCalledUntilDraw) { |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4400 | 4393 |
4401 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4394 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
4402 EXPECT_EQ(1u, frame.render_surface_layer_list->size()); | 4395 EXPECT_EQ(1u, frame.render_surface_layer_list->size()); |
4403 EXPECT_EQ(1u, frame.render_passes.size()); | 4396 EXPECT_EQ(1u, frame.render_passes.size()); |
4404 host_impl_->DidDrawAllLayers(frame); | 4397 host_impl_->DidDrawAllLayers(frame); |
4405 } | 4398 } |
4406 | 4399 |
4407 class FakeLayerWithQuads : public LayerImpl { | 4400 class FakeLayerWithQuads : public LayerImpl { |
4408 public: | 4401 public: |
4409 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { | 4402 static scoped_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { |
4410 return scoped_ptr<LayerImpl>(new FakeLayerWithQuads(tree_impl, id)); | 4403 return make_scoped_ptr(new FakeLayerWithQuads(tree_impl, id)); |
4411 } | 4404 } |
4412 | 4405 |
4413 virtual void AppendQuads(RenderPass* render_pass, | 4406 virtual void AppendQuads(RenderPass* render_pass, |
4414 const OcclusionTracker<LayerImpl>& occlusion_tracker, | 4407 const OcclusionTracker<LayerImpl>& occlusion_tracker, |
4415 AppendQuadsData* append_quads_data) OVERRIDE { | 4408 AppendQuadsData* append_quads_data) OVERRIDE { |
4416 SharedQuadState* shared_quad_state = | 4409 SharedQuadState* shared_quad_state = |
4417 render_pass->CreateAndAppendSharedQuadState(); | 4410 render_pass->CreateAndAppendSharedQuadState(); |
4418 PopulateSharedQuadState(shared_quad_state); | 4411 PopulateSharedQuadState(shared_quad_state); |
4419 | 4412 |
4420 SkColor gray = SkColorSetRGB(100, 100, 100); | 4413 SkColor gray = SkColorSetRGB(100, 100, 100); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4514 .Times(0); | 4507 .Times(0); |
4515 | 4508 |
4516 EXPECT_CALL(*context_, scissor(_, _, _, _)) | 4509 EXPECT_CALL(*context_, scissor(_, _, _, _)) |
4517 .Times(0); | 4510 .Times(0); |
4518 } | 4511 } |
4519 }; | 4512 }; |
4520 | 4513 |
4521 TEST_F(LayerTreeHostImplTest, NoPartialSwap) { | 4514 TEST_F(LayerTreeHostImplTest, NoPartialSwap) { |
4522 scoped_ptr<MockContext> mock_context_owned(new MockContext); | 4515 scoped_ptr<MockContext> mock_context_owned(new MockContext); |
4523 MockContext* mock_context = mock_context_owned.get(); | 4516 MockContext* mock_context = mock_context_owned.get(); |
4524 | |
4525 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | |
4526 mock_context_owned.PassAs<TestWebGraphicsContext3D>())); | |
4527 MockContextHarness harness(mock_context); | 4517 MockContextHarness harness(mock_context); |
4528 | 4518 |
4529 // Run test case | 4519 // Run test case |
4530 LayerTreeSettings settings = DefaultSettings(); | 4520 LayerTreeSettings settings = DefaultSettings(); |
4531 settings.partial_swap_enabled = false; | 4521 settings.partial_swap_enabled = false; |
4532 CreateHostImpl(settings, output_surface.Pass()); | 4522 CreateHostImpl(settings, |
| 4523 FakeOutputSurface::Create3d(mock_context_owned.Pass())); |
4533 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); | 4524 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); |
4534 | 4525 |
4535 // Without partial swap, and no clipping, no scissor is set. | 4526 // Without partial swap, and no clipping, no scissor is set. |
4536 harness.MustDrawSolidQuad(); | 4527 harness.MustDrawSolidQuad(); |
4537 harness.MustSetNoScissor(); | 4528 harness.MustSetNoScissor(); |
4538 { | 4529 { |
4539 LayerTreeHostImpl::FrameData frame; | 4530 LayerTreeHostImpl::FrameData frame; |
4540 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4531 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
4541 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4532 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
4542 host_impl_->DidDrawAllLayers(frame); | 4533 host_impl_->DidDrawAllLayers(frame); |
(...skipping 10 matching lines...) Expand all Loading... |
4553 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4544 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
4554 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4545 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
4555 host_impl_->DidDrawAllLayers(frame); | 4546 host_impl_->DidDrawAllLayers(frame); |
4556 } | 4547 } |
4557 Mock::VerifyAndClearExpectations(&mock_context); | 4548 Mock::VerifyAndClearExpectations(&mock_context); |
4558 } | 4549 } |
4559 | 4550 |
4560 TEST_F(LayerTreeHostImplTest, PartialSwap) { | 4551 TEST_F(LayerTreeHostImplTest, PartialSwap) { |
4561 scoped_ptr<MockContext> context_owned(new MockContext); | 4552 scoped_ptr<MockContext> context_owned(new MockContext); |
4562 MockContext* mock_context = context_owned.get(); | 4553 MockContext* mock_context = context_owned.get(); |
4563 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | |
4564 context_owned.PassAs<TestWebGraphicsContext3D>())); | |
4565 MockContextHarness harness(mock_context); | 4554 MockContextHarness harness(mock_context); |
4566 | 4555 |
4567 LayerTreeSettings settings = DefaultSettings(); | 4556 LayerTreeSettings settings = DefaultSettings(); |
4568 settings.partial_swap_enabled = true; | 4557 settings.partial_swap_enabled = true; |
4569 CreateHostImpl(settings, output_surface.Pass()); | 4558 CreateHostImpl(settings, FakeOutputSurface::Create3d(context_owned.Pass())); |
4570 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); | 4559 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); |
4571 | 4560 |
4572 // The first frame is not a partially-swapped one. | 4561 // The first frame is not a partially-swapped one. |
4573 harness.MustSetScissor(0, 0, 10, 10); | 4562 harness.MustSetScissor(0, 0, 10, 10); |
4574 harness.MustDrawSolidQuad(); | 4563 harness.MustDrawSolidQuad(); |
4575 { | 4564 { |
4576 LayerTreeHostImpl::FrameData frame; | 4565 LayerTreeHostImpl::FrameData frame; |
4577 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4566 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
4578 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4567 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
4579 host_impl_->DidDrawAllLayers(frame); | 4568 host_impl_->DidDrawAllLayers(frame); |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4742 scoped_refptr<VideoFrame> softwareFrame = | 4731 scoped_refptr<VideoFrame> softwareFrame = |
4743 media::VideoFrame::CreateColorFrame( | 4732 media::VideoFrame::CreateColorFrame( |
4744 gfx::Size(4, 4), 0x80, 0x80, 0x80, base::TimeDelta()); | 4733 gfx::Size(4, 4), 0x80, 0x80, 0x80, base::TimeDelta()); |
4745 FakeVideoFrameProvider provider; | 4734 FakeVideoFrameProvider provider; |
4746 provider.set_frame(softwareFrame); | 4735 provider.set_frame(softwareFrame); |
4747 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create( | 4736 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create( |
4748 host_impl_->active_tree(), 4, &provider, media::VIDEO_ROTATION_0); | 4737 host_impl_->active_tree(), 4, &provider, media::VIDEO_ROTATION_0); |
4749 video_layer->SetBounds(gfx::Size(10, 10)); | 4738 video_layer->SetBounds(gfx::Size(10, 10)); |
4750 video_layer->SetContentBounds(gfx::Size(10, 10)); | 4739 video_layer->SetContentBounds(gfx::Size(10, 10)); |
4751 video_layer->SetDrawsContent(true); | 4740 video_layer->SetDrawsContent(true); |
4752 root_layer->AddChild(video_layer.PassAs<LayerImpl>()); | 4741 root_layer->AddChild(video_layer.Pass()); |
4753 | 4742 |
4754 scoped_ptr<IOSurfaceLayerImpl> io_surface_layer = | 4743 scoped_ptr<IOSurfaceLayerImpl> io_surface_layer = |
4755 IOSurfaceLayerImpl::Create(host_impl_->active_tree(), 5); | 4744 IOSurfaceLayerImpl::Create(host_impl_->active_tree(), 5); |
4756 io_surface_layer->SetBounds(gfx::Size(10, 10)); | 4745 io_surface_layer->SetBounds(gfx::Size(10, 10)); |
4757 io_surface_layer->SetContentBounds(gfx::Size(10, 10)); | 4746 io_surface_layer->SetContentBounds(gfx::Size(10, 10)); |
4758 io_surface_layer->SetDrawsContent(true); | 4747 io_surface_layer->SetDrawsContent(true); |
4759 io_surface_layer->SetIOSurfaceProperties(1, gfx::Size(10, 10)); | 4748 io_surface_layer->SetIOSurfaceProperties(1, gfx::Size(10, 10)); |
4760 root_layer->AddChild(io_surface_layer.PassAs<LayerImpl>()); | 4749 root_layer->AddChild(io_surface_layer.Pass()); |
4761 | 4750 |
4762 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 4751 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
4763 | 4752 |
4764 EXPECT_EQ(0u, context3d->NumTextures()); | 4753 EXPECT_EQ(0u, context3d->NumTextures()); |
4765 | 4754 |
4766 LayerTreeHostImpl::FrameData frame; | 4755 LayerTreeHostImpl::FrameData frame; |
4767 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4756 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
4768 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 4757 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
4769 host_impl_->DidDrawAllLayers(frame); | 4758 host_impl_->DidDrawAllLayers(frame); |
4770 host_impl_->SwapBuffers(frame); | 4759 host_impl_->SwapBuffers(frame); |
(...skipping 14 matching lines...) Expand all Loading... |
4785 GLsizei count, | 4774 GLsizei count, |
4786 GLenum type, | 4775 GLenum type, |
4787 GLintptr offset)); | 4776 GLintptr offset)); |
4788 }; | 4777 }; |
4789 | 4778 |
4790 TEST_F(LayerTreeHostImplTest, HasTransparentBackground) { | 4779 TEST_F(LayerTreeHostImplTest, HasTransparentBackground) { |
4791 scoped_ptr<MockDrawQuadsToFillScreenContext> mock_context_owned( | 4780 scoped_ptr<MockDrawQuadsToFillScreenContext> mock_context_owned( |
4792 new MockDrawQuadsToFillScreenContext); | 4781 new MockDrawQuadsToFillScreenContext); |
4793 MockDrawQuadsToFillScreenContext* mock_context = mock_context_owned.get(); | 4782 MockDrawQuadsToFillScreenContext* mock_context = mock_context_owned.get(); |
4794 | 4783 |
4795 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | |
4796 mock_context_owned.PassAs<TestWebGraphicsContext3D>())); | |
4797 | |
4798 // Run test case | 4784 // Run test case |
4799 LayerTreeSettings settings = DefaultSettings(); | 4785 LayerTreeSettings settings = DefaultSettings(); |
4800 settings.partial_swap_enabled = false; | 4786 settings.partial_swap_enabled = false; |
4801 CreateHostImpl(settings, output_surface.Pass()); | 4787 CreateHostImpl(settings, |
| 4788 FakeOutputSurface::Create3d(mock_context_owned.Pass())); |
4802 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); | 4789 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); |
4803 host_impl_->active_tree()->set_background_color(SK_ColorWHITE); | 4790 host_impl_->active_tree()->set_background_color(SK_ColorWHITE); |
4804 | 4791 |
4805 // Verify one quad is drawn when transparent background set is not set. | 4792 // Verify one quad is drawn when transparent background set is not set. |
4806 host_impl_->active_tree()->set_has_transparent_background(false); | 4793 host_impl_->active_tree()->set_has_transparent_background(false); |
4807 EXPECT_CALL(*mock_context, useProgram(_)) | 4794 EXPECT_CALL(*mock_context, useProgram(_)) |
4808 .Times(1); | 4795 .Times(1); |
4809 EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) | 4796 EXPECT_CALL(*mock_context, drawElements(_, _, _, _)) |
4810 .Times(1); | 4797 .Times(1); |
4811 LayerTreeHostImpl::FrameData frame; | 4798 LayerTreeHostImpl::FrameData frame; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4860 // re-commit. | 4847 // re-commit. |
4861 host_impl_->SetMemoryPolicy(ManagedMemoryPolicy( | 4848 host_impl_->SetMemoryPolicy(ManagedMemoryPolicy( |
4862 host_impl_->memory_allocation_limit_bytes())); | 4849 host_impl_->memory_allocation_limit_bytes())); |
4863 EXPECT_FALSE(did_request_commit_); | 4850 EXPECT_FALSE(did_request_commit_); |
4864 } | 4851 } |
4865 | 4852 |
4866 class LayerTreeHostImplTestWithDelegatingRenderer | 4853 class LayerTreeHostImplTestWithDelegatingRenderer |
4867 : public LayerTreeHostImplTest { | 4854 : public LayerTreeHostImplTest { |
4868 protected: | 4855 protected: |
4869 virtual scoped_ptr<OutputSurface> CreateOutputSurface() OVERRIDE { | 4856 virtual scoped_ptr<OutputSurface> CreateOutputSurface() OVERRIDE { |
4870 return FakeOutputSurface::CreateDelegating3d().PassAs<OutputSurface>(); | 4857 return FakeOutputSurface::CreateDelegating3d(); |
4871 } | 4858 } |
4872 | 4859 |
4873 void DrawFrameAndTestDamage(const gfx::RectF& expected_damage) { | 4860 void DrawFrameAndTestDamage(const gfx::RectF& expected_damage) { |
4874 bool expect_to_draw = !expected_damage.IsEmpty(); | 4861 bool expect_to_draw = !expected_damage.IsEmpty(); |
4875 | 4862 |
4876 LayerTreeHostImpl::FrameData frame; | 4863 LayerTreeHostImpl::FrameData frame; |
4877 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 4864 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
4878 | 4865 |
4879 if (!expect_to_draw) { | 4866 if (!expect_to_draw) { |
4880 // With no damage, we don't draw, and no quads are created. | 4867 // With no damage, we don't draw, and no quads are created. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4915 root->SetContentBounds(gfx::Size(10, 10)); | 4902 root->SetContentBounds(gfx::Size(10, 10)); |
4916 root->SetDrawsContent(true); | 4903 root->SetDrawsContent(true); |
4917 | 4904 |
4918 // Child layer is in the bottom right corner. | 4905 // Child layer is in the bottom right corner. |
4919 scoped_ptr<SolidColorLayerImpl> child = | 4906 scoped_ptr<SolidColorLayerImpl> child = |
4920 SolidColorLayerImpl::Create(host_impl_->active_tree(), 2); | 4907 SolidColorLayerImpl::Create(host_impl_->active_tree(), 2); |
4921 child->SetPosition(gfx::PointF(9.f, 9.f)); | 4908 child->SetPosition(gfx::PointF(9.f, 9.f)); |
4922 child->SetBounds(gfx::Size(1, 1)); | 4909 child->SetBounds(gfx::Size(1, 1)); |
4923 child->SetContentBounds(gfx::Size(1, 1)); | 4910 child->SetContentBounds(gfx::Size(1, 1)); |
4924 child->SetDrawsContent(true); | 4911 child->SetDrawsContent(true); |
4925 root->AddChild(child.PassAs<LayerImpl>()); | 4912 root->AddChild(child.Pass()); |
4926 | 4913 |
4927 host_impl_->active_tree()->SetRootLayer(root.PassAs<LayerImpl>()); | 4914 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
4928 | 4915 |
4929 // Draw a frame. In the first frame, the entire viewport should be damaged. | 4916 // Draw a frame. In the first frame, the entire viewport should be damaged. |
4930 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); | 4917 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); |
4931 DrawFrameAndTestDamage(full_frame_damage); | 4918 DrawFrameAndTestDamage(full_frame_damage); |
4932 | 4919 |
4933 // The second frame has damage that doesn't touch the child layer. Its quads | 4920 // The second frame has damage that doesn't touch the child layer. Its quads |
4934 // should still be generated. | 4921 // should still be generated. |
4935 gfx::Rect small_damage = gfx::Rect(0, 0, 1, 1); | 4922 gfx::Rect small_damage = gfx::Rect(0, 0, 1, 1); |
4936 host_impl_->active_tree()->root_layer()->SetUpdateRect(small_damage); | 4923 host_impl_->active_tree()->root_layer()->SetUpdateRect(small_damage); |
4937 DrawFrameAndTestDamage(small_damage); | 4924 DrawFrameAndTestDamage(small_damage); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4987 root->AddChild(scoped_scaling_layer.Pass()); | 4974 root->AddChild(scoped_scaling_layer.Pass()); |
4988 | 4975 |
4989 scoped_ptr<LayerImpl> scoped_content_layer = | 4976 scoped_ptr<LayerImpl> scoped_content_layer = |
4990 LayerImpl::Create(host_impl_->active_tree(), 3); | 4977 LayerImpl::Create(host_impl_->active_tree(), 3); |
4991 LayerImpl* content_layer = scoped_content_layer.get(); | 4978 LayerImpl* content_layer = scoped_content_layer.get(); |
4992 scaling_layer->AddChild(scoped_content_layer.Pass()); | 4979 scaling_layer->AddChild(scoped_content_layer.Pass()); |
4993 | 4980 |
4994 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = | 4981 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = |
4995 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); | 4982 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); |
4996 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); | 4983 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); |
4997 content_layer->SetMaskLayer(scoped_mask_layer.PassAs<LayerImpl>()); | 4984 content_layer->SetMaskLayer(scoped_mask_layer.Pass()); |
4998 | 4985 |
4999 gfx::Size root_size(100, 100); | 4986 gfx::Size root_size(100, 100); |
5000 root->SetBounds(root_size); | 4987 root->SetBounds(root_size); |
5001 root->SetContentBounds(root_size); | 4988 root->SetContentBounds(root_size); |
5002 root->SetPosition(gfx::PointF()); | 4989 root->SetPosition(gfx::PointF()); |
5003 | 4990 |
5004 gfx::Size scaling_layer_size(50, 50); | 4991 gfx::Size scaling_layer_size(50, 50); |
5005 scaling_layer->SetBounds(scaling_layer_size); | 4992 scaling_layer->SetBounds(scaling_layer_size); |
5006 scaling_layer->SetContentBounds(scaling_layer_size); | 4993 scaling_layer->SetContentBounds(scaling_layer_size); |
5007 scaling_layer->SetPosition(gfx::PointF()); | 4994 scaling_layer->SetPosition(gfx::PointF()); |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5116 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); | 5103 host_impl_->active_tree()->SetRootLayer(scoped_root.Pass()); |
5117 | 5104 |
5118 scoped_ptr<LayerImpl> scoped_content_layer = | 5105 scoped_ptr<LayerImpl> scoped_content_layer = |
5119 LayerImpl::Create(host_impl_->active_tree(), 3); | 5106 LayerImpl::Create(host_impl_->active_tree(), 3); |
5120 LayerImpl* content_layer = scoped_content_layer.get(); | 5107 LayerImpl* content_layer = scoped_content_layer.get(); |
5121 root->AddChild(scoped_content_layer.Pass()); | 5108 root->AddChild(scoped_content_layer.Pass()); |
5122 | 5109 |
5123 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = | 5110 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = |
5124 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); | 5111 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); |
5125 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); | 5112 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); |
5126 content_layer->SetMaskLayer(scoped_mask_layer.PassAs<LayerImpl>()); | 5113 content_layer->SetMaskLayer(scoped_mask_layer.Pass()); |
5127 | 5114 |
5128 gfx::Size root_size(100, 100); | 5115 gfx::Size root_size(100, 100); |
5129 root->SetBounds(root_size); | 5116 root->SetBounds(root_size); |
5130 root->SetContentBounds(root_size); | 5117 root->SetContentBounds(root_size); |
5131 root->SetPosition(gfx::PointF()); | 5118 root->SetPosition(gfx::PointF()); |
5132 | 5119 |
5133 gfx::Size layer_size(50, 50); | 5120 gfx::Size layer_size(50, 50); |
5134 content_layer->SetBounds(layer_size); | 5121 content_layer->SetBounds(layer_size); |
5135 content_layer->SetContentBounds(layer_size); | 5122 content_layer->SetContentBounds(layer_size); |
5136 content_layer->SetPosition(gfx::PointF()); | 5123 content_layer->SetPosition(gfx::PointF()); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5267 root->AddChild(scoped_content_layer.Pass()); | 5254 root->AddChild(scoped_content_layer.Pass()); |
5268 | 5255 |
5269 scoped_ptr<LayerImpl> scoped_replica_layer = | 5256 scoped_ptr<LayerImpl> scoped_replica_layer = |
5270 LayerImpl::Create(host_impl_->active_tree(), 2); | 5257 LayerImpl::Create(host_impl_->active_tree(), 2); |
5271 LayerImpl* replica_layer = scoped_replica_layer.get(); | 5258 LayerImpl* replica_layer = scoped_replica_layer.get(); |
5272 content_layer->SetReplicaLayer(scoped_replica_layer.Pass()); | 5259 content_layer->SetReplicaLayer(scoped_replica_layer.Pass()); |
5273 | 5260 |
5274 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = | 5261 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = |
5275 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); | 5262 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 4); |
5276 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); | 5263 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); |
5277 replica_layer->SetMaskLayer(scoped_mask_layer.PassAs<LayerImpl>()); | 5264 replica_layer->SetMaskLayer(scoped_mask_layer.Pass()); |
5278 | 5265 |
5279 gfx::Size root_size(100, 100); | 5266 gfx::Size root_size(100, 100); |
5280 root->SetBounds(root_size); | 5267 root->SetBounds(root_size); |
5281 root->SetContentBounds(root_size); | 5268 root->SetContentBounds(root_size); |
5282 root->SetPosition(gfx::PointF()); | 5269 root->SetPosition(gfx::PointF()); |
5283 | 5270 |
5284 gfx::Size layer_size(50, 50); | 5271 gfx::Size layer_size(50, 50); |
5285 content_layer->SetBounds(layer_size); | 5272 content_layer->SetBounds(layer_size); |
5286 content_layer->SetContentBounds(layer_size); | 5273 content_layer->SetContentBounds(layer_size); |
5287 content_layer->SetPosition(gfx::PointF()); | 5274 content_layer->SetPosition(gfx::PointF()); |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5419 content_layer->AddChild(scoped_content_child_layer.Pass()); | 5406 content_layer->AddChild(scoped_content_child_layer.Pass()); |
5420 | 5407 |
5421 scoped_ptr<LayerImpl> scoped_replica_layer = | 5408 scoped_ptr<LayerImpl> scoped_replica_layer = |
5422 LayerImpl::Create(host_impl_->active_tree(), 4); | 5409 LayerImpl::Create(host_impl_->active_tree(), 4); |
5423 LayerImpl* replica_layer = scoped_replica_layer.get(); | 5410 LayerImpl* replica_layer = scoped_replica_layer.get(); |
5424 content_layer->SetReplicaLayer(scoped_replica_layer.Pass()); | 5411 content_layer->SetReplicaLayer(scoped_replica_layer.Pass()); |
5425 | 5412 |
5426 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = | 5413 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = |
5427 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 5); | 5414 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 5); |
5428 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); | 5415 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); |
5429 replica_layer->SetMaskLayer(scoped_mask_layer.PassAs<LayerImpl>()); | 5416 replica_layer->SetMaskLayer(scoped_mask_layer.Pass()); |
5430 | 5417 |
5431 gfx::Size root_size(100, 100); | 5418 gfx::Size root_size(100, 100); |
5432 root->SetBounds(root_size); | 5419 root->SetBounds(root_size); |
5433 root->SetContentBounds(root_size); | 5420 root->SetContentBounds(root_size); |
5434 root->SetPosition(gfx::PointF()); | 5421 root->SetPosition(gfx::PointF()); |
5435 | 5422 |
5436 gfx::Size layer_size(50, 50); | 5423 gfx::Size layer_size(50, 50); |
5437 content_layer->SetBounds(layer_size); | 5424 content_layer->SetBounds(layer_size); |
5438 content_layer->SetContentBounds(layer_size); | 5425 content_layer->SetContentBounds(layer_size); |
5439 content_layer->SetPosition(gfx::PointF()); | 5426 content_layer->SetPosition(gfx::PointF()); |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5539 clipping_layer->AddChild(scoped_content_layer.Pass()); | 5526 clipping_layer->AddChild(scoped_content_layer.Pass()); |
5540 | 5527 |
5541 scoped_ptr<LayerImpl> scoped_content_child_layer = | 5528 scoped_ptr<LayerImpl> scoped_content_child_layer = |
5542 LayerImpl::Create(host_impl_->active_tree(), 4); | 5529 LayerImpl::Create(host_impl_->active_tree(), 4); |
5543 LayerImpl* content_child_layer = scoped_content_child_layer.get(); | 5530 LayerImpl* content_child_layer = scoped_content_child_layer.get(); |
5544 content_layer->AddChild(scoped_content_child_layer.Pass()); | 5531 content_layer->AddChild(scoped_content_child_layer.Pass()); |
5545 | 5532 |
5546 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = | 5533 scoped_ptr<FakeMaskLayerImpl> scoped_mask_layer = |
5547 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 6); | 5534 FakeMaskLayerImpl::Create(host_impl_->active_tree(), 6); |
5548 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); | 5535 FakeMaskLayerImpl* mask_layer = scoped_mask_layer.get(); |
5549 content_layer->SetMaskLayer(scoped_mask_layer.PassAs<LayerImpl>()); | 5536 content_layer->SetMaskLayer(scoped_mask_layer.Pass()); |
5550 | 5537 |
5551 gfx::Size root_size(100, 100); | 5538 gfx::Size root_size(100, 100); |
5552 root->SetBounds(root_size); | 5539 root->SetBounds(root_size); |
5553 root->SetContentBounds(root_size); | 5540 root->SetContentBounds(root_size); |
5554 root->SetPosition(gfx::PointF()); | 5541 root->SetPosition(gfx::PointF()); |
5555 | 5542 |
5556 gfx::Rect clipping_rect(20, 10, 10, 20); | 5543 gfx::Rect clipping_rect(20, 10, 10, 20); |
5557 clipping_layer->SetBounds(clipping_rect.size()); | 5544 clipping_layer->SetBounds(clipping_rect.size()); |
5558 clipping_layer->SetContentBounds(clipping_rect.size()); | 5545 clipping_layer->SetContentBounds(clipping_rect.size()); |
5559 clipping_layer->SetPosition(clipping_rect.origin()); | 5546 clipping_layer->SetPosition(clipping_rect.origin()); |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5640 root->AddChild(scoped_scrolling_layer.Pass()); | 5627 root->AddChild(scoped_scrolling_layer.Pass()); |
5641 | 5628 |
5642 gfx::Size content_layer_bounds(100000, 100); | 5629 gfx::Size content_layer_bounds(100000, 100); |
5643 gfx::Size pile_tile_size(3000, 3000); | 5630 gfx::Size pile_tile_size(3000, 3000); |
5644 scoped_refptr<FakePicturePileImpl> pile(FakePicturePileImpl::CreateFilledPile( | 5631 scoped_refptr<FakePicturePileImpl> pile(FakePicturePileImpl::CreateFilledPile( |
5645 pile_tile_size, content_layer_bounds)); | 5632 pile_tile_size, content_layer_bounds)); |
5646 | 5633 |
5647 scoped_ptr<FakePictureLayerImpl> scoped_content_layer = | 5634 scoped_ptr<FakePictureLayerImpl> scoped_content_layer = |
5648 FakePictureLayerImpl::CreateWithPile(host_impl_->pending_tree(), 3, pile); | 5635 FakePictureLayerImpl::CreateWithPile(host_impl_->pending_tree(), 3, pile); |
5649 LayerImpl* content_layer = scoped_content_layer.get(); | 5636 LayerImpl* content_layer = scoped_content_layer.get(); |
5650 scrolling_layer->AddChild(scoped_content_layer.PassAs<LayerImpl>()); | 5637 scrolling_layer->AddChild(scoped_content_layer.Pass()); |
5651 content_layer->SetBounds(content_layer_bounds); | 5638 content_layer->SetBounds(content_layer_bounds); |
5652 content_layer->SetDrawsContent(true); | 5639 content_layer->SetDrawsContent(true); |
5653 | 5640 |
5654 root->SetBounds(root_size); | 5641 root->SetBounds(root_size); |
5655 | 5642 |
5656 gfx::Vector2d scroll_offset(100000, 0); | 5643 gfx::Vector2d scroll_offset(100000, 0); |
5657 scrolling_layer->SetScrollClipLayer(root->id()); | 5644 scrolling_layer->SetScrollClipLayer(root->id()); |
5658 scrolling_layer->SetScrollOffset(scroll_offset); | 5645 scrolling_layer->SetScrollOffset(scroll_offset); |
5659 | 5646 |
5660 host_impl_->ActivateSyncTree(); | 5647 host_impl_->ActivateSyncTree(); |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5788 scoped_ptr<SolidColorLayerImpl> root_layer = | 5775 scoped_ptr<SolidColorLayerImpl> root_layer = |
5789 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); | 5776 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); |
5790 | 5777 |
5791 // VideoLayerImpl will not be drawn. | 5778 // VideoLayerImpl will not be drawn. |
5792 FakeVideoFrameProvider provider; | 5779 FakeVideoFrameProvider provider; |
5793 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create( | 5780 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create( |
5794 host_impl_->active_tree(), 2, &provider, media::VIDEO_ROTATION_0); | 5781 host_impl_->active_tree(), 2, &provider, media::VIDEO_ROTATION_0); |
5795 video_layer->SetBounds(gfx::Size(10, 10)); | 5782 video_layer->SetBounds(gfx::Size(10, 10)); |
5796 video_layer->SetContentBounds(gfx::Size(10, 10)); | 5783 video_layer->SetContentBounds(gfx::Size(10, 10)); |
5797 video_layer->SetDrawsContent(true); | 5784 video_layer->SetDrawsContent(true); |
5798 root_layer->AddChild(video_layer.PassAs<LayerImpl>()); | 5785 root_layer->AddChild(video_layer.Pass()); |
5799 SetupRootLayerImpl(root_layer.PassAs<LayerImpl>()); | 5786 SetupRootLayerImpl(root_layer.Pass()); |
5800 | 5787 |
5801 LayerTreeHostImpl::FrameData frame; | 5788 LayerTreeHostImpl::FrameData frame; |
5802 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5789 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
5803 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 5790 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
5804 host_impl_->DidDrawAllLayers(frame); | 5791 host_impl_->DidDrawAllLayers(frame); |
5805 | 5792 |
5806 EXPECT_EQ(1u, frame.will_draw_layers.size()); | 5793 EXPECT_EQ(1u, frame.will_draw_layers.size()); |
5807 EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]); | 5794 EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]); |
5808 } | 5795 } |
5809 | 5796 |
5810 class LayerTreeHostImplTestDeferredInitialize : public LayerTreeHostImplTest { | 5797 class LayerTreeHostImplTestDeferredInitialize : public LayerTreeHostImplTest { |
5811 protected: | 5798 protected: |
5812 virtual void SetUp() OVERRIDE { | 5799 virtual void SetUp() OVERRIDE { |
5813 LayerTreeHostImplTest::SetUp(); | 5800 LayerTreeHostImplTest::SetUp(); |
5814 | 5801 |
5815 set_reduce_memory_result(false); | 5802 set_reduce_memory_result(false); |
5816 | 5803 |
5817 bool delegated_rendering = false; | 5804 bool delegated_rendering = false; |
5818 scoped_ptr<FakeOutputSurface> output_surface( | 5805 scoped_ptr<FakeOutputSurface> output_surface( |
5819 FakeOutputSurface::CreateDeferredGL( | 5806 FakeOutputSurface::CreateDeferredGL( |
5820 scoped_ptr<SoftwareOutputDevice>(new CountingSoftwareDevice()), | 5807 scoped_ptr<SoftwareOutputDevice>(new CountingSoftwareDevice()), |
5821 delegated_rendering)); | 5808 delegated_rendering)); |
5822 output_surface_ = output_surface.get(); | 5809 output_surface_ = output_surface.get(); |
5823 | 5810 |
5824 EXPECT_TRUE(CreateHostImpl(DefaultSettings(), | 5811 EXPECT_TRUE(CreateHostImpl(DefaultSettings(), output_surface.Pass())); |
5825 output_surface.PassAs<OutputSurface>())); | |
5826 | 5812 |
5827 scoped_ptr<SolidColorLayerImpl> root_layer = | 5813 scoped_ptr<SolidColorLayerImpl> root_layer = |
5828 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); | 5814 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); |
5829 SetupRootLayerImpl(root_layer.PassAs<LayerImpl>()); | 5815 SetupRootLayerImpl(root_layer.Pass()); |
5830 | 5816 |
5831 onscreen_context_provider_ = TestContextProvider::Create(); | 5817 onscreen_context_provider_ = TestContextProvider::Create(); |
5832 } | 5818 } |
5833 | 5819 |
5834 virtual void UpdateRendererCapabilitiesOnImplThread() OVERRIDE { | 5820 virtual void UpdateRendererCapabilitiesOnImplThread() OVERRIDE { |
5835 did_update_renderer_capabilities_ = true; | 5821 did_update_renderer_capabilities_ = true; |
5836 } | 5822 } |
5837 | 5823 |
5838 FakeOutputSurface* output_surface_; | 5824 FakeOutputSurface* output_surface_; |
5839 scoped_refptr<TestContextProvider> onscreen_context_provider_; | 5825 scoped_refptr<TestContextProvider> onscreen_context_provider_; |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6017 EXPECT_TRUE(fake_host_impl_->manage_tiles_needed()); | 6003 EXPECT_TRUE(fake_host_impl_->manage_tiles_needed()); |
6018 fake_host_impl_->SetVisible(false); | 6004 fake_host_impl_->SetVisible(false); |
6019 EXPECT_FALSE(fake_host_impl_->manage_tiles_needed()); | 6005 EXPECT_FALSE(fake_host_impl_->manage_tiles_needed()); |
6020 } | 6006 } |
6021 | 6007 |
6022 TEST_F(LayerTreeHostImplTest, UIResourceManagement) { | 6008 TEST_F(LayerTreeHostImplTest, UIResourceManagement) { |
6023 scoped_ptr<TestWebGraphicsContext3D> context = | 6009 scoped_ptr<TestWebGraphicsContext3D> context = |
6024 TestWebGraphicsContext3D::Create(); | 6010 TestWebGraphicsContext3D::Create(); |
6025 TestWebGraphicsContext3D* context3d = context.get(); | 6011 TestWebGraphicsContext3D* context3d = context.get(); |
6026 scoped_ptr<FakeOutputSurface> output_surface = FakeOutputSurface::Create3d(); | 6012 scoped_ptr<FakeOutputSurface> output_surface = FakeOutputSurface::Create3d(); |
6027 CreateHostImpl(DefaultSettings(), output_surface.PassAs<OutputSurface>()); | 6013 CreateHostImpl(DefaultSettings(), output_surface.Pass()); |
6028 | 6014 |
6029 EXPECT_EQ(0u, context3d->NumTextures()); | 6015 EXPECT_EQ(0u, context3d->NumTextures()); |
6030 | 6016 |
6031 UIResourceId ui_resource_id = 1; | 6017 UIResourceId ui_resource_id = 1; |
6032 bool is_opaque = false; | 6018 bool is_opaque = false; |
6033 UIResourceBitmap bitmap(gfx::Size(1, 1), is_opaque); | 6019 UIResourceBitmap bitmap(gfx::Size(1, 1), is_opaque); |
6034 host_impl_->CreateUIResource(ui_resource_id, bitmap); | 6020 host_impl_->CreateUIResource(ui_resource_id, bitmap); |
6035 EXPECT_EQ(1u, context3d->NumTextures()); | 6021 EXPECT_EQ(1u, context3d->NumTextures()); |
6036 ResourceProvider::ResourceId id1 = | 6022 ResourceProvider::ResourceId id1 = |
6037 host_impl_->ResourceIdForUIResource(ui_resource_id); | 6023 host_impl_->ResourceIdForUIResource(ui_resource_id); |
(...skipping 23 matching lines...) Expand all Loading... |
6061 | 6047 |
6062 // Should not change state for multiple deletion on one UIResourceId | 6048 // Should not change state for multiple deletion on one UIResourceId |
6063 host_impl_->DeleteUIResource(ui_resource_id); | 6049 host_impl_->DeleteUIResource(ui_resource_id); |
6064 EXPECT_EQ(0u, context3d->NumTextures()); | 6050 EXPECT_EQ(0u, context3d->NumTextures()); |
6065 } | 6051 } |
6066 | 6052 |
6067 TEST_F(LayerTreeHostImplTest, CreateETC1UIResource) { | 6053 TEST_F(LayerTreeHostImplTest, CreateETC1UIResource) { |
6068 scoped_ptr<TestWebGraphicsContext3D> context = | 6054 scoped_ptr<TestWebGraphicsContext3D> context = |
6069 TestWebGraphicsContext3D::Create(); | 6055 TestWebGraphicsContext3D::Create(); |
6070 TestWebGraphicsContext3D* context3d = context.get(); | 6056 TestWebGraphicsContext3D* context3d = context.get(); |
6071 scoped_ptr<FakeOutputSurface> output_surface = FakeOutputSurface::Create3d(); | 6057 CreateHostImpl(DefaultSettings(), FakeOutputSurface::Create3d()); |
6072 CreateHostImpl(DefaultSettings(), output_surface.PassAs<OutputSurface>()); | |
6073 | 6058 |
6074 EXPECT_EQ(0u, context3d->NumTextures()); | 6059 EXPECT_EQ(0u, context3d->NumTextures()); |
6075 | 6060 |
6076 gfx::Size size(4, 4); | 6061 gfx::Size size(4, 4); |
6077 // SkImageInfo has no support for ETC1. The |info| below contains the right | 6062 // SkImageInfo has no support for ETC1. The |info| below contains the right |
6078 // total pixel size for the bitmap but not the right height and width. The | 6063 // total pixel size for the bitmap but not the right height and width. The |
6079 // correct width/height are passed directly to UIResourceBitmap. | 6064 // correct width/height are passed directly to UIResourceBitmap. |
6080 SkImageInfo info = | 6065 SkImageInfo info = |
6081 SkImageInfo::Make(4, 2, kAlpha_8_SkColorType, kPremul_SkAlphaType); | 6066 SkImageInfo::Make(4, 2, kAlpha_8_SkColorType, kPremul_SkAlphaType); |
6082 skia::RefPtr<SkPixelRef> pixel_ref = | 6067 skia::RefPtr<SkPixelRef> pixel_ref = |
6083 skia::AdoptRef(SkMallocPixelRef::NewAllocate(info, 0, 0)); | 6068 skia::AdoptRef(SkMallocPixelRef::NewAllocate(info, 0, 0)); |
6084 pixel_ref->setImmutable(); | 6069 pixel_ref->setImmutable(); |
6085 UIResourceBitmap bitmap(pixel_ref, size); | 6070 UIResourceBitmap bitmap(pixel_ref, size); |
6086 UIResourceId ui_resource_id = 1; | 6071 UIResourceId ui_resource_id = 1; |
6087 host_impl_->CreateUIResource(ui_resource_id, bitmap); | 6072 host_impl_->CreateUIResource(ui_resource_id, bitmap); |
6088 EXPECT_EQ(1u, context3d->NumTextures()); | 6073 EXPECT_EQ(1u, context3d->NumTextures()); |
6089 ResourceProvider::ResourceId id1 = | 6074 ResourceProvider::ResourceId id1 = |
6090 host_impl_->ResourceIdForUIResource(ui_resource_id); | 6075 host_impl_->ResourceIdForUIResource(ui_resource_id); |
6091 EXPECT_NE(0u, id1); | 6076 EXPECT_NE(0u, id1); |
6092 } | 6077 } |
6093 | 6078 |
6094 void ShutdownReleasesContext_Callback(scoped_ptr<CopyOutputResult> result) { | 6079 void ShutdownReleasesContext_Callback(scoped_ptr<CopyOutputResult> result) { |
6095 } | 6080 } |
6096 | 6081 |
6097 TEST_F(LayerTreeHostImplTest, ShutdownReleasesContext) { | 6082 TEST_F(LayerTreeHostImplTest, ShutdownReleasesContext) { |
6098 scoped_refptr<TestContextProvider> context_provider = | 6083 scoped_refptr<TestContextProvider> context_provider = |
6099 TestContextProvider::Create(); | 6084 TestContextProvider::Create(); |
6100 | 6085 |
6101 CreateHostImpl( | 6086 CreateHostImpl(DefaultSettings(), |
6102 DefaultSettings(), | 6087 FakeOutputSurface::Create3d(context_provider)); |
6103 FakeOutputSurface::Create3d(context_provider).PassAs<OutputSurface>()); | |
6104 | 6088 |
6105 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); | 6089 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); |
6106 | 6090 |
6107 ScopedPtrVector<CopyOutputRequest> requests; | 6091 ScopedPtrVector<CopyOutputRequest> requests; |
6108 requests.push_back(CopyOutputRequest::CreateRequest( | 6092 requests.push_back(CopyOutputRequest::CreateRequest( |
6109 base::Bind(&ShutdownReleasesContext_Callback))); | 6093 base::Bind(&ShutdownReleasesContext_Callback))); |
6110 | 6094 |
6111 host_impl_->active_tree()->root_layer()->PassCopyRequests(&requests); | 6095 host_impl_->active_tree()->root_layer()->PassCopyRequests(&requests); |
6112 | 6096 |
6113 LayerTreeHostImpl::FrameData frame; | 6097 LayerTreeHostImpl::FrameData frame; |
6114 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 6098 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
6115 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 6099 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
6116 host_impl_->DidDrawAllLayers(frame); | 6100 host_impl_->DidDrawAllLayers(frame); |
6117 | 6101 |
6118 // The CopyOutputResult's callback has a ref on the ContextProvider and a | 6102 // The CopyOutputResult's callback has a ref on the ContextProvider and a |
6119 // texture in a texture mailbox. | 6103 // texture in a texture mailbox. |
6120 EXPECT_FALSE(context_provider->HasOneRef()); | 6104 EXPECT_FALSE(context_provider->HasOneRef()); |
6121 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); | 6105 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); |
6122 | 6106 |
6123 host_impl_.reset(); | 6107 host_impl_ = nullptr; |
6124 | 6108 |
6125 // The CopyOutputResult's callback was cancelled, the CopyOutputResult | 6109 // The CopyOutputResult's callback was cancelled, the CopyOutputResult |
6126 // released, and the texture deleted. | 6110 // released, and the texture deleted. |
6127 EXPECT_TRUE(context_provider->HasOneRef()); | 6111 EXPECT_TRUE(context_provider->HasOneRef()); |
6128 EXPECT_EQ(0u, context_provider->TestContext3d()->NumTextures()); | 6112 EXPECT_EQ(0u, context_provider->TestContext3d()->NumTextures()); |
6129 } | 6113 } |
6130 | 6114 |
6131 TEST_F(LayerTreeHostImplTest, TouchFlingShouldNotBubble) { | 6115 TEST_F(LayerTreeHostImplTest, TouchFlingShouldNotBubble) { |
6132 // When flinging via touch, only the child should scroll (we should not | 6116 // When flinging via touch, only the child should scroll (we should not |
6133 // bubble). | 6117 // bubble). |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6445 // Make sure LatencyInfo carried by LatencyInfoSwapPromise are passed | 6429 // Make sure LatencyInfo carried by LatencyInfoSwapPromise are passed |
6446 // to CompositorFrameMetadata after SwapBuffers(); | 6430 // to CompositorFrameMetadata after SwapBuffers(); |
6447 TEST_F(LayerTreeHostImplTest, LatencyInfoPassedToCompositorFrameMetadata) { | 6431 TEST_F(LayerTreeHostImplTest, LatencyInfoPassedToCompositorFrameMetadata) { |
6448 scoped_ptr<SolidColorLayerImpl> root = | 6432 scoped_ptr<SolidColorLayerImpl> root = |
6449 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); | 6433 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); |
6450 root->SetPosition(gfx::PointF()); | 6434 root->SetPosition(gfx::PointF()); |
6451 root->SetBounds(gfx::Size(10, 10)); | 6435 root->SetBounds(gfx::Size(10, 10)); |
6452 root->SetContentBounds(gfx::Size(10, 10)); | 6436 root->SetContentBounds(gfx::Size(10, 10)); |
6453 root->SetDrawsContent(true); | 6437 root->SetDrawsContent(true); |
6454 | 6438 |
6455 host_impl_->active_tree()->SetRootLayer(root.PassAs<LayerImpl>()); | 6439 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
6456 | 6440 |
6457 FakeOutputSurface* fake_output_surface = | 6441 FakeOutputSurface* fake_output_surface = |
6458 static_cast<FakeOutputSurface*>(host_impl_->output_surface()); | 6442 static_cast<FakeOutputSurface*>(host_impl_->output_surface()); |
6459 | 6443 |
6460 const std::vector<ui::LatencyInfo>& metadata_latency_before = | 6444 const std::vector<ui::LatencyInfo>& metadata_latency_before = |
6461 fake_output_surface->last_sent_frame().metadata.latency_info; | 6445 fake_output_surface->last_sent_frame().metadata.latency_info; |
6462 EXPECT_TRUE(metadata_latency_before.empty()); | 6446 EXPECT_TRUE(metadata_latency_before.empty()); |
6463 | 6447 |
6464 ui::LatencyInfo latency_info; | 6448 ui::LatencyInfo latency_info; |
6465 latency_info.AddLatencyNumber( | 6449 latency_info.AddLatencyNumber( |
(...skipping 19 matching lines...) Expand all Loading... |
6485 | 6469 |
6486 TEST_F(LayerTreeHostImplTest, SelectionBoundsPassedToCompositorFrameMetadata) { | 6470 TEST_F(LayerTreeHostImplTest, SelectionBoundsPassedToCompositorFrameMetadata) { |
6487 int root_layer_id = 1; | 6471 int root_layer_id = 1; |
6488 scoped_ptr<SolidColorLayerImpl> root = | 6472 scoped_ptr<SolidColorLayerImpl> root = |
6489 SolidColorLayerImpl::Create(host_impl_->active_tree(), root_layer_id); | 6473 SolidColorLayerImpl::Create(host_impl_->active_tree(), root_layer_id); |
6490 root->SetPosition(gfx::PointF()); | 6474 root->SetPosition(gfx::PointF()); |
6491 root->SetBounds(gfx::Size(10, 10)); | 6475 root->SetBounds(gfx::Size(10, 10)); |
6492 root->SetContentBounds(gfx::Size(10, 10)); | 6476 root->SetContentBounds(gfx::Size(10, 10)); |
6493 root->SetDrawsContent(true); | 6477 root->SetDrawsContent(true); |
6494 | 6478 |
6495 host_impl_->active_tree()->SetRootLayer(root.PassAs<LayerImpl>()); | 6479 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
6496 | 6480 |
6497 // Ensure the default frame selection bounds are empty. | 6481 // Ensure the default frame selection bounds are empty. |
6498 FakeOutputSurface* fake_output_surface = | 6482 FakeOutputSurface* fake_output_surface = |
6499 static_cast<FakeOutputSurface*>(host_impl_->output_surface()); | 6483 static_cast<FakeOutputSurface*>(host_impl_->output_surface()); |
6500 const ViewportSelectionBound& selection_start_before = | 6484 const ViewportSelectionBound& selection_start_before = |
6501 fake_output_surface->last_sent_frame().metadata.selection_start; | 6485 fake_output_surface->last_sent_frame().metadata.selection_start; |
6502 const ViewportSelectionBound& selection_end_before = | 6486 const ViewportSelectionBound& selection_end_before = |
6503 fake_output_surface->last_sent_frame().metadata.selection_end; | 6487 fake_output_surface->last_sent_frame().metadata.selection_end; |
6504 EXPECT_EQ(ViewportSelectionBound(), selection_start_before); | 6488 EXPECT_EQ(ViewportSelectionBound(), selection_start_before); |
6505 EXPECT_EQ(ViewportSelectionBound(), selection_end_before); | 6489 EXPECT_EQ(ViewportSelectionBound(), selection_end_before); |
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7119 host_impl_->CreatePendingTree(); | 7103 host_impl_->CreatePendingTree(); |
7120 host_impl_->ActivateSyncTree(); | 7104 host_impl_->ActivateSyncTree(); |
7121 host_impl_->CreatePendingTree(); | 7105 host_impl_->CreatePendingTree(); |
7122 | 7106 |
7123 LayerTreeImpl* pending_tree = host_impl_->pending_tree(); | 7107 LayerTreeImpl* pending_tree = host_impl_->pending_tree(); |
7124 | 7108 |
7125 scoped_ptr<FakePictureLayerImpl> pending_layer = | 7109 scoped_ptr<FakePictureLayerImpl> pending_layer = |
7126 FakePictureLayerImpl::Create(pending_tree, 10); | 7110 FakePictureLayerImpl::Create(pending_tree, 10); |
7127 pending_layer->DoPostCommitInitializationIfNeeded(); | 7111 pending_layer->DoPostCommitInitializationIfNeeded(); |
7128 FakePictureLayerImpl* raw_pending_layer = pending_layer.get(); | 7112 FakePictureLayerImpl* raw_pending_layer = pending_layer.get(); |
7129 pending_tree->SetRootLayer(pending_layer.PassAs<LayerImpl>()); | 7113 pending_tree->SetRootLayer(pending_layer.Pass()); |
7130 ASSERT_EQ(raw_pending_layer, pending_tree->root_layer()); | 7114 ASSERT_EQ(raw_pending_layer, pending_tree->root_layer()); |
7131 | 7115 |
7132 EXPECT_EQ(0u, raw_pending_layer->did_become_active_call_count()); | 7116 EXPECT_EQ(0u, raw_pending_layer->did_become_active_call_count()); |
7133 pending_tree->DidBecomeActive(); | 7117 pending_tree->DidBecomeActive(); |
7134 EXPECT_EQ(1u, raw_pending_layer->did_become_active_call_count()); | 7118 EXPECT_EQ(1u, raw_pending_layer->did_become_active_call_count()); |
7135 | 7119 |
7136 scoped_ptr<FakePictureLayerImpl> mask_layer = | 7120 scoped_ptr<FakePictureLayerImpl> mask_layer = |
7137 FakePictureLayerImpl::Create(pending_tree, 11); | 7121 FakePictureLayerImpl::Create(pending_tree, 11); |
7138 mask_layer->DoPostCommitInitializationIfNeeded(); | 7122 mask_layer->DoPostCommitInitializationIfNeeded(); |
7139 FakePictureLayerImpl* raw_mask_layer = mask_layer.get(); | 7123 FakePictureLayerImpl* raw_mask_layer = mask_layer.get(); |
7140 raw_pending_layer->SetMaskLayer(mask_layer.PassAs<LayerImpl>()); | 7124 raw_pending_layer->SetMaskLayer(mask_layer.Pass()); |
7141 ASSERT_EQ(raw_mask_layer, raw_pending_layer->mask_layer()); | 7125 ASSERT_EQ(raw_mask_layer, raw_pending_layer->mask_layer()); |
7142 | 7126 |
7143 EXPECT_EQ(1u, raw_pending_layer->did_become_active_call_count()); | 7127 EXPECT_EQ(1u, raw_pending_layer->did_become_active_call_count()); |
7144 EXPECT_EQ(0u, raw_mask_layer->did_become_active_call_count()); | 7128 EXPECT_EQ(0u, raw_mask_layer->did_become_active_call_count()); |
7145 pending_tree->DidBecomeActive(); | 7129 pending_tree->DidBecomeActive(); |
7146 EXPECT_EQ(2u, raw_pending_layer->did_become_active_call_count()); | 7130 EXPECT_EQ(2u, raw_pending_layer->did_become_active_call_count()); |
7147 EXPECT_EQ(1u, raw_mask_layer->did_become_active_call_count()); | 7131 EXPECT_EQ(1u, raw_mask_layer->did_become_active_call_count()); |
7148 | 7132 |
7149 scoped_ptr<FakePictureLayerImpl> replica_layer = | 7133 scoped_ptr<FakePictureLayerImpl> replica_layer = |
7150 FakePictureLayerImpl::Create(pending_tree, 12); | 7134 FakePictureLayerImpl::Create(pending_tree, 12); |
7151 scoped_ptr<FakePictureLayerImpl> replica_mask_layer = | 7135 scoped_ptr<FakePictureLayerImpl> replica_mask_layer = |
7152 FakePictureLayerImpl::Create(pending_tree, 13); | 7136 FakePictureLayerImpl::Create(pending_tree, 13); |
7153 replica_mask_layer->DoPostCommitInitializationIfNeeded(); | 7137 replica_mask_layer->DoPostCommitInitializationIfNeeded(); |
7154 FakePictureLayerImpl* raw_replica_mask_layer = replica_mask_layer.get(); | 7138 FakePictureLayerImpl* raw_replica_mask_layer = replica_mask_layer.get(); |
7155 replica_layer->SetMaskLayer(replica_mask_layer.PassAs<LayerImpl>()); | 7139 replica_layer->SetMaskLayer(replica_mask_layer.Pass()); |
7156 raw_pending_layer->SetReplicaLayer(replica_layer.PassAs<LayerImpl>()); | 7140 raw_pending_layer->SetReplicaLayer(replica_layer.Pass()); |
7157 ASSERT_EQ(raw_replica_mask_layer, | 7141 ASSERT_EQ(raw_replica_mask_layer, |
7158 raw_pending_layer->replica_layer()->mask_layer()); | 7142 raw_pending_layer->replica_layer()->mask_layer()); |
7159 | 7143 |
7160 EXPECT_EQ(2u, raw_pending_layer->did_become_active_call_count()); | 7144 EXPECT_EQ(2u, raw_pending_layer->did_become_active_call_count()); |
7161 EXPECT_EQ(1u, raw_mask_layer->did_become_active_call_count()); | 7145 EXPECT_EQ(1u, raw_mask_layer->did_become_active_call_count()); |
7162 EXPECT_EQ(0u, raw_replica_mask_layer->did_become_active_call_count()); | 7146 EXPECT_EQ(0u, raw_replica_mask_layer->did_become_active_call_count()); |
7163 pending_tree->DidBecomeActive(); | 7147 pending_tree->DidBecomeActive(); |
7164 EXPECT_EQ(3u, raw_pending_layer->did_become_active_call_count()); | 7148 EXPECT_EQ(3u, raw_pending_layer->did_become_active_call_count()); |
7165 EXPECT_EQ(2u, raw_mask_layer->did_become_active_call_count()); | 7149 EXPECT_EQ(2u, raw_mask_layer->did_become_active_call_count()); |
7166 EXPECT_EQ(1u, raw_replica_mask_layer->did_become_active_call_count()); | 7150 EXPECT_EQ(1u, raw_replica_mask_layer->did_become_active_call_count()); |
(...skipping 16 matching lines...) Expand all Loading... |
7183 // surface. | 7167 // surface. |
7184 EXPECT_EQ(0, num_lost_surfaces_); | 7168 EXPECT_EQ(0, num_lost_surfaces_); |
7185 host_impl_->DidLoseOutputSurface(); | 7169 host_impl_->DidLoseOutputSurface(); |
7186 EXPECT_EQ(1, num_lost_surfaces_); | 7170 EXPECT_EQ(1, num_lost_surfaces_); |
7187 host_impl_->DidLoseOutputSurface(); | 7171 host_impl_->DidLoseOutputSurface(); |
7188 EXPECT_LE(1, num_lost_surfaces_); | 7172 EXPECT_LE(1, num_lost_surfaces_); |
7189 } | 7173 } |
7190 | 7174 |
7191 } // namespace | 7175 } // namespace |
7192 } // namespace cc | 7176 } // namespace cc |
OLD | NEW |