Chromium Code Reviews| Index: cc/resources/resource_pool_unittest.cc |
| diff --git a/cc/resources/resource_pool_unittest.cc b/cc/resources/resource_pool_unittest.cc |
| index d9025c621b11f94bf2e30afa11096a9160c9d34a..5a114e9bc753837adc554675140d28bec172d438 100644 |
| --- a/cc/resources/resource_pool_unittest.cc |
| +++ b/cc/resources/resource_pool_unittest.cc |
| @@ -49,7 +49,7 @@ TEST_F(ResourcePoolTest, AcquireRelease) { |
| EXPECT_EQ(format, resource->format()); |
| EXPECT_TRUE(resource_provider_->CanLockForWrite(resource->id())); |
| - resource_pool_->ReleaseResource(resource, 0u); |
| + resource_pool_->ReleaseResource(resource); |
| } |
| TEST_F(ResourcePoolTest, AccountingSingleResource) { |
| @@ -70,7 +70,7 @@ TEST_F(ResourcePoolTest, AccountingSingleResource) { |
| EXPECT_EQ(1u, resource_pool_->resource_count()); |
| EXPECT_EQ(0u, resource_pool_->GetBusyResourceCountForTesting()); |
| - resource_pool_->ReleaseResource(resource, 0u); |
| + resource_pool_->ReleaseResource(resource); |
| EXPECT_EQ(resource_bytes, resource_pool_->GetTotalMemoryUsageForTesting()); |
| EXPECT_EQ(1u, resource_pool_->GetTotalResourceCountForTesting()); |
| EXPECT_EQ(1u, resource_pool_->GetBusyResourceCountForTesting()); |
| @@ -101,21 +101,21 @@ TEST_F(ResourcePoolTest, SimpleResourceReuse) { |
| ResourceFormat format = RGBA_8888; |
| Resource* resource = resource_pool_->AcquireResource(size, format); |
| - resource_pool_->ReleaseResource(resource, 0u); |
| + resource_pool_->ReleaseResource(resource); |
| resource_pool_->CheckBusyResources(); |
| EXPECT_EQ(1u, resource_provider_->num_resources()); |
| // Same size/format should re-use resource. |
| resource = resource_pool_->AcquireResource(size, format); |
| EXPECT_EQ(1u, resource_provider_->num_resources()); |
| - resource_pool_->ReleaseResource(resource, 0u); |
| + resource_pool_->ReleaseResource(resource); |
| resource_pool_->CheckBusyResources(); |
| EXPECT_EQ(1u, resource_provider_->num_resources()); |
| // Different size/format should alloate new resource. |
| resource = resource_pool_->AcquireResource(gfx::Size(50, 50), LUMINANCE_8); |
| EXPECT_EQ(2u, resource_provider_->num_resources()); |
| - resource_pool_->ReleaseResource(resource, 0u); |
| + resource_pool_->ReleaseResource(resource); |
| resource_pool_->CheckBusyResources(); |
| EXPECT_EQ(2u, resource_provider_->num_resources()); |
| } |
| @@ -133,7 +133,7 @@ TEST_F(ResourcePoolTest, LostResource) { |
| EXPECT_EQ(1u, resource_provider_->num_resources()); |
| resource_provider_->LoseResourceForTesting(resource->id()); |
| - resource_pool_->ReleaseResource(resource, 0u); |
| + resource_pool_->ReleaseResource(resource); |
| resource_pool_->CheckBusyResources(); |
| EXPECT_EQ(0u, resource_provider_->num_resources()); |
| } |
| @@ -157,7 +157,7 @@ TEST_F(ResourcePoolTest, BusyResourcesEventuallyFreed) { |
| EXPECT_EQ(40000u, resource_pool_->GetTotalMemoryUsageForTesting()); |
| EXPECT_EQ(1u, resource_pool_->resource_count()); |
| - resource_pool_->ReleaseResource(resource, 0u); |
| + resource_pool_->ReleaseResource(resource); |
| EXPECT_EQ(1u, resource_provider_->num_resources()); |
| EXPECT_EQ(40000u, resource_pool_->GetTotalMemoryUsageForTesting()); |
| EXPECT_EQ(0u, resource_pool_->memory_usage_bytes()); |
| @@ -195,7 +195,7 @@ TEST_F(ResourcePoolTest, UnusedResourcesEventuallyFreed) { |
| EXPECT_EQ(1u, resource_pool_->GetTotalResourceCountForTesting()); |
| EXPECT_EQ(1u, resource_pool_->resource_count()); |
| - resource_pool_->ReleaseResource(resource, 0u); |
| + resource_pool_->ReleaseResource(resource); |
| EXPECT_EQ(1u, resource_provider_->num_resources()); |
| EXPECT_EQ(40000u, resource_pool_->GetTotalMemoryUsageForTesting()); |
| EXPECT_EQ(1u, resource_pool_->GetTotalResourceCountForTesting()); |
| @@ -220,5 +220,68 @@ TEST_F(ResourcePoolTest, UnusedResourcesEventuallyFreed) { |
| EXPECT_EQ(0u, resource_pool_->GetTotalMemoryUsageForTesting()); |
| } |
| +TEST_F(ResourcePoolTest, UpdateContentId) { |
| + gfx::Size size(100, 100); |
| + ResourceFormat format = RGBA_8888; |
| + uint64_t content_id = 42; |
| + uint64_t new_content_id = 43; |
| + gfx::Rect new_invalidated_rect(20, 20, 10, 10); |
| + |
| + Resource* resource = resource_pool_->AcquireResource(size, format); |
| + resource_pool_->OnContentReplaced(resource->id(), content_id); |
| + resource_pool_->ReleaseResource(resource); |
| + resource_pool_->CheckBusyResources(); |
| + |
| + // Ensure that we can retrieve the resource based on |content_id|. |
| + gfx::Rect invalidated_rect; |
| + Resource* re_acquired_resource = |
|
enne (OOO)
2016/07/11 21:16:24
reacquired is one word, you don't need an undersco
ericrk
2016/07/12 17:31:56
Done.
|
| + resource_pool_->TryAcquireResourceForPartialRaster( |
| + new_content_id, new_invalidated_rect, content_id, &invalidated_rect); |
| + EXPECT_EQ(resource, re_acquired_resource); |
| + EXPECT_EQ(new_invalidated_rect, invalidated_rect); |
| +} |
| + |
| +TEST_F(ResourcePoolTest, UpdateContentIdAndInvalidatedRect) { |
| + gfx::Size size(100, 100); |
| + ResourceFormat format = RGBA_8888; |
| + uint64_t content_ids[] = {42, 43, 44}; |
| + gfx::Rect invalidated_rect(20, 20, 10, 10); |
| + gfx::Rect second_invalidated_rect(25, 25, 10, 10); |
| + gfx::Rect expected_total_invalidated_rect(20, 20, 15, 15); |
| + |
| + // Acquire a new resource with the first content id. |
| + Resource* resource = resource_pool_->AcquireResource(size, format); |
| + resource_pool_->OnContentReplaced(resource->id(), content_ids[0]); |
| + |
| + // Attempt to acquire this resource. It is in use, so its ID and invalidated |
| + // rect should be updated, but a new resource will be returned. |
| + gfx::Rect new_invalidated_rect; |
| + Resource* re_acquired_resource = |
| + resource_pool_->TryAcquireResourceForPartialRaster( |
| + content_ids[1], invalidated_rect, content_ids[0], |
| + &new_invalidated_rect); |
| + EXPECT_EQ(nullptr, re_acquired_resource); |
| + EXPECT_EQ(gfx::Rect(), new_invalidated_rect); |
| + |
| + // Release the original resource, returning it to the unused pool. |
| + resource_pool_->ReleaseResource(resource); |
| + resource_pool_->CheckBusyResources(); |
| + |
| + // Ensure that we cannot retrieve a resource based on the original content id. |
| + re_acquired_resource = resource_pool_->TryAcquireResourceForPartialRaster( |
| + content_ids[1], invalidated_rect, content_ids[0], &new_invalidated_rect); |
| + EXPECT_EQ(nullptr, re_acquired_resource); |
| + EXPECT_EQ(gfx::Rect(), new_invalidated_rect); |
| + |
| + // Ensure that we can retrieve the resource based on the second (updated) |
| + // content ID and that it has the expected invalidated rect. |
| + gfx::Rect total_invalidated_rect; |
| + re_acquired_resource = resource_pool_->TryAcquireResourceForPartialRaster( |
| + content_ids[2], second_invalidated_rect, content_ids[1], |
| + &total_invalidated_rect); |
| + EXPECT_EQ(resource, re_acquired_resource); |
| + EXPECT_EQ(expected_total_invalidated_rect, total_invalidated_rect); |
| +} |
| + |
| } // namespace |
| } // namespace cc |