Chromium Code Reviews| Index: cc/trees/layer_tree_host_unittest.cc |
| diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc |
| index 093878e58a238f1b4db10ea0915033991031be6e..5b081f124a571b21185c2e49ecb570714882e952 100644 |
| --- a/cc/trees/layer_tree_host_unittest.cc |
| +++ b/cc/trees/layer_tree_host_unittest.cc |
| @@ -2033,22 +2033,33 @@ SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestContinuousInvalidate); |
| class LayerTreeHostTestDeferCommits : public LayerTreeHostTest { |
| public: |
| LayerTreeHostTestDeferCommits() |
| - : num_commits_deferred_(0), num_complete_commits_(0) {} |
| + : num_will_begin_impl_frame_(0), |
| + num_send_begin_main_frame_(0) {} |
| void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| - void DidDeferCommit() override { |
| - num_commits_deferred_++; |
| - layer_tree_host()->SetDeferCommits(false); |
| + void WillBeginImplFrame(const BeginFrameArgs& args) override { |
| + num_will_begin_impl_frame_++; |
| + switch (num_will_begin_impl_frame_) { |
| + case 1: |
| + break; |
| + case 2: |
| + PostSetNeedsCommitToMainThread(); |
| + break; |
| + case 3: |
| + PostSetDeferCommitsToMainThread(false); |
| + break; |
| + default: |
| + NOTREACHED(); |
| + break; |
| + } |
| } |
| - void DidCommit() override { |
| - num_complete_commits_++; |
| - switch (num_complete_commits_) { |
| + void ScheduledActionSendBeginMainFrame() override { |
| + num_send_begin_main_frame_++; |
| + switch (num_send_begin_main_frame_) { |
| case 1: |
| - EXPECT_EQ(0, num_commits_deferred_); |
| - layer_tree_host()->SetDeferCommits(true); |
| - PostSetNeedsCommitToMainThread(); |
| + PostSetDeferCommitsToMainThread(true); |
| break; |
| case 2: |
| EndTest(); |
| @@ -2060,13 +2071,13 @@ class LayerTreeHostTestDeferCommits : public LayerTreeHostTest { |
| } |
| void AfterTest() override { |
| - EXPECT_EQ(1, num_commits_deferred_); |
| - EXPECT_EQ(2, num_complete_commits_); |
| + EXPECT_EQ(3, num_will_begin_impl_frame_); |
|
brianderson
2015/01/29 04:30:53
Assuming an exact number of BeginImplFrames have p
simonhong
2015/01/29 16:22:17
Done.
|
| + EXPECT_EQ(2, num_send_begin_main_frame_); |
| } |
| private: |
| - int num_commits_deferred_; |
| - int num_complete_commits_; |
| + int num_will_begin_impl_frame_; |
| + int num_send_begin_main_frame_; |
| }; |
| SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDeferCommits); |
| @@ -4802,22 +4813,24 @@ class LayerTreeHostTestKeepSwapPromise : public LayerTreeTest { |
| SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestKeepSwapPromise); |
| -class LayerTreeHostTestBreakSwapPromiseForVisibilityAbortedCommit |
| +class LayerTreeHostTestBreakSwapPromiseForVisibility |
| : public LayerTreeHostTest { |
| protected: |
| void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| - void DidCommit() override { |
| - layer_tree_host()->SetDeferCommits(true); |
| - layer_tree_host()->SetNeedsCommit(); |
| - } |
| - |
| - void DidDeferCommit() override { |
| + void SetVisibleFalseAndQueueSwapPromise() { |
| layer_tree_host()->SetVisible(false); |
| scoped_ptr<SwapPromise> swap_promise( |
| new TestSwapPromise(&swap_promise_result_)); |
| layer_tree_host()->QueueSwapPromise(swap_promise.Pass()); |
| - layer_tree_host()->SetDeferCommits(false); |
| + } |
| + |
| + void ScheduledActionWillSendBeginMainFrame() override { |
| + MainThreadTaskRunner()->PostTask( |
| + FROM_HERE, |
| + base::Bind(&LayerTreeHostTestBreakSwapPromiseForVisibility |
| + ::SetVisibleFalseAndQueueSwapPromise, |
| + base::Unretained(this))); |
| } |
| void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl, |
| @@ -4838,27 +4851,32 @@ class LayerTreeHostTestBreakSwapPromiseForVisibilityAbortedCommit |
| TestSwapPromiseResult swap_promise_result_; |
| }; |
| -SINGLE_AND_MULTI_THREAD_TEST_F( |
| - LayerTreeHostTestBreakSwapPromiseForVisibilityAbortedCommit); |
| +SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestBreakSwapPromiseForVisibility); |
| -class LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit |
| - : public LayerTreeHostTest { |
| +class LayerTreeHostTestBreakSwapPromiseForContext : public LayerTreeHostTest { |
| protected: |
| - void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| - |
| - void DidCommit() override { |
| - if (TestEnded()) |
| - return; |
| - layer_tree_host()->SetDeferCommits(true); |
| - layer_tree_host()->SetNeedsCommit(); |
| + LayerTreeHostTestBreakSwapPromiseForContext() : output_surface_lost_(false) { |
| } |
| - void DidDeferCommit() override { |
| + void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| + |
| + void LoseOutputSurfaceAndQueueSwapPromise() { |
| layer_tree_host()->DidLoseOutputSurface(); |
| scoped_ptr<SwapPromise> swap_promise( |
| new TestSwapPromise(&swap_promise_result_)); |
| layer_tree_host()->QueueSwapPromise(swap_promise.Pass()); |
| - layer_tree_host()->SetDeferCommits(false); |
| + } |
| + |
| + void ScheduledActionWillSendBeginMainFrame() override { |
| + if (output_surface_lost_) |
| + return; |
| + output_surface_lost_ = true; |
| + |
| + MainThreadTaskRunner()->PostTask( |
| + FROM_HERE, |
| + base::Bind(&LayerTreeHostTestBreakSwapPromiseForContext |
| + ::LoseOutputSurfaceAndQueueSwapPromise, |
| + base::Unretained(this))); |
| } |
| void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl, |
| @@ -4878,11 +4896,12 @@ class LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit |
| } |
| } |
| + bool output_surface_lost_; |
|
brianderson
2015/01/29 04:30:53
This name is a slight lie. Maybe call it output_su
simonhong
2015/01/29 16:22:17
yep. output_surface_lost_triggered_ is correct!
|
| TestSwapPromiseResult swap_promise_result_; |
| }; |
| SINGLE_AND_MULTI_THREAD_TEST_F( |
| - LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit); |
| + LayerTreeHostTestBreakSwapPromiseForContext); |
| class SimpleSwapPromiseMonitor : public SwapPromiseMonitor { |
| public: |