| OLD | NEW |
| 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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 #include "ui/gfx/vector2d_conversions.h" | 58 #include "ui/gfx/vector2d_conversions.h" |
| 59 | 59 |
| 60 using testing::_; | 60 using testing::_; |
| 61 using testing::AnyNumber; | 61 using testing::AnyNumber; |
| 62 using testing::AtLeast; | 62 using testing::AtLeast; |
| 63 using testing::Mock; | 63 using testing::Mock; |
| 64 | 64 |
| 65 namespace cc { | 65 namespace cc { |
| 66 namespace { | 66 namespace { |
| 67 | 67 |
| 68 class LayerTreeHostTest : public LayerTreeTest { | 68 class LayerTreeHostTest : public LayerTreeTest {}; |
| 69 }; | |
| 70 | 69 |
| 71 // Two setNeedsCommits in a row should lead to at least 1 commit and at least 1 | 70 // Two setNeedsCommits in a row should lead to at least 1 commit and at least 1 |
| 72 // draw with frame 0. | 71 // draw with frame 0. |
| 73 class LayerTreeHostTestSetNeedsCommit1 : public LayerTreeHostTest { | 72 class LayerTreeHostTestSetNeedsCommit1 : public LayerTreeHostTest { |
| 74 public: | 73 public: |
| 75 LayerTreeHostTestSetNeedsCommit1() : num_commits_(0), num_draws_(0) {} | 74 LayerTreeHostTestSetNeedsCommit1() : num_commits_(0), num_draws_(0) {} |
| 76 | 75 |
| 77 virtual void BeginTest() OVERRIDE { | 76 virtual void BeginTest() OVERRIDE { |
| 78 PostSetNeedsCommitToMainThread(); | 77 PostSetNeedsCommitToMainThread(); |
| 79 PostSetNeedsCommitToMainThread(); | 78 PostSetNeedsCommitToMainThread(); |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 MULTI_THREAD_TEST_F(LayerTreeHostTestSetNeedsRedraw); | 268 MULTI_THREAD_TEST_F(LayerTreeHostTestSetNeedsRedraw); |
| 270 | 269 |
| 271 // After setNeedsRedrawRect(invalid_rect) the final damage_rect | 270 // After setNeedsRedrawRect(invalid_rect) the final damage_rect |
| 272 // must contain invalid_rect. | 271 // must contain invalid_rect. |
| 273 class LayerTreeHostTestSetNeedsRedrawRect : public LayerTreeHostTest { | 272 class LayerTreeHostTestSetNeedsRedrawRect : public LayerTreeHostTest { |
| 274 public: | 273 public: |
| 275 LayerTreeHostTestSetNeedsRedrawRect() | 274 LayerTreeHostTestSetNeedsRedrawRect() |
| 276 : num_draws_(0), | 275 : num_draws_(0), |
| 277 bounds_(50, 50), | 276 bounds_(50, 50), |
| 278 invalid_rect_(10, 10, 20, 20), | 277 invalid_rect_(10, 10, 20, 20), |
| 279 root_layer_(ContentLayer::Create(&client_)) { | 278 root_layer_(ContentLayer::Create(&client_)) {} |
| 280 } | |
| 281 | 279 |
| 282 virtual void BeginTest() OVERRIDE { | 280 virtual void BeginTest() OVERRIDE { |
| 283 root_layer_->SetIsDrawable(true); | 281 root_layer_->SetIsDrawable(true); |
| 284 root_layer_->SetBounds(bounds_); | 282 root_layer_->SetBounds(bounds_); |
| 285 layer_tree_host()->SetRootLayer(root_layer_); | 283 layer_tree_host()->SetRootLayer(root_layer_); |
| 286 layer_tree_host()->SetViewportSize(bounds_); | 284 layer_tree_host()->SetViewportSize(bounds_); |
| 287 PostSetNeedsCommitToMainThread(); | 285 PostSetNeedsCommitToMainThread(); |
| 288 } | 286 } |
| 289 | 287 |
| 290 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 288 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 309 | 307 |
| 310 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 308 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 311 if (!num_draws_) { | 309 if (!num_draws_) { |
| 312 PostSetNeedsRedrawRectToMainThread(invalid_rect_); | 310 PostSetNeedsRedrawRectToMainThread(invalid_rect_); |
| 313 } else { | 311 } else { |
| 314 EndTest(); | 312 EndTest(); |
| 315 } | 313 } |
| 316 num_draws_++; | 314 num_draws_++; |
| 317 } | 315 } |
| 318 | 316 |
| 319 virtual void AfterTest() OVERRIDE { | 317 virtual void AfterTest() OVERRIDE { EXPECT_EQ(2, num_draws_); } |
| 320 EXPECT_EQ(2, num_draws_); | |
| 321 } | |
| 322 | 318 |
| 323 private: | 319 private: |
| 324 int num_draws_; | 320 int num_draws_; |
| 325 const gfx::Size bounds_; | 321 const gfx::Size bounds_; |
| 326 const gfx::Rect invalid_rect_; | 322 const gfx::Rect invalid_rect_; |
| 327 FakeContentLayerClient client_; | 323 FakeContentLayerClient client_; |
| 328 scoped_refptr<ContentLayer> root_layer_; | 324 scoped_refptr<ContentLayer> root_layer_; |
| 329 }; | 325 }; |
| 330 | 326 |
| 331 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestSetNeedsRedrawRect); | 327 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestSetNeedsRedrawRect); |
| 332 | 328 |
| 333 class LayerTreeHostTestNoExtraCommitFromInvalidate : public LayerTreeHostTest { | 329 class LayerTreeHostTestNoExtraCommitFromInvalidate : public LayerTreeHostTest { |
| 334 public: | 330 public: |
| 335 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { | 331 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { |
| 336 settings->layer_transforms_should_scale_layer_contents = true; | 332 settings->layer_transforms_should_scale_layer_contents = true; |
| 337 } | 333 } |
| 338 | 334 |
| 339 virtual void SetupTree() OVERRIDE { | 335 virtual void SetupTree() OVERRIDE { |
| 340 root_layer_ = Layer::Create(); | 336 root_layer_ = Layer::Create(); |
| 341 root_layer_->SetBounds(gfx::Size(10, 20)); | 337 root_layer_->SetBounds(gfx::Size(10, 20)); |
| 342 | 338 |
| 343 scaled_layer_ = FakeContentLayer::Create(&client_); | 339 scaled_layer_ = FakeContentLayer::Create(&client_); |
| 344 scaled_layer_->SetBounds(gfx::Size(1, 1)); | 340 scaled_layer_->SetBounds(gfx::Size(1, 1)); |
| 345 root_layer_->AddChild(scaled_layer_); | 341 root_layer_->AddChild(scaled_layer_); |
| 346 | 342 |
| 347 layer_tree_host()->SetRootLayer(root_layer_); | 343 layer_tree_host()->SetRootLayer(root_layer_); |
| 348 LayerTreeHostTest::SetupTree(); | 344 LayerTreeHostTest::SetupTree(); |
| 349 } | 345 } |
| 350 | 346 |
| 351 virtual void BeginTest() OVERRIDE { | 347 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 352 PostSetNeedsCommitToMainThread(); | |
| 353 } | |
| 354 | 348 |
| 355 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 349 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 356 if (host_impl->active_tree()->source_frame_number() == 1) | 350 if (host_impl->active_tree()->source_frame_number() == 1) |
| 357 EndTest(); | 351 EndTest(); |
| 358 } | 352 } |
| 359 | 353 |
| 360 virtual void DidCommit() OVERRIDE { | 354 virtual void DidCommit() OVERRIDE { |
| 361 switch (layer_tree_host()->source_frame_number()) { | 355 switch (layer_tree_host()->source_frame_number()) { |
| 362 case 1: | 356 case 1: |
| 363 // Changing the device scale factor causes a commit. It also changes | 357 // Changing the device scale factor causes a commit. It also changes |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 paint_scrollbar, has_thumb, root_layer_->id()); | 395 paint_scrollbar, has_thumb, root_layer_->id()); |
| 402 scrollbar_->SetPosition(gfx::Point(0, 10)); | 396 scrollbar_->SetPosition(gfx::Point(0, 10)); |
| 403 scrollbar_->SetBounds(gfx::Size(10, 10)); | 397 scrollbar_->SetBounds(gfx::Size(10, 10)); |
| 404 | 398 |
| 405 root_layer_->AddChild(scrollbar_); | 399 root_layer_->AddChild(scrollbar_); |
| 406 | 400 |
| 407 layer_tree_host()->SetRootLayer(root_layer_); | 401 layer_tree_host()->SetRootLayer(root_layer_); |
| 408 LayerTreeHostTest::SetupTree(); | 402 LayerTreeHostTest::SetupTree(); |
| 409 } | 403 } |
| 410 | 404 |
| 411 virtual void BeginTest() OVERRIDE { | 405 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 412 PostSetNeedsCommitToMainThread(); | |
| 413 } | |
| 414 | 406 |
| 415 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 407 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 416 if (host_impl->active_tree()->source_frame_number() == 1) | 408 if (host_impl->active_tree()->source_frame_number() == 1) |
| 417 EndTest(); | 409 EndTest(); |
| 418 } | 410 } |
| 419 | 411 |
| 420 virtual void DidCommit() OVERRIDE { | 412 virtual void DidCommit() OVERRIDE { |
| 421 switch (layer_tree_host()->source_frame_number()) { | 413 switch (layer_tree_host()->source_frame_number()) { |
| 422 case 1: | 414 case 1: |
| 423 // Changing the device scale factor causes a commit. It also changes | 415 // Changing the device scale factor causes a commit. It also changes |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 638 }; | 630 }; |
| 639 | 631 |
| 640 MULTI_THREAD_TEST_F(LayerTreeHostTestCompositeAndReadbackAfterForcedDraw); | 632 MULTI_THREAD_TEST_F(LayerTreeHostTestCompositeAndReadbackAfterForcedDraw); |
| 641 | 633 |
| 642 class LayerTreeHostTestSetNextCommitForcesRedraw : public LayerTreeHostTest { | 634 class LayerTreeHostTestSetNextCommitForcesRedraw : public LayerTreeHostTest { |
| 643 public: | 635 public: |
| 644 LayerTreeHostTestSetNextCommitForcesRedraw() | 636 LayerTreeHostTestSetNextCommitForcesRedraw() |
| 645 : num_draws_(0), | 637 : num_draws_(0), |
| 646 bounds_(50, 50), | 638 bounds_(50, 50), |
| 647 invalid_rect_(10, 10, 20, 20), | 639 invalid_rect_(10, 10, 20, 20), |
| 648 root_layer_(ContentLayer::Create(&client_)) { | 640 root_layer_(ContentLayer::Create(&client_)) {} |
| 649 } | |
| 650 | 641 |
| 651 virtual void BeginTest() OVERRIDE { | 642 virtual void BeginTest() OVERRIDE { |
| 652 root_layer_->SetIsDrawable(true); | 643 root_layer_->SetIsDrawable(true); |
| 653 root_layer_->SetBounds(bounds_); | 644 root_layer_->SetBounds(bounds_); |
| 654 layer_tree_host()->SetRootLayer(root_layer_); | 645 layer_tree_host()->SetRootLayer(root_layer_); |
| 655 layer_tree_host()->SetViewportSize(bounds_); | 646 layer_tree_host()->SetViewportSize(bounds_); |
| 656 PostSetNeedsCommitToMainThread(); | 647 PostSetNeedsCommitToMainThread(); |
| 657 } | 648 } |
| 658 | 649 |
| 659 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 650 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 711 case 3: | 702 case 3: |
| 712 host_impl->BlockNotifyReadyToActivateForTesting(false); | 703 host_impl->BlockNotifyReadyToActivateForTesting(false); |
| 713 break; | 704 break; |
| 714 default: | 705 default: |
| 715 EndTest(); | 706 EndTest(); |
| 716 break; | 707 break; |
| 717 } | 708 } |
| 718 num_draws_++; | 709 num_draws_++; |
| 719 } | 710 } |
| 720 | 711 |
| 721 virtual void AfterTest() OVERRIDE { | 712 virtual void AfterTest() OVERRIDE { EXPECT_EQ(5, num_draws_); } |
| 722 EXPECT_EQ(5, num_draws_); | |
| 723 } | |
| 724 | 713 |
| 725 private: | 714 private: |
| 726 int num_draws_; | 715 int num_draws_; |
| 727 const gfx::Size bounds_; | 716 const gfx::Size bounds_; |
| 728 const gfx::Rect invalid_rect_; | 717 const gfx::Rect invalid_rect_; |
| 729 FakeContentLayerClient client_; | 718 FakeContentLayerClient client_; |
| 730 scoped_refptr<ContentLayer> root_layer_; | 719 scoped_refptr<ContentLayer> root_layer_; |
| 731 }; | 720 }; |
| 732 | 721 |
| 733 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestSetNextCommitForcesRedraw); | 722 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestSetNextCommitForcesRedraw); |
| 734 | 723 |
| 735 // Tests that if a layer is not drawn because of some reason in the parent then | 724 // Tests that if a layer is not drawn because of some reason in the parent then |
| 736 // its damage is preserved until the next time it is drawn. | 725 // its damage is preserved until the next time it is drawn. |
| 737 class LayerTreeHostTestUndrawnLayersDamageLater : public LayerTreeHostTest { | 726 class LayerTreeHostTestUndrawnLayersDamageLater : public LayerTreeHostTest { |
| 738 public: | 727 public: |
| 739 LayerTreeHostTestUndrawnLayersDamageLater() | 728 LayerTreeHostTestUndrawnLayersDamageLater() |
| 740 : root_layer_(ContentLayer::Create(&client_)) { | 729 : root_layer_(ContentLayer::Create(&client_)) {} |
| 741 } | |
| 742 | 730 |
| 743 virtual void SetupTree() OVERRIDE { | 731 virtual void SetupTree() OVERRIDE { |
| 744 root_layer_->SetIsDrawable(true); | 732 root_layer_->SetIsDrawable(true); |
| 745 root_layer_->SetBounds(gfx::Size(50, 50)); | 733 root_layer_->SetBounds(gfx::Size(50, 50)); |
| 746 layer_tree_host()->SetRootLayer(root_layer_); | 734 layer_tree_host()->SetRootLayer(root_layer_); |
| 747 | 735 |
| 748 // The initially transparent layer has a larger child layer, which is | 736 // The initially transparent layer has a larger child layer, which is |
| 749 // not initially drawn because of the this (parent) layer. | 737 // not initially drawn because of the this (parent) layer. |
| 750 parent_layer_ = FakeContentLayer::Create(&client_); | 738 parent_layer_ = FakeContentLayer::Create(&client_); |
| 751 parent_layer_->SetBounds(gfx::Size(15, 15)); | 739 parent_layer_->SetBounds(gfx::Size(15, 15)); |
| 752 parent_layer_->SetOpacity(0.0f); | 740 parent_layer_->SetOpacity(0.0f); |
| 753 root_layer_->AddChild(parent_layer_); | 741 root_layer_->AddChild(parent_layer_); |
| 754 | 742 |
| 755 child_layer_ = FakeContentLayer::Create(&client_); | 743 child_layer_ = FakeContentLayer::Create(&client_); |
| 756 child_layer_->SetBounds(gfx::Size(25, 25)); | 744 child_layer_->SetBounds(gfx::Size(25, 25)); |
| 757 parent_layer_->AddChild(child_layer_); | 745 parent_layer_->AddChild(child_layer_); |
| 758 | 746 |
| 759 LayerTreeHostTest::SetupTree(); | 747 LayerTreeHostTest::SetupTree(); |
| 760 } | 748 } |
| 761 | 749 |
| 762 virtual void BeginTest() OVERRIDE { | 750 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 763 PostSetNeedsCommitToMainThread(); | |
| 764 } | |
| 765 | 751 |
| 766 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 752 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
| 767 LayerTreeHostImpl::FrameData* frame_data, | 753 LayerTreeHostImpl::FrameData* frame_data, |
| 768 bool result) OVERRIDE { | 754 bool result) OVERRIDE { |
| 769 EXPECT_TRUE(result); | 755 EXPECT_TRUE(result); |
| 770 | 756 |
| 771 gfx::RectF root_damage_rect; | 757 gfx::RectF root_damage_rect; |
| 772 if (!frame_data->render_passes.empty()) | 758 if (!frame_data->render_passes.empty()) |
| 773 root_damage_rect = frame_data->render_passes.back()->damage_rect; | 759 root_damage_rect = frame_data->render_passes.back()->damage_rect; |
| 774 | 760 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 808 parent_layer_->SetForceRenderSurface(true); | 794 parent_layer_->SetForceRenderSurface(true); |
| 809 break; | 795 break; |
| 810 case 4: | 796 case 4: |
| 811 EndTest(); | 797 EndTest(); |
| 812 break; | 798 break; |
| 813 default: | 799 default: |
| 814 NOTREACHED(); | 800 NOTREACHED(); |
| 815 } | 801 } |
| 816 } | 802 } |
| 817 | 803 |
| 818 | |
| 819 virtual void AfterTest() OVERRIDE {} | 804 virtual void AfterTest() OVERRIDE {} |
| 820 | 805 |
| 821 private: | 806 private: |
| 822 FakeContentLayerClient client_; | 807 FakeContentLayerClient client_; |
| 823 scoped_refptr<ContentLayer> root_layer_; | 808 scoped_refptr<ContentLayer> root_layer_; |
| 824 scoped_refptr<FakeContentLayer> parent_layer_; | 809 scoped_refptr<FakeContentLayer> parent_layer_; |
| 825 scoped_refptr<FakeContentLayer> child_layer_; | 810 scoped_refptr<FakeContentLayer> child_layer_; |
| 826 }; | 811 }; |
| 827 | 812 |
| 828 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestUndrawnLayersDamageLater); | 813 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestUndrawnLayersDamageLater); |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1026 LayerTreeHostTestFrameTimeUpdatesAfterActivationFails() | 1011 LayerTreeHostTestFrameTimeUpdatesAfterActivationFails() |
| 1027 : frame_count_with_pending_tree_(0) {} | 1012 : frame_count_with_pending_tree_(0) {} |
| 1028 | 1013 |
| 1029 virtual void BeginTest() OVERRIDE { | 1014 virtual void BeginTest() OVERRIDE { |
| 1030 layer_tree_host()->SetViewportSize(gfx::Size(20, 20)); | 1015 layer_tree_host()->SetViewportSize(gfx::Size(20, 20)); |
| 1031 layer_tree_host()->set_background_color(SK_ColorGRAY); | 1016 layer_tree_host()->set_background_color(SK_ColorGRAY); |
| 1032 | 1017 |
| 1033 PostSetNeedsCommitToMainThread(); | 1018 PostSetNeedsCommitToMainThread(); |
| 1034 } | 1019 } |
| 1035 | 1020 |
| 1036 virtual void BeginCommitOnThread(LayerTreeHostImpl *impl) OVERRIDE { | 1021 virtual void BeginCommitOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 1037 EXPECT_EQ(frame_count_with_pending_tree_, 0); | 1022 EXPECT_EQ(frame_count_with_pending_tree_, 0); |
| 1038 impl->BlockNotifyReadyToActivateForTesting(true); | 1023 impl->BlockNotifyReadyToActivateForTesting(true); |
| 1039 } | 1024 } |
| 1040 | 1025 |
| 1041 virtual void WillBeginImplFrameOnThread(LayerTreeHostImpl* impl, | 1026 virtual void WillBeginImplFrameOnThread(LayerTreeHostImpl* impl, |
| 1042 const BeginFrameArgs& args) OVERRIDE { | 1027 const BeginFrameArgs& args) OVERRIDE { |
| 1043 if (impl->pending_tree()) | 1028 if (impl->pending_tree()) |
| 1044 frame_count_with_pending_tree_++; | 1029 frame_count_with_pending_tree_++; |
| 1045 | 1030 |
| 1046 if (frame_count_with_pending_tree_ == 2) | 1031 if (frame_count_with_pending_tree_ == 2) |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1096 } | 1081 } |
| 1097 | 1082 |
| 1098 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1083 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 1099 frame_++; | 1084 frame_++; |
| 1100 if (frame_ == 1) { | 1085 if (frame_ == 1) { |
| 1101 first_frame_time_ = impl->CurrentFrameTimeTicks(); | 1086 first_frame_time_ = impl->CurrentFrameTimeTicks(); |
| 1102 impl->SetNeedsRedraw(); | 1087 impl->SetNeedsRedraw(); |
| 1103 | 1088 |
| 1104 // Since we might use a low-resolution clock on Windows, we need to | 1089 // Since we might use a low-resolution clock on Windows, we need to |
| 1105 // make sure that the clock has incremented past first_frame_time_. | 1090 // make sure that the clock has incremented past first_frame_time_. |
| 1106 while (first_frame_time_ == gfx::FrameTime::Now()) {} | 1091 while (first_frame_time_ == gfx::FrameTime::Now()) { |
| 1092 } |
| 1107 | 1093 |
| 1108 return; | 1094 return; |
| 1109 } | 1095 } |
| 1110 | 1096 |
| 1111 EXPECT_NE(first_frame_time_, impl->CurrentFrameTimeTicks()); | 1097 EXPECT_NE(first_frame_time_, impl->CurrentFrameTimeTicks()); |
| 1112 EndTest(); | 1098 EndTest(); |
| 1113 } | 1099 } |
| 1114 | 1100 |
| 1115 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 1101 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 1116 // Ensure there isn't a commit between the two draws, to ensure that a | 1102 // Ensure there isn't a commit between the two draws, to ensure that a |
| 1117 // commit isn't required for updating the current frame time. We can | 1103 // commit isn't required for updating the current frame time. We can |
| 1118 // only check for this in the multi-threaded case, since in the single- | 1104 // only check for this in the multi-threaded case, since in the single- |
| 1119 // threaded case there will always be a commit between consecutive draws. | 1105 // threaded case there will always be a commit between consecutive draws. |
| 1120 if (HasImplThread()) | 1106 if (HasImplThread()) |
| 1121 EXPECT_EQ(0, frame_); | 1107 EXPECT_EQ(0, frame_); |
| 1122 } | 1108 } |
| 1123 | 1109 |
| 1124 virtual void AfterTest() OVERRIDE {} | 1110 virtual void AfterTest() OVERRIDE {} |
| 1125 | 1111 |
| 1126 private: | 1112 private: |
| 1127 int frame_; | 1113 int frame_; |
| 1128 base::TimeTicks first_frame_time_; | 1114 base::TimeTicks first_frame_time_; |
| 1129 }; | 1115 }; |
| 1130 | 1116 |
| 1131 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestFrameTimeUpdatesAfterDraw); | 1117 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestFrameTimeUpdatesAfterDraw); |
| 1132 | 1118 |
| 1133 // Verifies that StartPageScaleAnimation events propagate correctly | 1119 // Verifies that StartPageScaleAnimation events propagate correctly |
| 1134 // from LayerTreeHost to LayerTreeHostImpl in the MT compositor. | 1120 // from LayerTreeHost to LayerTreeHostImpl in the MT compositor. |
| 1135 class LayerTreeHostTestStartPageScaleAnimation | 1121 class LayerTreeHostTestStartPageScaleAnimation : public LayerTreeHostTest { |
| 1136 : public LayerTreeHostTest { | |
| 1137 public: | 1122 public: |
| 1138 LayerTreeHostTestStartPageScaleAnimation() {} | 1123 LayerTreeHostTestStartPageScaleAnimation() {} |
| 1139 | 1124 |
| 1140 virtual void SetupTree() OVERRIDE { | 1125 virtual void SetupTree() OVERRIDE { |
| 1141 LayerTreeHostTest::SetupTree(); | 1126 LayerTreeHostTest::SetupTree(); |
| 1142 | 1127 |
| 1143 if (layer_tree_host()->settings().impl_side_painting) { | 1128 if (layer_tree_host()->settings().impl_side_painting) { |
| 1144 scoped_refptr<FakePictureLayer> layer = | 1129 scoped_refptr<FakePictureLayer> layer = |
| 1145 FakePictureLayer::Create(&client_); | 1130 FakePictureLayer::Create(&client_); |
| 1146 layer->set_always_update_resources(true); | 1131 layer->set_always_update_resources(true); |
| 1147 scroll_layer_ = layer; | 1132 scroll_layer_ = layer; |
| 1148 } else { | 1133 } else { |
| 1149 scroll_layer_ = FakeContentLayer::Create(&client_); | 1134 scroll_layer_ = FakeContentLayer::Create(&client_); |
| 1150 } | 1135 } |
| 1151 | 1136 |
| 1152 scroll_layer_->SetScrollable(true); | 1137 scroll_layer_->SetScrollable(true); |
| 1153 scroll_layer_->SetScrollOffset(gfx::Vector2d()); | 1138 scroll_layer_->SetScrollOffset(gfx::Vector2d()); |
| 1154 layer_tree_host()->root_layer()->AddChild(scroll_layer_); | 1139 layer_tree_host()->root_layer()->AddChild(scroll_layer_); |
| 1155 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.5f, 2.f); | 1140 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.5f, 2.f); |
| 1156 } | 1141 } |
| 1157 | 1142 |
| 1158 virtual void BeginTest() OVERRIDE { | 1143 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 1159 PostSetNeedsCommitToMainThread(); | |
| 1160 } | |
| 1161 | 1144 |
| 1162 virtual void ApplyScrollAndScale(gfx::Vector2d scroll_delta, float scale) | 1145 virtual void ApplyScrollAndScale(gfx::Vector2d scroll_delta, |
| 1163 OVERRIDE { | 1146 float scale) OVERRIDE { |
| 1164 gfx::Vector2d offset = scroll_layer_->scroll_offset(); | 1147 gfx::Vector2d offset = scroll_layer_->scroll_offset(); |
| 1165 scroll_layer_->SetScrollOffset(offset + scroll_delta); | 1148 scroll_layer_->SetScrollOffset(offset + scroll_delta); |
| 1166 layer_tree_host()->SetPageScaleFactorAndLimits(scale, 0.5f, 2.f); | 1149 layer_tree_host()->SetPageScaleFactorAndLimits(scale, 0.5f, 2.f); |
| 1167 } | 1150 } |
| 1168 | 1151 |
| 1169 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1152 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 1170 // We get one commit before the first draw, and the animation doesn't happen | 1153 // We get one commit before the first draw, and the animation doesn't happen |
| 1171 // until the second draw. | 1154 // until the second draw. |
| 1172 switch (impl->active_tree()->source_frame_number()) { | 1155 switch (impl->active_tree()->source_frame_number()) { |
| 1173 case 0: | 1156 case 0: |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1473 } | 1456 } |
| 1474 | 1457 |
| 1475 virtual void BeginTest() OVERRIDE { | 1458 virtual void BeginTest() OVERRIDE { |
| 1476 drew_frame_ = -1; | 1459 drew_frame_ = -1; |
| 1477 PostSetNeedsCommitToMainThread(); | 1460 PostSetNeedsCommitToMainThread(); |
| 1478 } | 1461 } |
| 1479 | 1462 |
| 1480 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1463 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 1481 ASSERT_EQ(0u, layer_tree_host()->settings().max_partial_texture_updates); | 1464 ASSERT_EQ(0u, layer_tree_host()->settings().max_partial_texture_updates); |
| 1482 | 1465 |
| 1483 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( | 1466 TestWebGraphicsContext3D* context = TestContext(); |
| 1484 impl->output_surface()->context_provider().get())->TestContext3d(); | |
| 1485 | 1467 |
| 1486 switch (impl->active_tree()->source_frame_number()) { | 1468 switch (impl->active_tree()->source_frame_number()) { |
| 1487 case 0: | 1469 case 0: |
| 1488 // Number of textures should be one for each layer | 1470 // Number of textures should be one for each layer |
| 1489 ASSERT_EQ(2u, context->NumTextures()); | 1471 ASSERT_EQ(2u, context->NumTextures()); |
| 1490 // Number of textures used for commit should be one for each layer. | 1472 // Number of textures used for commit should be one for each layer. |
| 1491 EXPECT_EQ(2u, context->NumUsedTextures()); | 1473 EXPECT_EQ(2u, context->NumUsedTextures()); |
| 1492 // Verify that used texture is correct. | 1474 // Verify that used texture is correct. |
| 1493 EXPECT_TRUE(context->UsedTexture(context->TextureAt(0))); | 1475 EXPECT_TRUE(context->UsedTexture(context->TextureAt(0))); |
| 1494 EXPECT_TRUE(context->UsedTexture(context->TextureAt(1))); | 1476 EXPECT_TRUE(context->UsedTexture(context->TextureAt(1))); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1515 case 2: | 1497 case 2: |
| 1516 EndTest(); | 1498 EndTest(); |
| 1517 break; | 1499 break; |
| 1518 default: | 1500 default: |
| 1519 NOTREACHED(); | 1501 NOTREACHED(); |
| 1520 break; | 1502 break; |
| 1521 } | 1503 } |
| 1522 } | 1504 } |
| 1523 | 1505 |
| 1524 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1506 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 1525 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( | 1507 TestWebGraphicsContext3D* context = TestContext(); |
| 1526 impl->output_surface()->context_provider().get())->TestContext3d(); | |
| 1527 | 1508 |
| 1528 if (drew_frame_ == impl->active_tree()->source_frame_number()) { | 1509 if (drew_frame_ == impl->active_tree()->source_frame_number()) { |
| 1529 EXPECT_EQ(0u, context->NumUsedTextures()) << "For frame " << drew_frame_; | 1510 EXPECT_EQ(0u, context->NumUsedTextures()) << "For frame " << drew_frame_; |
| 1530 return; | 1511 return; |
| 1531 } | 1512 } |
| 1532 drew_frame_ = impl->active_tree()->source_frame_number(); | 1513 drew_frame_ = impl->active_tree()->source_frame_number(); |
| 1533 | 1514 |
| 1534 // We draw/ship one texture each frame for each layer. | 1515 // We draw/ship one texture each frame for each layer. |
| 1535 EXPECT_EQ(2u, context->NumUsedTextures()); | 1516 EXPECT_EQ(2u, context->NumUsedTextures()); |
| 1536 context->ResetUsedTextures(); | 1517 context->ResetUsedTextures(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1552 | 1533 |
| 1553 MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( | 1534 MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( |
| 1554 LayerTreeHostTestDirectRendererAtomicCommit); | 1535 LayerTreeHostTestDirectRendererAtomicCommit); |
| 1555 | 1536 |
| 1556 class LayerTreeHostTestDelegatingRendererAtomicCommit | 1537 class LayerTreeHostTestDelegatingRendererAtomicCommit |
| 1557 : public LayerTreeHostTestDirectRendererAtomicCommit { | 1538 : public LayerTreeHostTestDirectRendererAtomicCommit { |
| 1558 public: | 1539 public: |
| 1559 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1540 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 1560 ASSERT_EQ(0u, layer_tree_host()->settings().max_partial_texture_updates); | 1541 ASSERT_EQ(0u, layer_tree_host()->settings().max_partial_texture_updates); |
| 1561 | 1542 |
| 1562 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( | 1543 TestWebGraphicsContext3D* context = TestContext(); |
| 1563 impl->output_surface()->context_provider().get())->TestContext3d(); | |
| 1564 | 1544 |
| 1565 switch (impl->active_tree()->source_frame_number()) { | 1545 switch (impl->active_tree()->source_frame_number()) { |
| 1566 case 0: | 1546 case 0: |
| 1567 // Number of textures should be one for each layer | 1547 // Number of textures should be one for each layer |
| 1568 ASSERT_EQ(2u, context->NumTextures()); | 1548 ASSERT_EQ(2u, context->NumTextures()); |
| 1569 // Number of textures used for commit should be one for each layer. | 1549 // Number of textures used for commit should be one for each layer. |
| 1570 EXPECT_EQ(2u, context->NumUsedTextures()); | 1550 EXPECT_EQ(2u, context->NumUsedTextures()); |
| 1571 // Verify that used texture is correct. | 1551 // Verify that used texture is correct. |
| 1572 EXPECT_TRUE(context->UsedTexture(context->TextureAt(0))); | 1552 EXPECT_TRUE(context->UsedTexture(context->TextureAt(0))); |
| 1573 EXPECT_TRUE(context->UsedTexture(context->TextureAt(1))); | 1553 EXPECT_TRUE(context->UsedTexture(context->TextureAt(1))); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1641 child_ = FakeContentLayer::Create(&client_); | 1621 child_ = FakeContentLayer::Create(&client_); |
| 1642 child_->SetPosition(gfx::Point(0, 10)); | 1622 child_->SetPosition(gfx::Point(0, 10)); |
| 1643 child_->SetBounds(gfx::Size(3, 10)); | 1623 child_->SetBounds(gfx::Size(3, 10)); |
| 1644 | 1624 |
| 1645 parent_->AddChild(child_); | 1625 parent_->AddChild(child_); |
| 1646 | 1626 |
| 1647 layer_tree_host()->SetRootLayer(parent_); | 1627 layer_tree_host()->SetRootLayer(parent_); |
| 1648 LayerTreeHostTest::SetupTree(); | 1628 LayerTreeHostTest::SetupTree(); |
| 1649 } | 1629 } |
| 1650 | 1630 |
| 1651 virtual void BeginTest() OVERRIDE { | 1631 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 1652 PostSetNeedsCommitToMainThread(); | |
| 1653 } | |
| 1654 | 1632 |
| 1655 virtual void DidCommitAndDrawFrame() OVERRIDE { | 1633 virtual void DidCommitAndDrawFrame() OVERRIDE { |
| 1656 switch (layer_tree_host()->source_frame_number()) { | 1634 switch (layer_tree_host()->source_frame_number()) { |
| 1657 case 1: | 1635 case 1: |
| 1658 parent_->SetNeedsDisplay(); | 1636 parent_->SetNeedsDisplay(); |
| 1659 child_->SetNeedsDisplay(); | 1637 child_->SetNeedsDisplay(); |
| 1660 break; | 1638 break; |
| 1661 case 2: | 1639 case 2: |
| 1662 // Damage part of layers. | 1640 // Damage part of layers. |
| 1663 parent_->SetNeedsDisplayRect(gfx::RectF(0.f, 0.f, 5.f, 5.f)); | 1641 parent_->SetNeedsDisplayRect(gfx::RectF(0.f, 0.f, 5.f, 5.f)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1675 break; | 1653 break; |
| 1676 default: | 1654 default: |
| 1677 NOTREACHED() << layer_tree_host()->source_frame_number(); | 1655 NOTREACHED() << layer_tree_host()->source_frame_number(); |
| 1678 break; | 1656 break; |
| 1679 } | 1657 } |
| 1680 } | 1658 } |
| 1681 | 1659 |
| 1682 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1660 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 1683 ASSERT_EQ(1u, layer_tree_host()->settings().max_partial_texture_updates); | 1661 ASSERT_EQ(1u, layer_tree_host()->settings().max_partial_texture_updates); |
| 1684 | 1662 |
| 1685 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( | 1663 TestWebGraphicsContext3D* context = TestContext(); |
| 1686 impl->output_surface()->context_provider().get())->TestContext3d(); | |
| 1687 | 1664 |
| 1688 switch (impl->active_tree()->source_frame_number()) { | 1665 switch (impl->active_tree()->source_frame_number()) { |
| 1689 case 0: | 1666 case 0: |
| 1690 // Number of textures should be one for each layer. | 1667 // Number of textures should be one for each layer. |
| 1691 ASSERT_EQ(2u, context->NumTextures()); | 1668 ASSERT_EQ(2u, context->NumTextures()); |
| 1692 // Number of textures used for commit should be one for each layer. | 1669 // Number of textures used for commit should be one for each layer. |
| 1693 EXPECT_EQ(2u, context->NumUsedTextures()); | 1670 EXPECT_EQ(2u, context->NumUsedTextures()); |
| 1694 // Verify that used textures are correct. | 1671 // Verify that used textures are correct. |
| 1695 EXPECT_TRUE(context->UsedTexture(context->TextureAt(0))); | 1672 EXPECT_TRUE(context->UsedTexture(context->TextureAt(0))); |
| 1696 EXPECT_TRUE(context->UsedTexture(context->TextureAt(1))); | 1673 EXPECT_TRUE(context->UsedTexture(context->TextureAt(1))); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1766 break; | 1743 break; |
| 1767 default: | 1744 default: |
| 1768 NOTREACHED(); | 1745 NOTREACHED(); |
| 1769 break; | 1746 break; |
| 1770 } | 1747 } |
| 1771 } | 1748 } |
| 1772 | 1749 |
| 1773 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1750 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 1774 EXPECT_LT(impl->active_tree()->source_frame_number(), 5); | 1751 EXPECT_LT(impl->active_tree()->source_frame_number(), 5); |
| 1775 | 1752 |
| 1776 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( | 1753 TestWebGraphicsContext3D* context = TestContext(); |
| 1777 impl->output_surface()->context_provider().get())->TestContext3d(); | |
| 1778 | 1754 |
| 1779 // Number of textures used for drawing should one per layer except for | 1755 // Number of textures used for drawing should one per layer except for |
| 1780 // frame 3 where the viewport only contains one layer. | 1756 // frame 3 where the viewport only contains one layer. |
| 1781 if (impl->active_tree()->source_frame_number() == 3) { | 1757 if (impl->active_tree()->source_frame_number() == 3) { |
| 1782 EXPECT_EQ(1u, context->NumUsedTextures()); | 1758 EXPECT_EQ(1u, context->NumUsedTextures()); |
| 1783 } else { | 1759 } else { |
| 1784 EXPECT_EQ(2u, context->NumUsedTextures()) << | 1760 EXPECT_EQ(2u, context->NumUsedTextures()) |
| 1785 "For frame " << impl->active_tree()->source_frame_number(); | 1761 << "For frame " << impl->active_tree()->source_frame_number(); |
| 1786 } | 1762 } |
| 1787 | 1763 |
| 1788 context->ResetUsedTextures(); | 1764 context->ResetUsedTextures(); |
| 1789 } | 1765 } |
| 1790 | 1766 |
| 1791 virtual void AfterTest() OVERRIDE {} | 1767 virtual void AfterTest() OVERRIDE {} |
| 1792 | 1768 |
| 1793 private: | 1769 private: |
| 1794 FakeContentLayerClient client_; | 1770 FakeContentLayerClient client_; |
| 1795 scoped_refptr<FakeContentLayer> parent_; | 1771 scoped_refptr<FakeContentLayer> parent_; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1882 replica_layer1_ = FakeContentLayer::Create(&client_); | 1858 replica_layer1_ = FakeContentLayer::Create(&client_); |
| 1883 surface_layer1_->SetReplicaLayer(replica_layer1_.get()); | 1859 surface_layer1_->SetReplicaLayer(replica_layer1_.get()); |
| 1884 | 1860 |
| 1885 replica_layer2_ = FakeContentLayer::Create(&client_); | 1861 replica_layer2_ = FakeContentLayer::Create(&client_); |
| 1886 surface_layer2_->SetReplicaLayer(replica_layer2_.get()); | 1862 surface_layer2_->SetReplicaLayer(replica_layer2_.get()); |
| 1887 | 1863 |
| 1888 layer_tree_host()->SetRootLayer(root_layer_); | 1864 layer_tree_host()->SetRootLayer(root_layer_); |
| 1889 LayerTreeHostTest::SetupTree(); | 1865 LayerTreeHostTest::SetupTree(); |
| 1890 } | 1866 } |
| 1891 | 1867 |
| 1892 virtual void BeginTest() OVERRIDE { | 1868 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 1893 PostSetNeedsCommitToMainThread(); | |
| 1894 } | |
| 1895 | 1869 |
| 1896 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 1870 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 1897 Renderer* renderer = host_impl->renderer(); | 1871 Renderer* renderer = host_impl->renderer(); |
| 1898 RenderPass::Id surface1_render_pass_id = host_impl->active_tree() | 1872 RenderPass::Id surface1_render_pass_id = host_impl->active_tree() |
| 1899 ->root_layer()->children()[0]->render_surface()->RenderPassId(); | 1873 ->root_layer() |
| 1900 RenderPass::Id surface2_render_pass_id = | 1874 ->children()[0] |
| 1901 host_impl->active_tree()->root_layer()->children()[0]->children()[0] | 1875 ->render_surface() |
| 1902 ->render_surface()->RenderPassId(); | 1876 ->RenderPassId(); |
| 1877 RenderPass::Id surface2_render_pass_id = host_impl->active_tree() |
| 1878 ->root_layer() |
| 1879 ->children()[0] |
| 1880 ->children()[0] |
| 1881 ->render_surface() |
| 1882 ->RenderPassId(); |
| 1903 | 1883 |
| 1904 switch (host_impl->active_tree()->source_frame_number()) { | 1884 switch (host_impl->active_tree()->source_frame_number()) { |
| 1905 case 0: | 1885 case 0: |
| 1906 EXPECT_TRUE(renderer->HasAllocatedResourcesForTesting( | 1886 EXPECT_TRUE( |
| 1907 surface1_render_pass_id)); | 1887 renderer->HasAllocatedResourcesForTesting(surface1_render_pass_id)); |
| 1908 EXPECT_TRUE(renderer->HasAllocatedResourcesForTesting( | 1888 EXPECT_TRUE( |
| 1909 surface2_render_pass_id)); | 1889 renderer->HasAllocatedResourcesForTesting(surface2_render_pass_id)); |
| 1910 | 1890 |
| 1911 // Reduce the memory limit to only fit the root layer and one render | 1891 // Reduce the memory limit to only fit the root layer and one render |
| 1912 // surface. This prevents any contents drawing into surfaces | 1892 // surface. This prevents any contents drawing into surfaces |
| 1913 // from being allocated. | 1893 // from being allocated. |
| 1914 host_impl->SetMemoryPolicy(ManagedMemoryPolicy(100 * 100 * 4 * 2)); | 1894 host_impl->SetMemoryPolicy(ManagedMemoryPolicy(100 * 100 * 4 * 2)); |
| 1915 break; | 1895 break; |
| 1916 case 1: | 1896 case 1: |
| 1917 EXPECT_FALSE(renderer->HasAllocatedResourcesForTesting( | 1897 EXPECT_FALSE( |
| 1918 surface1_render_pass_id)); | 1898 renderer->HasAllocatedResourcesForTesting(surface1_render_pass_id)); |
| 1919 EXPECT_FALSE(renderer->HasAllocatedResourcesForTesting( | 1899 EXPECT_FALSE( |
| 1920 surface2_render_pass_id)); | 1900 renderer->HasAllocatedResourcesForTesting(surface2_render_pass_id)); |
| 1921 | 1901 |
| 1922 EndTest(); | 1902 EndTest(); |
| 1923 break; | 1903 break; |
| 1924 } | 1904 } |
| 1925 } | 1905 } |
| 1926 | 1906 |
| 1927 virtual void DidCommitAndDrawFrame() OVERRIDE { | 1907 virtual void DidCommitAndDrawFrame() OVERRIDE { |
| 1928 if (layer_tree_host()->source_frame_number() < 2) | 1908 if (layer_tree_host()->source_frame_number() < 2) |
| 1929 root_layer_->SetNeedsDisplay(); | 1909 root_layer_->SetNeedsDisplay(); |
| 1930 } | 1910 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1946 // Surfaces don't exist with a delegated renderer. | 1926 // Surfaces don't exist with a delegated renderer. |
| 1947 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( | 1927 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( |
| 1948 LayerTreeHostTestSurfaceNotAllocatedForLayersOutsideMemoryLimit); | 1928 LayerTreeHostTestSurfaceNotAllocatedForLayersOutsideMemoryLimit); |
| 1949 | 1929 |
| 1950 class EvictionTestLayer : public Layer { | 1930 class EvictionTestLayer : public Layer { |
| 1951 public: | 1931 public: |
| 1952 static scoped_refptr<EvictionTestLayer> Create() { | 1932 static scoped_refptr<EvictionTestLayer> Create() { |
| 1953 return make_scoped_refptr(new EvictionTestLayer()); | 1933 return make_scoped_refptr(new EvictionTestLayer()); |
| 1954 } | 1934 } |
| 1955 | 1935 |
| 1956 virtual bool Update(ResourceUpdateQueue*, | 1936 virtual bool Update(ResourceUpdateQueue*, const OcclusionTracker*) OVERRIDE; |
| 1957 const OcclusionTracker*) OVERRIDE; | |
| 1958 virtual bool DrawsContent() const OVERRIDE { return true; } | 1937 virtual bool DrawsContent() const OVERRIDE { return true; } |
| 1959 | 1938 |
| 1960 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) | 1939 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) |
| 1961 OVERRIDE; | 1940 OVERRIDE; |
| 1962 virtual void PushPropertiesTo(LayerImpl* impl) OVERRIDE; | 1941 virtual void PushPropertiesTo(LayerImpl* impl) OVERRIDE; |
| 1963 virtual void SetTexturePriorities(const PriorityCalculator&) OVERRIDE; | 1942 virtual void SetTexturePriorities(const PriorityCalculator&) OVERRIDE; |
| 1964 | 1943 |
| 1965 bool HaveBackingTexture() const { | 1944 bool HaveBackingTexture() const { |
| 1966 return texture_.get() ? texture_->have_backing_texture() : false; | 1945 return texture_.get() ? texture_->have_backing_texture() : false; |
| 1967 } | 1946 } |
| (...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2439 | 2418 |
| 2440 virtual void DidSetVisibleOnImplTree(LayerTreeHostImpl* host_impl, | 2419 virtual void DidSetVisibleOnImplTree(LayerTreeHostImpl* host_impl, |
| 2441 bool visible) OVERRIDE { | 2420 bool visible) OVERRIDE { |
| 2442 if (visible) { | 2421 if (visible) { |
| 2443 // One backing should remain unevicted. | 2422 // One backing should remain unevicted. |
| 2444 EXPECT_EQ( | 2423 EXPECT_EQ( |
| 2445 100u * 100u * 4u * 1u, | 2424 100u * 100u * 4u * 1u, |
| 2446 layer_tree_host()->contents_texture_manager()->MemoryUseBytes()); | 2425 layer_tree_host()->contents_texture_manager()->MemoryUseBytes()); |
| 2447 } else { | 2426 } else { |
| 2448 EXPECT_EQ( | 2427 EXPECT_EQ( |
| 2449 0u, | 2428 0u, layer_tree_host()->contents_texture_manager()->MemoryUseBytes()); |
| 2450 layer_tree_host()->contents_texture_manager()->MemoryUseBytes()); | |
| 2451 } | 2429 } |
| 2452 | 2430 |
| 2453 // Make sure that contents textures are marked as having been | 2431 // Make sure that contents textures are marked as having been |
| 2454 // purged. | 2432 // purged. |
| 2455 EXPECT_TRUE(host_impl->active_tree()->ContentsTexturesPurged()); | 2433 EXPECT_TRUE(host_impl->active_tree()->ContentsTexturesPurged()); |
| 2456 // End the test in this state. | 2434 // End the test in this state. |
| 2457 EndTest(); | 2435 EndTest(); |
| 2458 } | 2436 } |
| 2459 | 2437 |
| 2460 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 2438 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2596 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { | 2574 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { |
| 2597 settings->begin_impl_frame_scheduling_enabled = true; | 2575 settings->begin_impl_frame_scheduling_enabled = true; |
| 2598 } | 2576 } |
| 2599 | 2577 |
| 2600 virtual void BeginTest() OVERRIDE { | 2578 virtual void BeginTest() OVERRIDE { |
| 2601 // This will trigger a SetNeedsBeginImplFrame which will trigger a | 2579 // This will trigger a SetNeedsBeginImplFrame which will trigger a |
| 2602 // BeginImplFrame. | 2580 // BeginImplFrame. |
| 2603 PostSetNeedsCommitToMainThread(); | 2581 PostSetNeedsCommitToMainThread(); |
| 2604 } | 2582 } |
| 2605 | 2583 |
| 2606 virtual bool PrepareToDrawOnThread( | 2584 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
| 2607 LayerTreeHostImpl* host_impl, | 2585 LayerTreeHostImpl::FrameData* frame, |
| 2608 LayerTreeHostImpl::FrameData* frame, | 2586 bool result) OVERRIDE { |
| 2609 bool result) OVERRIDE { | |
| 2610 EndTest(); | 2587 EndTest(); |
| 2611 return true; | 2588 return true; |
| 2612 } | 2589 } |
| 2613 | 2590 |
| 2614 virtual void AfterTest() OVERRIDE {} | 2591 virtual void AfterTest() OVERRIDE {} |
| 2615 | 2592 |
| 2616 private: | 2593 private: |
| 2617 base::TimeTicks frame_time_; | 2594 base::TimeTicks frame_time_; |
| 2618 }; | 2595 }; |
| 2619 | 2596 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2658 virtual void DidCommit() OVERRIDE { | 2635 virtual void DidCommit() OVERRIDE { |
| 2659 commit_count_++; | 2636 commit_count_++; |
| 2660 if (commit_count_ == 4) { | 2637 if (commit_count_ == 4) { |
| 2661 // After two aborted commits, request a real commit now to make sure a | 2638 // After two aborted commits, request a real commit now to make sure a |
| 2662 // real commit following an aborted commit will still complete and | 2639 // real commit following an aborted commit will still complete and |
| 2663 // end the test even when the Impl thread is idle. | 2640 // end the test even when the Impl thread is idle. |
| 2664 layer_tree_host()->SetNeedsCommit(); | 2641 layer_tree_host()->SetNeedsCommit(); |
| 2665 } | 2642 } |
| 2666 } | 2643 } |
| 2667 | 2644 |
| 2668 virtual void BeginMainFrameAbortedOnThread( | 2645 virtual void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl, |
| 2669 LayerTreeHostImpl *host_impl, bool did_handle) OVERRIDE { | 2646 bool did_handle) OVERRIDE { |
| 2670 commit_abort_count_++; | 2647 commit_abort_count_++; |
| 2671 // Initiate another abortable commit. | 2648 // Initiate another abortable commit. |
| 2672 host_impl->SetNeedsCommit(); | 2649 host_impl->SetNeedsCommit(); |
| 2673 } | 2650 } |
| 2674 | 2651 |
| 2675 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 2652 virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 2676 commit_complete_count_++; | 2653 commit_complete_count_++; |
| 2677 if (commit_complete_count_ == 1) { | 2654 if (commit_complete_count_ == 1) { |
| 2678 // Initiate an abortable commit after the first commit. | 2655 // Initiate an abortable commit after the first commit. |
| 2679 host_impl->SetNeedsCommit(); | 2656 host_impl->SetNeedsCommit(); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2723 | 2700 |
| 2724 virtual void SetupTree() OVERRIDE { | 2701 virtual void SetupTree() OVERRIDE { |
| 2725 LayerTreeHostTest::SetupTree(); | 2702 LayerTreeHostTest::SetupTree(); |
| 2726 | 2703 |
| 2727 scoped_refptr<Layer> layer = PictureLayer::Create(&client_); | 2704 scoped_refptr<Layer> layer = PictureLayer::Create(&client_); |
| 2728 layer->SetTransform(gfx::Transform(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); | 2705 layer->SetTransform(gfx::Transform(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); |
| 2729 layer->SetBounds(gfx::Size(10, 10)); | 2706 layer->SetBounds(gfx::Size(10, 10)); |
| 2730 layer_tree_host()->root_layer()->AddChild(layer); | 2707 layer_tree_host()->root_layer()->AddChild(layer); |
| 2731 } | 2708 } |
| 2732 | 2709 |
| 2733 virtual void BeginTest() OVERRIDE { | 2710 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 2734 PostSetNeedsCommitToMainThread(); | |
| 2735 } | |
| 2736 | 2711 |
| 2737 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 2712 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 2738 EndTest(); | 2713 EndTest(); |
| 2739 } | 2714 } |
| 2740 | 2715 |
| 2741 virtual void AfterTest() OVERRIDE { | 2716 virtual void AfterTest() OVERRIDE {} |
| 2742 } | |
| 2743 | 2717 |
| 2744 FakeContentLayerClient client_; | 2718 FakeContentLayerClient client_; |
| 2745 }; | 2719 }; |
| 2746 | 2720 |
| 2747 MULTI_THREAD_TEST_F( | 2721 MULTI_THREAD_TEST_F( |
| 2748 LayerTreeHostTestUninvertibleTransformDoesNotBlockActivation); | 2722 LayerTreeHostTestUninvertibleTransformDoesNotBlockActivation); |
| 2749 | 2723 |
| 2750 class LayerTreeHostTestChangeLayerPropertiesInPaintContents | 2724 class LayerTreeHostTestChangeLayerPropertiesInPaintContents |
| 2751 : public LayerTreeHostTest { | 2725 : public LayerTreeHostTest { |
| 2752 public: | 2726 public: |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2806 class MockIOSurfaceWebGraphicsContext3D : public TestWebGraphicsContext3D { | 2780 class MockIOSurfaceWebGraphicsContext3D : public TestWebGraphicsContext3D { |
| 2807 public: | 2781 public: |
| 2808 MockIOSurfaceWebGraphicsContext3D() { | 2782 MockIOSurfaceWebGraphicsContext3D() { |
| 2809 test_capabilities_.gpu.iosurface = true; | 2783 test_capabilities_.gpu.iosurface = true; |
| 2810 test_capabilities_.gpu.texture_rectangle = true; | 2784 test_capabilities_.gpu.texture_rectangle = true; |
| 2811 } | 2785 } |
| 2812 | 2786 |
| 2813 virtual GLuint createTexture() OVERRIDE { | 2787 virtual GLuint createTexture() OVERRIDE { |
| 2814 return 1; | 2788 return 1; |
| 2815 } | 2789 } |
| 2816 | |
| 2817 MOCK_METHOD1(activeTexture, void(GLenum texture)); | 2790 MOCK_METHOD1(activeTexture, void(GLenum texture)); |
| 2818 MOCK_METHOD2(bindTexture, void(GLenum target, | 2791 MOCK_METHOD2(bindTexture, void(GLenum target, |
| 2819 GLuint texture_id)); | 2792 GLuint texture_id)); |
| 2820 MOCK_METHOD3(texParameteri, void(GLenum target, | 2793 MOCK_METHOD3(texParameteri, void(GLenum target, |
| 2821 GLenum pname, | 2794 GLenum pname, |
| 2822 GLint param)); | 2795 GLint param)); |
| 2823 MOCK_METHOD5(texImageIOSurface2DCHROMIUM, void(GLenum target, | 2796 MOCK_METHOD5(texImageIOSurface2DCHROMIUM, void(GLenum target, |
| 2824 GLint width, | 2797 GLint width, |
| 2825 GLint height, | 2798 GLint height, |
| 2826 GLuint ioSurfaceId, | 2799 GLuint ioSurfaceId, |
| 2827 GLuint plane)); | 2800 GLuint plane)); |
| 2828 MOCK_METHOD4(drawElements, void(GLenum mode, | 2801 MOCK_METHOD4(drawElements, void(GLenum mode, |
| 2829 GLsizei count, | 2802 GLsizei count, |
| 2830 GLenum type, | 2803 GLenum type, |
| 2831 GLintptr offset)); | 2804 GLintptr offset)); |
| 2832 MOCK_METHOD1(deleteTexture, void(GLenum texture)); | 2805 MOCK_METHOD1(deleteTexture, void(GLenum texture)); |
| 2833 }; | 2806 }; |
| 2834 | 2807 |
| 2835 | |
| 2836 class LayerTreeHostTestIOSurfaceDrawing : public LayerTreeHostTest { | 2808 class LayerTreeHostTestIOSurfaceDrawing : public LayerTreeHostTest { |
| 2837 protected: | 2809 protected: |
| 2838 virtual scoped_ptr<OutputSurface> CreateOutputSurface(bool fallback) | 2810 virtual scoped_ptr<FakeOutputSurface> CreateFakeOutputSurfaceForTest( |
| 2839 OVERRIDE { | 2811 bool fallback) OVERRIDE { |
| 2840 scoped_ptr<MockIOSurfaceWebGraphicsContext3D> mock_context_owned( | 2812 scoped_ptr<MockIOSurfaceWebGraphicsContext3D> mock_context_owned( |
| 2841 new MockIOSurfaceWebGraphicsContext3D); | 2813 new MockIOSurfaceWebGraphicsContext3D); |
| 2842 mock_context_ = mock_context_owned.get(); | 2814 mock_context_ = mock_context_owned.get(); |
| 2843 | 2815 |
| 2844 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | 2816 return FakeOutputSurface::Create3d( |
| 2845 mock_context_owned.PassAs<TestWebGraphicsContext3D>())); | 2817 mock_context_owned.PassAs<TestWebGraphicsContext3D>()); |
| 2846 return output_surface.Pass(); | |
| 2847 } | 2818 } |
| 2848 | 2819 |
| 2849 virtual void SetupTree() OVERRIDE { | 2820 virtual void SetupTree() OVERRIDE { |
| 2850 LayerTreeHostTest::SetupTree(); | 2821 LayerTreeHostTest::SetupTree(); |
| 2851 | 2822 |
| 2852 layer_tree_host()->root_layer()->SetIsDrawable(false); | 2823 layer_tree_host()->root_layer()->SetIsDrawable(false); |
| 2853 | 2824 |
| 2854 io_surface_id_ = 9; | 2825 io_surface_id_ = 9; |
| 2855 io_surface_size_ = gfx::Size(6, 7); | 2826 io_surface_size_ = gfx::Size(6, 7); |
| 2856 | 2827 |
| 2857 scoped_refptr<IOSurfaceLayer> io_surface_layer = IOSurfaceLayer::Create(); | 2828 scoped_refptr<IOSurfaceLayer> io_surface_layer = IOSurfaceLayer::Create(); |
| 2858 io_surface_layer->SetBounds(gfx::Size(10, 10)); | 2829 io_surface_layer->SetBounds(gfx::Size(10, 10)); |
| 2859 io_surface_layer->SetAnchorPoint(gfx::PointF()); | 2830 io_surface_layer->SetAnchorPoint(gfx::PointF()); |
| 2860 io_surface_layer->SetIsDrawable(true); | 2831 io_surface_layer->SetIsDrawable(true); |
| 2861 io_surface_layer->SetIOSurfaceProperties(io_surface_id_, io_surface_size_); | 2832 io_surface_layer->SetIOSurfaceProperties(io_surface_id_, io_surface_size_); |
| 2862 layer_tree_host()->root_layer()->AddChild(io_surface_layer); | 2833 layer_tree_host()->root_layer()->AddChild(io_surface_layer); |
| 2863 } | 2834 } |
| 2864 | 2835 |
| 2865 virtual void BeginTest() OVERRIDE { | 2836 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 2866 PostSetNeedsCommitToMainThread(); | |
| 2867 } | |
| 2868 | 2837 |
| 2869 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 2838 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 2870 // In WillDraw, the IOSurfaceLayer sets up the io surface texture. | 2839 // In WillDraw, the IOSurfaceLayer sets up the io surface texture. |
| 2871 | 2840 |
| 2872 EXPECT_CALL(*mock_context_, activeTexture(_)) | 2841 EXPECT_CALL(*mock_context_, activeTexture(_)).Times(0); |
| 2873 .Times(0); | |
| 2874 EXPECT_CALL(*mock_context_, bindTexture(GL_TEXTURE_RECTANGLE_ARB, 1)) | 2842 EXPECT_CALL(*mock_context_, bindTexture(GL_TEXTURE_RECTANGLE_ARB, 1)) |
| 2875 .Times(AtLeast(1)); | 2843 .Times(AtLeast(1)); |
| 2876 EXPECT_CALL(*mock_context_, texParameteri(GL_TEXTURE_RECTANGLE_ARB, | 2844 EXPECT_CALL(*mock_context_, |
| 2877 GL_TEXTURE_MIN_FILTER, | 2845 texParameteri( |
| 2878 GL_LINEAR)) | 2846 GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR)) |
| 2879 .Times(1); | 2847 .Times(1); |
| 2880 EXPECT_CALL(*mock_context_, texParameteri(GL_TEXTURE_RECTANGLE_ARB, | 2848 EXPECT_CALL(*mock_context_, |
| 2881 GL_TEXTURE_MAG_FILTER, | 2849 texParameteri( |
| 2882 GL_LINEAR)) | 2850 GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR)) |
| 2883 .Times(1); | 2851 .Times(1); |
| 2884 EXPECT_CALL(*mock_context_, texParameteri(GL_TEXTURE_RECTANGLE_ARB, | 2852 EXPECT_CALL(*mock_context_, |
| 2885 GL_TEXTURE_WRAP_S, | 2853 texParameteri(GL_TEXTURE_RECTANGLE_ARB, |
| 2886 GL_CLAMP_TO_EDGE)) | 2854 GL_TEXTURE_WRAP_S, |
| 2887 .Times(1); | 2855 GL_CLAMP_TO_EDGE)).Times(1); |
| 2888 EXPECT_CALL(*mock_context_, texParameteri(GL_TEXTURE_RECTANGLE_ARB, | 2856 EXPECT_CALL(*mock_context_, |
| 2889 GL_TEXTURE_WRAP_T, | 2857 texParameteri(GL_TEXTURE_RECTANGLE_ARB, |
| 2890 GL_CLAMP_TO_EDGE)) | 2858 GL_TEXTURE_WRAP_T, |
| 2891 .Times(1); | 2859 GL_CLAMP_TO_EDGE)).Times(1); |
| 2892 | 2860 |
| 2893 EXPECT_CALL(*mock_context_, texImageIOSurface2DCHROMIUM( | 2861 EXPECT_CALL(*mock_context_, |
| 2894 GL_TEXTURE_RECTANGLE_ARB, | 2862 texImageIOSurface2DCHROMIUM(GL_TEXTURE_RECTANGLE_ARB, |
| 2895 io_surface_size_.width(), | 2863 io_surface_size_.width(), |
| 2896 io_surface_size_.height(), | 2864 io_surface_size_.height(), |
| 2897 io_surface_id_, | 2865 io_surface_id_, |
| 2898 0)) | 2866 0)).Times(1); |
| 2899 .Times(1); | |
| 2900 | 2867 |
| 2901 EXPECT_CALL(*mock_context_, bindTexture(_, 0)) | 2868 EXPECT_CALL(*mock_context_, bindTexture(_, 0)).Times(AnyNumber()); |
| 2902 .Times(AnyNumber()); | |
| 2903 } | 2869 } |
| 2904 | 2870 |
| 2905 virtual bool PrepareToDrawOnThread( | 2871 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
| 2906 LayerTreeHostImpl* host_impl, | 2872 LayerTreeHostImpl::FrameData* frame, |
| 2907 LayerTreeHostImpl::FrameData* frame, | 2873 bool result) OVERRIDE { |
| 2908 bool result) OVERRIDE { | |
| 2909 Mock::VerifyAndClearExpectations(&mock_context_); | 2874 Mock::VerifyAndClearExpectations(&mock_context_); |
| 2910 | 2875 |
| 2911 // The io surface layer's texture is drawn. | 2876 // The io surface layer's texture is drawn. |
| 2912 EXPECT_CALL(*mock_context_, activeTexture(GL_TEXTURE0)) | 2877 EXPECT_CALL(*mock_context_, activeTexture(GL_TEXTURE0)).Times(AtLeast(1)); |
| 2913 .Times(AtLeast(1)); | |
| 2914 EXPECT_CALL(*mock_context_, bindTexture(GL_TEXTURE_RECTANGLE_ARB, 1)) | 2878 EXPECT_CALL(*mock_context_, bindTexture(GL_TEXTURE_RECTANGLE_ARB, 1)) |
| 2915 .Times(1); | 2879 .Times(1); |
| 2916 EXPECT_CALL(*mock_context_, drawElements(GL_TRIANGLES, 6, _, _)) | 2880 EXPECT_CALL(*mock_context_, drawElements(GL_TRIANGLES, 6, _, _)) |
| 2917 .Times(AtLeast(1)); | 2881 .Times(AtLeast(1)); |
| 2918 | 2882 |
| 2919 return result; | 2883 return result; |
| 2920 } | 2884 } |
| 2921 | 2885 |
| 2922 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 2886 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| 2923 Mock::VerifyAndClearExpectations(&mock_context_); | 2887 Mock::VerifyAndClearExpectations(&mock_context_); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3061 ImplThreadTaskRunner()->PostTask( | 3025 ImplThreadTaskRunner()->PostTask( |
| 3062 FROM_HERE, | 3026 FROM_HERE, |
| 3063 base::Bind( | 3027 base::Bind( |
| 3064 &LayerTreeHostTestDeferredInitialize::DeferredInitializeAndRedraw, | 3028 &LayerTreeHostTestDeferredInitialize::DeferredInitializeAndRedraw, |
| 3065 base::Unretained(this), | 3029 base::Unretained(this), |
| 3066 base::Unretained(host_impl))); | 3030 base::Unretained(host_impl))); |
| 3067 } else if (did_initialize_gl_ && !did_release_gl_) { | 3031 } else if (did_initialize_gl_ && !did_release_gl_) { |
| 3068 EXPECT_LE(2u, layer_impl->append_quads_count()); | 3032 EXPECT_LE(2u, layer_impl->append_quads_count()); |
| 3069 ImplThreadTaskRunner()->PostTask( | 3033 ImplThreadTaskRunner()->PostTask( |
| 3070 FROM_HERE, | 3034 FROM_HERE, |
| 3071 base::Bind( | 3035 base::Bind(&LayerTreeHostTestDeferredInitialize::ReleaseGLAndRedraw, |
| 3072 &LayerTreeHostTestDeferredInitialize::ReleaseGLAndRedraw, | 3036 base::Unretained(this), |
| 3073 base::Unretained(this), | 3037 base::Unretained(host_impl))); |
| 3074 base::Unretained(host_impl))); | |
| 3075 } else if (did_initialize_gl_ && did_release_gl_) { | 3038 } else if (did_initialize_gl_ && did_release_gl_) { |
| 3076 EXPECT_LE(3u, layer_impl->append_quads_count()); | 3039 EXPECT_LE(3u, layer_impl->append_quads_count()); |
| 3077 EndTest(); | 3040 EndTest(); |
| 3078 } | 3041 } |
| 3079 } | 3042 } |
| 3080 | 3043 |
| 3081 void DeferredInitializeAndRedraw(LayerTreeHostImpl* host_impl) { | 3044 void DeferredInitializeAndRedraw(LayerTreeHostImpl* host_impl) { |
| 3082 EXPECT_FALSE(did_initialize_gl_); | 3045 EXPECT_FALSE(did_initialize_gl_); |
| 3083 // SetAndInitializeContext3D calls SetNeedsCommit. | 3046 // SetAndInitializeContext3D calls SetNeedsCommit. |
| 3084 FakeOutputSurface* fake_output_surface = | 3047 FakeOutputSurface* fake_output_surface = |
| 3085 static_cast<FakeOutputSurface*>(host_impl->output_surface()); | 3048 static_cast<FakeOutputSurface*>(host_impl->output_surface()); |
| 3086 scoped_refptr<TestContextProvider> context_provider = | 3049 scoped_refptr<TestContextProvider> context_provider = |
| 3087 TestContextProvider::Create(); // Not bound to thread. | 3050 TestContextProvider::Create(); // Not bound to thread. |
| 3088 EXPECT_TRUE(fake_output_surface->InitializeAndSetContext3d( | 3051 EXPECT_TRUE( |
| 3089 context_provider, NULL)); | 3052 fake_output_surface->InitializeAndSetContext3d(context_provider, NULL)); |
| 3090 did_initialize_gl_ = true; | 3053 did_initialize_gl_ = true; |
| 3091 } | 3054 } |
| 3092 | 3055 |
| 3093 void ReleaseGLAndRedraw(LayerTreeHostImpl* host_impl) { | 3056 void ReleaseGLAndRedraw(LayerTreeHostImpl* host_impl) { |
| 3094 EXPECT_TRUE(did_initialize_gl_); | 3057 EXPECT_TRUE(did_initialize_gl_); |
| 3095 EXPECT_FALSE(did_release_gl_); | 3058 EXPECT_FALSE(did_release_gl_); |
| 3096 // ReleaseGL calls SetNeedsCommit. | 3059 // ReleaseGL calls SetNeedsCommit. |
| 3097 static_cast<FakeOutputSurface*>(host_impl->output_surface())->ReleaseGL(); | 3060 static_cast<FakeOutputSurface*>(host_impl->output_surface())->ReleaseGL(); |
| 3098 did_release_gl_ = true; | 3061 did_release_gl_ = true; |
| 3099 } | 3062 } |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3150 PostSetNeedsCommitToMainThread(); | 3113 PostSetNeedsCommitToMainThread(); |
| 3151 break; | 3114 break; |
| 3152 case 5: | 3115 case 5: |
| 3153 ClearResources(); | 3116 ClearResources(); |
| 3154 EndTest(); | 3117 EndTest(); |
| 3155 break; | 3118 break; |
| 3156 } | 3119 } |
| 3157 } | 3120 } |
| 3158 | 3121 |
| 3159 void PerformTest(LayerTreeHostImpl* impl) { | 3122 void PerformTest(LayerTreeHostImpl* impl) { |
| 3160 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( | 3123 TestWebGraphicsContext3D* context = TestContext(); |
| 3161 impl->output_surface()->context_provider().get())->TestContext3d(); | |
| 3162 | 3124 |
| 3163 int frame = num_commits_; | 3125 int frame = num_commits_; |
| 3164 switch (frame) { | 3126 switch (frame) { |
| 3165 case 1: | 3127 case 1: |
| 3166 ASSERT_EQ(0u, context->NumTextures()); | 3128 ASSERT_EQ(0u, context->NumTextures()); |
| 3167 break; | 3129 break; |
| 3168 case 2: | 3130 case 2: |
| 3169 // Created two textures. | 3131 // Created two textures. |
| 3170 ASSERT_EQ(2u, context->NumTextures()); | 3132 ASSERT_EQ(2u, context->NumTextures()); |
| 3171 break; | 3133 break; |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3233 | 3195 |
| 3234 size_t push_properties_count() const { return push_properties_count_; } | 3196 size_t push_properties_count() const { return push_properties_count_; } |
| 3235 void reset_push_properties_count() { push_properties_count_ = 0; } | 3197 void reset_push_properties_count() { push_properties_count_ = 0; } |
| 3236 | 3198 |
| 3237 void set_persist_needs_push_properties(bool persist) { | 3199 void set_persist_needs_push_properties(bool persist) { |
| 3238 persist_needs_push_properties_ = persist; | 3200 persist_needs_push_properties_ = persist; |
| 3239 } | 3201 } |
| 3240 | 3202 |
| 3241 private: | 3203 private: |
| 3242 PushPropertiesCountingLayer() | 3204 PushPropertiesCountingLayer() |
| 3243 : push_properties_count_(0), | 3205 : push_properties_count_(0), persist_needs_push_properties_(false) { |
| 3244 persist_needs_push_properties_(false) { | |
| 3245 SetAnchorPoint(gfx::PointF()); | 3206 SetAnchorPoint(gfx::PointF()); |
| 3246 SetBounds(gfx::Size(1, 1)); | 3207 SetBounds(gfx::Size(1, 1)); |
| 3247 SetIsDrawable(true); | 3208 SetIsDrawable(true); |
| 3248 } | 3209 } |
| 3249 virtual ~PushPropertiesCountingLayer() {} | 3210 virtual ~PushPropertiesCountingLayer() {} |
| 3250 | 3211 |
| 3251 size_t push_properties_count_; | 3212 size_t push_properties_count_; |
| 3252 bool persist_needs_push_properties_; | 3213 bool persist_needs_push_properties_; |
| 3253 }; | 3214 }; |
| 3254 | 3215 |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3440 size_t expected_push_properties_grandchild_; | 3401 size_t expected_push_properties_grandchild_; |
| 3441 size_t expected_push_properties_other_root_; | 3402 size_t expected_push_properties_other_root_; |
| 3442 size_t expected_push_properties_leaf_layer_; | 3403 size_t expected_push_properties_leaf_layer_; |
| 3443 }; | 3404 }; |
| 3444 | 3405 |
| 3445 MULTI_THREAD_TEST_F(LayerTreeHostTestLayersPushProperties); | 3406 MULTI_THREAD_TEST_F(LayerTreeHostTestLayersPushProperties); |
| 3446 | 3407 |
| 3447 class LayerTreeHostTestPropertyChangesDuringUpdateArePushed | 3408 class LayerTreeHostTestPropertyChangesDuringUpdateArePushed |
| 3448 : public LayerTreeHostTest { | 3409 : public LayerTreeHostTest { |
| 3449 protected: | 3410 protected: |
| 3450 virtual void BeginTest() OVERRIDE { | 3411 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 3451 PostSetNeedsCommitToMainThread(); | |
| 3452 } | |
| 3453 | 3412 |
| 3454 virtual void SetupTree() OVERRIDE { | 3413 virtual void SetupTree() OVERRIDE { |
| 3455 root_ = Layer::Create(); | 3414 root_ = Layer::Create(); |
| 3456 root_->SetBounds(gfx::Size(1, 1)); | 3415 root_->SetBounds(gfx::Size(1, 1)); |
| 3457 | 3416 |
| 3458 bool paint_scrollbar = true; | 3417 bool paint_scrollbar = true; |
| 3459 bool has_thumb = false; | 3418 bool has_thumb = false; |
| 3460 scrollbar_layer_ = FakePaintedScrollbarLayer::Create( | 3419 scrollbar_layer_ = FakePaintedScrollbarLayer::Create( |
| 3461 paint_scrollbar, has_thumb, root_->id()); | 3420 paint_scrollbar, has_thumb, root_->id()); |
| 3462 | 3421 |
| (...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3944 case 3: | 3903 case 3: |
| 3945 EXPECT_EQ(0, callback_count_); | 3904 EXPECT_EQ(0, callback_count_); |
| 3946 callback_count_ = 0; | 3905 callback_count_ = 0; |
| 3947 EndTest(); | 3906 EndTest(); |
| 3948 break; | 3907 break; |
| 3949 default: | 3908 default: |
| 3950 ADD_FAILURE() << num_commits_; | 3909 ADD_FAILURE() << num_commits_; |
| 3951 EndTest(); | 3910 EndTest(); |
| 3952 break; | 3911 break; |
| 3953 } | 3912 } |
| 3954 return LayerTreeHostTest::PrepareToDrawOnThread(host_impl, frame_data, | 3913 return LayerTreeHostTest::PrepareToDrawOnThread( |
| 3955 result); | 3914 host_impl, frame_data, result); |
| 3956 } | 3915 } |
| 3957 | 3916 |
| 3958 virtual void AfterTest() OVERRIDE { | 3917 virtual void AfterTest() OVERRIDE { EXPECT_EQ(3, num_commits_); } |
| 3959 EXPECT_EQ(3, num_commits_); | 3918 |
| 3919 void SetCallback(bool enable) { |
| 3920 output_surface()->SetTreeActivationCallback( |
| 3921 enable |
| 3922 ? base::Bind( |
| 3923 &LayerTreeHostTestTreeActivationCallback::ActivationCallback, |
| 3924 base::Unretained(this)) |
| 3925 : base::Closure()); |
| 3960 } | 3926 } |
| 3961 | 3927 |
| 3962 void SetCallback(bool enable) { | 3928 void ActivationCallback() { ++callback_count_; } |
| 3963 output_surface()->SetTreeActivationCallback(enable ? | |
| 3964 base::Bind(&LayerTreeHostTestTreeActivationCallback::ActivationCallback, | |
| 3965 base::Unretained(this)) : | |
| 3966 base::Closure()); | |
| 3967 } | |
| 3968 | |
| 3969 void ActivationCallback() { | |
| 3970 ++callback_count_; | |
| 3971 } | |
| 3972 | 3929 |
| 3973 int num_commits_; | 3930 int num_commits_; |
| 3974 int callback_count_; | 3931 int callback_count_; |
| 3975 }; | 3932 }; |
| 3976 | 3933 |
| 3977 TEST_F(LayerTreeHostTestTreeActivationCallback, DirectRenderer) { | 3934 TEST_F(LayerTreeHostTestTreeActivationCallback, DirectRenderer) { |
| 3978 RunTest(true, false, true); | 3935 RunTest(true, false, true); |
| 3979 } | 3936 } |
| 3980 | 3937 |
| 3981 TEST_F(LayerTreeHostTestTreeActivationCallback, DelegatingRenderer) { | 3938 TEST_F(LayerTreeHostTestTreeActivationCallback, DelegatingRenderer) { |
| 3982 RunTest(true, true, true); | 3939 RunTest(true, true, true); |
| 3983 } | 3940 } |
| 3984 | 3941 |
| 3985 class LayerInvalidateCausesDraw : public LayerTreeHostTest { | 3942 class LayerInvalidateCausesDraw : public LayerTreeHostTest { |
| 3986 public: | 3943 public: |
| 3987 LayerInvalidateCausesDraw() : num_commits_(0), num_draws_(0) {} | 3944 LayerInvalidateCausesDraw() : num_commits_(0), num_draws_(0) {} |
| 3988 | 3945 |
| 3989 virtual void BeginTest() OVERRIDE { | 3946 virtual void BeginTest() OVERRIDE { |
| 3990 ASSERT_TRUE(!!invalidate_layer_) | 3947 ASSERT_TRUE(!!invalidate_layer_) |
| 3991 << "Derived tests must set this in SetupTree"; | 3948 << "Derived tests must set this in SetupTree"; |
| 3992 | 3949 |
| 3993 // One initial commit. | 3950 // One initial commit. |
| 3994 PostSetNeedsCommitToMainThread(); | 3951 PostSetNeedsCommitToMainThread(); |
| 3995 } | 3952 } |
| 3996 | 3953 |
| 3997 virtual void DidCommitAndDrawFrame() OVERRIDE { | 3954 virtual void DidCommitAndDrawFrame() OVERRIDE { |
| 3998 // After commit, invalidate the layer. This should cause a commit. | 3955 // After commit, invalidate the layer. This should cause a commit. |
| 3999 if (layer_tree_host()->source_frame_number() == 1) | 3956 if (layer_tree_host()->source_frame_number() == 1) |
| 4000 invalidate_layer_->SetNeedsDisplay(); | 3957 invalidate_layer_->SetNeedsDisplay(); |
| 4001 } | 3958 } |
| 4002 | 3959 |
| 4003 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 3960 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 4004 num_draws_++; | 3961 num_draws_++; |
| 4005 if (impl->active_tree()->source_frame_number() == 1) | 3962 if (impl->active_tree()->source_frame_number() == 1) |
| 4006 EndTest(); | 3963 EndTest(); |
| 4007 } | 3964 } |
| 4008 | 3965 |
| 4009 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 3966 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 4010 num_commits_++; | 3967 num_commits_++; |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4234 // Commits can only be aborted when using the thread proxy. | 4191 // Commits can only be aborted when using the thread proxy. |
| 4235 MULTI_THREAD_TEST_F(LayerTreeHostTestAbortEvictedTextures); | 4192 MULTI_THREAD_TEST_F(LayerTreeHostTestAbortEvictedTextures); |
| 4236 | 4193 |
| 4237 class LayerTreeHostTestMaxTransferBufferUsageBytes : public LayerTreeHostTest { | 4194 class LayerTreeHostTestMaxTransferBufferUsageBytes : public LayerTreeHostTest { |
| 4238 protected: | 4195 protected: |
| 4239 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { | 4196 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { |
| 4240 settings->impl_side_painting = true; | 4197 settings->impl_side_painting = true; |
| 4241 settings->default_tile_size = gfx::Size(128, 128); | 4198 settings->default_tile_size = gfx::Size(128, 128); |
| 4242 } | 4199 } |
| 4243 | 4200 |
| 4244 virtual scoped_ptr<OutputSurface> CreateOutputSurface(bool fallback) | 4201 virtual scoped_ptr<FakeOutputSurface> CreateFakeOutputSurfaceForTest( |
| 4245 OVERRIDE { | 4202 bool fallback) OVERRIDE { |
| 4246 scoped_refptr<TestContextProvider> context_provider = | 4203 scoped_refptr<TestContextProvider> context_provider = |
| 4247 TestContextProvider::Create(); | 4204 TestContextProvider::Create(); |
| 4248 context_provider->SetMaxTransferBufferUsageBytes(1024 * 1024); | 4205 context_provider->SetMaxTransferBufferUsageBytes(1024 * 1024); |
| 4249 return FakeOutputSurface::Create3d(context_provider) | 4206 return FakeOutputSurface::Create3d(context_provider); |
| 4250 .PassAs<OutputSurface>(); | |
| 4251 } | 4207 } |
| 4252 | 4208 |
| 4253 virtual void SetupTree() OVERRIDE { | 4209 virtual void SetupTree() OVERRIDE { |
| 4254 scoped_refptr<FakePictureLayer> root_layer = | 4210 scoped_refptr<FakePictureLayer> root_layer = |
| 4255 FakePictureLayer::Create(&client_); | 4211 FakePictureLayer::Create(&client_); |
| 4256 root_layer->SetBounds(gfx::Size(6000, 6000)); | 4212 root_layer->SetBounds(gfx::Size(6000, 6000)); |
| 4257 root_layer->SetIsDrawable(true); | 4213 root_layer->SetIsDrawable(true); |
| 4258 | 4214 |
| 4259 layer_tree_host()->SetRootLayer(root_layer); | 4215 layer_tree_host()->SetRootLayer(root_layer); |
| 4260 LayerTreeHostTest::SetupTree(); | 4216 LayerTreeHostTest::SetupTree(); |
| 4261 } | 4217 } |
| 4262 | 4218 |
| 4263 virtual void BeginTest() OVERRIDE { | 4219 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 4264 PostSetNeedsCommitToMainThread(); | |
| 4265 } | |
| 4266 | 4220 |
| 4267 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 4221 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 4268 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( | 4222 TestWebGraphicsContext3D* context = TestContext(); |
| 4269 impl->output_surface()->context_provider().get())->TestContext3d(); | |
| 4270 | 4223 |
| 4271 // Expect that the transfer buffer memory used is equal to the | 4224 // Expect that the transfer buffer memory used is equal to the |
| 4272 // MaxTransferBufferUsageBytes value set in CreateOutputSurface. | 4225 // MaxTransferBufferUsageBytes value set in CreateOutputSurface. |
| 4273 // NOTE: This is now 1/2 due to raster memory limit in TileManager. | 4226 // NOTE: This is now 1/2 due to raster memory limit in TileManager. |
| 4274 // Only half the limit will be reached unless the task set | 4227 // Only half the limit will be reached unless the task set |
| 4275 // thrashes to a completly new set of tiles. | 4228 // thrashes to a completly new set of tiles. |
| 4276 EXPECT_EQ(512 * 1024u, | 4229 EXPECT_EQ(512 * 1024u, context->GetPeakTransferBufferMemoryUsedBytes()); |
| 4277 context->GetPeakTransferBufferMemoryUsedBytes()); | |
| 4278 EndTest(); | 4230 EndTest(); |
| 4279 } | 4231 } |
| 4280 | 4232 |
| 4281 virtual void AfterTest() OVERRIDE {} | 4233 virtual void AfterTest() OVERRIDE {} |
| 4282 | 4234 |
| 4283 private: | 4235 private: |
| 4284 FakeContentLayerClient client_; | 4236 FakeContentLayerClient client_; |
| 4285 }; | 4237 }; |
| 4286 | 4238 |
| 4287 // Impl-side painting is a multi-threaded compositor feature. | 4239 // Impl-side painting is a multi-threaded compositor feature. |
| 4288 MULTI_THREAD_TEST_F(LayerTreeHostTestMaxTransferBufferUsageBytes); | 4240 MULTI_THREAD_TEST_F(LayerTreeHostTestMaxTransferBufferUsageBytes); |
| 4289 | 4241 |
| 4290 // Test ensuring that memory limits are sent to the prioritized resource | 4242 // Test ensuring that memory limits are sent to the prioritized resource |
| 4291 // manager. | 4243 // manager. |
| 4292 class LayerTreeHostTestMemoryLimits : public LayerTreeHostTest { | 4244 class LayerTreeHostTestMemoryLimits : public LayerTreeHostTest { |
| 4293 public: | 4245 public: |
| 4294 LayerTreeHostTestMemoryLimits() : num_commits_(0) {} | 4246 LayerTreeHostTestMemoryLimits() : num_commits_(0) {} |
| 4295 | 4247 |
| 4296 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } | 4248 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 4297 | 4249 |
| 4298 virtual void DidCommit() OVERRIDE { | 4250 virtual void DidCommit() OVERRIDE { |
| 4299 int frame = num_commits_; | 4251 int frame = num_commits_; |
| 4300 switch (frame) { | 4252 switch (frame) { |
| 4301 case 0: | 4253 case 0: |
| 4302 // Verify default values. | 4254 // Verify default values. |
| 4303 EXPECT_EQ( | 4255 EXPECT_EQ(PrioritizedResourceManager::DefaultMemoryAllocationLimit(), |
| 4304 PrioritizedResourceManager::DefaultMemoryAllocationLimit(), | 4256 layer_tree_host() |
| 4305 layer_tree_host()->contents_texture_manager()-> | 4257 ->contents_texture_manager() |
| 4306 MaxMemoryLimitBytes()); | 4258 ->MaxMemoryLimitBytes()); |
| 4307 EXPECT_EQ( | 4259 EXPECT_EQ(PriorityCalculator::AllowEverythingCutoff(), |
| 4308 PriorityCalculator::AllowEverythingCutoff(), | 4260 layer_tree_host() |
| 4309 layer_tree_host()->contents_texture_manager()-> | 4261 ->contents_texture_manager() |
| 4310 ExternalPriorityCutoff()); | 4262 ->ExternalPriorityCutoff()); |
| 4311 PostSetNeedsCommitToMainThread(); | 4263 PostSetNeedsCommitToMainThread(); |
| 4312 break; | 4264 break; |
| 4313 case 1: | 4265 case 1: |
| 4314 // The values should remain the same until the commit after the policy | 4266 // The values should remain the same until the commit after the policy |
| 4315 // is changed. | 4267 // is changed. |
| 4316 EXPECT_EQ( | 4268 EXPECT_EQ(PrioritizedResourceManager::DefaultMemoryAllocationLimit(), |
| 4317 PrioritizedResourceManager::DefaultMemoryAllocationLimit(), | 4269 layer_tree_host() |
| 4318 layer_tree_host()->contents_texture_manager()-> | 4270 ->contents_texture_manager() |
| 4319 MaxMemoryLimitBytes()); | 4271 ->MaxMemoryLimitBytes()); |
| 4320 EXPECT_EQ( | 4272 EXPECT_EQ(PriorityCalculator::AllowEverythingCutoff(), |
| 4321 PriorityCalculator::AllowEverythingCutoff(), | 4273 layer_tree_host() |
| 4322 layer_tree_host()->contents_texture_manager()-> | 4274 ->contents_texture_manager() |
| 4323 ExternalPriorityCutoff()); | 4275 ->ExternalPriorityCutoff()); |
| 4324 break; | 4276 break; |
| 4325 case 2: | 4277 case 2: |
| 4326 // Verify values were correctly passed. | 4278 // Verify values were correctly passed. |
| 4327 EXPECT_EQ( | 4279 EXPECT_EQ(16u * 1024u * 1024u, |
| 4328 16u*1024u*1024u, | 4280 layer_tree_host() |
| 4329 layer_tree_host()->contents_texture_manager()-> | 4281 ->contents_texture_manager() |
| 4330 MaxMemoryLimitBytes()); | 4282 ->MaxMemoryLimitBytes()); |
| 4331 EXPECT_EQ( | 4283 EXPECT_EQ(PriorityCalculator::AllowVisibleAndNearbyCutoff(), |
| 4332 PriorityCalculator::AllowVisibleAndNearbyCutoff(), | 4284 layer_tree_host() |
| 4333 layer_tree_host()->contents_texture_manager()-> | 4285 ->contents_texture_manager() |
| 4334 ExternalPriorityCutoff()); | 4286 ->ExternalPriorityCutoff()); |
| 4335 EndTest(); | 4287 EndTest(); |
| 4336 break; | 4288 break; |
| 4337 case 3: | 4289 case 3: |
| 4338 // Make sure no extra commits happen. | 4290 // Make sure no extra commits happen. |
| 4339 NOTREACHED(); | 4291 NOTREACHED(); |
| 4340 break; | 4292 break; |
| 4341 } | 4293 } |
| 4342 | 4294 |
| 4343 ++num_commits_; | 4295 ++num_commits_; |
| 4344 } | 4296 } |
| 4345 | 4297 |
| 4346 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 4298 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 4347 int frame = num_commits_; | 4299 int frame = num_commits_; |
| 4348 switch (frame) { | 4300 switch (frame) { |
| 4349 case 0: | 4301 case 0: |
| 4350 break; | 4302 break; |
| 4351 case 1: | 4303 case 1: |
| 4352 // This will trigger a commit because the priority cutoff has changed. | 4304 // This will trigger a commit because the priority cutoff has changed. |
| 4353 impl->SetMemoryPolicy(ManagedMemoryPolicy( | 4305 impl->SetMemoryPolicy(ManagedMemoryPolicy( |
| 4354 16u*1024u*1024u, | 4306 16u * 1024u * 1024u, |
| 4355 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE, | 4307 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE, |
| 4356 1000)); | 4308 1000)); |
| 4357 break; | 4309 break; |
| 4358 case 2: | 4310 case 2: |
| 4359 // This will not trigger a commit because the priority cutoff has not | 4311 // This will not trigger a commit because the priority cutoff has not |
| 4360 // changed, and there is already enough memory for all allocations. | 4312 // changed, and there is already enough memory for all allocations. |
| 4361 impl->SetMemoryPolicy(ManagedMemoryPolicy( | 4313 impl->SetMemoryPolicy(ManagedMemoryPolicy( |
| 4362 32u*1024u*1024u, | 4314 32u * 1024u * 1024u, |
| 4363 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE, | 4315 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE, |
| 4364 1000)); | 4316 1000)); |
| 4365 break; | 4317 break; |
| 4366 case 3: | 4318 case 3: |
| 4367 NOTREACHED(); | 4319 NOTREACHED(); |
| 4368 break; | 4320 break; |
| 4369 } | 4321 } |
| 4370 } | 4322 } |
| 4371 | 4323 |
| 4372 virtual void AfterTest() OVERRIDE {} | 4324 virtual void AfterTest() OVERRIDE {} |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4451 virtual void SetupTree() OVERRIDE { | 4403 virtual void SetupTree() OVERRIDE { |
| 4452 LayerTreeHostTest::SetupTree(); | 4404 LayerTreeHostTest::SetupTree(); |
| 4453 root_layer_ = FakeContentLayer::Create(&client_); | 4405 root_layer_ = FakeContentLayer::Create(&client_); |
| 4454 root_layer_->SetBounds(gfx::Size(10, 10)); | 4406 root_layer_->SetBounds(gfx::Size(10, 10)); |
| 4455 root_layer_->SetIsDrawable(false); | 4407 root_layer_->SetIsDrawable(false); |
| 4456 root_layer_->SetHaveWheelEventHandlers(true); | 4408 root_layer_->SetHaveWheelEventHandlers(true); |
| 4457 layer_tree_host()->SetRootLayer(root_layer_); | 4409 layer_tree_host()->SetRootLayer(root_layer_); |
| 4458 LayerTreeHostTest::SetupTree(); | 4410 LayerTreeHostTest::SetupTree(); |
| 4459 } | 4411 } |
| 4460 | 4412 |
| 4461 virtual void BeginTest() OVERRIDE { | 4413 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 4462 PostSetNeedsCommitToMainThread(); | |
| 4463 } | |
| 4464 | 4414 |
| 4465 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 4415 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| 4466 FakeContentLayerImpl* layer_impl = | 4416 FakeContentLayerImpl* layer_impl = |
| 4467 static_cast<FakeContentLayerImpl*>(impl->RootLayer()); | 4417 static_cast<FakeContentLayerImpl*>(impl->RootLayer()); |
| 4468 EXPECT_FALSE(layer_impl->DrawsContent()); | 4418 EXPECT_FALSE(layer_impl->DrawsContent()); |
| 4469 EXPECT_EQ(0u, layer_impl->append_quads_count()); | 4419 EXPECT_EQ(0u, layer_impl->append_quads_count()); |
| 4470 } | 4420 } |
| 4471 | 4421 |
| 4472 virtual void DidCommit() OVERRIDE { | 4422 virtual void DidCommit() OVERRIDE { |
| 4473 // The layer is not drawable, so it should not be updated. | 4423 // The layer is not drawable, so it should not be updated. |
| 4474 EXPECT_EQ(0u, root_layer_->update_count()); | 4424 EXPECT_EQ(0u, root_layer_->update_count()); |
| 4475 EndTest(); | 4425 EndTest(); |
| 4476 } | 4426 } |
| 4477 virtual void AfterTest() OVERRIDE {} | 4427 virtual void AfterTest() OVERRIDE {} |
| 4478 | 4428 |
| 4479 private: | 4429 private: |
| 4480 FakeContentLayerClient client_; | 4430 FakeContentLayerClient client_; |
| 4481 scoped_refptr<FakeContentLayer> root_layer_; | 4431 scoped_refptr<FakeContentLayer> root_layer_; |
| 4482 }; | 4432 }; |
| 4483 | 4433 |
| 4484 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNoQuadsForEmptyLayer); | 4434 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNoQuadsForEmptyLayer); |
| 4485 | 4435 |
| 4486 | |
| 4487 } // namespace | 4436 } // namespace |
| 4488 | 4437 |
| 4489 class LayerTreeHostTestSetMemoryPolicyOnLostOutputSurface | 4438 class LayerTreeHostTestSetMemoryPolicyOnLostOutputSurface |
| 4490 : public LayerTreeHostTest { | 4439 : public LayerTreeHostTest { |
| 4491 protected: | 4440 protected: |
| 4492 LayerTreeHostTestSetMemoryPolicyOnLostOutputSurface() | 4441 LayerTreeHostTestSetMemoryPolicyOnLostOutputSurface() |
| 4493 : first_output_surface_memory_limit_(4321234), | 4442 : first_output_surface_memory_limit_(4321234), |
| 4494 second_output_surface_memory_limit_(1234321) {} | 4443 second_output_surface_memory_limit_(1234321) {} |
| 4495 | 4444 |
| 4496 virtual scoped_ptr<OutputSurface> CreateOutputSurface(bool fallback) | 4445 virtual scoped_ptr<OutputSurface> CreateOutputSurface(bool fallback) |
| 4497 OVERRIDE { | 4446 OVERRIDE { |
| 4498 if (!first_context_provider_) { | 4447 if (!first_context_provider_) { |
| 4499 first_context_provider_ = TestContextProvider::Create(); | 4448 first_context_provider_ = TestContextProvider::Create(); |
| 4500 } else { | 4449 } else { |
| 4501 EXPECT_FALSE(second_context_provider_); | 4450 EXPECT_FALSE(second_context_provider_); |
| 4502 second_context_provider_ = TestContextProvider::Create(); | 4451 second_context_provider_ = TestContextProvider::Create(); |
| 4503 } | 4452 } |
| 4504 | 4453 |
| 4505 scoped_ptr<FakeOutputSurface> output_surface( | 4454 scoped_ptr<FakeOutputSurface> output_surface(FakeOutputSurface::Create3d( |
| 4506 FakeOutputSurface::Create3d( | 4455 second_context_provider_ ? second_context_provider_ |
| 4507 second_context_provider_ ? | 4456 : first_context_provider_)); |
| 4508 second_context_provider_ : | 4457 output_surface->SetMemoryPolicyToSetAtBind( |
| 4509 first_context_provider_)); | 4458 make_scoped_ptr(new ManagedMemoryPolicy( |
| 4510 output_surface->SetMemoryPolicyToSetAtBind(make_scoped_ptr( | 4459 second_context_provider_ ? second_output_surface_memory_limit_ |
| 4511 new ManagedMemoryPolicy( | 4460 : first_output_surface_memory_limit_, |
| 4512 second_context_provider_ ? | |
| 4513 second_output_surface_memory_limit_ : | |
| 4514 first_output_surface_memory_limit_, | |
| 4515 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE, | 4461 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE, |
| 4516 ManagedMemoryPolicy::kDefaultNumResourcesLimit))); | 4462 ManagedMemoryPolicy::kDefaultNumResourcesLimit))); |
| 4517 return output_surface.PassAs<OutputSurface>(); | 4463 return output_surface.PassAs<OutputSurface>(); |
| 4518 } | 4464 } |
| 4519 | 4465 |
| 4520 virtual void SetupTree() OVERRIDE { | 4466 virtual void SetupTree() OVERRIDE { |
| 4521 root_ = FakeContentLayer::Create(&client_); | 4467 root_ = FakeContentLayer::Create(&client_); |
| 4522 root_->SetBounds(gfx::Size(20, 20)); | 4468 root_->SetBounds(gfx::Size(20, 20)); |
| 4523 layer_tree_host()->SetRootLayer(root_); | 4469 layer_tree_host()->SetRootLayer(root_); |
| 4524 LayerTreeHostTest::SetupTree(); | 4470 LayerTreeHostTest::SetupTree(); |
| 4525 } | 4471 } |
| 4526 | 4472 |
| 4527 virtual void BeginTest() OVERRIDE { | 4473 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 4528 PostSetNeedsCommitToMainThread(); | |
| 4529 } | |
| 4530 | 4474 |
| 4531 virtual void DidCommitAndDrawFrame() OVERRIDE { | 4475 virtual void DidCommitAndDrawFrame() OVERRIDE { |
| 4532 // Lost context sometimes takes two frames to recreate. The third frame | 4476 // Lost context sometimes takes two frames to recreate. The third frame |
| 4533 // is sometimes aborted, so wait until the fourth frame to verify that | 4477 // is sometimes aborted, so wait until the fourth frame to verify that |
| 4534 // the memory has been set, and the fifth frame to end the test. | 4478 // the memory has been set, and the fifth frame to end the test. |
| 4535 if (layer_tree_host()->source_frame_number() < 5) { | 4479 if (layer_tree_host()->source_frame_number() < 5) { |
| 4536 layer_tree_host()->SetNeedsCommit(); | 4480 layer_tree_host()->SetNeedsCommit(); |
| 4537 } else if (layer_tree_host()->source_frame_number() == 5) { | 4481 } else if (layer_tree_host()->source_frame_number() == 5) { |
| 4538 EndTest(); | 4482 EndTest(); |
| 4539 } | 4483 } |
| 4540 } | 4484 } |
| 4541 | 4485 |
| 4542 virtual void SwapBuffersOnThread(LayerTreeHostImpl *impl, bool result) | 4486 virtual void SwapBuffersOnThread(LayerTreeHostImpl* impl, |
| 4543 OVERRIDE { | 4487 bool result) OVERRIDE { |
| 4544 switch (impl->active_tree()->source_frame_number()) { | 4488 switch (impl->active_tree()->source_frame_number()) { |
| 4545 case 1: | 4489 case 1: |
| 4546 EXPECT_EQ(first_output_surface_memory_limit_, | 4490 EXPECT_EQ(first_output_surface_memory_limit_, |
| 4547 impl->memory_allocation_limit_bytes()); | 4491 impl->memory_allocation_limit_bytes()); |
| 4548 // Lose the output surface. | 4492 // Lose the output surface. |
| 4549 first_context_provider_->TestContext3d()->loseContextCHROMIUM( | 4493 first_context_provider_->TestContext3d()->loseContextCHROMIUM( |
| 4550 GL_GUILTY_CONTEXT_RESET_ARB, | 4494 GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB); |
| 4551 GL_INNOCENT_CONTEXT_RESET_ARB); | |
| 4552 break; | 4495 break; |
| 4553 case 4: | 4496 case 4: |
| 4554 EXPECT_EQ(second_output_surface_memory_limit_, | 4497 EXPECT_EQ(second_output_surface_memory_limit_, |
| 4555 impl->memory_allocation_limit_bytes()); | 4498 impl->memory_allocation_limit_bytes()); |
| 4556 break; | 4499 break; |
| 4557 } | 4500 } |
| 4558 } | 4501 } |
| 4559 | 4502 |
| 4560 virtual void AfterTest() OVERRIDE {} | 4503 virtual void AfterTest() OVERRIDE {} |
| 4561 | 4504 |
| 4562 scoped_refptr<TestContextProvider> first_context_provider_; | 4505 scoped_refptr<TestContextProvider> first_context_provider_; |
| 4563 scoped_refptr<TestContextProvider> second_context_provider_; | 4506 scoped_refptr<TestContextProvider> second_context_provider_; |
| 4564 size_t first_output_surface_memory_limit_; | 4507 size_t first_output_surface_memory_limit_; |
| 4565 size_t second_output_surface_memory_limit_; | 4508 size_t second_output_surface_memory_limit_; |
| 4566 FakeContentLayerClient client_; | 4509 FakeContentLayerClient client_; |
| 4567 scoped_refptr<FakeContentLayer> root_; | 4510 scoped_refptr<FakeContentLayer> root_; |
| 4568 }; | 4511 }; |
| 4569 | 4512 |
| 4570 // No output to copy for delegated renderers. | 4513 // No output to copy for delegated renderers. |
| 4571 SINGLE_AND_MULTI_THREAD_TEST_F( | 4514 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 4572 LayerTreeHostTestSetMemoryPolicyOnLostOutputSurface); | 4515 LayerTreeHostTestSetMemoryPolicyOnLostOutputSurface); |
| 4573 | 4516 |
| 4574 struct TestSwapPromiseResult { | 4517 struct TestSwapPromiseResult { |
| 4575 TestSwapPromiseResult() : did_swap_called(false), | 4518 TestSwapPromiseResult() |
| 4576 did_not_swap_called(false), | 4519 : did_swap_called(false), |
| 4577 dtor_called(false), | 4520 did_not_swap_called(false), |
| 4578 reason(SwapPromise::DID_NOT_SWAP_UNKNOWN) { | 4521 dtor_called(false), |
| 4579 } | 4522 reason(SwapPromise::DID_NOT_SWAP_UNKNOWN) {} |
| 4580 | 4523 |
| 4581 bool did_swap_called; | 4524 bool did_swap_called; |
| 4582 bool did_not_swap_called; | 4525 bool did_not_swap_called; |
| 4583 bool dtor_called; | 4526 bool dtor_called; |
| 4584 SwapPromise::DidNotSwapReason reason; | 4527 SwapPromise::DidNotSwapReason reason; |
| 4585 base::Lock lock; | 4528 base::Lock lock; |
| 4586 }; | 4529 }; |
| 4587 | 4530 |
| 4588 class TestSwapPromise : public SwapPromise { | 4531 class TestSwapPromise : public SwapPromise { |
| 4589 public: | 4532 public: |
| 4590 explicit TestSwapPromise(TestSwapPromiseResult* result) | 4533 explicit TestSwapPromise(TestSwapPromiseResult* result) : result_(result) {} |
| 4591 : result_(result) { | |
| 4592 } | |
| 4593 | 4534 |
| 4594 virtual ~TestSwapPromise() { | 4535 virtual ~TestSwapPromise() { |
| 4595 base::AutoLock lock(result_->lock); | 4536 base::AutoLock lock(result_->lock); |
| 4596 result_->dtor_called = true; | 4537 result_->dtor_called = true; |
| 4597 } | 4538 } |
| 4598 | 4539 |
| 4599 virtual void DidSwap(CompositorFrameMetadata* metadata) OVERRIDE { | 4540 virtual void DidSwap(CompositorFrameMetadata* metadata) OVERRIDE { |
| 4600 base::AutoLock lock(result_->lock); | 4541 base::AutoLock lock(result_->lock); |
| 4601 EXPECT_FALSE(result_->did_swap_called); | 4542 EXPECT_FALSE(result_->did_swap_called); |
| 4602 EXPECT_FALSE(result_->did_not_swap_called); | 4543 EXPECT_FALSE(result_->did_not_swap_called); |
| 4603 result_->did_swap_called = true; | 4544 result_->did_swap_called = true; |
| 4604 } | 4545 } |
| 4605 | 4546 |
| 4606 virtual void DidNotSwap(DidNotSwapReason reason) OVERRIDE { | 4547 virtual void DidNotSwap(DidNotSwapReason reason) OVERRIDE { |
| 4607 base::AutoLock lock(result_->lock); | 4548 base::AutoLock lock(result_->lock); |
| 4608 EXPECT_FALSE(result_->did_swap_called); | 4549 EXPECT_FALSE(result_->did_swap_called); |
| 4609 EXPECT_FALSE(result_->did_not_swap_called); | 4550 EXPECT_FALSE(result_->did_not_swap_called); |
| 4610 result_->did_not_swap_called = true; | 4551 result_->did_not_swap_called = true; |
| 4611 result_->reason = reason; | 4552 result_->reason = reason; |
| 4612 } | 4553 } |
| 4613 | 4554 |
| 4614 private: | 4555 private: |
| 4615 // Not owned. | 4556 // Not owned. |
| 4616 TestSwapPromiseResult* result_; | 4557 TestSwapPromiseResult* result_; |
| 4617 }; | 4558 }; |
| 4618 | 4559 |
| 4619 class LayerTreeHostTestBreakSwapPromise | 4560 class LayerTreeHostTestBreakSwapPromise : public LayerTreeHostTest { |
| 4620 : public LayerTreeHostTest { | |
| 4621 protected: | 4561 protected: |
| 4622 LayerTreeHostTestBreakSwapPromise() | 4562 LayerTreeHostTestBreakSwapPromise() |
| 4623 : commit_count_(0), commit_complete_count_(0) { | 4563 : commit_count_(0), commit_complete_count_(0) {} |
| 4624 } | |
| 4625 | 4564 |
| 4626 virtual void WillBeginMainFrame() OVERRIDE { | 4565 virtual void WillBeginMainFrame() OVERRIDE { |
| 4627 ASSERT_LE(commit_count_, 2); | 4566 ASSERT_LE(commit_count_, 2); |
| 4628 scoped_ptr<SwapPromise> swap_promise(new TestSwapPromise( | 4567 scoped_ptr<SwapPromise> swap_promise( |
| 4629 &swap_promise_result_[commit_count_])); | 4568 new TestSwapPromise(&swap_promise_result_[commit_count_])); |
| 4630 layer_tree_host()->QueueSwapPromise(swap_promise.Pass()); | 4569 layer_tree_host()->QueueSwapPromise(swap_promise.Pass()); |
| 4631 } | 4570 } |
| 4632 | 4571 |
| 4633 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } | 4572 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 4634 | 4573 |
| 4635 virtual void DidCommit() OVERRIDE { | 4574 virtual void DidCommit() OVERRIDE { |
| 4636 commit_count_++; | 4575 commit_count_++; |
| 4637 if (commit_count_ == 2) { | 4576 if (commit_count_ == 2) { |
| 4638 // This commit will finish. | 4577 // This commit will finish. |
| 4639 layer_tree_host()->SetNeedsCommit(); | 4578 layer_tree_host()->SetNeedsCommit(); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4684 } | 4623 } |
| 4685 } | 4624 } |
| 4686 | 4625 |
| 4687 int commit_count_; | 4626 int commit_count_; |
| 4688 int commit_complete_count_; | 4627 int commit_complete_count_; |
| 4689 TestSwapPromiseResult swap_promise_result_[3]; | 4628 TestSwapPromiseResult swap_promise_result_[3]; |
| 4690 }; | 4629 }; |
| 4691 | 4630 |
| 4692 MULTI_THREAD_TEST_F(LayerTreeHostTestBreakSwapPromise); | 4631 MULTI_THREAD_TEST_F(LayerTreeHostTestBreakSwapPromise); |
| 4693 | 4632 |
| 4694 | |
| 4695 class SimpleSwapPromiseMonitor : public SwapPromiseMonitor { | 4633 class SimpleSwapPromiseMonitor : public SwapPromiseMonitor { |
| 4696 public: | 4634 public: |
| 4697 SimpleSwapPromiseMonitor(LayerTreeHost* layer_tree_host, | 4635 SimpleSwapPromiseMonitor(LayerTreeHost* layer_tree_host, |
| 4698 LayerTreeHostImpl* layer_tree_host_impl, | 4636 LayerTreeHostImpl* layer_tree_host_impl, |
| 4699 int* set_needs_commit_count, | 4637 int* set_needs_commit_count, |
| 4700 int* set_needs_redraw_count) | 4638 int* set_needs_redraw_count) |
| 4701 : SwapPromiseMonitor(layer_tree_host, layer_tree_host_impl), | 4639 : SwapPromiseMonitor(layer_tree_host, layer_tree_host_impl), |
| 4702 set_needs_commit_count_(set_needs_commit_count), | 4640 set_needs_commit_count_(set_needs_commit_count), |
| 4703 set_needs_redraw_count_(set_needs_redraw_count) {} | 4641 set_needs_redraw_count_(set_needs_redraw_count) {} |
| 4704 | 4642 |
| 4705 virtual ~SimpleSwapPromiseMonitor() {} | 4643 virtual ~SimpleSwapPromiseMonitor() {} |
| 4706 | 4644 |
| 4707 virtual void OnSetNeedsCommitOnMain() OVERRIDE { | 4645 virtual void OnSetNeedsCommitOnMain() OVERRIDE { |
| 4708 (*set_needs_commit_count_)++; | 4646 (*set_needs_commit_count_)++; |
| 4709 } | 4647 } |
| 4710 | 4648 |
| 4711 virtual void OnSetNeedsRedrawOnImpl() OVERRIDE { | 4649 virtual void OnSetNeedsRedrawOnImpl() OVERRIDE { |
| 4712 (*set_needs_redraw_count_)++; | 4650 (*set_needs_redraw_count_)++; |
| 4713 } | 4651 } |
| 4714 | 4652 |
| 4715 private: | 4653 private: |
| 4716 int* set_needs_commit_count_; | 4654 int* set_needs_commit_count_; |
| 4717 int* set_needs_redraw_count_; | 4655 int* set_needs_redraw_count_; |
| 4718 }; | 4656 }; |
| 4719 | 4657 |
| 4720 class LayerTreeHostTestSimpleSwapPromiseMonitor | 4658 class LayerTreeHostTestSimpleSwapPromiseMonitor : public LayerTreeHostTest { |
| 4721 : public LayerTreeHostTest { | 4659 public: |
| 4722 | |
| 4723 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } | 4660 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 4724 | 4661 |
| 4725 virtual void WillBeginMainFrame() OVERRIDE { | 4662 virtual void WillBeginMainFrame() OVERRIDE { |
| 4726 int set_needs_commit_count = 0; | 4663 int set_needs_commit_count = 0; |
| 4727 int set_needs_redraw_count = 0; | 4664 int set_needs_redraw_count = 0; |
| 4728 | 4665 |
| 4729 { | 4666 { |
| 4730 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( | 4667 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( |
| 4731 new SimpleSwapPromiseMonitor(layer_tree_host(), | 4668 new SimpleSwapPromiseMonitor(layer_tree_host(), |
| 4732 NULL, | 4669 NULL, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4767 | 4704 |
| 4768 EndTest(); | 4705 EndTest(); |
| 4769 } | 4706 } |
| 4770 | 4707 |
| 4771 virtual void AfterTest() OVERRIDE {} | 4708 virtual void AfterTest() OVERRIDE {} |
| 4772 }; | 4709 }; |
| 4773 | 4710 |
| 4774 MULTI_THREAD_TEST_F(LayerTreeHostTestSimpleSwapPromiseMonitor); | 4711 MULTI_THREAD_TEST_F(LayerTreeHostTestSimpleSwapPromiseMonitor); |
| 4775 | 4712 |
| 4776 } // namespace cc | 4713 } // namespace cc |
| OLD | NEW |