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

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

Issue 924973003: CC: Force push properties for all layers when tracing is started (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments addressed Created 5 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
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 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 else 428 else
429 root_layer_ = ContentLayer::Create(&client_); 429 root_layer_ = ContentLayer::Create(&client_);
430 root_layer_->SetIsDrawable(true); 430 root_layer_->SetIsDrawable(true);
431 root_layer_->SetBounds(bounds_); 431 root_layer_->SetBounds(bounds_);
432 layer_tree_host()->SetRootLayer(root_layer_); 432 layer_tree_host()->SetRootLayer(root_layer_);
433 layer_tree_host()->SetViewportSize(bounds_); 433 layer_tree_host()->SetViewportSize(bounds_);
434 PostSetNeedsCommitToMainThread(); 434 PostSetNeedsCommitToMainThread();
435 } 435 }
436 436
437 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 437 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
438 LayerTreeHostImpl::FrameData* frame_data, 438 FrameData* frame_data,
439 DrawResult draw_result) override { 439 DrawResult draw_result) override {
440 EXPECT_EQ(DRAW_SUCCESS, draw_result); 440 EXPECT_EQ(DRAW_SUCCESS, draw_result);
441 441
442 gfx::RectF root_damage_rect; 442 gfx::RectF root_damage_rect;
443 if (!frame_data->render_passes.empty()) 443 if (!frame_data->render_passes.empty())
444 root_damage_rect = frame_data->render_passes.back()->damage_rect; 444 root_damage_rect = frame_data->render_passes.back()->damage_rect;
445 445
446 if (!num_draws_) { 446 if (!num_draws_) {
447 // If this is the first frame, expect full frame damage. 447 // If this is the first frame, expect full frame damage.
448 EXPECT_EQ(root_damage_rect, gfx::Rect(bounds_)); 448 EXPECT_EQ(root_damage_rect, gfx::Rect(bounds_));
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 layer_tree_host()->SetViewportSize(bounds_); 612 layer_tree_host()->SetViewportSize(bounds_);
613 PostSetNeedsCommitToMainThread(); 613 PostSetNeedsCommitToMainThread();
614 } 614 }
615 615
616 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { 616 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override {
617 if (num_draws_ == 3 && host_impl->settings().impl_side_painting) 617 if (num_draws_ == 3 && host_impl->settings().impl_side_painting)
618 host_impl->SetNeedsRedrawRect(invalid_rect_); 618 host_impl->SetNeedsRedrawRect(invalid_rect_);
619 } 619 }
620 620
621 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 621 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
622 LayerTreeHostImpl::FrameData* frame_data, 622 FrameData* frame_data,
623 DrawResult draw_result) override { 623 DrawResult draw_result) override {
624 EXPECT_EQ(DRAW_SUCCESS, draw_result); 624 EXPECT_EQ(DRAW_SUCCESS, draw_result);
625 625
626 gfx::RectF root_damage_rect; 626 gfx::RectF root_damage_rect;
627 if (!frame_data->render_passes.empty()) 627 if (!frame_data->render_passes.empty())
628 root_damage_rect = frame_data->render_passes.back()->damage_rect; 628 root_damage_rect = frame_data->render_passes.back()->damage_rect;
629 629
630 switch (num_draws_) { 630 switch (num_draws_) {
631 case 0: 631 case 0:
632 EXPECT_EQ(gfx::Rect(bounds_), root_damage_rect); 632 EXPECT_EQ(gfx::Rect(bounds_), root_damage_rect);
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 child_layer_ = FakeContentLayer::Create(&client_); 719 child_layer_ = FakeContentLayer::Create(&client_);
720 child_layer_->SetBounds(gfx::Size(25, 25)); 720 child_layer_->SetBounds(gfx::Size(25, 25));
721 parent_layer_->AddChild(child_layer_); 721 parent_layer_->AddChild(child_layer_);
722 722
723 LayerTreeHostTest::SetupTree(); 723 LayerTreeHostTest::SetupTree();
724 } 724 }
725 725
726 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 726 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
727 727
728 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 728 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
729 LayerTreeHostImpl::FrameData* frame_data, 729 FrameData* frame_data,
730 DrawResult draw_result) override { 730 DrawResult draw_result) override {
731 EXPECT_EQ(DRAW_SUCCESS, draw_result); 731 EXPECT_EQ(DRAW_SUCCESS, draw_result);
732 732
733 gfx::RectF root_damage_rect; 733 gfx::RectF root_damage_rect;
734 if (!frame_data->render_passes.empty()) 734 if (!frame_data->render_passes.empty())
735 root_damage_rect = frame_data->render_passes.back()->damage_rect; 735 root_damage_rect = frame_data->render_passes.back()->damage_rect;
736 736
737 // The first time, the whole view needs be drawn. 737 // The first time, the whole view needs be drawn.
738 // Afterwards, just the opacity of surface_layer1 is changed a few times, 738 // Afterwards, just the opacity of surface_layer1 is changed a few times,
739 // and each damage should be the bounding box of it and its child. If this 739 // and each damage should be the bounding box of it and its child. If this
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
1253 FakePictureLayerImpl* root = 1253 FakePictureLayerImpl* root =
1254 static_cast<FakePictureLayerImpl*>(impl->active_tree()->root_layer()); 1254 static_cast<FakePictureLayerImpl*>(impl->active_tree()->root_layer());
1255 FakePictureLayerImpl* child = static_cast<FakePictureLayerImpl*>( 1255 FakePictureLayerImpl* child = static_cast<FakePictureLayerImpl*>(
1256 impl->active_tree()->root_layer()->children()[0]); 1256 impl->active_tree()->root_layer()->children()[0]);
1257 1257
1258 // Positions remain in layout pixels. 1258 // Positions remain in layout pixels.
1259 EXPECT_EQ(gfx::Point(0, 0), root->position()); 1259 EXPECT_EQ(gfx::Point(0, 0), root->position());
1260 EXPECT_EQ(gfx::Point(2, 2), child->position()); 1260 EXPECT_EQ(gfx::Point(2, 2), child->position());
1261 1261
1262 // Compute all the layer transforms for the frame. 1262 // Compute all the layer transforms for the frame.
1263 LayerTreeHostImpl::FrameData frame_data; 1263 FrameData frame_data;
1264 impl->PrepareToDraw(&frame_data); 1264 impl->PrepareToDraw(&frame_data);
1265 impl->DidDrawAllLayers(frame_data); 1265 impl->DidDrawAllLayers(frame_data);
1266 1266
1267 const LayerImplList& render_surface_layer_list = 1267 const LayerImplList& render_surface_layer_list =
1268 *frame_data.render_surface_layer_list; 1268 *frame_data.render_surface_layer_list;
1269 1269
1270 // Both layers should be drawing into the root render surface. 1270 // Both layers should be drawing into the root render surface.
1271 ASSERT_EQ(1u, render_surface_layer_list.size()); 1271 ASSERT_EQ(1u, render_surface_layer_list.size());
1272 ASSERT_EQ(root->render_surface(), 1272 ASSERT_EQ(root->render_surface(),
1273 render_surface_layer_list[0]->render_surface()); 1273 render_surface_layer_list[0]->render_surface());
(...skipping 1149 matching lines...) Expand 10 before | Expand all | Expand 10 after
2423 settings->use_external_begin_frame_source = true; 2423 settings->use_external_begin_frame_source = true;
2424 } 2424 }
2425 2425
2426 void BeginTest() override { 2426 void BeginTest() override {
2427 // This will trigger a SetNeedsBeginFrame which will trigger a 2427 // This will trigger a SetNeedsBeginFrame which will trigger a
2428 // BeginFrame. 2428 // BeginFrame.
2429 PostSetNeedsCommitToMainThread(); 2429 PostSetNeedsCommitToMainThread();
2430 } 2430 }
2431 2431
2432 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 2432 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
2433 LayerTreeHostImpl::FrameData* frame, 2433 FrameData* frame,
2434 DrawResult draw_result) override { 2434 DrawResult draw_result) override {
2435 EndTest(); 2435 EndTest();
2436 return DRAW_SUCCESS; 2436 return DRAW_SUCCESS;
2437 } 2437 }
2438 2438
2439 void AfterTest() override {} 2439 void AfterTest() override {}
2440 2440
2441 private: 2441 private:
2442 base::TimeTicks frame_time_; 2442 base::TimeTicks frame_time_;
2443 }; 2443 };
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
2730 texImageIOSurface2DCHROMIUM(GL_TEXTURE_RECTANGLE_ARB, 2730 texImageIOSurface2DCHROMIUM(GL_TEXTURE_RECTANGLE_ARB,
2731 io_surface_size_.width(), 2731 io_surface_size_.width(),
2732 io_surface_size_.height(), 2732 io_surface_size_.height(),
2733 io_surface_id_, 2733 io_surface_id_,
2734 0)).Times(1); 2734 0)).Times(1);
2735 2735
2736 EXPECT_CALL(*mock_context_, bindTexture(_, 0)).Times(AnyNumber()); 2736 EXPECT_CALL(*mock_context_, bindTexture(_, 0)).Times(AnyNumber());
2737 } 2737 }
2738 2738
2739 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 2739 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
2740 LayerTreeHostImpl::FrameData* frame, 2740 FrameData* frame,
2741 DrawResult draw_result) override { 2741 DrawResult draw_result) override {
2742 Mock::VerifyAndClearExpectations(&mock_context_); 2742 Mock::VerifyAndClearExpectations(&mock_context_);
2743 ResourceProvider* resource_provider = host_impl->resource_provider(); 2743 ResourceProvider* resource_provider = host_impl->resource_provider();
2744 EXPECT_EQ(1u, resource_provider->num_resources()); 2744 EXPECT_EQ(1u, resource_provider->num_resources());
2745 CHECK_EQ(1u, frame->render_passes.size()); 2745 CHECK_EQ(1u, frame->render_passes.size());
2746 CHECK_LE(1u, frame->render_passes[0]->quad_list.size()); 2746 CHECK_LE(1u, frame->render_passes[0]->quad_list.size());
2747 const DrawQuad* quad = frame->render_passes[0]->quad_list.front(); 2747 const DrawQuad* quad = frame->render_passes[0]->quad_list.front();
2748 CHECK_EQ(DrawQuad::IO_SURFACE_CONTENT, quad->material); 2748 CHECK_EQ(DrawQuad::IO_SURFACE_CONTENT, quad->material);
2749 const IOSurfaceDrawQuad* io_surface_draw_quad = 2749 const IOSurfaceDrawQuad* io_surface_draw_quad =
2750 IOSurfaceDrawQuad::MaterialCast(quad); 2750 IOSurfaceDrawQuad::MaterialCast(quad);
(...skipping 1316 matching lines...) Expand 10 before | Expand all | Expand 10 after
4067 public: 4067 public:
4068 LayerTreeHostTestTreeActivationCallback() 4068 LayerTreeHostTestTreeActivationCallback()
4069 : num_commits_(0), callback_count_(0) {} 4069 : num_commits_(0), callback_count_(0) {}
4070 4070
4071 void BeginTest() override { 4071 void BeginTest() override {
4072 EXPECT_TRUE(HasImplThread()); 4072 EXPECT_TRUE(HasImplThread());
4073 PostSetNeedsCommitToMainThread(); 4073 PostSetNeedsCommitToMainThread();
4074 } 4074 }
4075 4075
4076 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 4076 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
4077 LayerTreeHostImpl::FrameData* frame_data, 4077 FrameData* frame_data,
4078 DrawResult draw_result) override { 4078 DrawResult draw_result) override {
4079 ++num_commits_; 4079 ++num_commits_;
4080 switch (num_commits_) { 4080 switch (num_commits_) {
4081 case 1: 4081 case 1:
4082 EXPECT_EQ(0, callback_count_); 4082 EXPECT_EQ(0, callback_count_);
4083 callback_count_ = 0; 4083 callback_count_ = 0;
4084 SetCallback(true); 4084 SetCallback(true);
4085 PostSetNeedsCommitToMainThread(); 4085 PostSetNeedsCommitToMainThread();
4086 break; 4086 break;
4087 case 2: 4087 case 2:
(...skipping 1486 matching lines...) Expand 10 before | Expand all | Expand 10 after
5574 pinch->AddChild(layer); 5574 pinch->AddChild(layer);
5575 5575
5576 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch); 5576 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch);
5577 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f); 5577 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f);
5578 layer_tree_host()->SetRootLayer(root); 5578 layer_tree_host()->SetRootLayer(root);
5579 LayerTreeHostTest::SetupTree(); 5579 LayerTreeHostTest::SetupTree();
5580 } 5580 }
5581 5581
5582 // Returns the delta scale of all quads in the frame's root pass from their 5582 // Returns the delta scale of all quads in the frame's root pass from their
5583 // ideal, or 0 if they are not all the same. 5583 // ideal, or 0 if they are not all the same.
5584 float FrameQuadScaleDeltaFromIdeal(LayerTreeHostImpl::FrameData* frame_data) { 5584 float FrameQuadScaleDeltaFromIdeal(FrameData* frame_data) {
5585 if (frame_data->has_no_damage) 5585 if (frame_data->has_no_damage)
5586 return 0.f; 5586 return 0.f;
5587 float frame_scale = 0.f; 5587 float frame_scale = 0.f;
5588 RenderPass* root_pass = frame_data->render_passes.back(); 5588 RenderPass* root_pass = frame_data->render_passes.back();
5589 for (const auto& draw_quad : root_pass->quad_list) { 5589 for (const auto& draw_quad : root_pass->quad_list) {
5590 // Checkerboards mean an incomplete frame. 5590 // Checkerboards mean an incomplete frame.
5591 if (draw_quad->material != DrawQuad::TILED_CONTENT) 5591 if (draw_quad->material != DrawQuad::TILED_CONTENT)
5592 return 0.f; 5592 return 0.f;
5593 const TileDrawQuad* quad = TileDrawQuad::MaterialCast(draw_quad); 5593 const TileDrawQuad* quad = TileDrawQuad::MaterialCast(draw_quad);
5594 float quad_scale = 5594 float quad_scale =
5595 quad->tex_coord_rect.width() / static_cast<float>(quad->rect.width()); 5595 quad->tex_coord_rect.width() / static_cast<float>(quad->rect.width());
5596 float transform_scale = 5596 float transform_scale =
5597 SkMScalarToFloat(quad->quadTransform().matrix().get(0, 0)); 5597 SkMScalarToFloat(quad->quadTransform().matrix().get(0, 0));
5598 float scale = quad_scale / transform_scale; 5598 float scale = quad_scale / transform_scale;
5599 if (frame_scale != 0.f && frame_scale != scale) 5599 if (frame_scale != 0.f && frame_scale != scale)
5600 return 0.f; 5600 return 0.f;
5601 frame_scale = scale; 5601 frame_scale = scale;
5602 } 5602 }
5603 return frame_scale; 5603 return frame_scale;
5604 } 5604 }
5605 5605
5606 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 5606 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
5607 5607
5608 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 5608 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
5609 LayerTreeHostImpl::FrameData* frame_data, 5609 FrameData* frame_data,
5610 DrawResult draw_result) override { 5610 DrawResult draw_result) override {
5611 float quad_scale_delta = FrameQuadScaleDeltaFromIdeal(frame_data); 5611 float quad_scale_delta = FrameQuadScaleDeltaFromIdeal(frame_data);
5612 switch (frame_) { 5612 switch (frame_) {
5613 case 1: 5613 case 1:
5614 // Drew at page scale 1 before any pinching. 5614 // Drew at page scale 1 before any pinching.
5615 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor()); 5615 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor());
5616 EXPECT_EQ(1.f, quad_scale_delta); 5616 EXPECT_EQ(1.f, quad_scale_delta);
5617 PostNextAfterDraw(host_impl); 5617 PostNextAfterDraw(host_impl);
5618 break; 5618 break;
5619 case 2: 5619 case 2:
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
5774 layer->SetContentsOpaque(true); 5774 layer->SetContentsOpaque(true);
5775 root->AddChild(layer); 5775 root->AddChild(layer);
5776 5776
5777 layer_tree_host()->SetRootLayer(root); 5777 layer_tree_host()->SetRootLayer(root);
5778 LayerTreeHostTest::SetupTree(); 5778 LayerTreeHostTest::SetupTree();
5779 } 5779 }
5780 5780
5781 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 5781 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
5782 5782
5783 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 5783 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
5784 LayerTreeHostImpl::FrameData* frame_data, 5784 FrameData* frame_data,
5785 DrawResult draw_result) override { 5785 DrawResult draw_result) override {
5786 EXPECT_NE(0u, host_impl->resource_provider()->num_resources()); 5786 EXPECT_NE(0u, host_impl->resource_provider()->num_resources());
5787 EndTest(); 5787 EndTest();
5788 return draw_result; 5788 return draw_result;
5789 } 5789 }
5790 void AfterTest() override {} 5790 void AfterTest() override {}
5791 5791
5792 FakeContentLayerClient client_; 5792 FakeContentLayerClient client_;
5793 }; 5793 };
5794 5794
(...skipping 24 matching lines...) Expand all
5819 root->SetContentsOpaque(true); 5819 root->SetContentsOpaque(true);
5820 5820
5821 layer_tree_host()->SetRootLayer(root); 5821 layer_tree_host()->SetRootLayer(root);
5822 LayerTreeHostTest::SetupTree(); 5822 LayerTreeHostTest::SetupTree();
5823 layer_tree_host()->SetViewportSize(viewport_size_); 5823 layer_tree_host()->SetViewportSize(viewport_size_);
5824 } 5824 }
5825 5825
5826 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 5826 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
5827 5827
5828 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 5828 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
5829 LayerTreeHostImpl::FrameData* frame_data, 5829 FrameData* frame_data,
5830 DrawResult draw_result) override { 5830 DrawResult draw_result) override {
5831 EXPECT_EQ(4u, host_impl->resource_provider()->num_resources()); 5831 EXPECT_EQ(4u, host_impl->resource_provider()->num_resources());
5832 5832
5833 // Verify which tiles got resources using an eviction iterator, which has to 5833 // Verify which tiles got resources using an eviction iterator, which has to
5834 // return all tiles that have resources. 5834 // return all tiles that have resources.
5835 scoped_ptr<EvictionTilePriorityQueue> eviction_queue( 5835 scoped_ptr<EvictionTilePriorityQueue> eviction_queue(
5836 host_impl->BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); 5836 host_impl->BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES));
5837 int tile_count = 0; 5837 int tile_count = 0;
5838 for (; !eviction_queue->IsEmpty(); eviction_queue->Pop()) { 5838 for (; !eviction_queue->IsEmpty(); eviction_queue->Pop()) {
5839 Tile* tile = eviction_queue->Top(); 5839 Tile* tile = eviction_queue->Top();
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
5882 root->SetContentsOpaque(true); 5882 root->SetContentsOpaque(true);
5883 5883
5884 layer_tree_host()->SetRootLayer(root); 5884 layer_tree_host()->SetRootLayer(root);
5885 LayerTreeHostTest::SetupTree(); 5885 LayerTreeHostTest::SetupTree();
5886 layer_tree_host()->SetViewportSize(viewport_size_); 5886 layer_tree_host()->SetViewportSize(viewport_size_);
5887 } 5887 }
5888 5888
5889 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 5889 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
5890 5890
5891 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 5891 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
5892 LayerTreeHostImpl::FrameData* frame_data, 5892 FrameData* frame_data,
5893 DrawResult draw_result) override { 5893 DrawResult draw_result) override {
5894 EXPECT_EQ(10u, host_impl->resource_provider()->num_resources()); 5894 EXPECT_EQ(10u, host_impl->resource_provider()->num_resources());
5895 EndTest(); 5895 EndTest();
5896 return draw_result; 5896 return draw_result;
5897 } 5897 }
5898 5898
5899 void AfterTest() override {} 5899 void AfterTest() override {}
5900 5900
5901 private: 5901 private:
5902 FakeContentLayerClient client_; 5902 FakeContentLayerClient client_;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
5943 pinch->AddChild(layer); 5943 pinch->AddChild(layer);
5944 5944
5945 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch); 5945 layer_tree_host()->RegisterViewportLayers(NULL, root, pinch, pinch);
5946 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f); 5946 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 1.f, 4.f);
5947 layer_tree_host()->SetRootLayer(root); 5947 layer_tree_host()->SetRootLayer(root);
5948 LayerTreeHostTest::SetupTree(); 5948 LayerTreeHostTest::SetupTree();
5949 } 5949 }
5950 5950
5951 // Returns the delta scale of all quads in the frame's root pass from their 5951 // Returns the delta scale of all quads in the frame's root pass from their
5952 // ideal, or 0 if they are not all the same. 5952 // ideal, or 0 if they are not all the same.
5953 float FrameQuadScaleDeltaFromIdeal(LayerTreeHostImpl::FrameData* frame_data) { 5953 float FrameQuadScaleDeltaFromIdeal(FrameData* frame_data) {
5954 if (frame_data->has_no_damage) 5954 if (frame_data->has_no_damage)
5955 return 0.f; 5955 return 0.f;
5956 float frame_scale = 0.f; 5956 float frame_scale = 0.f;
5957 RenderPass* root_pass = frame_data->render_passes.back(); 5957 RenderPass* root_pass = frame_data->render_passes.back();
5958 for (const auto& draw_quad : root_pass->quad_list) { 5958 for (const auto& draw_quad : root_pass->quad_list) {
5959 const TileDrawQuad* quad = TileDrawQuad::MaterialCast(draw_quad); 5959 const TileDrawQuad* quad = TileDrawQuad::MaterialCast(draw_quad);
5960 float quad_scale = 5960 float quad_scale =
5961 quad->tex_coord_rect.width() / static_cast<float>(quad->rect.width()); 5961 quad->tex_coord_rect.width() / static_cast<float>(quad->rect.width());
5962 float transform_scale = 5962 float transform_scale =
5963 SkMScalarToFloat(quad->quadTransform().matrix().get(0, 0)); 5963 SkMScalarToFloat(quad->quadTransform().matrix().get(0, 0));
5964 float scale = quad_scale / transform_scale; 5964 float scale = quad_scale / transform_scale;
5965 if (frame_scale != 0.f && frame_scale != scale) 5965 if (frame_scale != 0.f && frame_scale != scale)
5966 return 0.f; 5966 return 0.f;
5967 frame_scale = scale; 5967 frame_scale = scale;
5968 } 5968 }
5969 return frame_scale; 5969 return frame_scale;
5970 } 5970 }
5971 5971
5972 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 5972 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
5973 5973
5974 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 5974 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
5975 LayerTreeHostImpl::FrameData* frame_data, 5975 FrameData* frame_data,
5976 DrawResult draw_result) override { 5976 DrawResult draw_result) override {
5977 float quad_scale_delta = FrameQuadScaleDeltaFromIdeal(frame_data); 5977 float quad_scale_delta = FrameQuadScaleDeltaFromIdeal(frame_data);
5978 switch (step_) { 5978 switch (step_) {
5979 case 1: 5979 case 1:
5980 // Drew at scale 1 before any pinching. 5980 // Drew at scale 1 before any pinching.
5981 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor()); 5981 EXPECT_EQ(1.f, host_impl->active_tree()->current_page_scale_factor());
5982 EXPECT_EQ(1.f, quad_scale_delta); 5982 EXPECT_EQ(1.f, quad_scale_delta);
5983 break; 5983 break;
5984 case 2: 5984 case 2:
5985 if (quad_scale_delta != 1.f / 1.5f) 5985 if (quad_scale_delta != 1.f / 1.5f)
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
6361 6361
6362 void AfterTest() override {} 6362 void AfterTest() override {}
6363 6363
6364 private: 6364 private:
6365 scoped_refptr<Layer> child_; 6365 scoped_refptr<Layer> child_;
6366 }; 6366 };
6367 6367
6368 SINGLE_AND_MULTI_THREAD_TEST_F(LayerPreserveRenderSurfaceFromOutputRequests); 6368 SINGLE_AND_MULTI_THREAD_TEST_F(LayerPreserveRenderSurfaceFromOutputRequests);
6369 6369
6370 } // namespace cc 6370 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698