| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <cmath> | 10 #include <cmath> |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 using ::testing::Mock; | 86 using ::testing::Mock; |
| 87 using ::testing::Return; | 87 using ::testing::Return; |
| 88 using ::testing::AnyNumber; | 88 using ::testing::AnyNumber; |
| 89 using ::testing::AtLeast; | 89 using ::testing::AtLeast; |
| 90 using ::testing::_; | 90 using ::testing::_; |
| 91 using media::VideoFrame; | 91 using media::VideoFrame; |
| 92 | 92 |
| 93 namespace cc { | 93 namespace cc { |
| 94 namespace { | 94 namespace { |
| 95 | 95 |
| 96 struct TestFrameData : public LayerTreeHostImpl::FrameData { |
| 97 TestFrameData() { |
| 98 // Set sequence number to something valid, so DCHECKs don't complain. |
| 99 begin_frame_ack.sequence_number = 1; |
| 100 } |
| 101 }; |
| 102 |
| 96 class LayerTreeHostImplTest : public testing::Test, | 103 class LayerTreeHostImplTest : public testing::Test, |
| 97 public LayerTreeHostImplClient { | 104 public LayerTreeHostImplClient { |
| 98 public: | 105 public: |
| 99 LayerTreeHostImplTest() | 106 LayerTreeHostImplTest() |
| 100 : task_runner_provider_(base::ThreadTaskRunnerHandle::Get()), | 107 : task_runner_provider_(base::ThreadTaskRunnerHandle::Get()), |
| 101 always_main_thread_blocked_(&task_runner_provider_), | 108 always_main_thread_blocked_(&task_runner_provider_), |
| 102 on_can_draw_state_changed_called_(false), | 109 on_can_draw_state_changed_called_(false), |
| 103 did_notify_ready_to_activate_(false), | 110 did_notify_ready_to_activate_(false), |
| 104 did_request_commit_(false), | 111 did_request_commit_(false), |
| 105 did_request_redraw_(false), | 112 did_request_redraw_(false), |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 animation_task_ = task; | 166 animation_task_ = task; |
| 160 requested_animation_delay_ = delay; | 167 requested_animation_delay_ = delay; |
| 161 } | 168 } |
| 162 void DidActivateSyncTree() override {} | 169 void DidActivateSyncTree() override {} |
| 163 void WillPrepareTiles() override {} | 170 void WillPrepareTiles() override {} |
| 164 void DidPrepareTiles() override {} | 171 void DidPrepareTiles() override {} |
| 165 void DidCompletePageScaleAnimationOnImplThread() override { | 172 void DidCompletePageScaleAnimationOnImplThread() override { |
| 166 did_complete_page_scale_animation_ = true; | 173 did_complete_page_scale_animation_ = true; |
| 167 } | 174 } |
| 168 void OnDrawForCompositorFrameSink(bool resourceless_software_draw) override { | 175 void OnDrawForCompositorFrameSink(bool resourceless_software_draw) override { |
| 169 std::unique_ptr<LayerTreeHostImpl::FrameData> frame( | 176 std::unique_ptr<TestFrameData> frame(new TestFrameData); |
| 170 new LayerTreeHostImpl::FrameData); | |
| 171 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(frame.get())); | 177 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(frame.get())); |
| 172 last_on_draw_render_passes_.clear(); | 178 last_on_draw_render_passes_.clear(); |
| 173 RenderPass::CopyAll(frame->render_passes, &last_on_draw_render_passes_); | 179 RenderPass::CopyAll(frame->render_passes, &last_on_draw_render_passes_); |
| 174 host_impl_->DrawLayers(frame.get()); | 180 host_impl_->DrawLayers(frame.get()); |
| 175 host_impl_->DidDrawAllLayers(*frame); | 181 host_impl_->DidDrawAllLayers(*frame); |
| 176 last_on_draw_frame_ = std::move(frame); | 182 last_on_draw_frame_ = std::move(frame); |
| 177 } | 183 } |
| 178 void NeedsImplSideInvalidation() override { | 184 void NeedsImplSideInvalidation() override { |
| 179 did_request_impl_side_invalidation_ = true; | 185 did_request_impl_side_invalidation_ = true; |
| 180 } | 186 } |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 452 | 458 |
| 453 std::unique_ptr<ScrollState> EndState() { | 459 std::unique_ptr<ScrollState> EndState() { |
| 454 ScrollStateData scroll_state_data; | 460 ScrollStateData scroll_state_data; |
| 455 scroll_state_data.is_ending = true; | 461 scroll_state_data.is_ending = true; |
| 456 std::unique_ptr<ScrollState> scroll_state( | 462 std::unique_ptr<ScrollState> scroll_state( |
| 457 new ScrollState(scroll_state_data)); | 463 new ScrollState(scroll_state_data)); |
| 458 return scroll_state; | 464 return scroll_state; |
| 459 } | 465 } |
| 460 | 466 |
| 461 void DrawFrame() { | 467 void DrawFrame() { |
| 462 LayerTreeHostImpl::FrameData frame; | 468 TestFrameData frame; |
| 463 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 469 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 464 host_impl_->DrawLayers(&frame); | 470 host_impl_->DrawLayers(&frame); |
| 465 host_impl_->DidDrawAllLayers(frame); | 471 host_impl_->DidDrawAllLayers(frame); |
| 466 } | 472 } |
| 467 | 473 |
| 468 void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor); | 474 void pinch_zoom_pan_viewport_forces_commit_redraw(float device_scale_factor); |
| 469 void pinch_zoom_pan_viewport_test(float device_scale_factor); | 475 void pinch_zoom_pan_viewport_test(float device_scale_factor); |
| 470 void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor); | 476 void pinch_zoom_pan_viewport_and_scroll_test(float device_scale_factor); |
| 471 void pinch_zoom_pan_viewport_and_scroll_boundary_test( | 477 void pinch_zoom_pan_viewport_and_scroll_boundary_test( |
| 472 float device_scale_factor); | 478 float device_scale_factor); |
| 473 | 479 |
| 474 void SetupMouseMoveAtWithDeviceScale(float device_scale_factor); | 480 void SetupMouseMoveAtWithDeviceScale(float device_scale_factor); |
| 475 | 481 |
| 476 void SetupMouseMoveAtTestScrollbarStates(bool main_thread_scrolling); | 482 void SetupMouseMoveAtTestScrollbarStates(bool main_thread_scrolling); |
| 477 | 483 |
| 478 scoped_refptr<AnimationTimeline> timeline() { return timeline_; } | 484 scoped_refptr<AnimationTimeline> timeline() { return timeline_; } |
| 479 | 485 |
| 480 protected: | 486 protected: |
| 481 virtual std::unique_ptr<CompositorFrameSink> CreateCompositorFrameSink() { | 487 virtual std::unique_ptr<CompositorFrameSink> CreateCompositorFrameSink() { |
| 482 return FakeCompositorFrameSink::Create3dForGpuRasterization(); | 488 return FakeCompositorFrameSink::Create3dForGpuRasterization(); |
| 483 } | 489 } |
| 484 | 490 |
| 485 void DrawOneFrame() { | 491 void DrawOneFrame() { |
| 486 LayerTreeHostImpl::FrameData frame_data; | 492 TestFrameData frame_data; |
| 487 host_impl_->PrepareToDraw(&frame_data); | 493 host_impl_->PrepareToDraw(&frame_data); |
| 488 host_impl_->DidDrawAllLayers(frame_data); | 494 host_impl_->DidDrawAllLayers(frame_data); |
| 489 } | 495 } |
| 490 | 496 |
| 491 static void SetScrollOffsetDelta(LayerImpl* layer_impl, | 497 static void SetScrollOffsetDelta(LayerImpl* layer_impl, |
| 492 const gfx::Vector2dF& delta) { | 498 const gfx::Vector2dF& delta) { |
| 493 if (layer_impl->layer_tree_impl() | 499 if (layer_impl->layer_tree_impl() |
| 494 ->property_trees() | 500 ->property_trees() |
| 495 ->scroll_tree.SetScrollOffsetDeltaForTesting(layer_impl->id(), | 501 ->scroll_tree.SetScrollOffsetDeltaForTesting(layer_impl->id(), |
| 496 delta)) | 502 delta)) |
| (...skipping 29 matching lines...) Expand all Loading... |
| 526 bool did_notify_ready_to_activate_; | 532 bool did_notify_ready_to_activate_; |
| 527 bool did_request_commit_; | 533 bool did_request_commit_; |
| 528 bool did_request_redraw_; | 534 bool did_request_redraw_; |
| 529 bool did_request_next_frame_; | 535 bool did_request_next_frame_; |
| 530 bool did_request_prepare_tiles_; | 536 bool did_request_prepare_tiles_; |
| 531 bool did_complete_page_scale_animation_; | 537 bool did_complete_page_scale_animation_; |
| 532 bool reduce_memory_result_; | 538 bool reduce_memory_result_; |
| 533 bool did_request_impl_side_invalidation_; | 539 bool did_request_impl_side_invalidation_; |
| 534 base::Closure animation_task_; | 540 base::Closure animation_task_; |
| 535 base::TimeDelta requested_animation_delay_; | 541 base::TimeDelta requested_animation_delay_; |
| 536 std::unique_ptr<LayerTreeHostImpl::FrameData> last_on_draw_frame_; | 542 std::unique_ptr<TestFrameData> last_on_draw_frame_; |
| 537 RenderPassList last_on_draw_render_passes_; | 543 RenderPassList last_on_draw_render_passes_; |
| 538 scoped_refptr<AnimationTimeline> timeline_; | 544 scoped_refptr<AnimationTimeline> timeline_; |
| 539 std::unique_ptr<base::Thread> image_worker_; | 545 std::unique_ptr<base::Thread> image_worker_; |
| 540 }; | 546 }; |
| 541 | 547 |
| 542 // A test fixture for new animation timelines tests. | 548 // A test fixture for new animation timelines tests. |
| 543 class LayerTreeHostImplTimelinesTest : public LayerTreeHostImplTest { | 549 class LayerTreeHostImplTimelinesTest : public LayerTreeHostImplTest { |
| 544 public: | 550 public: |
| 545 void SetUp() override { | 551 void SetUp() override { |
| 546 CreateHostImpl(DefaultSettings(), CreateCompositorFrameSink()); | 552 CreateHostImpl(DefaultSettings(), CreateCompositorFrameSink()); |
| (...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1627 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2, now)); | 1633 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2, now)); |
| 1628 | 1634 |
| 1629 host_impl_->ActivateAnimations(); | 1635 host_impl_->ActivateAnimations(); |
| 1630 host_impl_->Animate(); | 1636 host_impl_->Animate(); |
| 1631 | 1637 |
| 1632 EXPECT_FALSE(child->was_ever_ready_since_last_transform_animation()); | 1638 EXPECT_FALSE(child->was_ever_ready_since_last_transform_animation()); |
| 1633 | 1639 |
| 1634 host_impl_->ResetRequiresHighResToDraw(); | 1640 host_impl_->ResetRequiresHighResToDraw(); |
| 1635 | 1641 |
| 1636 // Child layer has an animating transform but missing tiles. | 1642 // Child layer has an animating transform but missing tiles. |
| 1637 FakeLayerTreeHostImpl::FrameData frame; | 1643 TestFrameData frame; |
| 1638 DrawResult result = host_impl_->PrepareToDraw(&frame); | 1644 DrawResult result = host_impl_->PrepareToDraw(&frame); |
| 1639 EXPECT_EQ(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS, result); | 1645 EXPECT_EQ(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS, result); |
| 1640 host_impl_->DidDrawAllLayers(frame); | 1646 host_impl_->DidDrawAllLayers(frame); |
| 1641 | 1647 |
| 1642 child->set_has_missing_tiles(false); | 1648 child->set_has_missing_tiles(false); |
| 1643 | 1649 |
| 1644 // Child layer has an animating and no missing tiles. | 1650 // Child layer has an animating and no missing tiles. |
| 1645 result = host_impl_->PrepareToDraw(&frame); | 1651 result = host_impl_->PrepareToDraw(&frame); |
| 1646 EXPECT_EQ(DRAW_SUCCESS, result); | 1652 EXPECT_EQ(DRAW_SUCCESS, result); |
| 1647 EXPECT_TRUE(child->was_ever_ready_since_last_transform_animation()); | 1653 EXPECT_TRUE(child->was_ever_ready_since_last_transform_animation()); |
| (...skipping 1871 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3519 static_cast<DidDrawCheckLayer*>(*host_impl_->active_tree()->begin()); | 3525 static_cast<DidDrawCheckLayer*>(*host_impl_->active_tree()->begin()); |
| 3520 | 3526 |
| 3521 root->test_properties()->AddChild( | 3527 root->test_properties()->AddChild( |
| 3522 DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 3528 DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |
| 3523 root->test_properties()->force_render_surface = true; | 3529 root->test_properties()->force_render_surface = true; |
| 3524 DidDrawCheckLayer* layer = | 3530 DidDrawCheckLayer* layer = |
| 3525 static_cast<DidDrawCheckLayer*>(root->test_properties()->children[0]); | 3531 static_cast<DidDrawCheckLayer*>(root->test_properties()->children[0]); |
| 3526 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 3532 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 3527 | 3533 |
| 3528 { | 3534 { |
| 3529 LayerTreeHostImpl::FrameData frame; | 3535 TestFrameData frame; |
| 3530 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 3536 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 3531 host_impl_->DrawLayers(&frame); | 3537 host_impl_->DrawLayers(&frame); |
| 3532 host_impl_->DidDrawAllLayers(frame); | 3538 host_impl_->DidDrawAllLayers(frame); |
| 3533 | 3539 |
| 3534 EXPECT_TRUE(layer->will_draw_called()); | 3540 EXPECT_TRUE(layer->will_draw_called()); |
| 3535 EXPECT_TRUE(layer->append_quads_called()); | 3541 EXPECT_TRUE(layer->append_quads_called()); |
| 3536 EXPECT_TRUE(layer->did_draw_called()); | 3542 EXPECT_TRUE(layer->did_draw_called()); |
| 3537 } | 3543 } |
| 3538 | 3544 |
| 3539 host_impl_->SetViewportDamage(gfx::Rect(10, 10)); | 3545 host_impl_->SetViewportDamage(gfx::Rect(10, 10)); |
| 3540 | 3546 |
| 3541 { | 3547 { |
| 3542 LayerTreeHostImpl::FrameData frame; | 3548 TestFrameData frame; |
| 3543 | 3549 |
| 3544 layer->set_will_draw_returns_false(); | 3550 layer->set_will_draw_returns_false(); |
| 3545 layer->ClearDidDrawCheck(); | 3551 layer->ClearDidDrawCheck(); |
| 3546 | 3552 |
| 3547 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 3553 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 3548 host_impl_->DrawLayers(&frame); | 3554 host_impl_->DrawLayers(&frame); |
| 3549 host_impl_->DidDrawAllLayers(frame); | 3555 host_impl_->DidDrawAllLayers(frame); |
| 3550 | 3556 |
| 3551 EXPECT_TRUE(layer->will_draw_called()); | 3557 EXPECT_TRUE(layer->will_draw_called()); |
| 3552 EXPECT_FALSE(layer->append_quads_called()); | 3558 EXPECT_FALSE(layer->append_quads_called()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 3565 root->test_properties()->force_render_surface = true; | 3571 root->test_properties()->force_render_surface = true; |
| 3566 root->test_properties()->AddChild( | 3572 root->test_properties()->AddChild( |
| 3567 DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); | 3573 DidDrawCheckLayer::Create(host_impl_->active_tree(), 2)); |
| 3568 DidDrawCheckLayer* layer = | 3574 DidDrawCheckLayer* layer = |
| 3569 static_cast<DidDrawCheckLayer*>(root->test_properties()->children[0]); | 3575 static_cast<DidDrawCheckLayer*>(root->test_properties()->children[0]); |
| 3570 // Ensure visible_layer_rect for layer is empty. | 3576 // Ensure visible_layer_rect for layer is empty. |
| 3571 layer->SetPosition(gfx::PointF(100.f, 100.f)); | 3577 layer->SetPosition(gfx::PointF(100.f, 100.f)); |
| 3572 layer->SetBounds(gfx::Size(10, 10)); | 3578 layer->SetBounds(gfx::Size(10, 10)); |
| 3573 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 3579 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 3574 | 3580 |
| 3575 LayerTreeHostImpl::FrameData frame; | 3581 TestFrameData frame; |
| 3576 | 3582 |
| 3577 EXPECT_FALSE(layer->will_draw_called()); | 3583 EXPECT_FALSE(layer->will_draw_called()); |
| 3578 EXPECT_FALSE(layer->did_draw_called()); | 3584 EXPECT_FALSE(layer->did_draw_called()); |
| 3579 | 3585 |
| 3580 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 3586 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 3581 host_impl_->DrawLayers(&frame); | 3587 host_impl_->DrawLayers(&frame); |
| 3582 host_impl_->DidDrawAllLayers(frame); | 3588 host_impl_->DidDrawAllLayers(frame); |
| 3583 | 3589 |
| 3584 EXPECT_FALSE(layer->will_draw_called()); | 3590 EXPECT_FALSE(layer->will_draw_called()); |
| 3585 EXPECT_FALSE(layer->did_draw_called()); | 3591 EXPECT_FALSE(layer->did_draw_called()); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3622 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); | 3628 DidDrawCheckLayer::Create(host_impl_->active_tree(), 3)); |
| 3623 root->test_properties()->force_render_surface = true; | 3629 root->test_properties()->force_render_surface = true; |
| 3624 DidDrawCheckLayer* top_layer = | 3630 DidDrawCheckLayer* top_layer = |
| 3625 static_cast<DidDrawCheckLayer*>(root->test_properties()->children[1]); | 3631 static_cast<DidDrawCheckLayer*>(root->test_properties()->children[1]); |
| 3626 // This layer covers the occluded_layer above. Make this layer large so it can | 3632 // This layer covers the occluded_layer above. Make this layer large so it can |
| 3627 // occlude. | 3633 // occlude. |
| 3628 top_layer->SetBounds(big_size); | 3634 top_layer->SetBounds(big_size); |
| 3629 top_layer->SetContentsOpaque(true); | 3635 top_layer->SetContentsOpaque(true); |
| 3630 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 3636 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 3631 | 3637 |
| 3632 LayerTreeHostImpl::FrameData frame; | 3638 TestFrameData frame; |
| 3633 | 3639 |
| 3634 EXPECT_FALSE(occluded_layer->will_draw_called()); | 3640 EXPECT_FALSE(occluded_layer->will_draw_called()); |
| 3635 EXPECT_FALSE(occluded_layer->did_draw_called()); | 3641 EXPECT_FALSE(occluded_layer->did_draw_called()); |
| 3636 EXPECT_FALSE(top_layer->will_draw_called()); | 3642 EXPECT_FALSE(top_layer->will_draw_called()); |
| 3637 EXPECT_FALSE(top_layer->did_draw_called()); | 3643 EXPECT_FALSE(top_layer->did_draw_called()); |
| 3638 | 3644 |
| 3639 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 3645 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 3640 host_impl_->DrawLayers(&frame); | 3646 host_impl_->DrawLayers(&frame); |
| 3641 host_impl_->DidDrawAllLayers(frame); | 3647 host_impl_->DidDrawAllLayers(frame); |
| 3642 | 3648 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 3664 static_cast<DidDrawCheckLayer*>(layer1->test_properties()->children[0]); | 3670 static_cast<DidDrawCheckLayer*>(layer1->test_properties()->children[0]); |
| 3665 | 3671 |
| 3666 layer1->test_properties()->force_render_surface = true; | 3672 layer1->test_properties()->force_render_surface = true; |
| 3667 layer1->test_properties()->should_flatten_transform = true; | 3673 layer1->test_properties()->should_flatten_transform = true; |
| 3668 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 3674 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 3669 | 3675 |
| 3670 EXPECT_FALSE(root->did_draw_called()); | 3676 EXPECT_FALSE(root->did_draw_called()); |
| 3671 EXPECT_FALSE(layer1->did_draw_called()); | 3677 EXPECT_FALSE(layer1->did_draw_called()); |
| 3672 EXPECT_FALSE(layer2->did_draw_called()); | 3678 EXPECT_FALSE(layer2->did_draw_called()); |
| 3673 | 3679 |
| 3674 LayerTreeHostImpl::FrameData frame; | 3680 TestFrameData frame; |
| 3675 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( | 3681 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( |
| 3676 *host_impl_->active_tree()->begin()); | 3682 *host_impl_->active_tree()->begin()); |
| 3677 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 3683 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 3678 host_impl_->DrawLayers(&frame); | 3684 host_impl_->DrawLayers(&frame); |
| 3679 host_impl_->DidDrawAllLayers(frame); | 3685 host_impl_->DidDrawAllLayers(frame); |
| 3680 | 3686 |
| 3681 EXPECT_TRUE(root->did_draw_called()); | 3687 EXPECT_TRUE(root->did_draw_called()); |
| 3682 EXPECT_TRUE(layer1->did_draw_called()); | 3688 EXPECT_TRUE(layer1->did_draw_called()); |
| 3683 EXPECT_TRUE(layer2->did_draw_called()); | 3689 EXPECT_TRUE(layer2->did_draw_called()); |
| 3684 | 3690 |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3835 cases.back().layer_before.has_missing_tile = true; | 3841 cases.back().layer_before.has_missing_tile = true; |
| 3836 cases.back().layer_before.is_animating = true; | 3842 cases.back().layer_before.is_animating = true; |
| 3837 | 3843 |
| 3838 host_impl_->active_tree()->SetRootLayerForTesting( | 3844 host_impl_->active_tree()->SetRootLayerForTesting( |
| 3839 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); | 3845 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); |
| 3840 DidDrawCheckLayer* root = | 3846 DidDrawCheckLayer* root = |
| 3841 static_cast<DidDrawCheckLayer*>(*host_impl_->active_tree()->begin()); | 3847 static_cast<DidDrawCheckLayer*>(*host_impl_->active_tree()->begin()); |
| 3842 root->test_properties()->force_render_surface = true; | 3848 root->test_properties()->force_render_surface = true; |
| 3843 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 3849 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 3844 | 3850 |
| 3845 LayerTreeHostImpl::FrameData frame; | 3851 TestFrameData frame; |
| 3846 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 3852 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 3847 host_impl_->DrawLayers(&frame); | 3853 host_impl_->DrawLayers(&frame); |
| 3848 host_impl_->DidDrawAllLayers(frame); | 3854 host_impl_->DidDrawAllLayers(frame); |
| 3849 | 3855 |
| 3850 for (size_t i = 0; i < cases.size(); ++i) { | 3856 for (size_t i = 0; i < cases.size(); ++i) { |
| 3851 // Clean up host_impl_ state. | 3857 // Clean up host_impl_ state. |
| 3852 const auto& testcase = cases[i]; | 3858 const auto& testcase = cases[i]; |
| 3853 std::vector<LayerImpl*> to_remove; | 3859 std::vector<LayerImpl*> to_remove; |
| 3854 for (auto* child : root->test_properties()->children) | 3860 for (auto* child : root->test_properties()->children) |
| 3855 to_remove.push_back(child); | 3861 to_remove.push_back(child); |
| 3856 for (auto* child : to_remove) | 3862 for (auto* child : to_remove) |
| 3857 root->test_properties()->RemoveChild(child); | 3863 root->test_properties()->RemoveChild(child); |
| 3858 timeline()->ClearPlayers(); | 3864 timeline()->ClearPlayers(); |
| 3859 | 3865 |
| 3860 std::ostringstream scope; | 3866 std::ostringstream scope; |
| 3861 scope << "Test case: " << i; | 3867 scope << "Test case: " << i; |
| 3862 SCOPED_TRACE(scope.str()); | 3868 SCOPED_TRACE(scope.str()); |
| 3863 | 3869 |
| 3864 CreateLayerFromState(root, timeline(), testcase.layer_before); | 3870 CreateLayerFromState(root, timeline(), testcase.layer_before); |
| 3865 CreateLayerFromState(root, timeline(), testcase.layer_between); | 3871 CreateLayerFromState(root, timeline(), testcase.layer_between); |
| 3866 CreateLayerFromState(root, timeline(), testcase.layer_after); | 3872 CreateLayerFromState(root, timeline(), testcase.layer_after); |
| 3867 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 3873 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 3868 | 3874 |
| 3869 if (testcase.high_res_required) | 3875 if (testcase.high_res_required) |
| 3870 host_impl_->SetRequiresHighResToDraw(); | 3876 host_impl_->SetRequiresHighResToDraw(); |
| 3871 | 3877 |
| 3872 LayerTreeHostImpl::FrameData frame; | 3878 TestFrameData frame; |
| 3873 EXPECT_EQ(testcase.expected_result, host_impl_->PrepareToDraw(&frame)); | 3879 EXPECT_EQ(testcase.expected_result, host_impl_->PrepareToDraw(&frame)); |
| 3874 host_impl_->DrawLayers(&frame); | 3880 host_impl_->DrawLayers(&frame); |
| 3875 host_impl_->DidDrawAllLayers(frame); | 3881 host_impl_->DidDrawAllLayers(frame); |
| 3876 } | 3882 } |
| 3877 } | 3883 } |
| 3878 | 3884 |
| 3879 TEST_F(LayerTreeHostImplTest, | 3885 TEST_F(LayerTreeHostImplTest, |
| 3880 PrepareToDrawWhenDrawAndSwapFullViewportEveryFrame) { | 3886 PrepareToDrawWhenDrawAndSwapFullViewportEveryFrame) { |
| 3881 CreateHostImpl(DefaultSettings(), FakeCompositorFrameSink::CreateSoftware()); | 3887 CreateHostImpl(DefaultSettings(), FakeCompositorFrameSink::CreateSoftware()); |
| 3882 | 3888 |
| (...skipping 1344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5227 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), | 5233 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), |
| 5228 InputHandler::TOUCHSCREEN); | 5234 InputHandler::TOUCHSCREEN); |
| 5229 host_impl_->PinchGestureBegin(); | 5235 host_impl_->PinchGestureBegin(); |
| 5230 host_impl_->PinchGestureUpdate(new_page_scale, gfx::Point()); | 5236 host_impl_->PinchGestureUpdate(new_page_scale, gfx::Point()); |
| 5231 host_impl_->PinchGestureEnd(); | 5237 host_impl_->PinchGestureEnd(); |
| 5232 host_impl_->ScrollEnd(EndState().get()); | 5238 host_impl_->ScrollEnd(EndState().get()); |
| 5233 DrawOneFrame(); | 5239 DrawOneFrame(); |
| 5234 | 5240 |
| 5235 // Make sure all the layers are drawn with the page scale delta applied, i.e., | 5241 // Make sure all the layers are drawn with the page scale delta applied, i.e., |
| 5236 // the page scale delta on the root layer is applied hierarchically. | 5242 // the page scale delta on the root layer is applied hierarchically. |
| 5237 LayerTreeHostImpl::FrameData frame; | 5243 TestFrameData frame; |
| 5238 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5244 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 5239 host_impl_->DrawLayers(&frame); | 5245 host_impl_->DrawLayers(&frame); |
| 5240 host_impl_->DidDrawAllLayers(frame); | 5246 host_impl_->DidDrawAllLayers(frame); |
| 5241 | 5247 |
| 5242 EXPECT_EQ(1.f, root->DrawTransform().matrix().getDouble(0, 0)); | 5248 EXPECT_EQ(1.f, root->DrawTransform().matrix().getDouble(0, 0)); |
| 5243 EXPECT_EQ(1.f, root->DrawTransform().matrix().getDouble(1, 1)); | 5249 EXPECT_EQ(1.f, root->DrawTransform().matrix().getDouble(1, 1)); |
| 5244 EXPECT_EQ(new_page_scale, scroll->DrawTransform().matrix().getDouble(0, 0)); | 5250 EXPECT_EQ(new_page_scale, scroll->DrawTransform().matrix().getDouble(0, 0)); |
| 5245 EXPECT_EQ(new_page_scale, scroll->DrawTransform().matrix().getDouble(1, 1)); | 5251 EXPECT_EQ(new_page_scale, scroll->DrawTransform().matrix().getDouble(1, 1)); |
| 5246 EXPECT_EQ(new_page_scale, child->DrawTransform().matrix().getDouble(0, 0)); | 5252 EXPECT_EQ(new_page_scale, child->DrawTransform().matrix().getDouble(0, 0)); |
| 5247 EXPECT_EQ(new_page_scale, child->DrawTransform().matrix().getDouble(1, 1)); | 5253 EXPECT_EQ(new_page_scale, child->DrawTransform().matrix().getDouble(1, 1)); |
| (...skipping 828 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6076 DrawFrame(); | 6082 DrawFrame(); |
| 6077 CheckLayerScrollDelta(scroll_layer, gfx::Vector2dF(0.f, 0.f)); | 6083 CheckLayerScrollDelta(scroll_layer, gfx::Vector2dF(0.f, 0.f)); |
| 6078 EXPECT_FALSE(host_impl_->active_tree()->needs_update_draw_properties()); | 6084 EXPECT_FALSE(host_impl_->active_tree()->needs_update_draw_properties()); |
| 6079 | 6085 |
| 6080 // Set external scroll delta on delegate and notify LayerTreeHost. | 6086 // Set external scroll delta on delegate and notify LayerTreeHost. |
| 6081 gfx::ScrollOffset scroll_offset(10.f, 10.f); | 6087 gfx::ScrollOffset scroll_offset(10.f, 10.f); |
| 6082 host_impl_->SetSynchronousInputHandlerRootScrollOffset(scroll_offset); | 6088 host_impl_->SetSynchronousInputHandlerRootScrollOffset(scroll_offset); |
| 6083 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 6089 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 6084 | 6090 |
| 6085 // Check scroll delta reflected in layer. | 6091 // Check scroll delta reflected in layer. |
| 6086 LayerTreeHostImpl::FrameData frame; | 6092 TestFrameData frame; |
| 6087 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 6093 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 6088 host_impl_->DrawLayers(&frame); | 6094 host_impl_->DrawLayers(&frame); |
| 6089 host_impl_->DidDrawAllLayers(frame); | 6095 host_impl_->DidDrawAllLayers(frame); |
| 6090 EXPECT_FALSE(frame.has_no_damage); | 6096 EXPECT_FALSE(frame.has_no_damage); |
| 6091 CheckLayerScrollDelta(scroll_layer, ScrollOffsetToVector2dF(scroll_offset)); | 6097 CheckLayerScrollDelta(scroll_layer, ScrollOffsetToVector2dF(scroll_offset)); |
| 6092 } | 6098 } |
| 6093 | 6099 |
| 6094 TEST_F(LayerTreeHostImplTest, OverscrollRoot) { | 6100 TEST_F(LayerTreeHostImplTest, OverscrollRoot) { |
| 6095 InputHandlerScrollResult scroll_result; | 6101 InputHandlerScrollResult scroll_result; |
| 6096 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 6102 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
| (...skipping 933 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7030 host_impl_->active_tree()->SetRootLayerForTesting(std::move(root)); | 7036 host_impl_->active_tree()->SetRootLayerForTesting(std::move(root)); |
| 7031 } | 7037 } |
| 7032 LayerImpl* root = host_impl_->active_tree()->root_layer_for_testing(); | 7038 LayerImpl* root = host_impl_->active_tree()->root_layer_for_testing(); |
| 7033 | 7039 |
| 7034 root->test_properties()->AddChild(BlendStateCheckLayer::Create( | 7040 root->test_properties()->AddChild(BlendStateCheckLayer::Create( |
| 7035 host_impl_->active_tree(), 2, host_impl_->resource_provider())); | 7041 host_impl_->active_tree(), 2, host_impl_->resource_provider())); |
| 7036 BlendStateCheckLayer* layer1 = | 7042 BlendStateCheckLayer* layer1 = |
| 7037 static_cast<BlendStateCheckLayer*>(root->test_properties()->children[0]); | 7043 static_cast<BlendStateCheckLayer*>(root->test_properties()->children[0]); |
| 7038 layer1->SetPosition(gfx::PointF(2.f, 2.f)); | 7044 layer1->SetPosition(gfx::PointF(2.f, 2.f)); |
| 7039 | 7045 |
| 7040 LayerTreeHostImpl::FrameData frame; | 7046 TestFrameData frame; |
| 7041 | 7047 |
| 7042 // Opaque layer, drawn without blending. | 7048 // Opaque layer, drawn without blending. |
| 7043 layer1->SetContentsOpaque(true); | 7049 layer1->SetContentsOpaque(true); |
| 7044 layer1->SetExpectation(false, false); | 7050 layer1->SetExpectation(false, false); |
| 7045 layer1->SetUpdateRect(gfx::Rect(layer1->bounds())); | 7051 layer1->SetUpdateRect(gfx::Rect(layer1->bounds())); |
| 7046 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 7052 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 7047 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 7053 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 7048 host_impl_->DrawLayers(&frame); | 7054 host_impl_->DrawLayers(&frame); |
| 7049 EXPECT_TRUE(layer1->quads_appended()); | 7055 EXPECT_TRUE(layer1->quads_appended()); |
| 7050 host_impl_->DidDrawAllLayers(frame); | 7056 host_impl_->DidDrawAllLayers(frame); |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7272 host_impl_->active_tree()->set_needs_update_draw_properties(); | 7278 host_impl_->active_tree()->set_needs_update_draw_properties(); |
| 7273 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 7279 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 7274 host_impl_->DrawLayers(&frame); | 7280 host_impl_->DrawLayers(&frame); |
| 7275 EXPECT_TRUE(layer1->quads_appended()); | 7281 EXPECT_TRUE(layer1->quads_appended()); |
| 7276 host_impl_->DidDrawAllLayers(frame); | 7282 host_impl_->DidDrawAllLayers(frame); |
| 7277 } | 7283 } |
| 7278 | 7284 |
| 7279 static bool MayContainVideoBitSetOnFrameData(LayerTreeHostImpl* host_impl) { | 7285 static bool MayContainVideoBitSetOnFrameData(LayerTreeHostImpl* host_impl) { |
| 7280 host_impl->active_tree()->BuildPropertyTreesForTesting(); | 7286 host_impl->active_tree()->BuildPropertyTreesForTesting(); |
| 7281 host_impl->active_tree()->set_needs_update_draw_properties(); | 7287 host_impl->active_tree()->set_needs_update_draw_properties(); |
| 7282 LayerTreeHostImpl::FrameData frame; | 7288 TestFrameData frame; |
| 7283 EXPECT_EQ(DRAW_SUCCESS, host_impl->PrepareToDraw(&frame)); | 7289 EXPECT_EQ(DRAW_SUCCESS, host_impl->PrepareToDraw(&frame)); |
| 7284 host_impl->DrawLayers(&frame); | 7290 host_impl->DrawLayers(&frame); |
| 7285 host_impl->DidDrawAllLayers(frame); | 7291 host_impl->DidDrawAllLayers(frame); |
| 7286 return frame.may_contain_video; | 7292 return frame.may_contain_video; |
| 7287 } | 7293 } |
| 7288 | 7294 |
| 7289 TEST_F(LayerTreeHostImplTest, MayContainVideo) { | 7295 TEST_F(LayerTreeHostImplTest, MayContainVideo) { |
| 7290 gfx::Size big_size(1000, 1000); | 7296 gfx::Size big_size(1000, 1000); |
| 7291 host_impl_->SetViewportSize(big_size); | 7297 host_impl_->SetViewportSize(big_size); |
| 7292 | 7298 |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7362 | 7368 |
| 7363 // Expect no gutter rects. | 7369 // Expect no gutter rects. |
| 7364 void TestLayerCoversFullViewport() { | 7370 void TestLayerCoversFullViewport() { |
| 7365 gfx::Rect layer_rect(viewport_size_); | 7371 gfx::Rect layer_rect(viewport_size_); |
| 7366 child_->SetPosition(gfx::PointF(layer_rect.origin())); | 7372 child_->SetPosition(gfx::PointF(layer_rect.origin())); |
| 7367 child_->SetBounds(layer_rect.size()); | 7373 child_->SetBounds(layer_rect.size()); |
| 7368 child_->SetQuadRect(gfx::Rect(layer_rect.size())); | 7374 child_->SetQuadRect(gfx::Rect(layer_rect.size())); |
| 7369 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); | 7375 child_->SetQuadVisibleRect(gfx::Rect(layer_rect.size())); |
| 7370 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 7376 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 7371 | 7377 |
| 7372 LayerTreeHostImpl::FrameData frame; | 7378 TestFrameData frame; |
| 7373 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 7379 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 7374 ASSERT_EQ(1u, frame.render_passes.size()); | 7380 ASSERT_EQ(1u, frame.render_passes.size()); |
| 7375 | 7381 |
| 7376 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list)); | 7382 EXPECT_EQ(0u, CountGutterQuads(frame.render_passes[0]->quad_list)); |
| 7377 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 7383 EXPECT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 7378 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); | 7384 ValidateTextureDrawQuads(frame.render_passes[0]->quad_list); |
| 7379 | 7385 |
| 7380 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); | 7386 VerifyQuadsExactlyCoverViewport(frame.render_passes[0]->quad_list); |
| 7381 host_impl_->DidDrawAllLayers(frame); | 7387 host_impl_->DidDrawAllLayers(frame); |
| 7382 } | 7388 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 7396 | 7402 |
| 7397 EXPECT_EQ(1u, CountGutterQuads(render_passes[0]->quad_list)); | 7403 EXPECT_EQ(1u, CountGutterQuads(render_passes[0]->quad_list)); |
| 7398 EXPECT_EQ(1u, render_passes[0]->quad_list.size()); | 7404 EXPECT_EQ(1u, render_passes[0]->quad_list.size()); |
| 7399 ValidateTextureDrawQuads(render_passes[0]->quad_list); | 7405 ValidateTextureDrawQuads(render_passes[0]->quad_list); |
| 7400 | 7406 |
| 7401 VerifyQuadsExactlyCoverViewport(render_passes[0]->quad_list); | 7407 VerifyQuadsExactlyCoverViewport(render_passes[0]->quad_list); |
| 7402 } | 7408 } |
| 7403 | 7409 |
| 7404 void TestEmptyLayer() { | 7410 void TestEmptyLayer() { |
| 7405 SetUpEmptylayer(); | 7411 SetUpEmptylayer(); |
| 7406 LayerTreeHostImpl::FrameData frame; | 7412 TestFrameData frame; |
| 7407 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 7413 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 7408 VerifyEmptyLayerRenderPasses(frame.render_passes); | 7414 VerifyEmptyLayerRenderPasses(frame.render_passes); |
| 7409 host_impl_->DidDrawAllLayers(frame); | 7415 host_impl_->DidDrawAllLayers(frame); |
| 7410 } | 7416 } |
| 7411 | 7417 |
| 7412 void TestEmptyLayerWithOnDraw() { | 7418 void TestEmptyLayerWithOnDraw() { |
| 7413 SetUpEmptylayer(); | 7419 SetUpEmptylayer(); |
| 7414 gfx::Transform identity; | 7420 gfx::Transform identity; |
| 7415 gfx::Rect viewport(viewport_size_); | 7421 gfx::Rect viewport(viewport_size_); |
| 7416 bool resourceless_software_draw = true; | 7422 bool resourceless_software_draw = true; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 7433 | 7439 |
| 7434 EXPECT_EQ(4u, CountGutterQuads(render_passes[0]->quad_list)); | 7440 EXPECT_EQ(4u, CountGutterQuads(render_passes[0]->quad_list)); |
| 7435 EXPECT_EQ(5u, render_passes[0]->quad_list.size()); | 7441 EXPECT_EQ(5u, render_passes[0]->quad_list.size()); |
| 7436 ValidateTextureDrawQuads(render_passes[0]->quad_list); | 7442 ValidateTextureDrawQuads(render_passes[0]->quad_list); |
| 7437 | 7443 |
| 7438 VerifyQuadsExactlyCoverViewport(render_passes[0]->quad_list); | 7444 VerifyQuadsExactlyCoverViewport(render_passes[0]->quad_list); |
| 7439 } | 7445 } |
| 7440 | 7446 |
| 7441 void TestLayerInMiddleOfViewport() { | 7447 void TestLayerInMiddleOfViewport() { |
| 7442 SetUpLayerInMiddleOfViewport(); | 7448 SetUpLayerInMiddleOfViewport(); |
| 7443 LayerTreeHostImpl::FrameData frame; | 7449 TestFrameData frame; |
| 7444 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 7450 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 7445 VerifyLayerInMiddleOfViewport(frame.render_passes); | 7451 VerifyLayerInMiddleOfViewport(frame.render_passes); |
| 7446 host_impl_->DidDrawAllLayers(frame); | 7452 host_impl_->DidDrawAllLayers(frame); |
| 7447 } | 7453 } |
| 7448 | 7454 |
| 7449 void TestLayerInMiddleOfViewportWithOnDraw() { | 7455 void TestLayerInMiddleOfViewportWithOnDraw() { |
| 7450 SetUpLayerInMiddleOfViewport(); | 7456 SetUpLayerInMiddleOfViewport(); |
| 7451 gfx::Transform identity; | 7457 gfx::Transform identity; |
| 7452 gfx::Rect viewport(viewport_size_); | 7458 gfx::Rect viewport(viewport_size_); |
| 7453 bool resourceless_software_draw = true; | 7459 bool resourceless_software_draw = true; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 7469 void VerifyLayerIsLargerThanViewport(const RenderPassList& render_passes) { | 7475 void VerifyLayerIsLargerThanViewport(const RenderPassList& render_passes) { |
| 7470 ASSERT_EQ(1u, render_passes.size()); | 7476 ASSERT_EQ(1u, render_passes.size()); |
| 7471 | 7477 |
| 7472 EXPECT_EQ(0u, CountGutterQuads(render_passes[0]->quad_list)); | 7478 EXPECT_EQ(0u, CountGutterQuads(render_passes[0]->quad_list)); |
| 7473 EXPECT_EQ(1u, render_passes[0]->quad_list.size()); | 7479 EXPECT_EQ(1u, render_passes[0]->quad_list.size()); |
| 7474 ValidateTextureDrawQuads(render_passes[0]->quad_list); | 7480 ValidateTextureDrawQuads(render_passes[0]->quad_list); |
| 7475 } | 7481 } |
| 7476 | 7482 |
| 7477 void TestLayerIsLargerThanViewport() { | 7483 void TestLayerIsLargerThanViewport() { |
| 7478 SetUpLayerIsLargerThanViewport(); | 7484 SetUpLayerIsLargerThanViewport(); |
| 7479 LayerTreeHostImpl::FrameData frame; | 7485 TestFrameData frame; |
| 7480 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 7486 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 7481 VerifyLayerIsLargerThanViewport(frame.render_passes); | 7487 VerifyLayerIsLargerThanViewport(frame.render_passes); |
| 7482 host_impl_->DidDrawAllLayers(frame); | 7488 host_impl_->DidDrawAllLayers(frame); |
| 7483 } | 7489 } |
| 7484 | 7490 |
| 7485 void TestLayerIsLargerThanViewportWithOnDraw() { | 7491 void TestLayerIsLargerThanViewportWithOnDraw() { |
| 7486 SetUpLayerIsLargerThanViewport(); | 7492 SetUpLayerIsLargerThanViewport(); |
| 7487 gfx::Transform identity; | 7493 gfx::Transform identity; |
| 7488 gfx::Rect viewport(viewport_size_); | 7494 gfx::Rect viewport(viewport_size_); |
| 7489 bool resourceless_software_draw = true; | 7495 bool resourceless_software_draw = true; |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7667 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 2); | 7673 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 2); |
| 7668 child->SetPosition(gfx::PointF(12.f, 13.f)); | 7674 child->SetPosition(gfx::PointF(12.f, 13.f)); |
| 7669 child->SetBounds(gfx::Size(14, 15)); | 7675 child->SetBounds(gfx::Size(14, 15)); |
| 7670 child->SetDrawsContent(true); | 7676 child->SetDrawsContent(true); |
| 7671 root->SetBounds(gfx::Size(500, 500)); | 7677 root->SetBounds(gfx::Size(500, 500)); |
| 7672 root->SetDrawsContent(true); | 7678 root->SetDrawsContent(true); |
| 7673 root->test_properties()->AddChild(std::move(child)); | 7679 root->test_properties()->AddChild(std::move(child)); |
| 7674 layer_tree_host_impl->active_tree()->SetRootLayerForTesting(std::move(root)); | 7680 layer_tree_host_impl->active_tree()->SetRootLayerForTesting(std::move(root)); |
| 7675 layer_tree_host_impl->active_tree()->BuildPropertyTreesForTesting(); | 7681 layer_tree_host_impl->active_tree()->BuildPropertyTreesForTesting(); |
| 7676 | 7682 |
| 7677 LayerTreeHostImpl::FrameData frame; | 7683 TestFrameData frame; |
| 7678 | 7684 |
| 7679 // First frame, the entire screen should get swapped. | 7685 // First frame, the entire screen should get swapped. |
| 7680 EXPECT_EQ(DRAW_SUCCESS, layer_tree_host_impl->PrepareToDraw(&frame)); | 7686 EXPECT_EQ(DRAW_SUCCESS, layer_tree_host_impl->PrepareToDraw(&frame)); |
| 7681 layer_tree_host_impl->DrawLayers(&frame); | 7687 layer_tree_host_impl->DrawLayers(&frame); |
| 7682 layer_tree_host_impl->DidDrawAllLayers(frame); | 7688 layer_tree_host_impl->DidDrawAllLayers(frame); |
| 7683 gfx::Rect expected_swap_rect(500, 500); | 7689 gfx::Rect expected_swap_rect(500, 500); |
| 7684 EXPECT_EQ(expected_swap_rect.ToString(), | 7690 EXPECT_EQ(expected_swap_rect.ToString(), |
| 7685 fake_compositor_frame_sink->last_swap_rect().ToString()); | 7691 fake_compositor_frame_sink->last_swap_rect().ToString()); |
| 7686 | 7692 |
| 7687 // Second frame, only the damaged area should get swapped. Damage should be | 7693 // Second frame, only the damaged area should get swapped. Damage should be |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7729 child->SetBounds(gfx::Size(10, 10)); | 7735 child->SetBounds(gfx::Size(10, 10)); |
| 7730 child->SetDrawsContent(true); | 7736 child->SetDrawsContent(true); |
| 7731 root->SetBounds(gfx::Size(10, 10)); | 7737 root->SetBounds(gfx::Size(10, 10)); |
| 7732 root->SetDrawsContent(true); | 7738 root->SetDrawsContent(true); |
| 7733 root->test_properties()->force_render_surface = true; | 7739 root->test_properties()->force_render_surface = true; |
| 7734 root->test_properties()->AddChild(std::move(child)); | 7740 root->test_properties()->AddChild(std::move(child)); |
| 7735 | 7741 |
| 7736 host_impl_->active_tree()->SetRootLayerForTesting(std::move(root)); | 7742 host_impl_->active_tree()->SetRootLayerForTesting(std::move(root)); |
| 7737 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 7743 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 7738 | 7744 |
| 7739 LayerTreeHostImpl::FrameData frame; | 7745 TestFrameData frame; |
| 7740 | 7746 |
| 7741 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 7747 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 7742 EXPECT_EQ(1u, frame.render_surface_layer_list->size()); | 7748 EXPECT_EQ(1u, frame.render_surface_layer_list->size()); |
| 7743 EXPECT_EQ(1u, frame.render_passes.size()); | 7749 EXPECT_EQ(1u, frame.render_passes.size()); |
| 7744 host_impl_->DidDrawAllLayers(frame); | 7750 host_impl_->DidDrawAllLayers(frame); |
| 7745 } | 7751 } |
| 7746 | 7752 |
| 7747 class FakeLayerWithQuads : public LayerImpl { | 7753 class FakeLayerWithQuads : public LayerImpl { |
| 7748 public: | 7754 public: |
| 7749 static std::unique_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { | 7755 static std::unique_ptr<LayerImpl> Create(LayerTreeImpl* tree_impl, int id) { |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7848 TestTaskGraphRunner task_graph_runner; | 7854 TestTaskGraphRunner task_graph_runner; |
| 7849 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create()); | 7855 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create()); |
| 7850 provider->BindToCurrentThread(); | 7856 provider->BindToCurrentThread(); |
| 7851 provider->TestContext3d()->set_have_post_sub_buffer(true); | 7857 provider->TestContext3d()->set_have_post_sub_buffer(true); |
| 7852 std::unique_ptr<CompositorFrameSink> compositor_frame_sink( | 7858 std::unique_ptr<CompositorFrameSink> compositor_frame_sink( |
| 7853 FakeCompositorFrameSink::Create3d(provider)); | 7859 FakeCompositorFrameSink::Create3d(provider)); |
| 7854 std::unique_ptr<LayerTreeHostImpl> my_host_impl = SetupLayersForOpacity( | 7860 std::unique_ptr<LayerTreeHostImpl> my_host_impl = SetupLayersForOpacity( |
| 7855 DefaultSettings(), true, this, &task_runner_provider_, &task_graph_runner, | 7861 DefaultSettings(), true, this, &task_runner_provider_, &task_graph_runner, |
| 7856 &stats_instrumentation_, compositor_frame_sink.get()); | 7862 &stats_instrumentation_, compositor_frame_sink.get()); |
| 7857 { | 7863 { |
| 7858 LayerTreeHostImpl::FrameData frame; | 7864 TestFrameData frame; |
| 7859 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); | 7865 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); |
| 7860 | 7866 |
| 7861 // Verify all quads have been computed | 7867 // Verify all quads have been computed |
| 7862 ASSERT_EQ(2U, frame.render_passes.size()); | 7868 ASSERT_EQ(2U, frame.render_passes.size()); |
| 7863 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 7869 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |
| 7864 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 7870 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |
| 7865 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 7871 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 7866 frame.render_passes[0]->quad_list.front()->material); | 7872 frame.render_passes[0]->quad_list.front()->material); |
| 7867 EXPECT_EQ(DrawQuad::RENDER_PASS, | 7873 EXPECT_EQ(DrawQuad::RENDER_PASS, |
| 7868 frame.render_passes[1]->quad_list.front()->material); | 7874 frame.render_passes[1]->quad_list.front()->material); |
| 7869 | 7875 |
| 7870 my_host_impl->DrawLayers(&frame); | 7876 my_host_impl->DrawLayers(&frame); |
| 7871 my_host_impl->DidDrawAllLayers(frame); | 7877 my_host_impl->DidDrawAllLayers(frame); |
| 7872 } | 7878 } |
| 7873 my_host_impl->ReleaseCompositorFrameSink(); | 7879 my_host_impl->ReleaseCompositorFrameSink(); |
| 7874 } | 7880 } |
| 7875 | 7881 |
| 7876 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { | 7882 TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) { |
| 7877 TestTaskGraphRunner task_graph_runner; | 7883 TestTaskGraphRunner task_graph_runner; |
| 7878 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create()); | 7884 scoped_refptr<TestContextProvider> provider(TestContextProvider::Create()); |
| 7879 provider->BindToCurrentThread(); | 7885 provider->BindToCurrentThread(); |
| 7880 provider->TestContext3d()->set_have_post_sub_buffer(true); | 7886 provider->TestContext3d()->set_have_post_sub_buffer(true); |
| 7881 std::unique_ptr<CompositorFrameSink> compositor_frame_sink( | 7887 std::unique_ptr<CompositorFrameSink> compositor_frame_sink( |
| 7882 FakeCompositorFrameSink::Create3d(provider)); | 7888 FakeCompositorFrameSink::Create3d(provider)); |
| 7883 std::unique_ptr<LayerTreeHostImpl> my_host_impl = SetupLayersForOpacity( | 7889 std::unique_ptr<LayerTreeHostImpl> my_host_impl = SetupLayersForOpacity( |
| 7884 DefaultSettings(), false, this, &task_runner_provider_, | 7890 DefaultSettings(), false, this, &task_runner_provider_, |
| 7885 &task_graph_runner, &stats_instrumentation_, compositor_frame_sink.get()); | 7891 &task_graph_runner, &stats_instrumentation_, compositor_frame_sink.get()); |
| 7886 { | 7892 { |
| 7887 LayerTreeHostImpl::FrameData frame; | 7893 TestFrameData frame; |
| 7888 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); | 7894 EXPECT_EQ(DRAW_SUCCESS, my_host_impl->PrepareToDraw(&frame)); |
| 7889 | 7895 |
| 7890 // Verify all quads have been computed | 7896 // Verify all quads have been computed |
| 7891 ASSERT_EQ(2U, frame.render_passes.size()); | 7897 ASSERT_EQ(2U, frame.render_passes.size()); |
| 7892 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); | 7898 ASSERT_EQ(1U, frame.render_passes[0]->quad_list.size()); |
| 7893 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); | 7899 ASSERT_EQ(1U, frame.render_passes[1]->quad_list.size()); |
| 7894 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 7900 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 7895 frame.render_passes[0]->quad_list.front()->material); | 7901 frame.render_passes[0]->quad_list.front()->material); |
| 7896 EXPECT_EQ(DrawQuad::RENDER_PASS, | 7902 EXPECT_EQ(DrawQuad::RENDER_PASS, |
| 7897 frame.render_passes[1]->quad_list.front()->material); | 7903 frame.render_passes[1]->quad_list.front()->material); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 7923 host_impl_->active_tree(), 4, &provider, media::VIDEO_ROTATION_0); | 7929 host_impl_->active_tree(), 4, &provider, media::VIDEO_ROTATION_0); |
| 7924 video_layer->SetBounds(gfx::Size(10, 10)); | 7930 video_layer->SetBounds(gfx::Size(10, 10)); |
| 7925 video_layer->SetDrawsContent(true); | 7931 video_layer->SetDrawsContent(true); |
| 7926 root_layer->test_properties()->AddChild(std::move(video_layer)); | 7932 root_layer->test_properties()->AddChild(std::move(video_layer)); |
| 7927 | 7933 |
| 7928 host_impl_->active_tree()->SetRootLayerForTesting(std::move(root_layer)); | 7934 host_impl_->active_tree()->SetRootLayerForTesting(std::move(root_layer)); |
| 7929 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 7935 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 7930 | 7936 |
| 7931 EXPECT_EQ(0u, context3d->NumTextures()); | 7937 EXPECT_EQ(0u, context3d->NumTextures()); |
| 7932 | 7938 |
| 7933 LayerTreeHostImpl::FrameData frame; | 7939 TestFrameData frame; |
| 7934 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 7940 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 7935 host_impl_->DrawLayers(&frame); | 7941 host_impl_->DrawLayers(&frame); |
| 7936 host_impl_->DidDrawAllLayers(frame); | 7942 host_impl_->DidDrawAllLayers(frame); |
| 7937 | 7943 |
| 7938 EXPECT_GT(context3d->NumTextures(), 0u); | 7944 EXPECT_GT(context3d->NumTextures(), 0u); |
| 7939 | 7945 |
| 7940 // Kill the layer tree. | 7946 // Kill the layer tree. |
| 7941 host_impl_->active_tree()->DetachLayers(); | 7947 host_impl_->active_tree()->DetachLayers(); |
| 7942 // There should be no textures left in use after. | 7948 // There should be no textures left in use after. |
| 7943 EXPECT_EQ(0u, context3d->NumTextures()); | 7949 EXPECT_EQ(0u, context3d->NumTextures()); |
| 7944 } | 7950 } |
| 7945 | 7951 |
| 7946 class MockDrawQuadsToFillScreenContext : public TestWebGraphicsContext3D { | 7952 class MockDrawQuadsToFillScreenContext : public TestWebGraphicsContext3D { |
| 7947 public: | 7953 public: |
| 7948 MOCK_METHOD1(useProgram, void(GLuint program)); | 7954 MOCK_METHOD1(useProgram, void(GLuint program)); |
| 7949 MOCK_METHOD4(drawElements, | 7955 MOCK_METHOD4(drawElements, |
| 7950 void(GLenum mode, GLsizei count, GLenum type, GLintptr offset)); | 7956 void(GLenum mode, GLsizei count, GLenum type, GLintptr offset)); |
| 7951 }; | 7957 }; |
| 7952 | 7958 |
| 7953 TEST_F(LayerTreeHostImplTest, HasTransparentBackground) { | 7959 TEST_F(LayerTreeHostImplTest, HasTransparentBackground) { |
| 7954 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); | 7960 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); |
| 7955 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 7961 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 7956 | 7962 |
| 7957 host_impl_->active_tree()->set_background_color(SK_ColorWHITE); | 7963 host_impl_->active_tree()->set_background_color(SK_ColorWHITE); |
| 7958 | 7964 |
| 7959 // Verify one quad is drawn when transparent background set is not set. | 7965 // Verify one quad is drawn when transparent background set is not set. |
| 7960 host_impl_->active_tree()->set_has_transparent_background(false); | 7966 host_impl_->active_tree()->set_has_transparent_background(false); |
| 7961 LayerTreeHostImpl::FrameData frame; | 7967 TestFrameData frame; |
| 7962 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 7968 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 7963 { | 7969 { |
| 7964 const auto& root_pass = frame.render_passes.back(); | 7970 const auto& root_pass = frame.render_passes.back(); |
| 7965 ASSERT_EQ(1u, root_pass->quad_list.size()); | 7971 ASSERT_EQ(1u, root_pass->quad_list.size()); |
| 7966 EXPECT_EQ(DrawQuad::SOLID_COLOR, root_pass->quad_list.front()->material); | 7972 EXPECT_EQ(DrawQuad::SOLID_COLOR, root_pass->quad_list.front()->material); |
| 7967 } | 7973 } |
| 7968 host_impl_->DrawLayers(&frame); | 7974 host_impl_->DrawLayers(&frame); |
| 7969 host_impl_->DidDrawAllLayers(frame); | 7975 host_impl_->DidDrawAllLayers(frame); |
| 7970 | 7976 |
| 7971 // Cause damage so we would draw something if possible. | 7977 // Cause damage so we would draw something if possible. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 7985 | 7991 |
| 7986 class LayerTreeHostImplTestDrawAndTestDamage : public LayerTreeHostImplTest { | 7992 class LayerTreeHostImplTestDrawAndTestDamage : public LayerTreeHostImplTest { |
| 7987 protected: | 7993 protected: |
| 7988 std::unique_ptr<CompositorFrameSink> CreateCompositorFrameSink() override { | 7994 std::unique_ptr<CompositorFrameSink> CreateCompositorFrameSink() override { |
| 7989 return FakeCompositorFrameSink::Create3d(); | 7995 return FakeCompositorFrameSink::Create3d(); |
| 7990 } | 7996 } |
| 7991 | 7997 |
| 7992 void DrawFrameAndTestDamage(const gfx::Rect& expected_damage) { | 7998 void DrawFrameAndTestDamage(const gfx::Rect& expected_damage) { |
| 7993 bool expect_to_draw = !expected_damage.IsEmpty(); | 7999 bool expect_to_draw = !expected_damage.IsEmpty(); |
| 7994 | 8000 |
| 7995 LayerTreeHostImpl::FrameData frame; | 8001 TestFrameData frame; |
| 7996 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 8002 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 7997 | 8003 |
| 7998 if (!expect_to_draw) { | 8004 if (!expect_to_draw) { |
| 7999 // With no damage, we don't draw, and no quads are created. | 8005 // With no damage, we don't draw, and no quads are created. |
| 8000 ASSERT_EQ(0u, frame.render_passes.size()); | 8006 ASSERT_EQ(0u, frame.render_passes.size()); |
| 8001 } else { | 8007 } else { |
| 8002 ASSERT_EQ(1u, frame.render_passes.size()); | 8008 ASSERT_EQ(1u, frame.render_passes.size()); |
| 8003 | 8009 |
| 8004 // Verify the damage rect for the root render pass. | 8010 // Verify the damage rect for the root render pass. |
| 8005 const RenderPass* root_render_pass = frame.render_passes.back().get(); | 8011 const RenderPass* root_render_pass = frame.render_passes.back().get(); |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8117 scrolling_layer->layer_tree_impl() | 8123 scrolling_layer->layer_tree_impl() |
| 8118 ->property_trees() | 8124 ->property_trees() |
| 8119 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scrolling_layer->id(), | 8125 ->scroll_tree.UpdateScrollOffsetBaseForTesting(scrolling_layer->id(), |
| 8120 scroll_offset); | 8126 scroll_offset); |
| 8121 host_impl_->ActivateSyncTree(); | 8127 host_impl_->ActivateSyncTree(); |
| 8122 | 8128 |
| 8123 bool update_lcd_text = false; | 8129 bool update_lcd_text = false; |
| 8124 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); | 8130 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); |
| 8125 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); | 8131 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); |
| 8126 | 8132 |
| 8127 LayerTreeHostImpl::FrameData frame; | 8133 TestFrameData frame; |
| 8128 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 8134 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 8129 | 8135 |
| 8130 ASSERT_EQ(1u, frame.render_passes.size()); | 8136 ASSERT_EQ(1u, frame.render_passes.size()); |
| 8131 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); | 8137 ASSERT_LE(1u, frame.render_passes[0]->quad_list.size()); |
| 8132 const DrawQuad* quad = frame.render_passes[0]->quad_list.front(); | 8138 const DrawQuad* quad = frame.render_passes[0]->quad_list.front(); |
| 8133 | 8139 |
| 8134 bool clipped = false, force_aa = false; | 8140 bool clipped = false, force_aa = false; |
| 8135 gfx::QuadF device_layer_quad = MathUtil::MapQuad( | 8141 gfx::QuadF device_layer_quad = MathUtil::MapQuad( |
| 8136 quad->shared_quad_state->quad_to_target_transform, | 8142 quad->shared_quad_state->quad_to_target_transform, |
| 8137 gfx::QuadF(gfx::RectF(quad->shared_quad_state->visible_quad_layer_rect)), | 8143 gfx::QuadF(gfx::RectF(quad->shared_quad_state->visible_quad_layer_rect)), |
| (...skipping 14 matching lines...) Expand all Loading... |
| 8152 | 8158 |
| 8153 void DidReceiveCompositorFrameAckOnImplThread() override { acks_received_++; } | 8159 void DidReceiveCompositorFrameAckOnImplThread() override { acks_received_++; } |
| 8154 | 8160 |
| 8155 int acks_received_ = 0; | 8161 int acks_received_ = 0; |
| 8156 }; | 8162 }; |
| 8157 | 8163 |
| 8158 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) { | 8164 TEST_F(CompositorFrameMetadataTest, CompositorFrameAckCountsAsSwapComplete) { |
| 8159 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); | 8165 SetupRootLayerImpl(FakeLayerWithQuads::Create(host_impl_->active_tree(), 1)); |
| 8160 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 8166 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 8161 { | 8167 { |
| 8162 LayerTreeHostImpl::FrameData frame; | 8168 TestFrameData frame; |
| 8163 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 8169 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 8164 host_impl_->DrawLayers(&frame); | 8170 host_impl_->DrawLayers(&frame); |
| 8165 host_impl_->DidDrawAllLayers(frame); | 8171 host_impl_->DidDrawAllLayers(frame); |
| 8166 } | 8172 } |
| 8167 host_impl_->ReclaimResources(ReturnedResourceArray()); | 8173 host_impl_->ReclaimResources(ReturnedResourceArray()); |
| 8168 host_impl_->DidReceiveCompositorFrameAck(); | 8174 host_impl_->DidReceiveCompositorFrameAck(); |
| 8169 EXPECT_EQ(acks_received_, 1); | 8175 EXPECT_EQ(acks_received_, 1); |
| 8170 } | 8176 } |
| 8171 | 8177 |
| 8172 class CountingSoftwareDevice : public SoftwareOutputDevice { | 8178 class CountingSoftwareDevice : public SoftwareOutputDevice { |
| (...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8492 CreateHostImpl(DefaultSettings(), std::move(compositor_frame_sink)); | 8498 CreateHostImpl(DefaultSettings(), std::move(compositor_frame_sink)); |
| 8493 | 8499 |
| 8494 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); | 8500 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); |
| 8495 | 8501 |
| 8496 LayerImpl* root = host_impl_->active_tree()->root_layer_for_testing(); | 8502 LayerImpl* root = host_impl_->active_tree()->root_layer_for_testing(); |
| 8497 root->test_properties()->copy_requests.push_back( | 8503 root->test_properties()->copy_requests.push_back( |
| 8498 CopyOutputRequest::CreateRequest( | 8504 CopyOutputRequest::CreateRequest( |
| 8499 base::Bind(&ShutdownReleasesContext_Callback))); | 8505 base::Bind(&ShutdownReleasesContext_Callback))); |
| 8500 host_impl_->active_tree()->BuildPropertyTreesForTesting(); | 8506 host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
| 8501 | 8507 |
| 8502 LayerTreeHostImpl::FrameData frame; | 8508 TestFrameData frame; |
| 8503 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 8509 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 8504 host_impl_->DrawLayers(&frame); | 8510 host_impl_->DrawLayers(&frame); |
| 8505 host_impl_->DidDrawAllLayers(frame); | 8511 host_impl_->DidDrawAllLayers(frame); |
| 8506 | 8512 |
| 8507 // The CopyOutputResult's callback has a ref on the ContextProvider and a | 8513 // The CopyOutputResult's callback has a ref on the ContextProvider and a |
| 8508 // texture in a texture mailbox. | 8514 // texture in a texture mailbox. |
| 8509 EXPECT_FALSE(context_provider->HasOneRef()); | 8515 EXPECT_FALSE(context_provider->HasOneRef()); |
| 8510 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); | 8516 EXPECT_EQ(1u, context_provider->TestContext3d()->NumTextures()); |
| 8511 | 8517 |
| 8512 host_impl_->ReleaseCompositorFrameSink(); | 8518 host_impl_->ReleaseCompositorFrameSink(); |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8841 host_impl_->compositor_frame_sink()); | 8847 host_impl_->compositor_frame_sink()); |
| 8842 | 8848 |
| 8843 ui::LatencyInfo latency_info; | 8849 ui::LatencyInfo latency_info; |
| 8844 latency_info.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, | 8850 latency_info.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, |
| 8845 0); | 8851 0); |
| 8846 std::unique_ptr<SwapPromise> swap_promise( | 8852 std::unique_ptr<SwapPromise> swap_promise( |
| 8847 new LatencyInfoSwapPromise(latency_info)); | 8853 new LatencyInfoSwapPromise(latency_info)); |
| 8848 host_impl_->active_tree()->QueuePinnedSwapPromise(std::move(swap_promise)); | 8854 host_impl_->active_tree()->QueuePinnedSwapPromise(std::move(swap_promise)); |
| 8849 | 8855 |
| 8850 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); | 8856 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); |
| 8851 LayerTreeHostImpl::FrameData frame; | 8857 TestFrameData frame; |
| 8852 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 8858 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 8853 EXPECT_TRUE(host_impl_->DrawLayers(&frame)); | 8859 EXPECT_TRUE(host_impl_->DrawLayers(&frame)); |
| 8854 host_impl_->DidDrawAllLayers(frame); | 8860 host_impl_->DidDrawAllLayers(frame); |
| 8855 | 8861 |
| 8856 const std::vector<ui::LatencyInfo>& metadata_latency_after = | 8862 const std::vector<ui::LatencyInfo>& metadata_latency_after = |
| 8857 fake_compositor_frame_sink->last_sent_frame()->metadata.latency_info; | 8863 fake_compositor_frame_sink->last_sent_frame()->metadata.latency_info; |
| 8858 EXPECT_EQ(1u, metadata_latency_after.size()); | 8864 EXPECT_EQ(1u, metadata_latency_after.size()); |
| 8859 EXPECT_TRUE(metadata_latency_after[0].FindLatency( | 8865 EXPECT_TRUE(metadata_latency_after[0].FindLatency( |
| 8860 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL)); | 8866 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL)); |
| 8861 } | 8867 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 8885 selection.start.layer_id = root_layer_id; | 8891 selection.start.layer_id = root_layer_id; |
| 8886 selection.start.edge_bottom = selection_bottom; | 8892 selection.start.edge_bottom = selection_bottom; |
| 8887 selection.start.edge_top = selection_top; | 8893 selection.start.edge_top = selection_top; |
| 8888 selection.end = selection.start; | 8894 selection.end = selection.start; |
| 8889 host_impl_->active_tree()->RegisterSelection(selection); | 8895 host_impl_->active_tree()->RegisterSelection(selection); |
| 8890 | 8896 |
| 8891 // Trigger a draw-swap sequence. | 8897 // Trigger a draw-swap sequence. |
| 8892 host_impl_->SetNeedsRedraw(); | 8898 host_impl_->SetNeedsRedraw(); |
| 8893 | 8899 |
| 8894 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); | 8900 gfx::Rect full_frame_damage(host_impl_->DrawViewportSize()); |
| 8895 LayerTreeHostImpl::FrameData frame; | 8901 TestFrameData frame; |
| 8896 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 8902 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 8897 EXPECT_TRUE(host_impl_->DrawLayers(&frame)); | 8903 EXPECT_TRUE(host_impl_->DrawLayers(&frame)); |
| 8898 host_impl_->DidDrawAllLayers(frame); | 8904 host_impl_->DidDrawAllLayers(frame); |
| 8899 | 8905 |
| 8900 // Ensure the selection bounds have propagated to the frame metadata. | 8906 // Ensure the selection bounds have propagated to the frame metadata. |
| 8901 const Selection<gfx::SelectionBound>& selection_after = | 8907 const Selection<gfx::SelectionBound>& selection_after = |
| 8902 fake_compositor_frame_sink->last_sent_frame()->metadata.selection; | 8908 fake_compositor_frame_sink->last_sent_frame()->metadata.selection; |
| 8903 EXPECT_EQ(selection.start.type, selection_after.start.type()); | 8909 EXPECT_EQ(selection.start.type, selection_after.start.type()); |
| 8904 EXPECT_EQ(selection.end.type, selection_after.end.type()); | 8910 EXPECT_EQ(selection.end.type, selection_after.end.type()); |
| 8905 EXPECT_EQ(gfx::PointF(selection_bottom), selection_after.start.edge_bottom()); | 8911 EXPECT_EQ(gfx::PointF(selection_bottom), selection_after.start.edge_bottom()); |
| (...skipping 2245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11151 EXPECT_LE(1, num_lost_surfaces_); | 11157 EXPECT_LE(1, num_lost_surfaces_); |
| 11152 } | 11158 } |
| 11153 | 11159 |
| 11154 size_t CountRenderPassesWithId(const RenderPassList& list, int id) { | 11160 size_t CountRenderPassesWithId(const RenderPassList& list, int id) { |
| 11155 return std::count_if( | 11161 return std::count_if( |
| 11156 list.begin(), list.end(), | 11162 list.begin(), list.end(), |
| 11157 [id](const std::unique_ptr<RenderPass>& p) { return p->id == id; }); | 11163 [id](const std::unique_ptr<RenderPass>& p) { return p->id == id; }); |
| 11158 } | 11164 } |
| 11159 | 11165 |
| 11160 TEST_F(LayerTreeHostImplTest, RemoveUnreferencedRenderPass) { | 11166 TEST_F(LayerTreeHostImplTest, RemoveUnreferencedRenderPass) { |
| 11161 LayerTreeHostImpl::FrameData frame; | 11167 TestFrameData frame; |
| 11162 frame.render_passes.push_back(RenderPass::Create()); | 11168 frame.render_passes.push_back(RenderPass::Create()); |
| 11163 RenderPass* pass3 = frame.render_passes.back().get(); | 11169 RenderPass* pass3 = frame.render_passes.back().get(); |
| 11164 frame.render_passes.push_back(RenderPass::Create()); | 11170 frame.render_passes.push_back(RenderPass::Create()); |
| 11165 RenderPass* pass2 = frame.render_passes.back().get(); | 11171 RenderPass* pass2 = frame.render_passes.back().get(); |
| 11166 frame.render_passes.push_back(RenderPass::Create()); | 11172 frame.render_passes.push_back(RenderPass::Create()); |
| 11167 RenderPass* pass1 = frame.render_passes.back().get(); | 11173 RenderPass* pass1 = frame.render_passes.back().get(); |
| 11168 | 11174 |
| 11169 pass1->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); | 11175 pass1->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 11170 pass2->SetNew(2, gfx::Rect(), gfx::Rect(), gfx::Transform()); | 11176 pass2->SetNew(2, gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 11171 pass3->SetNew(3, gfx::Rect(), gfx::Rect(), gfx::Transform()); | 11177 pass3->SetNew(3, gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 11188 // But pass2 is not referenced by pass1. So pass2 and pass3 should be culled. | 11194 // But pass2 is not referenced by pass1. So pass2 and pass3 should be culled. |
| 11189 FakeLayerTreeHostImpl::RemoveRenderPasses(&frame); | 11195 FakeLayerTreeHostImpl::RemoveRenderPasses(&frame); |
| 11190 EXPECT_EQ(1u, frame.render_passes.size()); | 11196 EXPECT_EQ(1u, frame.render_passes.size()); |
| 11191 EXPECT_EQ(1u, CountRenderPassesWithId(frame.render_passes, 1)); | 11197 EXPECT_EQ(1u, CountRenderPassesWithId(frame.render_passes, 1)); |
| 11192 EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 2)); | 11198 EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 2)); |
| 11193 EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 3)); | 11199 EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 3)); |
| 11194 EXPECT_EQ(1, frame.render_passes[0]->id); | 11200 EXPECT_EQ(1, frame.render_passes[0]->id); |
| 11195 } | 11201 } |
| 11196 | 11202 |
| 11197 TEST_F(LayerTreeHostImplTest, RemoveEmptyRenderPass) { | 11203 TEST_F(LayerTreeHostImplTest, RemoveEmptyRenderPass) { |
| 11198 LayerTreeHostImpl::FrameData frame; | 11204 TestFrameData frame; |
| 11199 frame.render_passes.push_back(RenderPass::Create()); | 11205 frame.render_passes.push_back(RenderPass::Create()); |
| 11200 RenderPass* pass3 = frame.render_passes.back().get(); | 11206 RenderPass* pass3 = frame.render_passes.back().get(); |
| 11201 frame.render_passes.push_back(RenderPass::Create()); | 11207 frame.render_passes.push_back(RenderPass::Create()); |
| 11202 RenderPass* pass2 = frame.render_passes.back().get(); | 11208 RenderPass* pass2 = frame.render_passes.back().get(); |
| 11203 frame.render_passes.push_back(RenderPass::Create()); | 11209 frame.render_passes.push_back(RenderPass::Create()); |
| 11204 RenderPass* pass1 = frame.render_passes.back().get(); | 11210 RenderPass* pass1 = frame.render_passes.back().get(); |
| 11205 | 11211 |
| 11206 pass1->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); | 11212 pass1->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 11207 pass2->SetNew(2, gfx::Rect(), gfx::Rect(), gfx::Transform()); | 11213 pass2->SetNew(2, gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 11208 pass3->SetNew(3, gfx::Rect(), gfx::Rect(), gfx::Transform()); | 11214 pass3->SetNew(3, gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 11230 EXPECT_EQ(1u, CountRenderPassesWithId(frame.render_passes, 1)); | 11236 EXPECT_EQ(1u, CountRenderPassesWithId(frame.render_passes, 1)); |
| 11231 EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 2)); | 11237 EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 2)); |
| 11232 EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 3)); | 11238 EXPECT_EQ(0u, CountRenderPassesWithId(frame.render_passes, 3)); |
| 11233 EXPECT_EQ(1, frame.render_passes[0]->id); | 11239 EXPECT_EQ(1, frame.render_passes[0]->id); |
| 11234 // The RenderPassDrawQuad should be removed from pass1. | 11240 // The RenderPassDrawQuad should be removed from pass1. |
| 11235 EXPECT_EQ(1u, pass1->quad_list.size()); | 11241 EXPECT_EQ(1u, pass1->quad_list.size()); |
| 11236 EXPECT_EQ(DrawQuad::SOLID_COLOR, pass1->quad_list.ElementAt(0)->material); | 11242 EXPECT_EQ(DrawQuad::SOLID_COLOR, pass1->quad_list.ElementAt(0)->material); |
| 11237 } | 11243 } |
| 11238 | 11244 |
| 11239 TEST_F(LayerTreeHostImplTest, DoNotRemoveEmptyRootRenderPass) { | 11245 TEST_F(LayerTreeHostImplTest, DoNotRemoveEmptyRootRenderPass) { |
| 11240 LayerTreeHostImpl::FrameData frame; | 11246 TestFrameData frame; |
| 11241 frame.render_passes.push_back(RenderPass::Create()); | 11247 frame.render_passes.push_back(RenderPass::Create()); |
| 11242 RenderPass* pass3 = frame.render_passes.back().get(); | 11248 RenderPass* pass3 = frame.render_passes.back().get(); |
| 11243 frame.render_passes.push_back(RenderPass::Create()); | 11249 frame.render_passes.push_back(RenderPass::Create()); |
| 11244 RenderPass* pass2 = frame.render_passes.back().get(); | 11250 RenderPass* pass2 = frame.render_passes.back().get(); |
| 11245 frame.render_passes.push_back(RenderPass::Create()); | 11251 frame.render_passes.push_back(RenderPass::Create()); |
| 11246 RenderPass* pass1 = frame.render_passes.back().get(); | 11252 RenderPass* pass1 = frame.render_passes.back().get(); |
| 11247 | 11253 |
| 11248 pass1->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); | 11254 pass1->SetNew(1, gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 11249 pass2->SetNew(2, gfx::Rect(), gfx::Rect(), gfx::Transform()); | 11255 pass2->SetNew(2, gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 11250 pass3->SetNew(3, gfx::Rect(), gfx::Rect(), gfx::Transform()); | 11256 pass3->SetNew(3, gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11296 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2); | 11302 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2); |
| 11297 FakeVideoFrameController controller; | 11303 FakeVideoFrameController controller; |
| 11298 | 11304 |
| 11299 host_impl_->WillBeginImplFrame(begin_frame_args); | 11305 host_impl_->WillBeginImplFrame(begin_frame_args); |
| 11300 EXPECT_FALSE(controller.begin_frame_args().IsValid()); | 11306 EXPECT_FALSE(controller.begin_frame_args().IsValid()); |
| 11301 host_impl_->AddVideoFrameController(&controller); | 11307 host_impl_->AddVideoFrameController(&controller); |
| 11302 EXPECT_TRUE(controller.begin_frame_args().IsValid()); | 11308 EXPECT_TRUE(controller.begin_frame_args().IsValid()); |
| 11303 host_impl_->DidFinishImplFrame(); | 11309 host_impl_->DidFinishImplFrame(); |
| 11304 | 11310 |
| 11305 EXPECT_FALSE(controller.did_draw_frame()); | 11311 EXPECT_FALSE(controller.did_draw_frame()); |
| 11306 LayerTreeHostImpl::FrameData frame; | 11312 TestFrameData frame; |
| 11307 host_impl_->DidDrawAllLayers(frame); | 11313 host_impl_->DidDrawAllLayers(frame); |
| 11308 EXPECT_TRUE(controller.did_draw_frame()); | 11314 EXPECT_TRUE(controller.did_draw_frame()); |
| 11309 | 11315 |
| 11310 controller.OnBeginFrame(begin_frame_args); | 11316 controller.OnBeginFrame(begin_frame_args); |
| 11311 EXPECT_FALSE(controller.did_draw_frame()); | 11317 EXPECT_FALSE(controller.did_draw_frame()); |
| 11312 host_impl_->RemoveVideoFrameController(&controller); | 11318 host_impl_->RemoveVideoFrameController(&controller); |
| 11313 host_impl_->DidDrawAllLayers(frame); | 11319 host_impl_->DidDrawAllLayers(frame); |
| 11314 EXPECT_FALSE(controller.did_draw_frame()); | 11320 EXPECT_FALSE(controller.did_draw_frame()); |
| 11315 } | 11321 } |
| 11316 | 11322 |
| 11317 TEST_F(LayerTreeHostImplTest, AddVideoFrameControllerOutsideFrame) { | 11323 TEST_F(LayerTreeHostImplTest, AddVideoFrameControllerOutsideFrame) { |
| 11318 BeginFrameArgs begin_frame_args = | 11324 BeginFrameArgs begin_frame_args = |
| 11319 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2); | 11325 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2); |
| 11320 FakeVideoFrameController controller; | 11326 FakeVideoFrameController controller; |
| 11321 | 11327 |
| 11322 host_impl_->WillBeginImplFrame(begin_frame_args); | 11328 host_impl_->WillBeginImplFrame(begin_frame_args); |
| 11323 host_impl_->DidFinishImplFrame(); | 11329 host_impl_->DidFinishImplFrame(); |
| 11324 | 11330 |
| 11325 EXPECT_FALSE(controller.begin_frame_args().IsValid()); | 11331 EXPECT_FALSE(controller.begin_frame_args().IsValid()); |
| 11326 host_impl_->AddVideoFrameController(&controller); | 11332 host_impl_->AddVideoFrameController(&controller); |
| 11327 EXPECT_FALSE(controller.begin_frame_args().IsValid()); | 11333 EXPECT_FALSE(controller.begin_frame_args().IsValid()); |
| 11328 | 11334 |
| 11329 begin_frame_args = CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 3); | 11335 begin_frame_args = CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 3); |
| 11330 EXPECT_FALSE(controller.begin_frame_args().IsValid()); | 11336 EXPECT_FALSE(controller.begin_frame_args().IsValid()); |
| 11331 host_impl_->WillBeginImplFrame(begin_frame_args); | 11337 host_impl_->WillBeginImplFrame(begin_frame_args); |
| 11332 EXPECT_TRUE(controller.begin_frame_args().IsValid()); | 11338 EXPECT_TRUE(controller.begin_frame_args().IsValid()); |
| 11333 | 11339 |
| 11334 EXPECT_FALSE(controller.did_draw_frame()); | 11340 EXPECT_FALSE(controller.did_draw_frame()); |
| 11335 LayerTreeHostImpl::FrameData frame; | 11341 TestFrameData frame; |
| 11336 host_impl_->DidDrawAllLayers(frame); | 11342 host_impl_->DidDrawAllLayers(frame); |
| 11337 EXPECT_TRUE(controller.did_draw_frame()); | 11343 EXPECT_TRUE(controller.did_draw_frame()); |
| 11338 | 11344 |
| 11339 controller.OnBeginFrame(begin_frame_args); | 11345 controller.OnBeginFrame(begin_frame_args); |
| 11340 EXPECT_FALSE(controller.did_draw_frame()); | 11346 EXPECT_FALSE(controller.did_draw_frame()); |
| 11341 host_impl_->RemoveVideoFrameController(&controller); | 11347 host_impl_->RemoveVideoFrameController(&controller); |
| 11342 host_impl_->DidDrawAllLayers(frame); | 11348 host_impl_->DidDrawAllLayers(frame); |
| 11343 EXPECT_FALSE(controller.did_draw_frame()); | 11349 EXPECT_FALSE(controller.did_draw_frame()); |
| 11344 } | 11350 } |
| 11345 | 11351 |
| (...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11988 else | 11994 else |
| 11989 EXPECT_FALSE(tile->HasRasterTask()); | 11995 EXPECT_FALSE(tile->HasRasterTask()); |
| 11990 } | 11996 } |
| 11991 Region expected_invalidation( | 11997 Region expected_invalidation( |
| 11992 raster_source->GetRectForImage(checkerable_image->uniqueID())); | 11998 raster_source->GetRectForImage(checkerable_image->uniqueID())); |
| 11993 EXPECT_EQ(expected_invalidation, *(root->GetPendingInvalidation())); | 11999 EXPECT_EQ(expected_invalidation, *(root->GetPendingInvalidation())); |
| 11994 } | 12000 } |
| 11995 | 12001 |
| 11996 } // namespace | 12002 } // namespace |
| 11997 } // namespace cc | 12003 } // namespace cc |
| OLD | NEW |