Index: trunk/src/cc/layers/texture_layer_unittest.cc |
=================================================================== |
--- trunk/src/cc/layers/texture_layer_unittest.cc (revision 220454) |
+++ trunk/src/cc/layers/texture_layer_unittest.cc (working copy) |
@@ -8,8 +8,6 @@ |
#include "base/callback.h" |
#include "base/synchronization/waitable_event.h" |
-#include "base/threading/thread.h" |
-#include "base/time/time.h" |
#include "cc/debug/test_web_graphics_context_3d.h" |
#include "cc/layers/texture_layer_client.h" |
#include "cc/layers/texture_layer_impl.h" |
@@ -863,241 +861,6 @@ |
SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
TextureLayerImplWithMailboxThreadedCallback); |
- |
-class TextureLayerNoMailboxIsActivatedDuringCommit : public LayerTreeTest, |
- public TextureLayerClient { |
- protected: |
- TextureLayerNoMailboxIsActivatedDuringCommit() |
- : wait_thread_("WAIT"), |
- wait_event_(false, false) { |
- wait_thread_.Start(); |
- } |
- |
- virtual void BeginTest() OVERRIDE { |
- activate_count_ = 0; |
- |
- gfx::Size bounds(100, 100); |
- root_ = Layer::Create(); |
- root_->SetAnchorPoint(gfx::PointF()); |
- root_->SetBounds(bounds); |
- |
- layer_ = TextureLayer::Create(this); |
- layer_->SetIsDrawable(true); |
- layer_->SetAnchorPoint(gfx::PointF()); |
- layer_->SetBounds(bounds); |
- |
- root_->AddChild(layer_); |
- layer_tree_host()->SetRootLayer(root_); |
- layer_tree_host()->SetViewportSize(bounds); |
- |
- PostSetNeedsCommitToMainThread(); |
- } |
- |
- // TextureLayerClient implementation. |
- virtual unsigned PrepareTexture() OVERRIDE { |
- return OffscreenContextProviderForMainThread() |
- ->Context3d()->createTexture(); |
- } |
- virtual WebKit::WebGraphicsContext3D* Context3d() OVERRIDE { |
- return OffscreenContextProviderForMainThread()->Context3d(); |
- } |
- virtual bool PrepareTextureMailbox(TextureMailbox* mailbox, |
- bool use_shared_memory) OVERRIDE { |
- return false; |
- } |
- |
- virtual void WillActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
- // Slow down activation so the main thread DidCommit() will run if |
- // not blocked. |
- wait_thread_.message_loop()->PostDelayedTask( |
- FROM_HERE, |
- base::Bind(&base::WaitableEvent::Signal, |
- base::Unretained(&wait_event_)), |
- base::TimeDelta::FromMilliseconds(10)); |
- wait_event_.Wait(); |
- } |
- |
- virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
- { |
- base::AutoLock lock(activate_lock_); |
- ++activate_count_; |
- } |
- |
- proxy()->MainThreadTaskRunner()->PostTask( |
- FROM_HERE, |
- base::Bind(&TextureLayerNoMailboxIsActivatedDuringCommit::DidActivate, |
- base::Unretained(this))); |
- } |
- |
- void DidActivate() { |
- base::AutoLock lock(activate_lock_); |
- switch (activate_count_) { |
- case 1: |
- // The first texture has been activated. Invalidate the layer so it |
- // grabs a new texture id from the client. |
- layer_->SetNeedsDisplay(); |
- // So this commit number should complete after the second activate. |
- EXPECT_EQ(1, layer_tree_host()->source_frame_number()); |
- break; |
- case 2: |
- // The second mailbox has been activated. Remove the layer from |
- // the tree to cause another commit/activation. The commit should |
- // finish *after* the layer is removed from the active tree. |
- layer_->RemoveFromParent(); |
- // So this commit number should complete after the third activate. |
- EXPECT_EQ(2, layer_tree_host()->source_frame_number()); |
- } |
- } |
- |
- virtual void DidCommit() OVERRIDE { |
- switch (layer_tree_host()->source_frame_number()) { |
- case 2: { |
- // The activate for the 2nd texture should have happened before now. |
- base::AutoLock lock(activate_lock_); |
- EXPECT_EQ(2, activate_count_); |
- break; |
- } |
- case 3: { |
- // The activate to remove the layer should have happened before now. |
- base::AutoLock lock(activate_lock_); |
- EXPECT_EQ(3, activate_count_); |
- |
- EndTest(); |
- break; |
- } |
- } |
- } |
- |
- |
- virtual void AfterTest() OVERRIDE {} |
- |
- base::Thread wait_thread_; |
- base::WaitableEvent wait_event_; |
- base::Lock activate_lock_; |
- int activate_count_; |
- int activate_commit_; |
- scoped_refptr<Layer> root_; |
- scoped_refptr<TextureLayer> layer_; |
-}; |
- |
-SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
- TextureLayerNoMailboxIsActivatedDuringCommit); |
- |
-class TextureLayerMailboxIsActivatedDuringCommit : public LayerTreeTest { |
- protected: |
- TextureLayerMailboxIsActivatedDuringCommit() |
- : wait_thread_("WAIT"), |
- wait_event_(false, false) { |
- wait_thread_.Start(); |
- } |
- |
- static void ReleaseCallback(unsigned sync_point, bool lost_resource) {} |
- |
- void SetMailbox(char mailbox_char) { |
- TextureMailbox mailbox( |
- std::string(64, mailbox_char), |
- base::Bind( |
- &TextureLayerMailboxIsActivatedDuringCommit::ReleaseCallback)); |
- layer_->SetTextureMailbox(mailbox); |
- } |
- |
- virtual void BeginTest() OVERRIDE { |
- activate_count_ = 0; |
- |
- gfx::Size bounds(100, 100); |
- root_ = Layer::Create(); |
- root_->SetAnchorPoint(gfx::PointF()); |
- root_->SetBounds(bounds); |
- |
- layer_ = TextureLayer::CreateForMailbox(NULL); |
- layer_->SetIsDrawable(true); |
- layer_->SetAnchorPoint(gfx::PointF()); |
- layer_->SetBounds(bounds); |
- |
- root_->AddChild(layer_); |
- layer_tree_host()->SetRootLayer(root_); |
- layer_tree_host()->SetViewportSize(bounds); |
- SetMailbox('1'); |
- |
- PostSetNeedsCommitToMainThread(); |
- } |
- |
- virtual void WillActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
- // Slow down activation so the main thread DidCommit() will run if |
- // not blocked. |
- wait_thread_.message_loop()->PostDelayedTask( |
- FROM_HERE, |
- base::Bind(&base::WaitableEvent::Signal, |
- base::Unretained(&wait_event_)), |
- base::TimeDelta::FromMilliseconds(10)); |
- wait_event_.Wait(); |
- } |
- |
- virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
- { |
- base::AutoLock lock(activate_lock_); |
- ++activate_count_; |
- } |
- |
- proxy()->MainThreadTaskRunner()->PostTask( |
- FROM_HERE, |
- base::Bind(&TextureLayerMailboxIsActivatedDuringCommit::DidActivate, |
- base::Unretained(this))); |
- } |
- |
- void DidActivate() { |
- base::AutoLock lock(activate_lock_); |
- switch (activate_count_) { |
- case 1: |
- // The first mailbox has been activated. Set a new mailbox, and |
- // expect the next commit to finish *after* it is activated. |
- SetMailbox('2'); |
- // So this commit number should complete after the second activate. |
- EXPECT_EQ(1, layer_tree_host()->source_frame_number()); |
- break; |
- case 2: |
- // The second mailbox has been activated. Remove the layer from |
- // the tree to cause another commit/activation. The commit should |
- // finish *after* the layer is removed from the active tree. |
- layer_->RemoveFromParent(); |
- // So this commit number should complete after the third activate. |
- EXPECT_EQ(2, layer_tree_host()->source_frame_number()); |
- } |
- } |
- |
- virtual void DidCommit() OVERRIDE { |
- switch (layer_tree_host()->source_frame_number()) { |
- case 2: { |
- // The activate for the 2nd mailbox should have happened before now. |
- base::AutoLock lock(activate_lock_); |
- EXPECT_EQ(2, activate_count_); |
- break; |
- } |
- case 3: { |
- // The activate to remove the layer should have happened before now. |
- base::AutoLock lock(activate_lock_); |
- EXPECT_EQ(3, activate_count_); |
- |
- EndTest(); |
- break; |
- } |
- } |
- } |
- |
- |
- virtual void AfterTest() OVERRIDE {} |
- |
- base::Thread wait_thread_; |
- base::WaitableEvent wait_event_; |
- base::Lock activate_lock_; |
- int activate_count_; |
- scoped_refptr<Layer> root_; |
- scoped_refptr<TextureLayer> layer_; |
-}; |
- |
-SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
- TextureLayerMailboxIsActivatedDuringCommit); |
- |
class TextureLayerImplWithMailboxTest : public TextureLayerTest { |
protected: |
TextureLayerImplWithMailboxTest() |