Index: cc/resources/resource_provider_unittest.cc |
diff --git a/cc/resources/resource_provider_unittest.cc b/cc/resources/resource_provider_unittest.cc |
index a1246f473a7614d0bfad72fa51f8e1fe0ac2a559..801efe8290a1598c24e54f8762a3c28110647572 100644 |
--- a/cc/resources/resource_provider_unittest.cc |
+++ b/cc/resources/resource_provider_unittest.cc |
@@ -267,6 +267,13 @@ class ResourceProviderContext : public TestWebGraphicsContext3D { |
return texture->filter; |
} |
+ gfx::Size GetCurrentTextureSize() { |
+ DCHECK(current_texture_); |
+ Texture* texture = textures_.get(current_texture_); |
+ DCHECK(texture); |
+ return texture->size; |
+ } |
+ |
int texture_count() { return textures_.size(); } |
protected: |
@@ -1143,6 +1150,55 @@ TEST_P(ResourceProviderTest, AbortForcedAsyncUpload) { |
Mock::VerifyAndClearExpectations(context); |
} |
+void CheckResourceSize( |
+ ResourceProvider* resource_provider, |
+ ResourceProviderContext* context, |
+ ResourceProvider::ResourceId id, |
+ gfx::Size size) { |
+ switch (resource_provider->GetResourceType(id)) { |
+ case ResourceProvider::GLTexture: { |
+ // Enforce texture allocation. |
+ ResourceProvider::ScopedWriteLockGL lock(resource_provider, id); |
+ EXPECT_EQ(context->GetCurrentTextureSize(), size); |
+ break; |
+ } |
+ case ResourceProvider::Bitmap: { |
+ ResourceProvider::ScopedReadLockSoftware lock(resource_provider, id); |
+ EXPECT_EQ(lock.sk_bitmap()->width(), size.width()); |
+ EXPECT_EQ(lock.sk_bitmap()->height(), size.height()); |
+ |
+ // Ensure bitmap pixels were allocated during resize. |
+ lock.sk_bitmap()->lockPixels(); |
+ EXPECT_TRUE(lock.sk_bitmap()->getPixels()); |
+ lock.sk_bitmap()->unlockPixels(); |
+ break; |
+ } |
+ default: |
piman
2013/03/22 20:52:34
nit: no need for default clause.
|
+ NOTREACHED(); |
+ break; |
+ } |
+} |
+ |
+TEST_P(ResourceProviderTest, ResizeResource) { |
+ gfx::Size size(1, 2); |
+ ResourceProvider::ResourceId id = resource_provider_->CreateResource( |
+ size, |
+ GL_RGBA, |
+ ResourceProvider::TextureUsageAny); |
+ ExpectNumResources(1); |
+ |
+ CheckResourceSize(resource_provider_.get(), context(), id, size); |
+ |
+ gfx::Size new_size(3, 4); |
+ resource_provider_->ResizeResource(id, new_size); |
+ ExpectNumResources(1); |
+ |
+ CheckResourceSize(resource_provider_.get(), context(), id, new_size); |
+ |
+ resource_provider_->DeleteResource(id); |
+ ExpectNumResources(0); |
+} |
+ |
INSTANTIATE_TEST_CASE_P( |
ResourceProviderTests, |
ResourceProviderTest, |