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 2e7457a49aac6600be861bf479eb244c545a3d17..b7e599cc0ae07f690a3e14512fbb11e0a05bfb6d 100644 |
| --- a/cc/trees/layer_tree_host_unittest.cc |
| +++ b/cc/trees/layer_tree_host_unittest.cc |
| @@ -7502,5 +7502,56 @@ class LayerTreeHostTestHudLayerWithLayerLists : public LayerTreeHostTest { |
| SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestHudLayerWithLayerLists); |
| +// Verifies that LayerTreeHostClient does not receive frame acks from a released |
| +// CompositorFrameSink. |
| +class LayerTreeHostTestDiscardAckAfterRelease : public LayerTreeHostTest { |
| + protected: |
| + void SetupTree() override { |
| + scoped_refptr<Layer> root = Layer::Create(); |
| + root->SetBounds(gfx::Size(10, 10)); |
| + layer_tree_host()->SetRootLayer(std::move(root)); |
| + LayerTreeHostTest::SetupTree(); |
| + } |
| + |
| + void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| + |
| + void WillReceiveCompositorFrameAckOnThread( |
| + LayerTreeHostImpl* host_impl) override { |
| + MainThreadTaskRunner()->PostTask( |
| + FROM_HERE, base::Bind(&LayerTreeHostTestDiscardAckAfterRelease:: |
| + ReleaseCompositorFrameSink, |
| + base::Unretained(this))); |
| + } |
| + |
| + void DidReceiveCompositorFrameAckOnThread( |
| + LayerTreeHostImpl* host_impl) override { |
| + MainThreadTaskRunner()->PostDelayedTask( |
|
danakj
2017/04/18 21:52:34
Thanks! LGTM
One suggestion is pretend you are a
|
| + FROM_HERE, |
| + base::Bind( |
| + &LayerTreeHostTestDiscardAckAfterRelease::VerifyAckNotReceived, |
| + base::Unretained(this)), |
| + base::TimeDelta::FromMilliseconds(100)); |
| + } |
| + |
| + void DidReceiveCompositorFrameAck() override { received_ack_ = true; } |
| + |
| + void ReleaseCompositorFrameSink() { |
| + layer_tree_host()->SetVisible(false); |
| + layer_tree_host()->ReleaseCompositorFrameSink(); |
| + } |
| + |
| + void VerifyAckNotReceived() { |
| + EXPECT_FALSE(received_ack_); |
| + EndTest(); |
| + } |
| + |
| + void AfterTest() override {} |
| + |
| + private: |
| + bool received_ack_ = false; |
| +}; |
| + |
| +SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDiscardAckAfterRelease); |
| + |
| } // namespace |
| } // namespace cc |