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 be879af1384d097e5b7d9ef53ec4ea1603c10248..4feaa3e86c5827ebacf9813365ddb73c962641ed 100644 |
| --- a/cc/trees/layer_tree_host_unittest.cc |
| +++ b/cc/trees/layer_tree_host_unittest.cc |
| @@ -2283,7 +2283,8 @@ class LayerTreeHostTestDeferCommits : public LayerTreeHostTest { |
| void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| - void WillBeginImplFrame(const BeginFrameArgs& args) override { |
| + void WillBeginImplFrameOnThread(LayerTreeHostImpl* host_impl, |
| + const BeginFrameArgs& args) override { |
| num_will_begin_impl_frame_++; |
| switch (num_will_begin_impl_frame_) { |
| case 1: |
| @@ -5493,6 +5494,72 @@ class LayerTreeHostTestContinuousPainting : public LayerTreeHostTest { |
| MULTI_THREAD_TEST_F(LayerTreeHostTestContinuousPainting); |
| +class LayerTreeHostTestWillBeginImplFrameHasDidFinishImplFrame |
| + : public LayerTreeHostTest { |
| + public: |
| + enum { kExpectedNumImplFrames = 10 }; |
| + |
| + LayerTreeHostTestWillBeginImplFrameHasDidFinishImplFrame() |
| + : threaded_(false), |
| + will_begin_impl_frame_count_(0), |
| + did_begin_impl_frame_finish_count_(0) {} |
|
sunnyps
2015/05/01 20:35:25
nit: did_finish_impl_frame_count_
mithro-old
2015/05/04 01:22:58
Done! Me English good :P
|
| + |
| + void RunTest(bool threaded, |
| + bool delegating_renderer, |
| + bool impl_side_painting) override { |
| + threaded_ = threaded; |
| + LayerTreeHostTest::RunTest(threaded, delegating_renderer, |
| + impl_side_painting); |
| + } |
| + |
| + void BeginTest() override { |
| + // Kick off the test with a commit. |
| + PostSetNeedsCommitToMainThread(); |
| + } |
| + |
| + void WillBeginImplFrameOnThread(LayerTreeHostImpl* host_impl, |
| + const BeginFrameArgs& args) override { |
| + EXPECT_EQ(will_begin_impl_frame_count_, did_begin_impl_frame_finish_count_); |
| + EXPECT_FALSE(TestEnded()); |
| + will_begin_impl_frame_count_++; |
| + } |
| + |
| + void DidFinishImplFrameOnThread(LayerTreeHostImpl* host_impl) override { |
| + did_begin_impl_frame_finish_count_++; |
| + EXPECT_EQ(will_begin_impl_frame_count_, did_begin_impl_frame_finish_count_); |
| + |
| + // Request a number of commits to cause multiple impl frames. We expect to |
| + // get one more impl frames than the number of commits requested because |
| + // after a commit it takes one frame to become idle. |
| + if (did_begin_impl_frame_finish_count_ < kExpectedNumImplFrames - 1) |
| + PostSetNeedsCommitToMainThread(); |
| + } |
| + |
| + void SendBeginMainFrameNotExpectedSoon() override { EndTest(); } |
| + |
| + void AfterTest() override { |
| + EXPECT_GT(will_begin_impl_frame_count_, 0); |
| + EXPECT_GT(did_begin_impl_frame_finish_count_, 0); |
| + EXPECT_EQ(will_begin_impl_frame_count_, did_begin_impl_frame_finish_count_); |
| + |
| + // TODO(mithro): Figure out why the multithread version of this test |
| + // sometimes has one more frame then expected. Possibly related to |
| + // http://crbug.com/443185 |
| + if (!threaded_) { |
| + EXPECT_EQ(will_begin_impl_frame_count_, kExpectedNumImplFrames); |
| + EXPECT_EQ(did_begin_impl_frame_finish_count_, kExpectedNumImplFrames); |
|
sunnyps
2015/05/01 20:35:25
Can we at least check EXPECT_EQ(will_begin_impl_fr
mithro-old
2015/05/04 01:22:58
Line 5543 above does this.
|
| + } |
| + } |
| + |
| + private: |
| + bool threaded_; |
| + int will_begin_impl_frame_count_; |
| + int did_begin_impl_frame_finish_count_; |
| +}; |
| + |
| +SINGLE_AND_MULTI_THREAD_TEST_F( |
| + LayerTreeHostTestWillBeginImplFrameHasDidFinishImplFrame); |
| + |
| class LayerTreeHostTestSendBeginFramesToChildren : public LayerTreeHostTest { |
| public: |
| LayerTreeHostTestSendBeginFramesToChildren() |