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

Unified Diff: cc/resources/resource_provider_unittest.cc

Issue 15001027: [Aura] Added Support for rendering software compositor frames as cc::TextureLayers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Passed(&foo) instead for Passed(foo.Pass()). Created 7 years, 6 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/resources/resource_provider.cc ('k') | cc/resources/texture_mailbox.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/resource_provider_unittest.cc
diff --git a/cc/resources/resource_provider_unittest.cc b/cc/resources/resource_provider_unittest.cc
index c7cba3ba1faf59ca848bd4654c36e0e1f92ed740..0ca3d021799b1d82f05c354fc9d54d2aa7c6ee52 100644
--- a/cc/resources/resource_provider_unittest.cc
+++ b/cc/resources/resource_provider_unittest.cc
@@ -874,6 +874,41 @@ TEST_P(ResourceProviderTest, Shutdown) {
EXPECT_FALSE(lost_resource);
}
+static scoped_ptr<base::SharedMemory> CreateAndFillSharedMemory(
+ gfx::Size size, uint32_t value) {
+ scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory);
+ CHECK(shared_memory->CreateAndMapAnonymous(4 * size.GetArea()));
+ uint32_t* pixels = reinterpret_cast<uint32_t*>(shared_memory->memory());
+ CHECK(pixels);
+ std::fill_n(pixels, size.GetArea(), value);
+ return shared_memory.Pass();
+}
+
+static void ReleaseSharedMemoryCallback(
+ bool* release_called,
+ unsigned sync_point, bool lost_resource) {
+ *release_called = true;
+}
+
+TEST_P(ResourceProviderTest, ShutdownSharedMemory) {
+ if (GetParam() != ResourceProvider::Bitmap)
+ return;
+
+ gfx::Size size(64, 64);
+ scoped_ptr<base::SharedMemory> shared_memory(
+ CreateAndFillSharedMemory(size, 0));
+
+ bool release_called = false;
+ TextureMailbox::ReleaseCallback callback =
+ base::Bind(ReleaseSharedMemoryCallback, &release_called);
+ resource_provider_->CreateResourceFromTextureMailbox(
+ TextureMailbox(shared_memory.get(), size, callback));
+
+ resource_provider_.reset();
+
+ EXPECT_TRUE(release_called);
+}
+
TEST_P(ResourceProviderTest, ShutdownWithExportedResource) {
// TextureMailbox callbacks only exist for GL textures for now.
if (GetParam() != ResourceProvider::GLTexture)
@@ -1072,6 +1107,37 @@ TEST_P(ResourceProviderTest, ManagedResource) {
static void EmptyReleaseCallback(unsigned sync_point, bool lost_resource) {}
+TEST_P(ResourceProviderTest, TextureMailbox_SharedMemory) {
+ if (GetParam() != ResourceProvider::Bitmap)
+ return;
+
+ gfx::Size size(64, 64);
+ const uint32_t kBadBeef = 0xbadbeef;
+ scoped_ptr<base::SharedMemory> shared_memory(
+ CreateAndFillSharedMemory(size, kBadBeef));
+
+ scoped_ptr<OutputSurface> output_surface(
+ FakeOutputSurface::CreateSoftware(make_scoped_ptr(
+ new SoftwareOutputDevice)));
+ scoped_ptr<ResourceProvider> resource_provider(
+ ResourceProvider::Create(output_surface.get(), 0));
+
+ TextureMailbox::ReleaseCallback callback = base::Bind(&EmptyReleaseCallback);
+ TextureMailbox mailbox(shared_memory.get(), size, callback);
+
+ ResourceProvider::ResourceId id =
+ resource_provider->CreateResourceFromTextureMailbox(mailbox);
+ EXPECT_NE(0u, id);
+
+ {
+ ResourceProvider::ScopedReadLockSoftware lock(resource_provider.get(), id);
+ const SkBitmap* sk_bitmap = lock.sk_bitmap();
+ EXPECT_EQ(sk_bitmap->width(), size.width());
+ EXPECT_EQ(sk_bitmap->height(), size.height());
+ EXPECT_EQ(*sk_bitmap->getAddr32(16, 16), kBadBeef);
+ }
+}
+
TEST_P(ResourceProviderTest, TextureMailbox_GLTexture2D) {
// Mailboxing is only supported for GL textures.
if (GetParam() != ResourceProvider::GLTexture)
« no previous file with comments | « cc/resources/resource_provider.cc ('k') | cc/resources/texture_mailbox.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698