Index: cc/resources/resource_provider_unittest.cc |
diff --git a/cc/resources/resource_provider_unittest.cc b/cc/resources/resource_provider_unittest.cc |
index 4bf9ec0565ec4bcfb59c97adab3d3f87749aaa00..7ee4aa04d0e47876fe676be23f3954365f97e4fe 100644 |
--- a/cc/resources/resource_provider_unittest.cc |
+++ b/cc/resources/resource_provider_unittest.cc |
@@ -877,6 +877,61 @@ TEST_P(ResourceProviderTest, ReadLockCountStopsReturnToChildOrDelete) { |
resource_provider_->DestroyChild(child_id); |
} |
+void MailboxReleased(unsigned sync_point, bool lost_resource) { |
danakj
2014/08/06 14:13:43
There's EmptyReleaseCallback at the top of this fi
|
+} |
+ |
+TEST_P(ResourceProviderTest, AllowOverlayTransfersToParent) { |
+ if (GetParam() != ResourceProvider::GLTexture) |
danakj
2014/08/06 14:13:43
Add a comment explaining why please
|
+ return; |
+ |
+ unsigned sync_point = 0; |
danakj
2014/08/06 14:13:43
nit: can you uint32 for this? someone previously w
|
+ TextureMailbox mailbox = |
+ TextureMailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); |
danakj
2014/08/06 14:13:43
nit: drop the "= TextureMailbox"
|
+ mailbox.set_allow_overlay(true); |
+ scoped_ptr<SingleReleaseCallback> release_callback = |
+ SingleReleaseCallback::Create(base::Bind(&MailboxReleased)); |
+ ResourceProvider::ResourceId id1 = |
+ child_resource_provider_->CreateResourceFromTextureMailbox( |
+ mailbox, release_callback.Pass()); |
+ |
+ TextureMailbox mailbox2 = |
+ TextureMailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); |
+ mailbox2.set_allow_overlay(false); |
+ scoped_ptr<SingleReleaseCallback> release_callback2 = |
+ SingleReleaseCallback::Create(base::Bind(&MailboxReleased)); |
+ ResourceProvider::ResourceId id2 = |
+ child_resource_provider_->CreateResourceFromTextureMailbox( |
+ mailbox2, release_callback2.Pass()); |
+ |
+ ReturnedResourceArray returned_to_child; |
+ int child_id = |
+ resource_provider_->CreateChild(GetReturnCallback(&returned_to_child)); |
+ |
+ // Transfer some resources to the parent. |
+ ResourceProvider::ResourceIdArray resource_ids_to_transfer; |
+ resource_ids_to_transfer.push_back(id1); |
+ resource_ids_to_transfer.push_back(id2); |
+ TransferableResourceArray list; |
+ child_resource_provider_->PrepareSendToParent(resource_ids_to_transfer, |
+ &list); |
+ ASSERT_EQ(2u, list.size()); |
+ resource_provider_->ReceiveFromChild(child_id, list); |
+ EXPECT_TRUE(resource_provider_->AllowOverlay(list[0].id)); |
+ EXPECT_FALSE(resource_provider_->AllowOverlay(list[1].id)); |
+ |
+ resource_provider_->DeclareUsedResourcesFromChild( |
+ child_id, ResourceProvider::ResourceIdArray()); |
+ |
+ EXPECT_EQ(2u, returned_to_child.size()); |
+ child_resource_provider_->ReceiveReturnsFromParent(returned_to_child); |
+ |
+ child_resource_provider_->DeleteResource(id1); |
+ child_resource_provider_->DeleteResource(id2); |
+ EXPECT_EQ(0u, child_resource_provider_->num_resources()); |
+ |
+ resource_provider_->DestroyChild(child_id); |
+} |
+ |
TEST_P(ResourceProviderTest, TransferSoftwareResources) { |
if (GetParam() != ResourceProvider::Bitmap) |
return; |