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..2c4563c1e02dd69015e91d8d05a314a8fde04d74 100644 |
--- a/cc/trees/layer_tree_host_unittest.cc |
+++ b/cc/trees/layer_tree_host_unittest.cc |
@@ -7502,5 +7502,53 @@ class LayerTreeHostTestHudLayerWithLayerLists : public LayerTreeHostTest { |
SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestHudLayerWithLayerLists); |
+// Verifies that LayerTreeHost does not receive frame acks from a released |
danakj
2017/04/18 20:58:42
LayerTreeHostClient
Saman Sami
2017/04/18 21:37:13
Done.
|
+// 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(root); |
danakj
2017/04/18 20:58:42
std::move()
Saman Sami
2017/04/18 21:37:13
Done.
|
+ LayerTreeHostTest::SetupTree(); |
+ } |
+ |
+ void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
+ |
+ void WillReceiveCompositorFrameAckOnImplThread() override { |
+ MainThreadTaskRunner()->PostTask( |
+ FROM_HERE, base::Bind(&LayerTreeHostTestDiscardAckAfterRelease:: |
+ ReleaseCompositorFrameSink, |
+ base::Unretained(this))); |
+ } |
+ |
+ void DidReceiveCompositorFrameAckOnImplThread() override { |
+ MainThreadTaskRunner()->PostTask( |
+ FROM_HERE, |
+ base::Bind( |
+ &LayerTreeHostTestDiscardAckAfterRelease::VerifyAckNotReceived, |
danakj
2017/04/18 20:58:42
Can you post the VerifyAckNotReceived with a small
Saman Sami
2017/04/18 21:37:13
Done. Good point.
|
+ base::Unretained(this))); |
+ } |
+ |
+ 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 |