Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1685)

Unified Diff: cc/layers/texture_layer_unittest.cc

Issue 485043003: cc: Use correct message loop proxy in BlockingTaskRunner (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nits. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/layers/texture_layer_impl_unittest.cc ('k') | cc/layers/tiled_layer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/texture_layer_unittest.cc
diff --git a/cc/layers/texture_layer_unittest.cc b/cc/layers/texture_layer_unittest.cc
index 08309c760671376f8429076e1a6d6a0fdba3aa7e..feb712654af9a998fa0954ce10e0922e619a2a2b 100644
--- a/cc/layers/texture_layer_unittest.cc
+++ b/cc/layers/texture_layer_unittest.cc
@@ -102,6 +102,16 @@ class MockMailboxCallback {
void(base::SharedMemory* shared_memory,
uint32 sync_point,
bool lost_resource));
+ MOCK_METHOD4(ReleaseImpl,
+ void(const gpu::Mailbox& mailbox,
+ uint32 sync_point,
+ bool lost_resource,
+ BlockingTaskRunner* main_thread_task_runner));
+ MOCK_METHOD4(ReleaseImpl2,
+ void(base::SharedMemory* shared_memory,
+ uint32 sync_point,
+ bool lost_resource,
+ BlockingTaskRunner* main_thread_task_runner));
};
struct CommonMailboxObjects {
@@ -117,6 +127,12 @@ struct CommonMailboxObjects {
release_mailbox2_ = base::Bind(&MockMailboxCallback::Release,
base::Unretained(&mock_callback_),
mailbox_name2_);
+ release_mailbox1_impl_ = base::Bind(&MockMailboxCallback::ReleaseImpl,
+ base::Unretained(&mock_callback_),
+ mailbox_name1_);
+ release_mailbox2_impl_ = base::Bind(&MockMailboxCallback::ReleaseImpl,
+ base::Unretained(&mock_callback_),
+ mailbox_name2_);
const uint32 arbitrary_target1 = GL_TEXTURE_2D;
const uint32 arbitrary_target2 = GL_TEXTURE_EXTERNAL_OES;
mailbox1_ = TextureMailbox(mailbox_name1_, arbitrary_target1, sync_point1_);
@@ -126,6 +142,9 @@ struct CommonMailboxObjects {
release_mailbox3_ = base::Bind(&MockMailboxCallback::Release2,
base::Unretained(&mock_callback_),
shared_memory_.get());
+ release_mailbox3_impl_ = base::Bind(&MockMailboxCallback::ReleaseImpl2,
+ base::Unretained(&mock_callback_),
+ shared_memory_.get());
mailbox3_ = TextureMailbox(shared_memory_.get(), size);
}
@@ -135,6 +154,9 @@ struct CommonMailboxObjects {
ReleaseCallback release_mailbox1_;
ReleaseCallback release_mailbox2_;
ReleaseCallback release_mailbox3_;
+ ReleaseCallbackImpl release_mailbox1_impl_;
+ ReleaseCallbackImpl release_mailbox2_impl_;
+ ReleaseCallbackImpl release_mailbox3_impl_;
TextureMailbox mailbox1_;
TextureMailbox mailbox2_;
TextureMailbox mailbox3_;
@@ -377,6 +399,11 @@ class TextureLayerMailboxHolderTest : public TextureLayerTest {
TextureLayerMailboxHolderTest()
: main_thread_("MAIN") {
main_thread_.Start();
+ main_thread_.message_loop()->PostTask(
+ FROM_HERE,
+ base::Bind(&TextureLayerMailboxHolderTest::InitializeOnMain,
+ base::Unretained(this)));
+ Wait(main_thread_);
}
void Wait(const base::Thread& thread) {
@@ -399,7 +426,7 @@ class TextureLayerMailboxHolderTest : public TextureLayerTest {
main_ref_.reset();
}
- void CreateImplRef(scoped_ptr<SingleReleaseCallback>* impl_ref) {
+ void CreateImplRef(scoped_ptr<SingleReleaseCallbackImpl>* impl_ref) {
*impl_ref = main_ref_->holder()->GetCallbackForImplThread();
}
@@ -407,15 +434,22 @@ class TextureLayerMailboxHolderTest : public TextureLayerTest {
base::WaitableEvent* wait_for_capture,
base::WaitableEvent* stop_capture) {
begin_capture->Wait();
- BlockingTaskRunner::CapturePostTasks capture;
+ BlockingTaskRunner::CapturePostTasks capture(
+ main_thread_task_runner_.get());
wait_for_capture->Signal();
stop_capture->Wait();
}
protected:
+ void InitializeOnMain() {
+ main_thread_task_runner_ =
+ BlockingTaskRunner::Create(main_thread_.message_loop_proxy());
+ }
+
scoped_ptr<TestMailboxHolder::MainThreadReference>
main_ref_;
base::Thread main_thread_;
+ scoped_ptr<BlockingTaskRunner> main_thread_task_runner_;
CommonMailboxObjects test_data_;
};
@@ -432,7 +466,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_BothReleaseThenMain) {
// The texture layer is attached to compositor1, and passes a reference to its
// impl tree.
- scoped_ptr<SingleReleaseCallback> compositor1;
+ scoped_ptr<SingleReleaseCallbackImpl> compositor1;
main_thread_.message_loop()->PostTask(
FROM_HERE,
base::Bind(&TextureLayerMailboxHolderTest::CreateImplRef,
@@ -441,7 +475,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_BothReleaseThenMain) {
// Then the texture layer is removed and attached to compositor2, and passes a
// reference to its impl tree.
- scoped_ptr<SingleReleaseCallback> compositor2;
+ scoped_ptr<SingleReleaseCallbackImpl> compositor2;
main_thread_.message_loop()->PostTask(
FROM_HERE,
base::Bind(&TextureLayerMailboxHolderTest::CreateImplRef,
@@ -453,8 +487,8 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_BothReleaseThenMain) {
// The compositors both destroy their impl trees before the main thread layer
// is destroyed.
- compositor1->Run(100, false);
- compositor2->Run(200, false);
+ compositor1->Run(100, false, main_thread_task_runner_.get());
+ compositor2->Run(200, false, main_thread_task_runner_.get());
Wait(main_thread_);
@@ -487,7 +521,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_MainReleaseBetween) {
// The texture layer is attached to compositor1, and passes a reference to its
// impl tree.
- scoped_ptr<SingleReleaseCallback> compositor1;
+ scoped_ptr<SingleReleaseCallbackImpl> compositor1;
main_thread_.message_loop()->PostTask(
FROM_HERE,
base::Bind(&TextureLayerMailboxHolderTest::CreateImplRef,
@@ -496,7 +530,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_MainReleaseBetween) {
// Then the texture layer is removed and attached to compositor2, and passes a
// reference to its impl tree.
- scoped_ptr<SingleReleaseCallback> compositor2;
+ scoped_ptr<SingleReleaseCallbackImpl> compositor2;
main_thread_.message_loop()->PostTask(
FROM_HERE,
base::Bind(&TextureLayerMailboxHolderTest::CreateImplRef,
@@ -507,7 +541,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_MainReleaseBetween) {
Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
// One compositor destroys their impl tree.
- compositor1->Run(100, false);
+ compositor1->Run(100, false, main_thread_task_runner_.get());
// Then the main thread reference is destroyed.
main_thread_.message_loop()->PostTask(
@@ -525,7 +559,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_MainReleaseBetween) {
EXPECT_CALL(test_data_.mock_callback_,
Release(test_data_.mailbox_name1_, 200, true)).Times(1);
- compositor2->Run(200, true);
+ compositor2->Run(200, true, main_thread_task_runner_.get());
Wait(main_thread_);
Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
}
@@ -543,7 +577,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_MainReleasedFirst) {
// The texture layer is attached to compositor1, and passes a reference to its
// impl tree.
- scoped_ptr<SingleReleaseCallback> compositor1;
+ scoped_ptr<SingleReleaseCallbackImpl> compositor1;
main_thread_.message_loop()->PostTask(
FROM_HERE,
base::Bind(&TextureLayerMailboxHolderTest::CreateImplRef,
@@ -552,7 +586,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_MainReleasedFirst) {
// Then the texture layer is removed and attached to compositor2, and passes a
// reference to its impl tree.
- scoped_ptr<SingleReleaseCallback> compositor2;
+ scoped_ptr<SingleReleaseCallbackImpl> compositor2;
main_thread_.message_loop()->PostTask(
FROM_HERE,
base::Bind(&TextureLayerMailboxHolderTest::CreateImplRef,
@@ -569,7 +603,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_MainReleasedFirst) {
base::Unretained(this)));
// One compositor destroys their impl tree.
- compositor2->Run(200, false);
+ compositor2->Run(200, false, main_thread_task_runner_.get());
Wait(main_thread_);
@@ -581,7 +615,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_MainReleasedFirst) {
EXPECT_CALL(test_data_.mock_callback_,
Release(test_data_.mailbox_name1_, 100, true)).Times(1);
- compositor1->Run(100, true);
+ compositor1->Run(100, true, main_thread_task_runner_.get());
Wait(main_thread_);
Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
}
@@ -599,7 +633,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_SecondImplRefShortcut) {
// The texture layer is attached to compositor1, and passes a reference to its
// impl tree.
- scoped_ptr<SingleReleaseCallback> compositor1;
+ scoped_ptr<SingleReleaseCallbackImpl> compositor1;
main_thread_.message_loop()->PostTask(
FROM_HERE,
base::Bind(&TextureLayerMailboxHolderTest::CreateImplRef,
@@ -608,7 +642,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_SecondImplRefShortcut) {
// Then the texture layer is removed and attached to compositor2, and passes a
// reference to its impl tree.
- scoped_ptr<SingleReleaseCallback> compositor2;
+ scoped_ptr<SingleReleaseCallbackImpl> compositor2;
main_thread_.message_loop()->PostTask(
FROM_HERE,
base::Bind(&TextureLayerMailboxHolderTest::CreateImplRef,
@@ -646,7 +680,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_SecondImplRefShortcut) {
// Before the main thread capturing starts, one compositor destroys their
// impl reference. Since capturing did not start, this gets post-tasked to
// the main thread.
- compositor1->Run(100, false);
+ compositor1->Run(100, false, main_thread_task_runner_.get());
// Start capturing on the main thread.
begin_capture.Signal();
@@ -657,7 +691,7 @@ TEST_F(TextureLayerMailboxHolderTest, TwoCompositors_SecondImplRefShortcut) {
// released before compositor1, whose reference will be released later when
// the post-task is serviced. But since it was destroyed _on the impl thread_
// last, its sync point values should be used.
- compositor2->Run(200, true);
+ compositor2->Run(200, true, main_thread_task_runner_.get());
stop_capture.Signal();
Wait(main_thread_);
@@ -917,13 +951,12 @@ class TextureLayerImplWithMailboxTest : public TextureLayerTest {
// Test conditions for results of TextureLayerImpl::WillDraw under
// different configurations of different mailbox, texture_id, and draw_mode.
TEST_F(TextureLayerImplWithMailboxTest, TestWillDraw) {
- EXPECT_CALL(test_data_.mock_callback_,
- Release(test_data_.mailbox_name1_,
- test_data_.sync_point1_,
- false))
+ EXPECT_CALL(
+ test_data_.mock_callback_,
+ ReleaseImpl(test_data_.mailbox_name1_, test_data_.sync_point1_, false, _))
.Times(AnyNumber());
EXPECT_CALL(test_data_.mock_callback_,
- Release2(test_data_.shared_memory_.get(), 0, false))
+ ReleaseImpl2(test_data_.shared_memory_.get(), 0, false, _))
.Times(AnyNumber());
// Hardware mode.
{
@@ -931,7 +964,7 @@ TEST_F(TextureLayerImplWithMailboxTest, TestWillDraw) {
TextureLayerImpl::Create(host_impl_.active_tree(), 1);
impl_layer->SetTextureMailbox(
test_data_.mailbox1_,
- SingleReleaseCallback::Create(test_data_.release_mailbox1_));
+ SingleReleaseCallbackImpl::Create(test_data_.release_mailbox1_impl_));
EXPECT_TRUE(WillDraw(impl_layer.get(), DRAW_MODE_HARDWARE));
}
@@ -939,7 +972,7 @@ TEST_F(TextureLayerImplWithMailboxTest, TestWillDraw) {
scoped_ptr<TextureLayerImpl> impl_layer =
TextureLayerImpl::Create(host_impl_.active_tree(), 1);
impl_layer->SetTextureMailbox(TextureMailbox(),
- scoped_ptr<SingleReleaseCallback>());
+ scoped_ptr<SingleReleaseCallbackImpl>());
EXPECT_FALSE(WillDraw(impl_layer.get(), DRAW_MODE_HARDWARE));
}
@@ -949,7 +982,7 @@ TEST_F(TextureLayerImplWithMailboxTest, TestWillDraw) {
TextureLayerImpl::Create(host_impl_.active_tree(), 1);
impl_layer->SetTextureMailbox(
test_data_.mailbox3_,
- SingleReleaseCallback::Create(test_data_.release_mailbox3_));
+ SingleReleaseCallbackImpl::Create(test_data_.release_mailbox3_impl_));
EXPECT_TRUE(WillDraw(impl_layer.get(), DRAW_MODE_HARDWARE));
}
@@ -959,7 +992,7 @@ TEST_F(TextureLayerImplWithMailboxTest, TestWillDraw) {
TextureLayerImpl::Create(host_impl_.active_tree(), 1);
impl_layer->SetTextureMailbox(
test_data_.mailbox1_,
- SingleReleaseCallback::Create(test_data_.release_mailbox1_));
+ SingleReleaseCallbackImpl::Create(test_data_.release_mailbox1_impl_));
EXPECT_FALSE(WillDraw(impl_layer.get(), DRAW_MODE_SOFTWARE));
}
@@ -967,7 +1000,7 @@ TEST_F(TextureLayerImplWithMailboxTest, TestWillDraw) {
scoped_ptr<TextureLayerImpl> impl_layer =
TextureLayerImpl::Create(host_impl_.active_tree(), 1);
impl_layer->SetTextureMailbox(TextureMailbox(),
- scoped_ptr<SingleReleaseCallback>());
+ scoped_ptr<SingleReleaseCallbackImpl>());
EXPECT_FALSE(WillDraw(impl_layer.get(), DRAW_MODE_SOFTWARE));
}
@@ -977,7 +1010,7 @@ TEST_F(TextureLayerImplWithMailboxTest, TestWillDraw) {
TextureLayerImpl::Create(host_impl_.active_tree(), 1);
impl_layer->SetTextureMailbox(
test_data_.mailbox3_,
- SingleReleaseCallback::Create(test_data_.release_mailbox3_));
+ SingleReleaseCallbackImpl::Create(test_data_.release_mailbox3_impl_));
EXPECT_TRUE(WillDraw(impl_layer.get(), DRAW_MODE_SOFTWARE));
}
@@ -987,7 +1020,7 @@ TEST_F(TextureLayerImplWithMailboxTest, TestWillDraw) {
TextureLayerImpl::Create(host_impl_.active_tree(), 1);
impl_layer->SetTextureMailbox(
test_data_.mailbox1_,
- SingleReleaseCallback::Create(test_data_.release_mailbox1_));
+ SingleReleaseCallbackImpl::Create(test_data_.release_mailbox1_impl_));
EXPECT_FALSE(WillDraw(impl_layer.get(), DRAW_MODE_RESOURCELESS_SOFTWARE));
}
}
@@ -1004,55 +1037,51 @@ TEST_F(TextureLayerImplWithMailboxTest, TestImplLayerCallbacks) {
pending_layer->SetTextureMailbox(
test_data_.mailbox1_,
- SingleReleaseCallback::Create(test_data_.release_mailbox1_));
+ SingleReleaseCallbackImpl::Create(test_data_.release_mailbox1_impl_));
// Test multiple commits without an activation.
- EXPECT_CALL(test_data_.mock_callback_,
- Release(test_data_.mailbox_name1_,
- test_data_.sync_point1_,
- false))
+ EXPECT_CALL(
+ test_data_.mock_callback_,
+ ReleaseImpl(test_data_.mailbox_name1_, test_data_.sync_point1_, false, _))
.Times(1);
pending_layer->SetTextureMailbox(
test_data_.mailbox2_,
- SingleReleaseCallback::Create(test_data_.release_mailbox2_));
+ SingleReleaseCallbackImpl::Create(test_data_.release_mailbox2_impl_));
Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
// Test callback after activation.
pending_layer->PushPropertiesTo(active_layer.get());
active_layer->DidBecomeActive();
- EXPECT_CALL(test_data_.mock_callback_, Release(_, _, _)).Times(0);
+ EXPECT_CALL(test_data_.mock_callback_, ReleaseImpl(_, _, _, _)).Times(0);
pending_layer->SetTextureMailbox(
test_data_.mailbox1_,
- SingleReleaseCallback::Create(test_data_.release_mailbox1_));
+ SingleReleaseCallbackImpl::Create(test_data_.release_mailbox1_impl_));
Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
EXPECT_CALL(test_data_.mock_callback_,
- Release(test_data_.mailbox_name2_, _, false))
- .Times(1);
+ ReleaseImpl(test_data_.mailbox_name2_, _, false, _)).Times(1);
pending_layer->PushPropertiesTo(active_layer.get());
active_layer->DidBecomeActive();
Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
// Test resetting the mailbox.
EXPECT_CALL(test_data_.mock_callback_,
- Release(test_data_.mailbox_name1_, _, false))
- .Times(1);
+ ReleaseImpl(test_data_.mailbox_name1_, _, false, _)).Times(1);
pending_layer->SetTextureMailbox(TextureMailbox(),
- scoped_ptr<SingleReleaseCallback>());
+ scoped_ptr<SingleReleaseCallbackImpl>());
pending_layer->PushPropertiesTo(active_layer.get());
active_layer->DidBecomeActive();
Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
// Test destructor.
- EXPECT_CALL(test_data_.mock_callback_,
- Release(test_data_.mailbox_name1_,
- test_data_.sync_point1_,
- false))
+ EXPECT_CALL(
+ test_data_.mock_callback_,
+ ReleaseImpl(test_data_.mailbox_name1_, test_data_.sync_point1_, false, _))
.Times(1);
pending_layer->SetTextureMailbox(
test_data_.mailbox1_,
- SingleReleaseCallback::Create(test_data_.release_mailbox1_));
+ SingleReleaseCallbackImpl::Create(test_data_.release_mailbox1_impl_));
}
TEST_F(TextureLayerImplWithMailboxTest,
@@ -1062,25 +1091,23 @@ TEST_F(TextureLayerImplWithMailboxTest,
ASSERT_TRUE(impl_layer);
EXPECT_CALL(test_data_.mock_callback_,
- Release(test_data_.mailbox_name1_, _, false))
- .Times(1);
+ ReleaseImpl(test_data_.mailbox_name1_, _, false, _)).Times(1);
impl_layer->SetTextureMailbox(
test_data_.mailbox1_,
- SingleReleaseCallback::Create(test_data_.release_mailbox1_));
+ SingleReleaseCallbackImpl::Create(test_data_.release_mailbox1_impl_));
impl_layer->DidBecomeActive();
EXPECT_TRUE(impl_layer->WillDraw(
DRAW_MODE_HARDWARE, host_impl_.active_tree()->resource_provider()));
impl_layer->DidDraw(host_impl_.active_tree()->resource_provider());
impl_layer->SetTextureMailbox(TextureMailbox(),
- scoped_ptr<SingleReleaseCallback>());
+ scoped_ptr<SingleReleaseCallbackImpl>());
}
TEST_F(TextureLayerImplWithMailboxTest, TestCallbackOnInUseResource) {
ResourceProvider* provider = host_impl_.active_tree()->resource_provider();
- ResourceProvider::ResourceId id =
- provider->CreateResourceFromTextureMailbox(
- test_data_.mailbox1_,
- SingleReleaseCallback::Create(test_data_.release_mailbox1_));
+ ResourceProvider::ResourceId id = provider->CreateResourceFromTextureMailbox(
+ test_data_.mailbox1_,
+ SingleReleaseCallbackImpl::Create(test_data_.release_mailbox1_impl_));
provider->AllocateForTesting(id);
// Transfer some resources to the parent.
@@ -1089,12 +1116,11 @@ TEST_F(TextureLayerImplWithMailboxTest, TestCallbackOnInUseResource) {
TransferableResourceArray list;
provider->PrepareSendToParent(resource_ids_to_transfer, &list);
EXPECT_TRUE(provider->InUseByConsumer(id));
- EXPECT_CALL(test_data_.mock_callback_, Release(_, _, _)).Times(0);
+ EXPECT_CALL(test_data_.mock_callback_, ReleaseImpl(_, _, _, _)).Times(0);
provider->DeleteResource(id);
Mock::VerifyAndClearExpectations(&test_data_.mock_callback_);
EXPECT_CALL(test_data_.mock_callback_,
- Release(test_data_.mailbox_name1_, _, false))
- .Times(1);
+ ReleaseImpl(test_data_.mailbox_name1_, _, false, _)).Times(1);
ReturnedResourceArray returned;
TransferableResource::ReturnResources(list, &returned);
provider->ReceiveReturnsFromParent(returned);
« no previous file with comments | « cc/layers/texture_layer_impl_unittest.cc ('k') | cc/layers/tiled_layer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698