| 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..af14a604c5d43af3a09126707caf491bf80a176a 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,70 @@ 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* reacquired_resource =
|
| + resource_pool_->TryAcquireResourceForPartialRaster(
|
| + new_content_id, new_invalidated_rect, content_id, &invalidated_rect);
|
| + EXPECT_EQ(resource, reacquired_resource);
|
| + EXPECT_EQ(new_invalidated_rect, invalidated_rect);
|
| + resource_pool_->ReleaseResource(reacquired_resource);
|
| +}
|
| +
|
| +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* reacquired_resource =
|
| + resource_pool_->TryAcquireResourceForPartialRaster(
|
| + content_ids[1], invalidated_rect, content_ids[0],
|
| + &new_invalidated_rect);
|
| + EXPECT_EQ(nullptr, reacquired_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.
|
| + reacquired_resource = resource_pool_->TryAcquireResourceForPartialRaster(
|
| + content_ids[1], invalidated_rect, content_ids[0], &new_invalidated_rect);
|
| + EXPECT_EQ(nullptr, reacquired_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;
|
| + reacquired_resource = resource_pool_->TryAcquireResourceForPartialRaster(
|
| + content_ids[2], second_invalidated_rect, content_ids[1],
|
| + &total_invalidated_rect);
|
| + EXPECT_EQ(resource, reacquired_resource);
|
| + EXPECT_EQ(expected_total_invalidated_rect, total_invalidated_rect);
|
| + resource_pool_->ReleaseResource(reacquired_resource);
|
| +}
|
| +
|
| } // namespace
|
| } // namespace cc
|
|
|