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

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

Issue 1418273002: cc: Move draw params from SetExternalDrawConstraints to OnDraw (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tests fixed Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 void TearDown() override {} 112 void TearDown() override {}
113 113
114 void UpdateRendererCapabilitiesOnImplThread() override {} 114 void UpdateRendererCapabilitiesOnImplThread() override {}
115 void DidLoseOutputSurfaceOnImplThread() override {} 115 void DidLoseOutputSurfaceOnImplThread() override {}
116 void CommitVSyncParameters(base::TimeTicks timebase, 116 void CommitVSyncParameters(base::TimeTicks timebase,
117 base::TimeDelta interval) override {} 117 base::TimeDelta interval) override {}
118 void SetEstimatedParentDrawTime(base::TimeDelta draw_time) override {} 118 void SetEstimatedParentDrawTime(base::TimeDelta draw_time) override {}
119 void SetMaxSwapsPendingOnImplThread(int max) override {} 119 void SetMaxSwapsPendingOnImplThread(int max) override {}
120 void DidSwapBuffersOnImplThread() override {} 120 void DidSwapBuffersOnImplThread() override {}
121 void DidSwapBuffersCompleteOnImplThread() override {} 121 void DidSwapBuffersCompleteOnImplThread() override {}
122 void OnResourcelessSoftareDrawStateChanged(bool resourceless_draw) override {}
123 void OnCanDrawStateChanged(bool can_draw) override { 122 void OnCanDrawStateChanged(bool can_draw) override {
124 on_can_draw_state_changed_called_ = true; 123 on_can_draw_state_changed_called_ = true;
125 } 124 }
126 void NotifyReadyToActivate() override { 125 void NotifyReadyToActivate() override {
127 did_notify_ready_to_activate_ = true; 126 did_notify_ready_to_activate_ = true;
128 host_impl_->ActivateSyncTree(); 127 host_impl_->ActivateSyncTree();
129 } 128 }
130 void NotifyReadyToDraw() override {} 129 void NotifyReadyToDraw() override {}
131 void SetNeedsRedrawOnImplThread() override { did_request_redraw_ = true; } 130 void SetNeedsRedrawOnImplThread() override { did_request_redraw_ = true; }
132 void SetNeedsRedrawRectOnImplThread(const gfx::Rect& damage_rect) override { 131 void SetNeedsRedrawRectOnImplThread(const gfx::Rect& damage_rect) override {
(...skipping 13 matching lines...) Expand all
146 base::TimeDelta delay) override { 145 base::TimeDelta delay) override {
147 animation_task_ = task; 146 animation_task_ = task;
148 requested_animation_delay_ = delay; 147 requested_animation_delay_ = delay;
149 } 148 }
150 void DidActivateSyncTree() override {} 149 void DidActivateSyncTree() override {}
151 void WillPrepareTiles() override {} 150 void WillPrepareTiles() override {}
152 void DidPrepareTiles() override {} 151 void DidPrepareTiles() override {}
153 void DidCompletePageScaleAnimationOnImplThread() override { 152 void DidCompletePageScaleAnimationOnImplThread() override {
154 did_complete_page_scale_animation_ = true; 153 did_complete_page_scale_animation_ = true;
155 } 154 }
156 void OnDrawForOutputSurface() override {} 155 void OnDrawForOutputSurface(bool resourceless_software_draw) override {
156 scoped_ptr<LayerTreeHostImpl::FrameData> frame(
157 new LayerTreeHostImpl::FrameData);
158 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(frame.get()));
159 host_impl_->DrawLayers(frame.get());
160 host_impl_->DidDrawAllLayers(*frame);
161 host_impl_->SwapBuffers(*frame);
162 last_on_draw_frame_ = frame.Pass();
danakj 2015/11/24 21:17:31 std::move (include <utility> too)
boliu 2015/11/24 23:27:38 Done \o/
163 }
157 void PostFrameTimingEventsOnImplThread( 164 void PostFrameTimingEventsOnImplThread(
158 scoped_ptr<FrameTimingTracker::CompositeTimingSet> composite_events, 165 scoped_ptr<FrameTimingTracker::CompositeTimingSet> composite_events,
159 scoped_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events) 166 scoped_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events)
160 override {} 167 override {}
161 168
162 void set_reduce_memory_result(bool reduce_memory_result) { 169 void set_reduce_memory_result(bool reduce_memory_result) {
163 reduce_memory_result_ = reduce_memory_result; 170 reduce_memory_result_ = reduce_memory_result;
164 } 171 }
165 172
166 virtual bool CreateHostImpl(const LayerTreeSettings& settings, 173 virtual bool CreateHostImpl(const LayerTreeSettings& settings,
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
442 bool on_can_draw_state_changed_called_; 449 bool on_can_draw_state_changed_called_;
443 bool did_notify_ready_to_activate_; 450 bool did_notify_ready_to_activate_;
444 bool did_request_commit_; 451 bool did_request_commit_;
445 bool did_request_redraw_; 452 bool did_request_redraw_;
446 bool did_request_animate_; 453 bool did_request_animate_;
447 bool did_request_prepare_tiles_; 454 bool did_request_prepare_tiles_;
448 bool did_complete_page_scale_animation_; 455 bool did_complete_page_scale_animation_;
449 bool reduce_memory_result_; 456 bool reduce_memory_result_;
450 base::Closure animation_task_; 457 base::Closure animation_task_;
451 base::TimeDelta requested_animation_delay_; 458 base::TimeDelta requested_animation_delay_;
459 scoped_ptr<LayerTreeHostImpl::FrameData> last_on_draw_frame_;
452 }; 460 };
453 461
454 // A test fixture for new animation timelines tests. 462 // A test fixture for new animation timelines tests.
455 class LayerTreeHostImplTimelinesTest : public LayerTreeHostImplTest { 463 class LayerTreeHostImplTimelinesTest : public LayerTreeHostImplTest {
456 public: 464 public:
457 void SetUp() override { 465 void SetUp() override {
458 LayerTreeSettings settings = DefaultSettings(); 466 LayerTreeSettings settings = DefaultSettings();
459 settings.use_compositor_animation_timelines = true; 467 settings.use_compositor_animation_timelines = true;
460 CreateHostImpl(settings, CreateOutputSurface()); 468 CreateHostImpl(settings, CreateOutputSurface());
461 } 469 }
462 }; 470 };
463 471
464 TEST_F(LayerTreeHostImplTest, NotifyIfCanDrawChanged) { 472 TEST_F(LayerTreeHostImplTest, NotifyIfCanDrawChanged) {
465 bool always_draw = false; 473 bool always_draw = false;
466 CheckNotifyCalledIfCanDrawChanged(always_draw); 474 CheckNotifyCalledIfCanDrawChanged(always_draw);
467 } 475 }
468 476
469 TEST_F(LayerTreeHostImplTest, CanDrawIncompleteFrames) { 477 TEST_F(LayerTreeHostImplTest, CanDrawIncompleteFrames) {
470 CreateHostImpl(DefaultSettings(), 478 CreateHostImpl(DefaultSettings(),
471 FakeOutputSurface::CreateSoftware( 479 FakeOutputSurface::CreateSoftware(
472 make_scoped_ptr(new SoftwareOutputDevice()))); 480 make_scoped_ptr(new SoftwareOutputDevice())));
473 const gfx::Transform external_transform;
474 const gfx::Rect external_viewport;
475 const gfx::Rect external_clip;
476 const bool resourceless_software_draw = true; 481 const bool resourceless_software_draw = true;
477 host_impl_->SetExternalDrawConstraints( 482 host_impl_->SetResourcelessSoftwareDrawForTesting(resourceless_software_draw);
478 external_transform, external_viewport, external_clip, external_viewport,
479 external_transform, resourceless_software_draw);
480 483
481 bool always_draw = true; 484 bool always_draw = true;
482 CheckNotifyCalledIfCanDrawChanged(always_draw); 485 CheckNotifyCalledIfCanDrawChanged(always_draw);
483 } 486 }
484 487
485 TEST_F(LayerTreeHostImplTest, ScrollDeltaNoLayers) { 488 TEST_F(LayerTreeHostImplTest, ScrollDeltaNoLayers) {
486 ASSERT_FALSE(host_impl_->active_tree()->root_layer()); 489 ASSERT_FALSE(host_impl_->active_tree()->root_layer());
487 490
488 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); 491 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas();
489 ASSERT_EQ(scroll_info->scrolls.size(), 0u); 492 ASSERT_EQ(scroll_info->scrolls.size(), 0u);
(...skipping 2635 matching lines...) Expand 10 before | Expand all | Expand 10 after
3125 TEST_F(LayerTreeHostImplTest, 3128 TEST_F(LayerTreeHostImplTest,
3126 PrepareToDrawWhenDrawAndSwapFullViewportEveryFrame) { 3129 PrepareToDrawWhenDrawAndSwapFullViewportEveryFrame) {
3127 CreateHostImpl(DefaultSettings(), 3130 CreateHostImpl(DefaultSettings(),
3128 FakeOutputSurface::CreateSoftware( 3131 FakeOutputSurface::CreateSoftware(
3129 make_scoped_ptr(new SoftwareOutputDevice()))); 3132 make_scoped_ptr(new SoftwareOutputDevice())));
3130 3133
3131 const gfx::Transform external_transform; 3134 const gfx::Transform external_transform;
3132 const gfx::Rect external_viewport; 3135 const gfx::Rect external_viewport;
3133 const gfx::Rect external_clip; 3136 const gfx::Rect external_clip;
3134 const bool resourceless_software_draw = true; 3137 const bool resourceless_software_draw = true;
3135 host_impl_->SetExternalDrawConstraints( 3138 host_impl_->SetExternalDrawConstraints(external_viewport, external_transform);
3136 external_transform, external_viewport, external_clip, external_viewport,
3137 external_transform, resourceless_software_draw);
3138 3139
3139 std::vector<PrepareToDrawSuccessTestCase> cases; 3140 std::vector<PrepareToDrawSuccessTestCase> cases;
3140 3141
3141 // 0. Default case. 3142 // 0. Default case.
3142 cases.push_back(PrepareToDrawSuccessTestCase(DRAW_SUCCESS)); 3143 cases.push_back(PrepareToDrawSuccessTestCase(DRAW_SUCCESS));
3143 // 1. Animation with missing tile. 3144 // 1. Animation with missing tile.
3144 cases.push_back(PrepareToDrawSuccessTestCase(DRAW_SUCCESS)); 3145 cases.push_back(PrepareToDrawSuccessTestCase(DRAW_SUCCESS));
3145 cases.back().layer_between.has_missing_tile = true; 3146 cases.back().layer_between.has_missing_tile = true;
3146 cases.back().layer_between.is_animating = true; 3147 cases.back().layer_between.is_animating = true;
3147 // 2. High res required with incomplete tile. 3148 // 2. High res required with incomplete tile.
3148 cases.push_back(PrepareToDrawSuccessTestCase(DRAW_SUCCESS)); 3149 cases.push_back(PrepareToDrawSuccessTestCase(DRAW_SUCCESS));
3149 cases.back().high_res_required = true; 3150 cases.back().high_res_required = true;
3150 cases.back().layer_between.has_incomplete_tile = true; 3151 cases.back().layer_between.has_incomplete_tile = true;
3151 // 3. High res required with missing tile. 3152 // 3. High res required with missing tile.
3152 cases.push_back(PrepareToDrawSuccessTestCase(DRAW_SUCCESS)); 3153 cases.push_back(PrepareToDrawSuccessTestCase(DRAW_SUCCESS));
3153 cases.back().high_res_required = true; 3154 cases.back().high_res_required = true;
3154 cases.back().layer_between.has_missing_tile = true; 3155 cases.back().layer_between.has_missing_tile = true;
3155 3156
3156 host_impl_->active_tree()->SetRootLayer( 3157 host_impl_->active_tree()->SetRootLayer(
3157 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1)); 3158 DidDrawCheckLayer::Create(host_impl_->active_tree(), 1));
3158 DidDrawCheckLayer* root = 3159 DidDrawCheckLayer* root =
3159 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer()); 3160 static_cast<DidDrawCheckLayer*>(host_impl_->active_tree()->root_layer());
3160 root->SetHasRenderSurface(true); 3161 root->SetHasRenderSurface(true);
3161 3162
3162 LayerTreeHostImpl::FrameData frame; 3163 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
3163 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); 3164 resourceless_software_draw);
3164 host_impl_->DrawLayers(&frame);
3165 host_impl_->DidDrawAllLayers(frame);
3166 host_impl_->SwapBuffers(frame);
3167 3165
3168 for (size_t i = 0; i < cases.size(); ++i) { 3166 for (size_t i = 0; i < cases.size(); ++i) {
3169 const auto& testcase = cases[i]; 3167 const auto& testcase = cases[i];
3170 std::vector<LayerImpl*> to_remove; 3168 std::vector<LayerImpl*> to_remove;
3171 for (auto* child : root->children()) 3169 for (auto* child : root->children())
3172 to_remove.push_back(child); 3170 to_remove.push_back(child);
3173 for (auto* child : to_remove) 3171 for (auto* child : to_remove)
3174 root->RemoveChild(child); 3172 root->RemoveChild(child);
3175 3173
3176 std::ostringstream scope; 3174 std::ostringstream scope;
(...skipping 23 matching lines...) Expand all
3200 testcase.layer_after.has_incomplete_tile, 3198 testcase.layer_after.has_incomplete_tile,
3201 testcase.layer_after.is_animating, host_impl_->resource_provider())); 3199 testcase.layer_after.is_animating, host_impl_->resource_provider()));
3202 DidDrawCheckLayer* after = 3200 DidDrawCheckLayer* after =
3203 static_cast<DidDrawCheckLayer*>(root->children().back()); 3201 static_cast<DidDrawCheckLayer*>(root->children().back());
3204 if (testcase.layer_after.has_copy_request) 3202 if (testcase.layer_after.has_copy_request)
3205 after->AddCopyRequest(); 3203 after->AddCopyRequest();
3206 3204
3207 if (testcase.high_res_required) 3205 if (testcase.high_res_required)
3208 host_impl_->SetRequiresHighResToDraw(); 3206 host_impl_->SetRequiresHighResToDraw();
3209 3207
3210 LayerTreeHostImpl::FrameData frame; 3208 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
3211 EXPECT_EQ(testcase.expected_result, PrepareToDrawFrame(&frame)); 3209 resourceless_software_draw);
3212 host_impl_->DrawLayers(&frame);
3213 host_impl_->DidDrawAllLayers(frame);
3214 host_impl_->SwapBuffers(frame);
3215 } 3210 }
3216 } 3211 }
3217 3212
3218 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) { 3213 TEST_F(LayerTreeHostImplTest, ScrollRootIgnored) {
3219 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); 3214 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1);
3220 root->SetScrollClipLayer(Layer::INVALID_ID); 3215 root->SetScrollClipLayer(Layer::INVALID_ID);
3221 root->SetHasRenderSurface(true); 3216 root->SetHasRenderSurface(true);
3222 host_impl_->active_tree()->SetRootLayer(root.Pass()); 3217 host_impl_->active_tree()->SetRootLayer(root.Pass());
3223 DrawFrame(); 3218 DrawFrame();
3224 3219
(...skipping 2461 matching lines...) Expand 10 before | Expand all | Expand 10 after
5686 texture_quad->rect.bottom() / gutter_texture_size_pixels.height()); 5681 texture_quad->rect.bottom() / gutter_texture_size_pixels.height());
5687 } 5682 }
5688 } 5683 }
5689 5684
5690 gfx::Size DipSizeToPixelSize(const gfx::Size& size) { 5685 gfx::Size DipSizeToPixelSize(const gfx::Size& size) {
5691 return gfx::ScaleToRoundedSize( 5686 return gfx::ScaleToRoundedSize(
5692 size, host_impl_->active_tree()->device_scale_factor()); 5687 size, host_impl_->active_tree()->device_scale_factor());
5693 } 5688 }
5694 5689
5695 void SetResourcelessSoftwareDraw() { 5690 void SetResourcelessSoftwareDraw() {
5696 const gfx::Transform external_transform;
5697 const gfx::Rect external_viewport;
5698 const gfx::Rect external_clip;
5699 const bool resourceless_software_draw = true; 5691 const bool resourceless_software_draw = true;
5700 host_impl_->SetExternalDrawConstraints( 5692 host_impl_->SetResourcelessSoftwareDrawForTesting(
5701 external_transform, external_viewport, external_clip, external_viewport, 5693 resourceless_software_draw);
5702 external_transform, resourceless_software_draw);
5703 } 5694 }
5704 5695
5705 DrawQuad::Material gutter_quad_material_; 5696 DrawQuad::Material gutter_quad_material_;
5706 gfx::Size gutter_texture_size_; 5697 gfx::Size gutter_texture_size_;
5707 gfx::Size viewport_size_; 5698 gfx::Size viewport_size_;
5708 BlendStateCheckLayer* child_; 5699 BlendStateCheckLayer* child_;
5709 bool did_activate_pending_tree_; 5700 bool did_activate_pending_tree_;
5710 }; 5701 };
5711 5702
5712 TEST_F(LayerTreeHostImplViewportCoveredTest, ViewportCovered) { 5703 TEST_F(LayerTreeHostImplViewportCoveredTest, ViewportCovered) {
(...skipping 23 matching lines...) Expand all
5736 TestEmptyLayer(); 5727 TestEmptyLayer();
5737 TestLayerInMiddleOfViewport(); 5728 TestLayerInMiddleOfViewport();
5738 TestLayerIsLargerThanViewport(); 5729 TestLayerIsLargerThanViewport();
5739 } 5730 }
5740 5731
5741 TEST_F(LayerTreeHostImplViewportCoveredTest, ActiveTreeGrowViewportInvalid) { 5732 TEST_F(LayerTreeHostImplViewportCoveredTest, ActiveTreeGrowViewportInvalid) {
5742 viewport_size_ = gfx::Size(1000, 1000); 5733 viewport_size_ = gfx::Size(1000, 1000);
5743 5734
5744 bool software = true; 5735 bool software = true;
5745 CreateHostImpl(DefaultSettings(), CreateFakeOutputSurface(software)); 5736 CreateHostImpl(DefaultSettings(), CreateFakeOutputSurface(software));
5746 SetResourcelessSoftwareDraw(); 5737 SetResourcelessSoftwareDraw();
danakj 2015/11/24 21:17:31 These tests that set resourceless software draw on
boliu 2015/11/24 23:27:38 Err, these tests are weird. They are explicitly dr
danakj 2015/12/10 22:33:54 Can these tests call OnDraw instead?
5747 5738
5748 // Pending tree to force active_tree size invalid. Not used otherwise. 5739 // Pending tree to force active_tree size invalid. Not used otherwise.
5749 host_impl_->CreatePendingTree(); 5740 host_impl_->CreatePendingTree();
5750 host_impl_->SetViewportSize(DipSizeToPixelSize(viewport_size_)); 5741 host_impl_->SetViewportSize(DipSizeToPixelSize(viewport_size_));
5751 EXPECT_TRUE(host_impl_->active_tree()->ViewportSizeInvalid()); 5742 EXPECT_TRUE(host_impl_->active_tree()->ViewportSizeInvalid());
5752 5743
5753 SetupActiveTreeLayers(); 5744 SetupActiveTreeLayers();
5754 TestEmptyLayer(); 5745 TestEmptyLayer();
5755 TestLayerInMiddleOfViewport(); 5746 TestLayerInMiddleOfViewport();
5756 TestLayerIsLargerThanViewport(); 5747 TestLayerIsLargerThanViewport();
(...skipping 835 matching lines...) Expand 10 before | Expand all | Expand 10 after
6592 DefaultSettings(), 6583 DefaultSettings(),
6593 FakeOutputSurface::CreateSoftware(make_scoped_ptr(software_device)))); 6584 FakeOutputSurface::CreateSoftware(make_scoped_ptr(software_device))));
6594 host_impl_->SetViewportSize(gfx::Size(50, 50)); 6585 host_impl_->SetViewportSize(gfx::Size(50, 50));
6595 6586
6596 SetupScrollAndContentsLayers(gfx::Size(100, 100)); 6587 SetupScrollAndContentsLayers(gfx::Size(100, 100));
6597 6588
6598 const gfx::Transform external_transform; 6589 const gfx::Transform external_transform;
6599 const gfx::Rect external_viewport; 6590 const gfx::Rect external_viewport;
6600 const gfx::Rect external_clip; 6591 const gfx::Rect external_clip;
6601 const bool resourceless_software_draw = true; 6592 const bool resourceless_software_draw = true;
6602 host_impl_->SetExternalDrawConstraints(external_transform, 6593 host_impl_->SetExternalDrawConstraints(external_viewport, external_transform);
6603 external_viewport,
6604 external_clip,
6605 external_viewport,
6606 external_transform,
6607 resourceless_software_draw);
6608 6594
6609 EXPECT_EQ(0, software_device->frames_began_); 6595 EXPECT_EQ(0, software_device->frames_began_);
6610 EXPECT_EQ(0, software_device->frames_ended_); 6596 EXPECT_EQ(0, software_device->frames_ended_);
6611 6597
6612 DrawFrame(); 6598 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
6599 resourceless_software_draw);
6613 6600
6614 EXPECT_EQ(1, software_device->frames_began_); 6601 EXPECT_EQ(1, software_device->frames_began_);
6615 EXPECT_EQ(1, software_device->frames_ended_); 6602 EXPECT_EQ(1, software_device->frames_ended_);
6616 6603
6617 // Call another API method that is likely to hit nullptr in this mode. 6604 // Call another API method that is likely to hit nullptr in this mode.
6618 scoped_refptr<base::trace_event::TracedValue> state = 6605 scoped_refptr<base::trace_event::TracedValue> state =
6619 make_scoped_refptr(new base::trace_event::TracedValue()); 6606 make_scoped_refptr(new base::trace_event::TracedValue());
6620 host_impl_->ActivationStateAsValueInto(state.get()); 6607 host_impl_->ActivationStateAsValueInto(state.get());
6621 } 6608 }
6622 6609
6623 TEST_F(LayerTreeHostImplTest, 6610 TEST_F(LayerTreeHostImplTest,
6624 ForcedDrawToSoftwareDeviceSkipsUnsupportedLayers) { 6611 ForcedDrawToSoftwareDeviceSkipsUnsupportedLayers) {
6625 set_reduce_memory_result(false); 6612 set_reduce_memory_result(false);
6626 EXPECT_TRUE(CreateHostImpl(DefaultSettings(), 6613 EXPECT_TRUE(CreateHostImpl(DefaultSettings(),
6627 FakeOutputSurface::CreateSoftware( 6614 FakeOutputSurface::CreateSoftware(
6628 make_scoped_ptr(new CountingSoftwareDevice)))); 6615 make_scoped_ptr(new CountingSoftwareDevice))));
6629 6616
6630 const gfx::Transform external_transform; 6617 const gfx::Transform external_transform;
6631 const gfx::Rect external_viewport; 6618 const gfx::Rect external_viewport;
6632 const gfx::Rect external_clip; 6619 const gfx::Rect external_clip;
6633 const bool resourceless_software_draw = true; 6620 const bool resourceless_software_draw = true;
6634 host_impl_->SetExternalDrawConstraints(external_transform, 6621 host_impl_->SetExternalDrawConstraints(external_viewport, external_transform);
6635 external_viewport,
6636 external_clip,
6637 external_viewport,
6638 external_transform,
6639 resourceless_software_draw);
6640 6622
6641 // SolidColorLayerImpl will be drawn. 6623 // SolidColorLayerImpl will be drawn.
6642 scoped_ptr<SolidColorLayerImpl> root_layer = 6624 scoped_ptr<SolidColorLayerImpl> root_layer =
6643 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); 6625 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1);
6644 6626
6645 // VideoLayerImpl will not be drawn. 6627 // VideoLayerImpl will not be drawn.
6646 FakeVideoFrameProvider provider; 6628 FakeVideoFrameProvider provider;
6647 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create( 6629 scoped_ptr<VideoLayerImpl> video_layer = VideoLayerImpl::Create(
6648 host_impl_->active_tree(), 2, &provider, media::VIDEO_ROTATION_0); 6630 host_impl_->active_tree(), 2, &provider, media::VIDEO_ROTATION_0);
6649 video_layer->SetBounds(gfx::Size(10, 10)); 6631 video_layer->SetBounds(gfx::Size(10, 10));
6650 video_layer->SetDrawsContent(true); 6632 video_layer->SetDrawsContent(true);
6651 root_layer->AddChild(video_layer.Pass()); 6633 root_layer->AddChild(video_layer.Pass());
6652 SetupRootLayerImpl(root_layer.Pass()); 6634 SetupRootLayerImpl(root_layer.Pass());
6653 6635
6654 LayerTreeHostImpl::FrameData frame; 6636 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
6655 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); 6637 resourceless_software_draw);
6656 host_impl_->DrawLayers(&frame);
6657 host_impl_->DidDrawAllLayers(frame);
6658 6638
6659 EXPECT_EQ(1u, frame.will_draw_layers.size()); 6639 EXPECT_EQ(1u, last_on_draw_frame_->will_draw_layers.size());
6660 EXPECT_EQ(host_impl_->active_tree()->root_layer(), frame.will_draw_layers[0]); 6640 EXPECT_EQ(host_impl_->active_tree()->root_layer(),
6641 last_on_draw_frame_->will_draw_layers[0]);
6661 } 6642 }
6662 6643
6663 // Checks that we have a non-0 default allocation if we pass a context that 6644 // Checks that we have a non-0 default allocation if we pass a context that
6664 // doesn't support memory management extensions. 6645 // doesn't support memory management extensions.
6665 TEST_F(LayerTreeHostImplTest, DefaultMemoryAllocation) { 6646 TEST_F(LayerTreeHostImplTest, DefaultMemoryAllocation) {
6666 LayerTreeSettings settings; 6647 LayerTreeSettings settings;
6667 host_impl_ = LayerTreeHostImpl::Create( 6648 host_impl_ = LayerTreeHostImpl::Create(
6668 settings, this, &task_runner_provider_, &stats_instrumentation_, 6649 settings, this, &task_runner_provider_, &stats_instrumentation_,
6669 &shared_bitmap_manager_, &gpu_memory_buffer_manager_, &task_graph_runner_, 6650 &shared_bitmap_manager_, &gpu_memory_buffer_manager_, &task_graph_runner_,
6670 0); 6651 0);
(...skipping 1499 matching lines...) Expand 10 before | Expand all | Expand 10 after
8170 } 8151 }
8171 8152
8172 TEST_F(LayerTreeHostImplTest, ExternalTransformReflectedInNextDraw) { 8153 TEST_F(LayerTreeHostImplTest, ExternalTransformReflectedInNextDraw) {
8173 const gfx::Size layer_size(100, 100); 8154 const gfx::Size layer_size(100, 100);
8174 gfx::Transform external_transform; 8155 gfx::Transform external_transform;
8175 const gfx::Rect external_viewport(layer_size); 8156 const gfx::Rect external_viewport(layer_size);
8176 const gfx::Rect external_clip(layer_size); 8157 const gfx::Rect external_clip(layer_size);
8177 const bool resourceless_software_draw = false; 8158 const bool resourceless_software_draw = false;
8178 LayerImpl* layer = SetupScrollAndContentsLayers(layer_size); 8159 LayerImpl* layer = SetupScrollAndContentsLayers(layer_size);
8179 8160
8180 host_impl_->SetExternalDrawConstraints(external_transform, 8161 host_impl_->SetExternalDrawConstraints(external_viewport, external_transform);
8181 external_viewport, 8162 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
8182 external_clip, 8163 resourceless_software_draw);
8183 external_viewport,
8184 external_transform,
8185 resourceless_software_draw);
8186 DrawFrame();
8187 EXPECT_TRANSFORMATION_MATRIX_EQ( 8164 EXPECT_TRANSFORMATION_MATRIX_EQ(
8188 external_transform, layer->draw_properties().target_space_transform); 8165 external_transform, layer->draw_properties().target_space_transform);
8189 8166
8190 external_transform.Translate(20, 20); 8167 external_transform.Translate(20, 20);
8191 host_impl_->SetExternalDrawConstraints(external_transform, 8168 host_impl_->SetExternalDrawConstraints(external_viewport, external_transform);
8192 external_viewport, 8169 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
8193 external_clip, 8170 resourceless_software_draw);
8194 external_viewport,
8195 external_transform,
8196 resourceless_software_draw);
8197 DrawFrame();
8198 EXPECT_TRANSFORMATION_MATRIX_EQ( 8171 EXPECT_TRANSFORMATION_MATRIX_EQ(
8199 external_transform, layer->draw_properties().target_space_transform); 8172 external_transform, layer->draw_properties().target_space_transform);
8200 } 8173 }
8201 8174
8202 TEST_F(LayerTreeHostImplTest, ExternalTransformSetNeedsRedraw) { 8175 TEST_F(LayerTreeHostImplTest, ExternalTransformSetNeedsRedraw) {
8203 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1)); 8176 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1));
8204 8177
8205 const gfx::Size layer_size(100, 100); 8178 const gfx::Size viewport_size(100, 100);
8206 const gfx::Transform external_transform; 8179 host_impl_->SetViewportSize(viewport_size);
8207 const gfx::Rect external_viewport(layer_size); 8180
8208 const gfx::Rect external_clip1(layer_size); 8181 const gfx::Transform transform_for_tile_priority;
8209 const gfx::Rect external_clip2(50, 50); 8182 const gfx::Transform draw_transform;
8183 const gfx::Rect viewport_for_tile_priority1(viewport_size);
8184 const gfx::Rect viewport_for_tile_priority2(50, 50);
8185 const gfx::Rect draw_viewport(viewport_size);
8186 const gfx::Rect clip(viewport_size);
8210 bool resourceless_software_draw = false; 8187 bool resourceless_software_draw = false;
8211 8188
8212 resourceless_software_draw = false; 8189 // Clear any damage.
8213 host_impl_->SetExternalDrawConstraints( 8190 host_impl_->SetExternalDrawConstraints(viewport_for_tile_priority1,
8214 external_transform, external_viewport, external_clip1, external_viewport, 8191 transform_for_tile_priority);
8215 external_transform, resourceless_software_draw); 8192 host_impl_->OnDraw(draw_transform, draw_viewport, clip,
8216 { 8193 resourceless_software_draw);
8217 // Clear any damage. 8194 last_on_draw_frame_.reset();
8218 LayerTreeHostImpl::FrameData frame;
8219 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame));
8220 host_impl_->DrawLayers(&frame);
8221 host_impl_->DidDrawAllLayers(frame);
8222 host_impl_->SwapBuffers(frame);
8223 }
8224 8195
8225 // Setting new constraints needs redraw. 8196 // Setting new constraints needs redraw.
8226 did_request_redraw_ = false; 8197 did_request_redraw_ = false;
8227 host_impl_->SetExternalDrawConstraints( 8198 host_impl_->SetExternalDrawConstraints(viewport_for_tile_priority2,
8228 external_transform, external_viewport, external_clip2, external_viewport, 8199 transform_for_tile_priority);
8229 external_transform, resourceless_software_draw);
8230 EXPECT_TRUE(did_request_redraw_); 8200 EXPECT_TRUE(did_request_redraw_);
8231 { 8201 host_impl_->OnDraw(draw_transform, draw_viewport, clip,
8232 LayerTreeHostImpl::FrameData frame; 8202 resourceless_software_draw);
8233 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame)); 8203 EXPECT_FALSE(last_on_draw_frame_->has_no_damage);
8234 EXPECT_FALSE(frame.has_no_damage); 8204 }
8235 host_impl_->DrawLayers(&frame); 8205
8236 host_impl_->DidDrawAllLayers(frame); 8206 TEST_F(LayerTreeHostImplTest, OnDrawConstraintSetNeedsRedraw) {
8237 host_impl_->SwapBuffers(frame); 8207 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1));
8208
8209 const gfx::Size viewport_size(100, 100);
8210 host_impl_->SetViewportSize(viewport_size);
8211
8212 const gfx::Transform draw_transform;
8213 const gfx::Rect draw_viewport1(viewport_size);
8214 const gfx::Rect draw_viewport2(50, 50);
8215 const gfx::Rect clip(viewport_size);
8216 bool resourceless_software_draw = false;
8217
8218 // Clear any damage.
8219 host_impl_->OnDraw(draw_transform, draw_viewport1, clip,
8220 resourceless_software_draw);
8221 last_on_draw_frame_.reset();
8222
8223 // Same draw params does not swap.
8224 did_request_redraw_ = false;
8225 host_impl_->OnDraw(draw_transform, draw_viewport1, clip,
8226 resourceless_software_draw);
8227 EXPECT_FALSE(did_request_redraw_);
8228 EXPECT_TRUE(last_on_draw_frame_->has_no_damage);
8229 last_on_draw_frame_.reset();
8230
8231 // Different draw params does swap.
8232 did_request_redraw_ = false;
8233 host_impl_->OnDraw(draw_transform, draw_viewport2, clip,
8234 resourceless_software_draw);
8235 EXPECT_TRUE(did_request_redraw_);
8236 EXPECT_FALSE(last_on_draw_frame_->has_no_damage);
8237 }
8238
8239 class ResourcelessSoftwareLayerTreeHostImplTest : public LayerTreeHostImplTest {
8240 protected:
8241 scoped_ptr<OutputSurface> CreateOutputSurface() override {
8242 return FakeOutputSurface::Create3DSoftware();
8238 } 8243 }
8244 };
8239 8245
8240 // Resourceless software draw toggles do not need redraw. Damage is 8246 TEST_F(ResourcelessSoftwareLayerTreeHostImplTest,
8241 // set externally by SynchronousCompositorOutputSurface in this case. 8247 ResourcelessSoftwareSetNeedsRedraw) {
8248 SetupRootLayerImpl(LayerImpl::Create(host_impl_->active_tree(), 1));
8242 8249
8243 // Setting resourceless_software_draw do not need redraw. 8250 const gfx::Size viewport_size(100, 100);
8244 did_request_redraw_ = false; 8251 host_impl_->SetViewportSize(viewport_size);
8252
8253 const gfx::Transform draw_transform;
8254 const gfx::Rect draw_viewport(viewport_size);
8255 const gfx::Rect clip(viewport_size);
8256 bool resourceless_software_draw = false;
8257
8258 // Clear any damage.
8259 host_impl_->OnDraw(draw_transform, draw_viewport, clip,
8260 resourceless_software_draw);
8261 last_on_draw_frame_.reset();
8262
8263 // Always swap even if same draw params.
8245 resourceless_software_draw = true; 8264 resourceless_software_draw = true;
8246 host_impl_->SetExternalDrawConstraints( 8265 host_impl_->OnDraw(draw_transform, draw_viewport, clip,
8247 external_transform, external_viewport, external_clip1, external_viewport, 8266 resourceless_software_draw);
8248 external_transform, resourceless_software_draw); 8267 EXPECT_FALSE(last_on_draw_frame_->has_no_damage);
8249 EXPECT_FALSE(did_request_redraw_); 8268 last_on_draw_frame_.reset();
8250 // Can't call PrepareToDrawFrame with no change for resourceless software
8251 // draw.
8252 8269
8253 // Unsetting resourceless_software_draw do not need redraw. 8270 // Next hardware draw has damage.
8254 did_request_redraw_ = false;
8255 resourceless_software_draw = false; 8271 resourceless_software_draw = false;
8256 host_impl_->SetExternalDrawConstraints( 8272 host_impl_->OnDraw(draw_transform, draw_viewport, clip,
8257 external_transform, external_viewport, external_clip2, external_viewport, 8273 resourceless_software_draw);
8258 external_transform, resourceless_software_draw); 8274 EXPECT_FALSE(last_on_draw_frame_->has_no_damage);
8259 EXPECT_FALSE(did_request_redraw_);
8260 {
8261 LayerTreeHostImpl::FrameData frame;
8262 EXPECT_EQ(DRAW_SUCCESS, PrepareToDrawFrame(&frame));
8263 EXPECT_TRUE(frame.has_no_damage);
8264 }
8265 } 8275 }
8266 8276
8267 TEST_F(LayerTreeHostImplTest, ExternalViewportAffectsVisibleRects) { 8277 TEST_F(LayerTreeHostImplTest, ExternalViewportAffectsVisibleRects) {
8268 const gfx::Size layer_size(100, 100); 8278 const gfx::Size layer_size(100, 100);
8269 SetupScrollAndContentsLayers(layer_size); 8279 SetupScrollAndContentsLayers(layer_size);
8270 LayerImpl* content_layer = 8280 LayerImpl* content_layer =
8271 host_impl_->active_tree()->OuterViewportScrollLayer()->children()[0]; 8281 host_impl_->active_tree()->OuterViewportScrollLayer()->children()[0];
8272 RebuildPropertyTrees(); 8282 RebuildPropertyTrees();
8273 8283
8274 bool update_lcd_text = false; 8284 bool update_lcd_text = false;
8275 8285
8276 host_impl_->SetViewportSize(gfx::Size(90, 90)); 8286 host_impl_->SetViewportSize(gfx::Size(90, 90));
8277 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); 8287 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text);
8278 EXPECT_EQ(gfx::Rect(90, 90), content_layer->visible_layer_rect()); 8288 EXPECT_EQ(gfx::Rect(90, 90), content_layer->visible_layer_rect());
8279 8289
8280 gfx::Transform external_transform; 8290 gfx::Transform external_transform;
8281 gfx::Rect external_viewport(10, 20); 8291 gfx::Rect external_viewport(10, 20);
8282 gfx::Rect external_clip(layer_size); 8292 gfx::Rect external_clip(layer_size);
8283 bool resourceless_software_draw = false; 8293 bool resourceless_software_draw = false;
8284 host_impl_->SetExternalDrawConstraints( 8294 host_impl_->SetExternalDrawConstraints(external_viewport, external_transform);
8285 external_transform, external_viewport, external_clip, external_viewport, 8295 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
8286 external_transform, resourceless_software_draw); 8296 resourceless_software_draw);
8287
8288 // Visible rects should now be clipped by the external viewport.
8289 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text);
8290 EXPECT_EQ(gfx::Rect(10, 20), content_layer->visible_layer_rect()); 8297 EXPECT_EQ(gfx::Rect(10, 20), content_layer->visible_layer_rect());
8291 8298
8292 // Clear the external viewport. 8299 // Clear the external viewport.
8293 external_viewport = gfx::Rect(); 8300 external_viewport = gfx::Rect();
8294 host_impl_->SetExternalDrawConstraints( 8301 host_impl_->SetExternalDrawConstraints(external_viewport, external_transform);
8295 external_transform, external_viewport, external_clip, external_viewport,
8296 external_transform, resourceless_software_draw);
8297 8302
8298 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); 8303 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
8304 resourceless_software_draw);
8299 EXPECT_EQ(gfx::Rect(90, 90), content_layer->visible_layer_rect()); 8305 EXPECT_EQ(gfx::Rect(90, 90), content_layer->visible_layer_rect());
8300 } 8306 }
8301 8307
8302 TEST_F(LayerTreeHostImplTest, ExternalTransformAffectsVisibleRects) { 8308 TEST_F(LayerTreeHostImplTest, ExternalTransformAffectsVisibleRects) {
8303 const gfx::Size layer_size(100, 100); 8309 const gfx::Size layer_size(100, 100);
8304 SetupScrollAndContentsLayers(layer_size); 8310 SetupScrollAndContentsLayers(layer_size);
8305 LayerImpl* content_layer = 8311 LayerImpl* content_layer =
8306 host_impl_->active_tree()->OuterViewportScrollLayer()->children()[0]; 8312 host_impl_->active_tree()->OuterViewportScrollLayer()->children()[0];
8307 RebuildPropertyTrees(); 8313 RebuildPropertyTrees();
8308 8314
8309 bool update_lcd_text = false; 8315 bool update_lcd_text = false;
8310 8316
8311 host_impl_->SetViewportSize(gfx::Size(50, 50)); 8317 host_impl_->SetViewportSize(gfx::Size(50, 50));
8312 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); 8318 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text);
8313 EXPECT_EQ(gfx::Rect(50, 50), content_layer->visible_layer_rect()); 8319 EXPECT_EQ(gfx::Rect(50, 50), content_layer->visible_layer_rect());
8314 8320
8315 gfx::Transform external_transform; 8321 gfx::Transform external_transform;
8316 external_transform.Translate(10, 10); 8322 external_transform.Translate(10, 10);
8317 external_transform.Scale(2, 2); 8323 external_transform.Scale(2, 2);
8318 gfx::Rect external_viewport; 8324 gfx::Rect external_viewport;
8319 gfx::Rect external_clip(layer_size); 8325 gfx::Rect external_clip(layer_size);
8320 bool resourceless_software_draw = false; 8326 bool resourceless_software_draw = false;
8321 host_impl_->SetExternalDrawConstraints( 8327 host_impl_->SetExternalDrawConstraints(external_viewport, external_transform);
8322 external_transform, external_viewport, external_clip, external_viewport,
8323 external_transform, resourceless_software_draw);
8324 8328
8325 // Visible rects should now be shifted and scaled because of the external 8329 // Visible rects should now be shifted and scaled because of the external
8326 // transform. 8330 // transform.
8327 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); 8331 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
8332 resourceless_software_draw);
8328 EXPECT_EQ(gfx::Rect(20, 20), content_layer->visible_layer_rect()); 8333 EXPECT_EQ(gfx::Rect(20, 20), content_layer->visible_layer_rect());
8329 8334
8330 // Clear the external transform. 8335 // Clear the external transform.
8331 external_transform = gfx::Transform(); 8336 external_transform = gfx::Transform();
8332 host_impl_->SetExternalDrawConstraints( 8337 host_impl_->SetExternalDrawConstraints(external_viewport, external_transform);
8333 external_transform, external_viewport, external_clip, external_viewport,
8334 external_transform, resourceless_software_draw);
8335 8338
8336 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); 8339 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
8340 resourceless_software_draw);
8337 EXPECT_EQ(gfx::Rect(50, 50), content_layer->visible_layer_rect()); 8341 EXPECT_EQ(gfx::Rect(50, 50), content_layer->visible_layer_rect());
8338 } 8342 }
8339 8343
8340 TEST_F(LayerTreeHostImplTest, ExternalTransformAffectsSublayerScaleFactor) { 8344 TEST_F(LayerTreeHostImplTest, ExternalTransformAffectsSublayerScaleFactor) {
8341 const gfx::Size layer_size(100, 100); 8345 const gfx::Size layer_size(100, 100);
8342 SetupScrollAndContentsLayers(layer_size); 8346 SetupScrollAndContentsLayers(layer_size);
8343 LayerImpl* content_layer = 8347 LayerImpl* content_layer =
8344 host_impl_->active_tree()->OuterViewportScrollLayer()->children()[0]; 8348 host_impl_->active_tree()->OuterViewportScrollLayer()->children()[0];
8345 content_layer->AddChild(LayerImpl::Create(host_impl_->active_tree(), 100)); 8349 content_layer->AddChild(LayerImpl::Create(host_impl_->active_tree(), 100));
8346 LayerImpl* test_layer = host_impl_->active_tree()->LayerById(100); 8350 LayerImpl* test_layer = host_impl_->active_tree()->LayerById(100);
(...skipping 13 matching lines...) Expand all
8360 host_impl_->active_tree()->property_trees()->transform_tree.Node( 8364 host_impl_->active_tree()->property_trees()->transform_tree.Node(
8361 test_layer->transform_tree_index()); 8365 test_layer->transform_tree_index());
8362 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(1.f, 1.f)); 8366 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(1.f, 1.f));
8363 8367
8364 gfx::Transform external_transform; 8368 gfx::Transform external_transform;
8365 external_transform.Translate(10, 10); 8369 external_transform.Translate(10, 10);
8366 external_transform.Scale(2, 2); 8370 external_transform.Scale(2, 2);
8367 gfx::Rect external_viewport; 8371 gfx::Rect external_viewport;
8368 gfx::Rect external_clip(layer_size); 8372 gfx::Rect external_clip(layer_size);
8369 bool resourceless_software_draw = false; 8373 bool resourceless_software_draw = false;
8370 host_impl_->SetExternalDrawConstraints( 8374 host_impl_->SetExternalDrawConstraints(external_viewport, external_transform);
8371 external_transform, external_viewport, external_clip, external_viewport,
8372 external_transform, resourceless_software_draw);
8373 8375
8374 // Transform node's sublayer scale should include the device transform scale. 8376 // Transform node's sublayer scale should include the device transform scale.
8375 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); 8377 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
8378 resourceless_software_draw);
8376 node = host_impl_->active_tree()->property_trees()->transform_tree.Node( 8379 node = host_impl_->active_tree()->property_trees()->transform_tree.Node(
8377 test_layer->transform_tree_index()); 8380 test_layer->transform_tree_index());
8378 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(2.f, 2.f)); 8381 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(2.f, 2.f));
8379 8382
8380 // Clear the external transform. 8383 // Clear the external transform.
8381 external_transform = gfx::Transform(); 8384 external_transform = gfx::Transform();
8382 host_impl_->SetExternalDrawConstraints( 8385 host_impl_->SetExternalDrawConstraints(external_viewport, external_transform);
8383 external_transform, external_viewport, external_clip, external_viewport,
8384 external_transform, resourceless_software_draw);
8385 8386
8386 host_impl_->active_tree()->UpdateDrawProperties(update_lcd_text); 8387 host_impl_->OnDraw(external_transform, external_viewport, external_clip,
8388 resourceless_software_draw);
8387 node = host_impl_->active_tree()->property_trees()->transform_tree.Node( 8389 node = host_impl_->active_tree()->property_trees()->transform_tree.Node(
8388 test_layer->transform_tree_index()); 8390 test_layer->transform_tree_index());
8389 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(1.f, 1.f)); 8391 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(1.f, 1.f));
8390 } 8392 }
8391 8393
8392 TEST_F(LayerTreeHostImplTest, ScrollAnimated) { 8394 TEST_F(LayerTreeHostImplTest, ScrollAnimated) {
8393 SetupScrollAndContentsLayers(gfx::Size(100, 200)); 8395 SetupScrollAndContentsLayers(gfx::Size(100, 200));
8394 8396
8395 // Shrink the outer viewport clip layer so that the outer viewport can scroll. 8397 // Shrink the outer viewport clip layer so that the outer viewport can scroll.
8396 host_impl_->OuterViewportScrollLayer()->parent()->SetBounds( 8398 host_impl_->OuterViewportScrollLayer()->parent()->SetBounds(
(...skipping 614 matching lines...) Expand 10 before | Expand all | Expand 10 after
9011 host_impl_->active_tree()->SetPageScaleOnActiveTree(2.f); 9013 host_impl_->active_tree()->SetPageScaleOnActiveTree(2.f);
9012 DrawFrame(); 9014 DrawFrame();
9013 in_subtree_of_page_scale_layer = host_impl_->active_tree()->LayerById(100); 9015 in_subtree_of_page_scale_layer = host_impl_->active_tree()->LayerById(100);
9014 node = host_impl_->active_tree()->property_trees()->transform_tree.Node( 9016 node = host_impl_->active_tree()->property_trees()->transform_tree.Node(
9015 in_subtree_of_page_scale_layer->transform_tree_index()); 9017 in_subtree_of_page_scale_layer->transform_tree_index());
9016 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(2.f, 2.f)); 9018 EXPECT_EQ(node->data.sublayer_scale, gfx::Vector2dF(2.f, 2.f));
9017 } 9019 }
9018 9020
9019 } // namespace 9021 } // namespace
9020 } // namespace cc 9022 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698