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

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

Issue 131683005: cc: Make PrepareToDraw return an enum for why it aborts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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 | Annotate | Revision Log
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 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 root_layer_(ContentLayer::Create(&client_)) {} 278 root_layer_(ContentLayer::Create(&client_)) {}
279 279
280 virtual void BeginTest() OVERRIDE { 280 virtual void BeginTest() OVERRIDE {
281 root_layer_->SetIsDrawable(true); 281 root_layer_->SetIsDrawable(true);
282 root_layer_->SetBounds(bounds_); 282 root_layer_->SetBounds(bounds_);
283 layer_tree_host()->SetRootLayer(root_layer_); 283 layer_tree_host()->SetRootLayer(root_layer_);
284 layer_tree_host()->SetViewportSize(bounds_); 284 layer_tree_host()->SetViewportSize(bounds_);
285 PostSetNeedsCommitToMainThread(); 285 PostSetNeedsCommitToMainThread();
286 } 286 }
287 287
288 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 288 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread(
289 LayerTreeHostImpl::FrameData* frame_data, 289 LayerTreeHostImpl* host_impl,
290 bool result) OVERRIDE { 290 LayerTreeHostImpl::FrameData* frame_data,
291 EXPECT_TRUE(result); 291 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE {
292 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, draw_result);
292 293
293 gfx::RectF root_damage_rect; 294 gfx::RectF root_damage_rect;
294 if (!frame_data->render_passes.empty()) 295 if (!frame_data->render_passes.empty())
295 root_damage_rect = frame_data->render_passes.back()->damage_rect; 296 root_damage_rect = frame_data->render_passes.back()->damage_rect;
296 297
297 if (!num_draws_) { 298 if (!num_draws_) {
298 // If this is the first frame, expect full frame damage. 299 // If this is the first frame, expect full frame damage.
299 EXPECT_RECT_EQ(root_damage_rect, gfx::Rect(bounds_)); 300 EXPECT_RECT_EQ(root_damage_rect, gfx::Rect(bounds_));
300 } else { 301 } else {
301 // Check that invalid_rect_ is indeed repainted. 302 // Check that invalid_rect_ is indeed repainted.
302 EXPECT_TRUE(root_damage_rect.Contains(invalid_rect_)); 303 EXPECT_TRUE(root_damage_rect.Contains(invalid_rect_));
303 } 304 }
304 305
305 return result; 306 return draw_result;
306 } 307 }
307 308
308 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { 309 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
309 if (!num_draws_) { 310 if (!num_draws_) {
310 PostSetNeedsRedrawRectToMainThread(invalid_rect_); 311 PostSetNeedsRedrawRectToMainThread(invalid_rect_);
311 } else { 312 } else {
312 EndTest(); 313 EndTest();
313 } 314 }
314 num_draws_++; 315 num_draws_++;
315 } 316 }
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 : did_post_readback_(false) {} 510 : did_post_readback_(false) {}
510 511
511 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { 512 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
512 // This enables forced draws after a single prepare to draw failure. 513 // This enables forced draws after a single prepare to draw failure.
513 settings->timeout_and_draw_when_animation_checkerboards = true; 514 settings->timeout_and_draw_when_animation_checkerboards = true;
514 settings->maximum_number_of_failed_draws_before_draw_is_forced_ = 1; 515 settings->maximum_number_of_failed_draws_before_draw_is_forced_ = 1;
515 } 516 }
516 517
517 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 518 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
518 519
519 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 520 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread(
520 LayerTreeHostImpl::FrameData* frame_data, 521 LayerTreeHostImpl* host_impl,
521 bool result) OVERRIDE { 522 LayerTreeHostImpl::FrameData* frame_data,
523 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE {
522 int sfn = host_impl->active_tree()->source_frame_number(); 524 int sfn = host_impl->active_tree()->source_frame_number();
523 EXPECT_TRUE(sfn == kFirstCommitSourceFrameNumber || 525 EXPECT_TRUE(sfn == kFirstCommitSourceFrameNumber ||
524 sfn == kReadbackSourceFrameNumber || 526 sfn == kReadbackSourceFrameNumber ||
525 sfn == kReadbackReplacementAndForcedDrawSourceFrameNumber) 527 sfn == kReadbackReplacementAndForcedDrawSourceFrameNumber)
526 << sfn; 528 << sfn;
527 529
528 // Before we react to the failed draw by initiating the forced draw 530 // Before we react to the failed draw by initiating the forced draw
529 // sequence, start a readback on the main thread. 531 // sequence, start a readback on the main thread.
530 if (sfn == kFirstCommitSourceFrameNumber && !did_post_readback_) { 532 if (sfn == kFirstCommitSourceFrameNumber && !did_post_readback_) {
531 did_post_readback_ = true; 533 did_post_readback_ = true;
532 PostReadbackToMainThread(); 534 PostReadbackToMainThread();
533 } 535 }
534 536
535 // Returning false will result in a forced draw. 537 // Returning false will result in a forced draw.
536 return false; 538 return DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS;
537 } 539 }
538 540
539 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 541 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
540 // We should only draw for the readback and the forced draw. 542 // We should only draw for the readback and the forced draw.
541 int sfn = host_impl->active_tree()->source_frame_number(); 543 int sfn = host_impl->active_tree()->source_frame_number();
542 EXPECT_TRUE(sfn == kReadbackSourceFrameNumber || 544 EXPECT_TRUE(sfn == kReadbackSourceFrameNumber ||
543 sfn == kReadbackReplacementAndForcedDrawSourceFrameNumber) 545 sfn == kReadbackReplacementAndForcedDrawSourceFrameNumber)
544 << sfn; 546 << sfn;
545 } 547 }
546 548
(...skipping 22 matching lines...) Expand all
569 static const int kReadbackReplacementSourceFrameNumber = 3; 571 static const int kReadbackReplacementSourceFrameNumber = 3;
570 572
571 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { 573 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
572 // This enables forced draws after a single prepare to draw failure. 574 // This enables forced draws after a single prepare to draw failure.
573 settings->timeout_and_draw_when_animation_checkerboards = true; 575 settings->timeout_and_draw_when_animation_checkerboards = true;
574 settings->maximum_number_of_failed_draws_before_draw_is_forced_ = 1; 576 settings->maximum_number_of_failed_draws_before_draw_is_forced_ = 1;
575 } 577 }
576 578
577 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 579 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
578 580
579 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 581 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread(
580 LayerTreeHostImpl::FrameData* frame_data, 582 LayerTreeHostImpl* host_impl,
581 bool result) OVERRIDE { 583 LayerTreeHostImpl::FrameData* frame_data,
584 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE {
582 int sfn = host_impl->active_tree()->source_frame_number(); 585 int sfn = host_impl->active_tree()->source_frame_number();
583 EXPECT_TRUE(sfn == kFirstCommitSourceFrameNumber || 586 EXPECT_TRUE(sfn == kFirstCommitSourceFrameNumber ||
584 sfn == kForcedDrawSourceFrameNumber || 587 sfn == kForcedDrawSourceFrameNumber ||
585 sfn == kReadbackSourceFrameNumber || 588 sfn == kReadbackSourceFrameNumber ||
586 sfn == kReadbackReplacementSourceFrameNumber) 589 sfn == kReadbackReplacementSourceFrameNumber)
587 << sfn; 590 << sfn;
588 591
589 // Returning false will result in a forced draw. 592 // Returning false will result in a forced draw.
590 return false; 593 return DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS;
591 } 594 }
592 595
593 virtual void DidCommit() OVERRIDE { 596 virtual void DidCommit() OVERRIDE {
594 if (layer_tree_host()->source_frame_number() == 597 if (layer_tree_host()->source_frame_number() ==
595 kForcedDrawSourceFrameNumber) { 598 kForcedDrawSourceFrameNumber) {
596 // Avoid aborting the forced draw commit so source_frame_number 599 // Avoid aborting the forced draw commit so source_frame_number
597 // increments. 600 // increments.
598 layer_tree_host()->SetNeedsCommit(); 601 layer_tree_host()->SetNeedsCommit();
599 } else if (layer_tree_host()->source_frame_number() == 602 } else if (layer_tree_host()->source_frame_number() ==
600 kReadbackSourceFrameNumber) { 603 kReadbackSourceFrameNumber) {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 layer_tree_host()->SetRootLayer(root_layer_); 648 layer_tree_host()->SetRootLayer(root_layer_);
646 layer_tree_host()->SetViewportSize(bounds_); 649 layer_tree_host()->SetViewportSize(bounds_);
647 PostSetNeedsCommitToMainThread(); 650 PostSetNeedsCommitToMainThread();
648 } 651 }
649 652
650 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 653 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
651 if (num_draws_ == 3 && host_impl->settings().impl_side_painting) 654 if (num_draws_ == 3 && host_impl->settings().impl_side_painting)
652 host_impl->SetNeedsRedrawRect(invalid_rect_); 655 host_impl->SetNeedsRedrawRect(invalid_rect_);
653 } 656 }
654 657
655 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 658 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread(
656 LayerTreeHostImpl::FrameData* frame_data, 659 LayerTreeHostImpl* host_impl,
657 bool result) OVERRIDE { 660 LayerTreeHostImpl::FrameData* frame_data,
658 EXPECT_TRUE(result); 661 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE {
662 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, draw_result);
659 663
660 gfx::RectF root_damage_rect; 664 gfx::RectF root_damage_rect;
661 if (!frame_data->render_passes.empty()) 665 if (!frame_data->render_passes.empty())
662 root_damage_rect = frame_data->render_passes.back()->damage_rect; 666 root_damage_rect = frame_data->render_passes.back()->damage_rect;
663 667
664 switch (num_draws_) { 668 switch (num_draws_) {
665 case 0: 669 case 0:
666 EXPECT_RECT_EQ(gfx::Rect(bounds_), root_damage_rect); 670 EXPECT_RECT_EQ(gfx::Rect(bounds_), root_damage_rect);
667 break; 671 break;
668 case 1: 672 case 1:
669 case 2: 673 case 2:
670 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), root_damage_rect); 674 EXPECT_RECT_EQ(gfx::Rect(0, 0, 0, 0), root_damage_rect);
671 break; 675 break;
672 case 3: 676 case 3:
673 EXPECT_RECT_EQ(invalid_rect_, root_damage_rect); 677 EXPECT_RECT_EQ(invalid_rect_, root_damage_rect);
674 break; 678 break;
675 case 4: 679 case 4:
676 EXPECT_RECT_EQ(gfx::Rect(bounds_), root_damage_rect); 680 EXPECT_RECT_EQ(gfx::Rect(bounds_), root_damage_rect);
677 break; 681 break;
678 default: 682 default:
679 NOTREACHED(); 683 NOTREACHED();
680 } 684 }
681 685
682 return result; 686 return draw_result;
683 } 687 }
684 688
685 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 689 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
686 switch (num_draws_) { 690 switch (num_draws_) {
687 case 0: 691 case 0:
688 case 1: 692 case 1:
689 // Cycle through a couple of empty commits to ensure we're observing the 693 // Cycle through a couple of empty commits to ensure we're observing the
690 // right behavior 694 // right behavior
691 PostSetNeedsCommitToMainThread(); 695 PostSetNeedsCommitToMainThread();
692 break; 696 break;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 746
743 child_layer_ = FakeContentLayer::Create(&client_); 747 child_layer_ = FakeContentLayer::Create(&client_);
744 child_layer_->SetBounds(gfx::Size(25, 25)); 748 child_layer_->SetBounds(gfx::Size(25, 25));
745 parent_layer_->AddChild(child_layer_); 749 parent_layer_->AddChild(child_layer_);
746 750
747 LayerTreeHostTest::SetupTree(); 751 LayerTreeHostTest::SetupTree();
748 } 752 }
749 753
750 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 754 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
751 755
752 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 756 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread(
753 LayerTreeHostImpl::FrameData* frame_data, 757 LayerTreeHostImpl* host_impl,
754 bool result) OVERRIDE { 758 LayerTreeHostImpl::FrameData* frame_data,
755 EXPECT_TRUE(result); 759 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE {
760 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, draw_result);
756 761
757 gfx::RectF root_damage_rect; 762 gfx::RectF root_damage_rect;
758 if (!frame_data->render_passes.empty()) 763 if (!frame_data->render_passes.empty())
759 root_damage_rect = frame_data->render_passes.back()->damage_rect; 764 root_damage_rect = frame_data->render_passes.back()->damage_rect;
760 765
761 // The first time, the whole view needs be drawn. 766 // The first time, the whole view needs be drawn.
762 // Afterwards, just the opacity of surface_layer1 is changed a few times, 767 // Afterwards, just the opacity of surface_layer1 is changed a few times,
763 // and each damage should be the bounding box of it and its child. If this 768 // and each damage should be the bounding box of it and its child. If this
764 // was working improperly, the damage might not include its childs bounding 769 // was working improperly, the damage might not include its childs bounding
765 // box. 770 // box.
766 switch (layer_tree_host()->source_frame_number()) { 771 switch (layer_tree_host()->source_frame_number()) {
767 case 1: 772 case 1:
768 EXPECT_RECT_EQ(gfx::Rect(root_layer_->bounds()), root_damage_rect); 773 EXPECT_RECT_EQ(gfx::Rect(root_layer_->bounds()), root_damage_rect);
769 break; 774 break;
770 case 2: 775 case 2:
771 case 3: 776 case 3:
772 case 4: 777 case 4:
773 EXPECT_RECT_EQ(gfx::Rect(child_layer_->bounds()), root_damage_rect); 778 EXPECT_RECT_EQ(gfx::Rect(child_layer_->bounds()), root_damage_rect);
774 break; 779 break;
775 default: 780 default:
776 NOTREACHED(); 781 NOTREACHED();
777 } 782 }
778 783
779 return result; 784 return draw_result;
780 } 785 }
781 786
782 virtual void DidCommitAndDrawFrame() OVERRIDE { 787 virtual void DidCommitAndDrawFrame() OVERRIDE {
783 switch (layer_tree_host()->source_frame_number()) { 788 switch (layer_tree_host()->source_frame_number()) {
784 case 1: 789 case 1:
785 // Test not owning the surface. 790 // Test not owning the surface.
786 parent_layer_->SetOpacity(1.0f); 791 parent_layer_->SetOpacity(1.0f);
787 break; 792 break;
788 case 2: 793 case 2:
789 parent_layer_->SetOpacity(0.0f); 794 parent_layer_->SetOpacity(0.0f);
(...skipping 1787 matching lines...) Expand 10 before | Expand all | Expand 10 after
2577 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { 2582 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
2578 settings->begin_impl_frame_scheduling_enabled = true; 2583 settings->begin_impl_frame_scheduling_enabled = true;
2579 } 2584 }
2580 2585
2581 virtual void BeginTest() OVERRIDE { 2586 virtual void BeginTest() OVERRIDE {
2582 // This will trigger a SetNeedsBeginImplFrame which will trigger a 2587 // This will trigger a SetNeedsBeginImplFrame which will trigger a
2583 // BeginImplFrame. 2588 // BeginImplFrame.
2584 PostSetNeedsCommitToMainThread(); 2589 PostSetNeedsCommitToMainThread();
2585 } 2590 }
2586 2591
2587 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 2592 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread(
2588 LayerTreeHostImpl::FrameData* frame, 2593 LayerTreeHostImpl* host_impl,
2589 bool result) OVERRIDE { 2594 LayerTreeHostImpl::FrameData* frame,
2595 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE {
2590 EndTest(); 2596 EndTest();
2591 return true; 2597 return DrawSwapReadbackResult::DID_DRAW;
2592 } 2598 }
2593 2599
2594 virtual void AfterTest() OVERRIDE {} 2600 virtual void AfterTest() OVERRIDE {}
2595 2601
2596 private: 2602 private:
2597 base::TimeTicks frame_time_; 2603 base::TimeTicks frame_time_;
2598 }; 2604 };
2599 2605
2600 MULTI_THREAD_TEST_F(LayerTreeHostTestBeginImplFrameNotification); 2606 MULTI_THREAD_TEST_F(LayerTreeHostTestBeginImplFrameNotification);
2601 2607
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
2864 EXPECT_CALL(*mock_context_, 2870 EXPECT_CALL(*mock_context_,
2865 texImageIOSurface2DCHROMIUM(GL_TEXTURE_RECTANGLE_ARB, 2871 texImageIOSurface2DCHROMIUM(GL_TEXTURE_RECTANGLE_ARB,
2866 io_surface_size_.width(), 2872 io_surface_size_.width(),
2867 io_surface_size_.height(), 2873 io_surface_size_.height(),
2868 io_surface_id_, 2874 io_surface_id_,
2869 0)).Times(1); 2875 0)).Times(1);
2870 2876
2871 EXPECT_CALL(*mock_context_, bindTexture(_, 0)).Times(AnyNumber()); 2877 EXPECT_CALL(*mock_context_, bindTexture(_, 0)).Times(AnyNumber());
2872 } 2878 }
2873 2879
2874 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 2880 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread(
2875 LayerTreeHostImpl::FrameData* frame, 2881 LayerTreeHostImpl* host_impl,
2876 bool result) OVERRIDE { 2882 LayerTreeHostImpl::FrameData* frame,
2883 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE {
2877 Mock::VerifyAndClearExpectations(&mock_context_); 2884 Mock::VerifyAndClearExpectations(&mock_context_);
2878 2885
2879 // The io surface layer's texture is drawn. 2886 // The io surface layer's texture is drawn.
2880 EXPECT_CALL(*mock_context_, activeTexture(GL_TEXTURE0)).Times(AtLeast(1)); 2887 EXPECT_CALL(*mock_context_, activeTexture(GL_TEXTURE0)).Times(AtLeast(1));
2881 EXPECT_CALL(*mock_context_, bindTexture(GL_TEXTURE_RECTANGLE_ARB, 1)) 2888 EXPECT_CALL(*mock_context_, bindTexture(GL_TEXTURE_RECTANGLE_ARB, 1))
2882 .Times(1); 2889 .Times(1);
2883 EXPECT_CALL(*mock_context_, drawElements(GL_TRIANGLES, 6, _, _)) 2890 EXPECT_CALL(*mock_context_, drawElements(GL_TRIANGLES, 6, _, _))
2884 .Times(AtLeast(1)); 2891 .Times(AtLeast(1));
2885 2892
2886 return result; 2893 return draw_result;
2887 } 2894 }
2888 2895
2889 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 2896 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
2890 Mock::VerifyAndClearExpectations(&mock_context_); 2897 Mock::VerifyAndClearExpectations(&mock_context_);
2891 2898
2892 EXPECT_CALL(*mock_context_, deleteTexture(1)).Times(1); 2899 EXPECT_CALL(*mock_context_, deleteTexture(1)).Times(1);
2893 EndTest(); 2900 EndTest();
2894 } 2901 }
2895 2902
2896 virtual void AfterTest() OVERRIDE {} 2903 virtual void AfterTest() OVERRIDE {}
(...skipping 1223 matching lines...) Expand 10 before | Expand all | Expand 10 after
4120 class LayerTreeHostTestTreeActivationCallback : public LayerTreeHostTest { 4127 class LayerTreeHostTestTreeActivationCallback : public LayerTreeHostTest {
4121 public: 4128 public:
4122 LayerTreeHostTestTreeActivationCallback() 4129 LayerTreeHostTestTreeActivationCallback()
4123 : num_commits_(0), callback_count_(0) {} 4130 : num_commits_(0), callback_count_(0) {}
4124 4131
4125 virtual void BeginTest() OVERRIDE { 4132 virtual void BeginTest() OVERRIDE {
4126 EXPECT_TRUE(HasImplThread()); 4133 EXPECT_TRUE(HasImplThread());
4127 PostSetNeedsCommitToMainThread(); 4134 PostSetNeedsCommitToMainThread();
4128 } 4135 }
4129 4136
4130 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 4137 virtual DrawSwapReadbackResult::DrawResult PrepareToDrawOnThread(
4131 LayerTreeHostImpl::FrameData* frame_data, 4138 LayerTreeHostImpl* host_impl,
4132 bool result) OVERRIDE { 4139 LayerTreeHostImpl::FrameData* frame_data,
4140 DrawSwapReadbackResult::DrawResult draw_result) OVERRIDE {
4133 ++num_commits_; 4141 ++num_commits_;
4134 switch (num_commits_) { 4142 switch (num_commits_) {
4135 case 1: 4143 case 1:
4136 EXPECT_EQ(0, callback_count_); 4144 EXPECT_EQ(0, callback_count_);
4137 callback_count_ = 0; 4145 callback_count_ = 0;
4138 SetCallback(true); 4146 SetCallback(true);
4139 PostSetNeedsCommitToMainThread(); 4147 PostSetNeedsCommitToMainThread();
4140 break; 4148 break;
4141 case 2: 4149 case 2:
4142 EXPECT_EQ(1, callback_count_); 4150 EXPECT_EQ(1, callback_count_);
4143 callback_count_ = 0; 4151 callback_count_ = 0;
4144 SetCallback(false); 4152 SetCallback(false);
4145 PostSetNeedsCommitToMainThread(); 4153 PostSetNeedsCommitToMainThread();
4146 break; 4154 break;
4147 case 3: 4155 case 3:
4148 EXPECT_EQ(0, callback_count_); 4156 EXPECT_EQ(0, callback_count_);
4149 callback_count_ = 0; 4157 callback_count_ = 0;
4150 EndTest(); 4158 EndTest();
4151 break; 4159 break;
4152 default: 4160 default:
4153 ADD_FAILURE() << num_commits_; 4161 ADD_FAILURE() << num_commits_;
4154 EndTest(); 4162 EndTest();
4155 break; 4163 break;
4156 } 4164 }
4157 return LayerTreeHostTest::PrepareToDrawOnThread( 4165 return LayerTreeHostTest::PrepareToDrawOnThread(
4158 host_impl, frame_data, result); 4166 host_impl, frame_data, draw_result);
4159 } 4167 }
4160 4168
4161 virtual void AfterTest() OVERRIDE { EXPECT_EQ(3, num_commits_); } 4169 virtual void AfterTest() OVERRIDE { EXPECT_EQ(3, num_commits_); }
4162 4170
4163 void SetCallback(bool enable) { 4171 void SetCallback(bool enable) {
4164 output_surface()->SetTreeActivationCallback( 4172 output_surface()->SetTreeActivationCallback(
4165 enable 4173 enable
4166 ? base::Bind( 4174 ? base::Bind(
4167 &LayerTreeHostTestTreeActivationCallback::ActivationCallback, 4175 &LayerTreeHostTestTreeActivationCallback::ActivationCallback,
4168 base::Unretained(this)) 4176 base::Unretained(this))
(...skipping 780 matching lines...) Expand 10 before | Expand all | Expand 10 after
4949 4957
4950 EndTest(); 4958 EndTest();
4951 } 4959 }
4952 4960
4953 virtual void AfterTest() OVERRIDE {} 4961 virtual void AfterTest() OVERRIDE {}
4954 }; 4962 };
4955 4963
4956 MULTI_THREAD_TEST_F(LayerTreeHostTestSimpleSwapPromiseMonitor); 4964 MULTI_THREAD_TEST_F(LayerTreeHostTestSimpleSwapPromiseMonitor);
4957 4965
4958 } // namespace cc 4966 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698