Index: cc/test/test_shared_bitmap_manager.cc |
diff --git a/cc/test/test_shared_bitmap_manager.cc b/cc/test/test_shared_bitmap_manager.cc |
index d7716ddcba855508456197509ebac421c855dfa1..933dcd25db4d8d3ce68b201c249863b7d5e93d8f 100644 |
--- a/cc/test/test_shared_bitmap_manager.cc |
+++ b/cc/test/test_shared_bitmap_manager.cc |
@@ -4,15 +4,41 @@ |
#include "cc/test/test_shared_bitmap_manager.h" |
-#include "base/bind.h" |
+#include "base/memory/shared_memory.h" |
namespace cc { |
-void FreeSharedBitmap(SharedBitmap* shared_bitmap) { |
- delete shared_bitmap->memory(); |
-} |
+namespace { |
+class OwnedSharedBitmap : public SharedBitmap { |
+ public: |
+ OwnedSharedBitmap(scoped_ptr<base::SharedMemory> shared_memory, |
+ const SharedBitmapId& id) |
+ : SharedBitmap(static_cast<uint8*>(shared_memory->memory()), id), |
+ shared_memory_(shared_memory.Pass()) {} |
+ |
+ ~OwnedSharedBitmap() override {} |
+ |
+ base::SharedMemory* memory() override { return shared_memory_.get(); } |
+ |
+ private: |
+ scoped_ptr<base::SharedMemory> shared_memory_; |
+}; |
+ |
+class UnownedSharedBitmap : public SharedBitmap { |
+ public: |
+ UnownedSharedBitmap(base::SharedMemory* shared_memory, |
+ const SharedBitmapId& id) |
+ : SharedBitmap(static_cast<uint8*>(shared_memory->memory()), id), |
+ shared_memory_(shared_memory) {} |
+ |
+ ~UnownedSharedBitmap() override {} |
+ |
+ base::SharedMemory* memory() override { return shared_memory_; } |
-void IgnoreSharedBitmap(SharedBitmap* shared_bitmap) {} |
+ private: |
+ base::SharedMemory* shared_memory_; |
+}; |
+} // namespace |
TestSharedBitmapManager::TestSharedBitmapManager() {} |
@@ -25,8 +51,7 @@ scoped_ptr<SharedBitmap> TestSharedBitmapManager::AllocateSharedBitmap( |
memory->CreateAndMapAnonymous(size.GetArea() * 4); |
SharedBitmapId id = SharedBitmap::GenerateId(); |
bitmap_map_[id] = memory.get(); |
- return make_scoped_ptr( |
- new SharedBitmap(memory.release(), id, base::Bind(&FreeSharedBitmap))); |
+ return make_scoped_ptr(new OwnedSharedBitmap(memory.Pass(), id)); |
} |
scoped_ptr<SharedBitmap> TestSharedBitmapManager::GetSharedBitmapFromId( |
@@ -35,8 +60,7 @@ scoped_ptr<SharedBitmap> TestSharedBitmapManager::GetSharedBitmapFromId( |
base::AutoLock lock(lock_); |
if (bitmap_map_.find(id) == bitmap_map_.end()) |
return nullptr; |
- return make_scoped_ptr( |
- new SharedBitmap(bitmap_map_[id], id, base::Bind(&IgnoreSharedBitmap))); |
+ return make_scoped_ptr(new UnownedSharedBitmap(bitmap_map_[id], id)); |
} |
scoped_ptr<SharedBitmap> TestSharedBitmapManager::GetBitmapForSharedMemory( |
@@ -44,8 +68,7 @@ scoped_ptr<SharedBitmap> TestSharedBitmapManager::GetBitmapForSharedMemory( |
base::AutoLock lock(lock_); |
SharedBitmapId id = SharedBitmap::GenerateId(); |
bitmap_map_[id] = memory; |
- return make_scoped_ptr( |
- new SharedBitmap(memory, id, base::Bind(&IgnoreSharedBitmap))); |
+ return make_scoped_ptr(new UnownedSharedBitmap(memory, id)); |
} |
} // namespace cc |