Index: cc/trees/layer_tree_host_unittest_context.cc |
diff --git a/cc/trees/layer_tree_host_unittest_context.cc b/cc/trees/layer_tree_host_unittest_context.cc |
index 7c766fe8bedc60376fafb543e8f51667e2c40682..14829221e1e865361c67f95906467dd5cde75f95 100644 |
--- a/cc/trees/layer_tree_host_unittest_context.cc |
+++ b/cc/trees/layer_tree_host_unittest_context.cc |
@@ -382,6 +382,66 @@ class LayerTreeHostClientNotReadyDoesNotCreateOutputSurface |
SINGLE_AND_MULTI_THREAD_TEST_F( |
LayerTreeHostClientNotReadyDoesNotCreateOutputSurface); |
+class LayerTreeHostClientTakeAwayOutputSurface |
+ : public LayerTreeHostContextTest { |
+ public: |
+ LayerTreeHostClientTakeAwayOutputSurface() |
+ : LayerTreeHostContextTest(), setos_counter_(0), made_visible_(false) {} |
+ |
+ void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
+ |
+ void RequestNewOutputSurface() override { |
+ if (!made_visible_) |
no sievers
2015/09/11 22:44:50
You mean 'if (made_visible_)'? Or you could simply
sohanjg
2015/09/14 13:01:27
Done.
|
+ CreateAndSetOutputSurface(); |
+ } |
+ |
+ void CreateAndSetOutputSurface() { |
+ scoped_ptr<OutputSurface> surface = |
+ LayerTreeHostContextTest::CreateOutputSurface(); |
+ CHECK(surface); |
+ layer_tree_host()->SetOutputSurface(surface.Pass()); |
+ setos_counter_++; |
+ } |
+ |
+ void HideAndReleaseOutputSurface() { |
+ EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); |
+ layer_tree_host()->SetVisible(false); |
+ made_visible_ = false; |
+ scoped_ptr<OutputSurface> surface = |
+ layer_tree_host()->ReleaseOutputSurface(); |
+ CHECK(surface); |
+ MainThreadTaskRunner()->PostTask( |
+ FROM_HERE, |
+ base::Bind(&LayerTreeHostClientTakeAwayOutputSurface::MakeVisible, |
+ base::Unretained(this))); |
+ } |
+ |
+ void DidInitializeOutputSurface() override { |
+ if (setos_counter_ == 0) { |
no sievers
2015/09/11 22:44:50
== 1? Otherwise this is unreachable, and it probab
sohanjg
2015/09/14 13:01:27
Done.
|
+ EXPECT_TRUE(layer_tree_host()->visible()); |
+ MainThreadTaskRunner()->PostTask( |
+ FROM_HERE, base::Bind(&LayerTreeHostClientTakeAwayOutputSurface:: |
+ HideAndReleaseOutputSurface, |
+ base::Unretained(this))); |
+ } else { |
+ EndTest(); |
+ } |
+ } |
+ |
+ void MakeVisible() { |
+ EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); |
+ layer_tree_host()->SetVisible(true); |
+ made_visible_ = true; |
+ } |
+ |
+ void AfterTest() override {} |
+ |
+ int setos_counter_; |
+ bool made_visible_; |
+}; |
+ |
+SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostClientTakeAwayOutputSurface); |
+ |
class MultipleCompositeDoesNotCreateOutputSurface |
: public LayerTreeHostContextTest { |
public: |