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

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

Issue 2712983003: [cc] Set BeginFrame sequence numbers on CompositorFrames from Scheduler. (Closed)
Patch Set: fix comment + test. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <cmath> 10 #include <cmath>
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698