| 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 4482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4493 { | 4493 { |
| 4494 // The first commit completes and causes swap buffer which finishes | 4494 // The first commit completes and causes swap buffer which finishes |
| 4495 // the promise. | 4495 // the promise. |
| 4496 base::AutoLock lock(swap_promise_result_[0].lock); | 4496 base::AutoLock lock(swap_promise_result_[0].lock); |
| 4497 EXPECT_TRUE(swap_promise_result_[0].did_swap_called); | 4497 EXPECT_TRUE(swap_promise_result_[0].did_swap_called); |
| 4498 EXPECT_FALSE(swap_promise_result_[0].did_not_swap_called); | 4498 EXPECT_FALSE(swap_promise_result_[0].did_not_swap_called); |
| 4499 EXPECT_TRUE(swap_promise_result_[0].dtor_called); | 4499 EXPECT_TRUE(swap_promise_result_[0].dtor_called); |
| 4500 } | 4500 } |
| 4501 | 4501 |
| 4502 { | 4502 { |
| 4503 // The second commit aborts. | 4503 // The second commit is aborted since it contains no updates. |
| 4504 base::AutoLock lock(swap_promise_result_[1].lock); | 4504 base::AutoLock lock(swap_promise_result_[1].lock); |
| 4505 EXPECT_FALSE(swap_promise_result_[1].did_swap_called); | 4505 EXPECT_FALSE(swap_promise_result_[1].did_swap_called); |
| 4506 EXPECT_TRUE(swap_promise_result_[1].did_not_swap_called); | 4506 EXPECT_TRUE(swap_promise_result_[1].did_not_swap_called); |
| 4507 EXPECT_EQ(SwapPromise::COMMIT_FAILS, swap_promise_result_[1].reason); | 4507 EXPECT_EQ(SwapPromise::COMMIT_NO_UPDATE, swap_promise_result_[1].reason); |
| 4508 EXPECT_TRUE(swap_promise_result_[1].dtor_called); | 4508 EXPECT_TRUE(swap_promise_result_[1].dtor_called); |
| 4509 } | 4509 } |
| 4510 | 4510 |
| 4511 { | 4511 { |
| 4512 // The last commit completes but it does not cause swap buffer because | 4512 // The last commit completes but it does not cause swap buffer because |
| 4513 // there is no damage in the frame data. | 4513 // there is no damage in the frame data. |
| 4514 base::AutoLock lock(swap_promise_result_[2].lock); | 4514 base::AutoLock lock(swap_promise_result_[2].lock); |
| 4515 EXPECT_FALSE(swap_promise_result_[2].did_swap_called); | 4515 EXPECT_FALSE(swap_promise_result_[2].did_swap_called); |
| 4516 EXPECT_TRUE(swap_promise_result_[2].did_not_swap_called); | 4516 EXPECT_TRUE(swap_promise_result_[2].did_not_swap_called); |
| 4517 EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[2].reason); | 4517 EXPECT_EQ(SwapPromise::SWAP_FAILS, swap_promise_result_[2].reason); |
| 4518 EXPECT_TRUE(swap_promise_result_[2].dtor_called); | 4518 EXPECT_TRUE(swap_promise_result_[2].dtor_called); |
| 4519 } | 4519 } |
| 4520 } | 4520 } |
| 4521 | 4521 |
| 4522 int commit_count_; | 4522 int commit_count_; |
| 4523 int commit_complete_count_; | 4523 int commit_complete_count_; |
| 4524 TestSwapPromiseResult swap_promise_result_[3]; | 4524 TestSwapPromiseResult swap_promise_result_[3]; |
| 4525 }; | 4525 }; |
| 4526 | 4526 |
| 4527 // TODO(miletus): Flaky test: crbug.com/393995 | 4527 // TODO(miletus): Flaky test: crbug.com/393995 |
| 4528 // MULTI_THREAD_TEST_F(LayerTreeHostTestBreakSwapPromise); | 4528 // MULTI_THREAD_TEST_F(LayerTreeHostTestBreakSwapPromise); |
| 4529 | 4529 |
| 4530 class LayerTreeHostTestBreakSwapPromiseForAbortedCommit |
| 4531 : public LayerTreeHostTest { |
| 4532 protected: |
| 4533 LayerTreeHostTestBreakSwapPromiseForAbortedCommit() : commit_count_(0) {} |
| 4534 |
| 4535 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 4536 |
| 4537 virtual void WillBeginMainFrame() OVERRIDE { |
| 4538 layer_tree_host()->SetDeferCommits(true); |
| 4539 layer_tree_host()->SetNeedsCommit(); |
| 4540 } |
| 4541 |
| 4542 virtual void DidDeferCommit() OVERRIDE { |
| 4543 layer_tree_host()->SetVisible(false); |
| 4544 layer_tree_host()->SetDeferCommits(false); |
| 4545 |
| 4546 scoped_ptr<SwapPromise> swap_promise( |
| 4547 new TestSwapPromise(&swap_promise_result_)); |
| 4548 layer_tree_host()->QueueSwapPromise(swap_promise.Pass()); |
| 4549 } |
| 4550 |
| 4551 virtual void DidCommit() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| 4552 |
| 4553 virtual void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl, |
| 4554 bool did_handle) OVERRIDE { |
| 4555 EndTest(); |
| 4556 } |
| 4557 |
| 4558 virtual void AfterTest() OVERRIDE { |
| 4559 { |
| 4560 base::AutoLock lock(swap_promise_result_.lock); |
| 4561 EXPECT_FALSE(swap_promise_result_.did_swap_called); |
| 4562 EXPECT_TRUE(swap_promise_result_.did_not_swap_called); |
| 4563 EXPECT_EQ(SwapPromise::COMMIT_FAILS, swap_promise_result_.reason); |
| 4564 EXPECT_TRUE(swap_promise_result_.dtor_called); |
| 4565 } |
| 4566 } |
| 4567 |
| 4568 int commit_count_; |
| 4569 TestSwapPromiseResult swap_promise_result_; |
| 4570 }; |
| 4571 |
| 4572 MULTI_THREAD_TEST_F(LayerTreeHostTestBreakSwapPromiseForAbortedCommit); |
| 4573 |
| 4530 class SimpleSwapPromiseMonitor : public SwapPromiseMonitor { | 4574 class SimpleSwapPromiseMonitor : public SwapPromiseMonitor { |
| 4531 public: | 4575 public: |
| 4532 SimpleSwapPromiseMonitor(LayerTreeHost* layer_tree_host, | 4576 SimpleSwapPromiseMonitor(LayerTreeHost* layer_tree_host, |
| 4533 LayerTreeHostImpl* layer_tree_host_impl, | 4577 LayerTreeHostImpl* layer_tree_host_impl, |
| 4534 int* set_needs_commit_count, | 4578 int* set_needs_commit_count, |
| 4535 int* set_needs_redraw_count) | 4579 int* set_needs_redraw_count) |
| 4536 : SwapPromiseMonitor(layer_tree_host, layer_tree_host_impl), | 4580 : SwapPromiseMonitor(layer_tree_host, layer_tree_host_impl), |
| 4537 set_needs_commit_count_(set_needs_commit_count), | 4581 set_needs_commit_count_(set_needs_commit_count), |
| 4538 set_needs_redraw_count_(set_needs_redraw_count) {} | 4582 set_needs_redraw_count_(set_needs_redraw_count) {} |
| 4539 | 4583 |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4911 const gfx::Size bounds_; | 4955 const gfx::Size bounds_; |
| 4912 FakeContentLayerClient client_; | 4956 FakeContentLayerClient client_; |
| 4913 scoped_refptr<ContentLayerWithUpdateTracking> content_layer_; | 4957 scoped_refptr<ContentLayerWithUpdateTracking> content_layer_; |
| 4914 scoped_refptr<FakePictureLayer> picture_layer_; | 4958 scoped_refptr<FakePictureLayer> picture_layer_; |
| 4915 Layer* child_layer_; | 4959 Layer* child_layer_; |
| 4916 }; | 4960 }; |
| 4917 | 4961 |
| 4918 MULTI_THREAD_TEST_F(LayerTreeHostTestContinuousPainting); | 4962 MULTI_THREAD_TEST_F(LayerTreeHostTestContinuousPainting); |
| 4919 | 4963 |
| 4920 } // namespace cc | 4964 } // namespace cc |
| OLD | NEW |