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

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

Issue 754433003: Update from https://crrev.com/305340 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 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.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/synchronization/lock.h" 10 #include "base/synchronization/lock.h"
(...skipping 1000 matching lines...) Expand 10 before | Expand all | Expand 10 after
1011 1011
1012 Layer* root_layer = layer_tree_host()->root_layer(); 1012 Layer* root_layer = layer_tree_host()->root_layer();
1013 scroll_layer_->SetScrollClipLayerId(root_layer->id()); 1013 scroll_layer_->SetScrollClipLayerId(root_layer->id());
1014 scroll_layer_->SetIsContainerForFixedPositionLayers(true); 1014 scroll_layer_->SetIsContainerForFixedPositionLayers(true);
1015 scroll_layer_->SetBounds(gfx::Size(2 * root_layer->bounds().width(), 1015 scroll_layer_->SetBounds(gfx::Size(2 * root_layer->bounds().width(),
1016 2 * root_layer->bounds().height())); 1016 2 * root_layer->bounds().height()));
1017 scroll_layer_->SetScrollOffset(gfx::ScrollOffset()); 1017 scroll_layer_->SetScrollOffset(gfx::ScrollOffset());
1018 layer_tree_host()->root_layer()->AddChild(scroll_layer_); 1018 layer_tree_host()->root_layer()->AddChild(scroll_layer_);
1019 // This test requires the page_scale and inner viewport layers to be 1019 // This test requires the page_scale and inner viewport layers to be
1020 // identified. 1020 // identified.
1021 layer_tree_host()->RegisterViewportLayers( 1021 layer_tree_host()->RegisterViewportLayers(NULL, root_layer,
1022 root_layer, scroll_layer_.get(), NULL); 1022 scroll_layer_.get(), NULL);
1023 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.5f, 2.f); 1023 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.5f, 2.f);
1024 } 1024 }
1025 1025
1026 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 1026 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
1027 1027
1028 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, 1028 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta,
1029 float scale, 1029 float scale,
1030 float) override { 1030 float) override {
1031 gfx::ScrollOffset offset = scroll_layer_->scroll_offset(); 1031 gfx::ScrollOffset offset = scroll_layer_->scroll_offset();
1032 scroll_layer_->SetScrollOffset(ScrollOffsetWithDelta(offset, 1032 scroll_layer_->SetScrollOffset(ScrollOffsetWithDelta(offset,
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
1301 scoped_refptr<FakePictureLayer> child_layer_; 1301 scoped_refptr<FakePictureLayer> child_layer_;
1302 }; 1302 };
1303 1303
1304 MULTI_THREAD_TEST_F(LayerTreeHostTestDeviceScaleFactorScalesViewportAndLayers); 1304 MULTI_THREAD_TEST_F(LayerTreeHostTestDeviceScaleFactorScalesViewportAndLayers);
1305 1305
1306 // TODO(sohanjg) : Remove it once impl-side painting ships everywhere. 1306 // TODO(sohanjg) : Remove it once impl-side painting ships everywhere.
1307 // Verify atomicity of commits and reuse of textures. 1307 // Verify atomicity of commits and reuse of textures.
1308 class LayerTreeHostTestDirectRendererAtomicCommit : public LayerTreeHostTest { 1308 class LayerTreeHostTestDirectRendererAtomicCommit : public LayerTreeHostTest {
1309 public: 1309 public:
1310 void InitializeSettings(LayerTreeSettings* settings) override { 1310 void InitializeSettings(LayerTreeSettings* settings) override {
1311 settings->texture_id_allocation_chunk_size = 1; 1311 settings->renderer_settings.texture_id_allocation_chunk_size = 1;
1312 // Make sure partial texture updates are turned off. 1312 // Make sure partial texture updates are turned off.
1313 settings->max_partial_texture_updates = 0; 1313 settings->max_partial_texture_updates = 0;
1314 // Linear fade animator prevents scrollbars from drawing immediately. 1314 // Linear fade animator prevents scrollbars from drawing immediately.
1315 settings->scrollbar_animator = LayerTreeSettings::NoAnimator; 1315 settings->scrollbar_animator = LayerTreeSettings::NoAnimator;
1316 } 1316 }
1317 1317
1318 void SetupTree() override { 1318 void SetupTree() override {
1319 layer_ = FakeContentLayer::Create(&client_); 1319 layer_ = FakeContentLayer::Create(&client_);
1320 layer_->SetBounds(gfx::Size(10, 20)); 1320 layer_->SetBounds(gfx::Size(10, 20));
1321 1321
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
1478 layer->SetPosition(position); 1478 layer->SetPosition(position);
1479 layer->SetBounds(bounds); 1479 layer->SetBounds(bounds);
1480 layer->SetContentsOpaque(opaque); 1480 layer->SetContentsOpaque(opaque);
1481 } 1481 }
1482 1482
1483 // TODO(sohanjg) : Remove it once impl-side painting ships everywhere. 1483 // TODO(sohanjg) : Remove it once impl-side painting ships everywhere.
1484 class LayerTreeHostTestAtomicCommitWithPartialUpdate 1484 class LayerTreeHostTestAtomicCommitWithPartialUpdate
1485 : public LayerTreeHostTest { 1485 : public LayerTreeHostTest {
1486 public: 1486 public:
1487 void InitializeSettings(LayerTreeSettings* settings) override { 1487 void InitializeSettings(LayerTreeSettings* settings) override {
1488 settings->texture_id_allocation_chunk_size = 1; 1488 settings->renderer_settings.texture_id_allocation_chunk_size = 1;
1489 // Allow one partial texture update. 1489 // Allow one partial texture update.
1490 settings->max_partial_texture_updates = 1; 1490 settings->max_partial_texture_updates = 1;
1491 // No partial updates when impl side painting is enabled. 1491 // No partial updates when impl side painting is enabled.
1492 settings->impl_side_painting = false; 1492 settings->impl_side_painting = false;
1493 } 1493 }
1494 1494
1495 void SetupTree() override { 1495 void SetupTree() override {
1496 parent_ = FakeContentLayer::Create(&client_); 1496 parent_ = FakeContentLayer::Create(&client_);
1497 parent_->SetBounds(gfx::Size(10, 20)); 1497 parent_->SetBounds(gfx::Size(10, 20));
1498 1498
(...skipping 1474 matching lines...) Expand 10 before | Expand all | Expand 10 after
2973 }; 2973 };
2974 2974
2975 MULTI_THREAD_TEST_F(LayerTreeHostTestDeferredInitializeWithGpuRasterization); 2975 MULTI_THREAD_TEST_F(LayerTreeHostTestDeferredInitializeWithGpuRasterization);
2976 2976
2977 // Test for UI Resource management. 2977 // Test for UI Resource management.
2978 class LayerTreeHostTestUIResource : public LayerTreeHostTest { 2978 class LayerTreeHostTestUIResource : public LayerTreeHostTest {
2979 public: 2979 public:
2980 LayerTreeHostTestUIResource() : num_ui_resources_(0) {} 2980 LayerTreeHostTestUIResource() : num_ui_resources_(0) {}
2981 2981
2982 void InitializeSettings(LayerTreeSettings* settings) override { 2982 void InitializeSettings(LayerTreeSettings* settings) override {
2983 settings->texture_id_allocation_chunk_size = 1; 2983 settings->renderer_settings.texture_id_allocation_chunk_size = 1;
2984 } 2984 }
2985 2985
2986 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 2986 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
2987 2987
2988 void DidCommit() override { 2988 void DidCommit() override {
2989 int frame = layer_tree_host()->source_frame_number(); 2989 int frame = layer_tree_host()->source_frame_number();
2990 switch (frame) { 2990 switch (frame) {
2991 case 1: 2991 case 1:
2992 CreateResource(); 2992 CreateResource();
2993 CreateResource(); 2993 CreateResource();
(...skipping 2139 matching lines...) Expand 10 before | Expand all | Expand 10 after
5133 } 5133 }
5134 5134
5135 void BeginTest() override { 5135 void BeginTest() override {
5136 MainThreadTaskRunner()->PostTask( 5136 MainThreadTaskRunner()->PostTask(
5137 FROM_HERE, 5137 FROM_HERE,
5138 base::Bind( 5138 base::Bind(
5139 &LayerTreeHostTestContinuousPainting::EnableContinuousPainting, 5139 &LayerTreeHostTestContinuousPainting::EnableContinuousPainting,
5140 base::Unretained(this))); 5140 base::Unretained(this)));
5141 // Wait 50x longer than expected. 5141 // Wait 50x longer than expected.
5142 double milliseconds_per_frame = 5142 double milliseconds_per_frame =
5143 1000.0 / layer_tree_host()->settings().refresh_rate; 5143 1000.0 / layer_tree_host()->settings().renderer_settings.refresh_rate;
5144 MainThreadTaskRunner()->PostDelayedTask( 5144 MainThreadTaskRunner()->PostDelayedTask(
5145 FROM_HERE, 5145 FROM_HERE,
5146 base::Bind( 5146 base::Bind(
5147 &LayerTreeHostTestContinuousPainting::DisableContinuousPainting, 5147 &LayerTreeHostTestContinuousPainting::DisableContinuousPainting,
5148 base::Unretained(this)), 5148 base::Unretained(this)),
5149 base::TimeDelta::FromMilliseconds(50 * kExpectedNumCommits * 5149 base::TimeDelta::FromMilliseconds(50 * kExpectedNumCommits *
5150 milliseconds_per_frame)); 5150 milliseconds_per_frame));
5151 } 5151 }
5152 5152
5153 void BeginMainFrame(const BeginFrameArgs& args) override { 5153 void BeginMainFrame(const BeginFrameArgs& args) override {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
5190 int num_draws_; 5190 int num_draws_;
5191 const gfx::Size bounds_; 5191 const gfx::Size bounds_;
5192 FakeContentLayerClient client_; 5192 FakeContentLayerClient client_;
5193 scoped_refptr<ContentLayerWithUpdateTracking> content_layer_; 5193 scoped_refptr<ContentLayerWithUpdateTracking> content_layer_;
5194 scoped_refptr<FakePictureLayer> picture_layer_; 5194 scoped_refptr<FakePictureLayer> picture_layer_;
5195 Layer* child_layer_; 5195 Layer* child_layer_;
5196 }; 5196 };
5197 5197
5198 MULTI_THREAD_TEST_F(LayerTreeHostTestContinuousPainting); 5198 MULTI_THREAD_TEST_F(LayerTreeHostTestContinuousPainting);
5199 5199
5200 class LayerTreeHostTestSendBeginFramesToChildren : public LayerTreeHostTest {
5201 public:
5202 LayerTreeHostTestSendBeginFramesToChildren()
5203 : begin_frame_sent_to_children_(false) {
5204 }
5205
5206 void InitializeSettings(LayerTreeSettings* settings) override {
5207 settings->forward_begin_frames_to_children = true;
5208 }
5209
5210 void BeginTest() override {
5211 // Kick off the test with a commit.
5212 PostSetNeedsCommitToMainThread();
5213 }
5214
5215 void SendBeginFramesToChildren(const BeginFrameArgs& args) override {
5216 begin_frame_sent_to_children_ = true;
5217 EndTest();
5218 }
5219
5220 void DidBeginMainFrame() override {
5221 // Children requested BeginFrames.
5222 layer_tree_host()->SetChildrenNeedBeginFrames(true);
5223 }
5224
5225 void AfterTest() override {
5226 // Ensure that BeginFrame message is sent to children during parent
5227 // scheduler handles its BeginFrame.
5228 EXPECT_TRUE(begin_frame_sent_to_children_);
5229 }
5230
5231 private:
5232 bool begin_frame_sent_to_children_;
5233 };
5234
5235 SINGLE_THREAD_TEST_F(LayerTreeHostTestSendBeginFramesToChildren);
5236
5237 class LayerTreeHostTestSendBeginFramesToChildrenWithExternalBFS
5238 : public LayerTreeHostTest {
5239 public:
5240 LayerTreeHostTestSendBeginFramesToChildrenWithExternalBFS()
5241 : begin_frame_sent_to_children_(false) {
5242 }
5243
5244 void InitializeSettings(LayerTreeSettings* settings) override {
5245 settings->use_external_begin_frame_source = true;
5246 settings->forward_begin_frames_to_children = true;
5247 }
5248
5249 void BeginTest() override {
5250 // Kick off the test with a commit.
5251 PostSetNeedsCommitToMainThread();
5252 }
5253
5254 void SendBeginFramesToChildren(const BeginFrameArgs& args) override {
5255 begin_frame_sent_to_children_ = true;
5256 EndTest();
5257 }
5258
5259 void DidBeginMainFrame() override {
5260 // Children requested BeginFrames.
5261 layer_tree_host()->SetChildrenNeedBeginFrames(true);
5262 }
5263
5264 void AfterTest() override {
5265 // Ensure that BeginFrame message is sent to children during parent
5266 // scheduler handles its BeginFrame.
5267 EXPECT_TRUE(begin_frame_sent_to_children_);
5268 }
5269
5270 private:
5271 bool begin_frame_sent_to_children_;
5272 };
5273
5274 SINGLE_THREAD_TEST_F(LayerTreeHostTestSendBeginFramesToChildrenWithExternalBFS);
5275
5200 class LayerTreeHostTestActivateOnInvisible : public LayerTreeHostTest { 5276 class LayerTreeHostTestActivateOnInvisible : public LayerTreeHostTest {
5201 public: 5277 public:
5202 LayerTreeHostTestActivateOnInvisible() 5278 LayerTreeHostTestActivateOnInvisible()
5203 : activation_count_(0), visible_(true) {} 5279 : activation_count_(0), visible_(true) {}
5204 5280
5205 void InitializeSettings(LayerTreeSettings* settings) override { 5281 void InitializeSettings(LayerTreeSettings* settings) override {
5206 settings->impl_side_painting = true; 5282 settings->impl_side_painting = true;
5207 } 5283 }
5208 5284
5209 void BeginTest() override { 5285 void BeginTest() override {
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
5405 pile->SetPlaybackAllowedEvent(&playback_allowed_event_); 5481 pile->SetPlaybackAllowedEvent(&playback_allowed_event_);
5406 scoped_refptr<FakePictureLayer> layer = 5482 scoped_refptr<FakePictureLayer> layer =
5407 FakePictureLayer::CreateWithRecordingSource(&client_, pile.Pass()); 5483 FakePictureLayer::CreateWithRecordingSource(&client_, pile.Pass());
5408 layer->SetBounds(gfx::Size(500, 500)); 5484 layer->SetBounds(gfx::Size(500, 500));
5409 layer->SetContentsOpaque(true); 5485 layer->SetContentsOpaque(true);
5410 // Avoid LCD text on the layer so we don't cause extra commits when we 5486 // Avoid LCD text on the layer so we don't cause extra commits when we
5411 // pinch. 5487 // pinch.
5412 layer->disable_lcd_text(); 5488 layer->disable_lcd_text();
5413 pinch->AddChild(layer); 5489 pinch->AddChild(layer);
5414 5490
5415 layer_tree_host()->RegisterViewportLayers(root, pinch, pinch); 5491 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch);
5416 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f); 5492 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f);
5417 layer_tree_host()->SetRootLayer(root); 5493 layer_tree_host()->SetRootLayer(root);
5418 LayerTreeHostTest::SetupTree(); 5494 LayerTreeHostTest::SetupTree();
5419 } 5495 }
5420 5496
5421 // Returns the delta scale of all quads in the frame's root pass from their 5497 // Returns the delta scale of all quads in the frame's root pass from their
5422 // ideal, or 0 if they are not all the same. 5498 // ideal, or 0 if they are not all the same.
5423 float FrameQuadScaleDeltaFromIdeal(LayerTreeHostImpl::FrameData* frame_data) { 5499 float FrameQuadScaleDeltaFromIdeal(LayerTreeHostImpl::FrameData* frame_data) {
5424 if (frame_data->has_no_damage) 5500 if (frame_data->has_no_damage)
5425 return 0.f; 5501 return 0.f;
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
5615 pile->SetPlaybackAllowedEvent(&playback_allowed_event_); 5691 pile->SetPlaybackAllowedEvent(&playback_allowed_event_);
5616 scoped_refptr<FakePictureLayer> layer = 5692 scoped_refptr<FakePictureLayer> layer =
5617 FakePictureLayer::CreateWithRecordingSource(&client_, pile.Pass()); 5693 FakePictureLayer::CreateWithRecordingSource(&client_, pile.Pass());
5618 layer->SetBounds(gfx::Size(500, 500)); 5694 layer->SetBounds(gfx::Size(500, 500));
5619 layer->SetContentsOpaque(true); 5695 layer->SetContentsOpaque(true);
5620 // Avoid LCD text on the layer so we don't cause extra commits when we 5696 // Avoid LCD text on the layer so we don't cause extra commits when we
5621 // pinch. 5697 // pinch.
5622 layer->disable_lcd_text(); 5698 layer->disable_lcd_text();
5623 pinch->AddChild(layer); 5699 pinch->AddChild(layer);
5624 5700
5625 layer_tree_host()->RegisterViewportLayers(root, pinch, pinch); 5701 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch);
5626 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f); 5702 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f);
5627 layer_tree_host()->SetRootLayer(root); 5703 layer_tree_host()->SetRootLayer(root);
5628 LayerTreeHostTest::SetupTree(); 5704 LayerTreeHostTest::SetupTree();
5629 } 5705 }
5630 5706
5631 // Returns the delta scale of all quads in the frame's root pass from their 5707 // Returns the delta scale of all quads in the frame's root pass from their
5632 // ideal, or 0 if they are not all the same. 5708 // ideal, or 0 if they are not all the same.
5633 float FrameQuadScaleDeltaFromIdeal(LayerTreeHostImpl::FrameData* frame_data) { 5709 float FrameQuadScaleDeltaFromIdeal(LayerTreeHostImpl::FrameData* frame_data) {
5634 if (frame_data->has_no_damage) 5710 if (frame_data->has_no_damage)
5635 return 0.f; 5711 return 0.f;
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
5758 5834
5759 FakeContentLayerClient client_; 5835 FakeContentLayerClient client_;
5760 int step_; 5836 int step_;
5761 int continuous_draws_; 5837 int continuous_draws_;
5762 base::WaitableEvent playback_allowed_event_; 5838 base::WaitableEvent playback_allowed_event_;
5763 }; 5839 };
5764 5840
5765 MULTI_THREAD_TEST_F(LayerTreeHostTestContinuousDrawWhenCreatingVisibleTiles); 5841 MULTI_THREAD_TEST_F(LayerTreeHostTestContinuousDrawWhenCreatingVisibleTiles);
5766 5842
5767 } // namespace cc 5843 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_pixeltest_masks.cc ('k') | cc/trees/layer_tree_host_unittest_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698