Chromium Code Reviews| Index: cc/trees/layer_tree_host_unittest_animation.cc |
| diff --git a/cc/trees/layer_tree_host_unittest_animation.cc b/cc/trees/layer_tree_host_unittest_animation.cc |
| index 165d30b6df17b26288c49418b55905d652c04276..04b669a013d08b6f0eded91fc4c669eff376af44 100644 |
| --- a/cc/trees/layer_tree_host_unittest_animation.cc |
| +++ b/cc/trees/layer_tree_host_unittest_animation.cc |
| @@ -783,6 +783,15 @@ class LayerTreeHostAnimationTestContinuousAnimate |
| num_draw_layers_(0) { |
| } |
| + virtual void SetupTree() OVERRIDE { |
| + LayerTreeHostAnimationTest::SetupTree(); |
| + // Create a fake content layer so we actually produce new content for every |
| + // animation frame. |
| + content_ = FakeContentLayer::Create(&client_); |
| + content_->set_always_update_resources(true); |
| + layer_tree_host()->root_layer()->AddChild(content_); |
| + } |
| + |
| virtual void BeginTest() OVERRIDE { |
| PostSetNeedsCommitToMainThread(); |
| } |
| @@ -816,10 +825,82 @@ class LayerTreeHostAnimationTestContinuousAnimate |
| private: |
| int num_commit_complete_; |
| int num_draw_layers_; |
| + FakeContentLayerClient client_; |
| + scoped_refptr<FakeContentLayer> content_; |
| }; |
| MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestContinuousAnimate); |
| +class LayerTreeHostAnimationTestCancelAnimateCommit |
| + : public LayerTreeHostAnimationTest { |
| + public: |
| + LayerTreeHostAnimationTestCancelAnimateCommit() : num_animate_calls_(0) {} |
| + |
| + virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| + |
| + virtual void Animate(base::TimeTicks) OVERRIDE { |
| + // No-op animate will cancel the commit. |
| + if (++num_animate_calls_ == 2) { |
| + EndTest(); |
| + return; |
| + } |
| + layer_tree_host()->SetNeedsAnimate(); |
| + } |
| + |
| + virtual void CommitCompleteOnThread(LayerTreeHostImpl* tree_impl) OVERRIDE { |
| + FAIL() << "Commit should have been canceled."; |
| + } |
| + |
| + virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| + FAIL() << "Draw should have been canceled."; |
| + } |
| + |
| + virtual void AfterTest() OVERRIDE { EXPECT_EQ(2, num_animate_calls_); } |
| + |
| + private: |
| + int num_animate_calls_; |
| + FakeContentLayerClient client_; |
| + scoped_refptr<FakeContentLayer> content_; |
| +}; |
| + |
| +MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestCancelAnimateCommit); |
| + |
| +class LayerTreeHostAnimationTestForceRedraw |
| + : public LayerTreeHostAnimationTest { |
| + public: |
| + LayerTreeHostAnimationTestForceRedraw() |
| + : num_animate_(0), num_draw_layers_(0) {} |
| + |
| + virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } |
| + |
| + virtual void Animate(base::TimeTicks) OVERRIDE { |
| + if (++num_animate_ < 2) |
| + layer_tree_host()->SetNeedsAnimate(); |
| + } |
| + |
| + virtual void Layout() OVERRIDE { |
| + layer_tree_host()->SetNextCommitForcesRedraw(); |
| + } |
| + |
| + virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| + if (++num_draw_layers_ == 2) |
| + EndTest(); |
| + } |
| + |
| + virtual void AfterTest() OVERRIDE { |
| + // The first commit will always draw; make sure the second draw triggered |
| + // by the animation was not cancelled. |
| + EXPECT_EQ(num_draw_layers_, 2); |
|
danakj
2014/02/27 17:43:29
order should be: expected, actual
|
| + EXPECT_EQ(2, num_animate_); |
| + } |
| + |
| + private: |
| + int num_animate_; |
| + int num_draw_layers_; |
| +}; |
| + |
| +MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestForceRedraw); |
| + |
| // Make sure the main thread can still execute animations when CanDraw() is not |
| // true. |
| class LayerTreeHostAnimationTestRunAnimationWhenNotCanDraw |