diff options
Diffstat (limited to 'cc/trees/layer_tree_host_unittest.cc')
-rw-r--r-- | cc/trees/layer_tree_host_unittest.cc | 92 |
1 files changed, 56 insertions, 36 deletions
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc index ab1224e..7378694 100644 --- a/cc/trees/layer_tree_host_unittest.cc +++ b/cc/trees/layer_tree_host_unittest.cc @@ -2029,22 +2029,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(); @@ -2056,13 +2067,13 @@ class LayerTreeHostTestDeferCommits : public LayerTreeHostTest { } void AfterTest() override { - EXPECT_EQ(1, num_commits_deferred_); - EXPECT_EQ(2, num_complete_commits_); + EXPECT_GE(3, num_will_begin_impl_frame_); + 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); @@ -4798,22 +4809,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, @@ -4834,27 +4847,33 @@ 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_triggered_(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_triggered_) + return; + output_surface_lost_triggered_ = true; + + MainThreadTaskRunner()->PostTask( + FROM_HERE, + base::Bind(&LayerTreeHostTestBreakSwapPromiseForContext + ::LoseOutputSurfaceAndQueueSwapPromise, + base::Unretained(this))); } void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl, @@ -4874,11 +4893,12 @@ class LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit } } + bool output_surface_lost_triggered_; TestSwapPromiseResult swap_promise_result_; }; SINGLE_AND_MULTI_THREAD_TEST_F( - LayerTreeHostTestBreakSwapPromiseForContextAbortedCommit); + LayerTreeHostTestBreakSwapPromiseForContext); class SimpleSwapPromiseMonitor : public SwapPromiseMonitor { public: |