Index: gpu/command_buffer/service/transfer_buffer_manager_unittest.cc |
diff --git a/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc b/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc |
index 3f965e54b3c7d0aae96f499815d895c2d94d7dbe..c7dc04a837e24cd75bde1d3882db3a5b519cbc0b 100644 |
--- a/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc |
+++ b/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc |
@@ -17,17 +17,11 @@ const static size_t kBufferSize = 1024; |
class TransferBufferManagerTest : public testing::Test { |
protected: |
virtual void SetUp() { |
- for (size_t i = 0; i < arraysize(buffers_); ++i) { |
- buffers_[i].CreateAnonymous(kBufferSize); |
- buffers_[i].Map(kBufferSize); |
- } |
- |
TransferBufferManager* manager = new TransferBufferManager(); |
transfer_buffer_manager_.reset(manager); |
ASSERT_TRUE(manager->Initialize()); |
} |
- base::SharedMemory buffers_[3]; |
scoped_ptr<TransferBufferManagerInterface> transfer_buffer_manager_; |
}; |
@@ -44,30 +38,23 @@ TEST_F(TransferBufferManagerTest, OutOfRangeHandleMapsToNull) { |
} |
TEST_F(TransferBufferManagerTest, CanRegisterTransferBuffer) { |
- EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(1, |
- &buffers_[0], |
- kBufferSize)); |
+ scoped_ptr<base::SharedMemory> shm(new base::SharedMemory()); |
+ shm->CreateAndMapAnonymous(kBufferSize); |
+ base::SharedMemory* shm_raw_pointer = shm.get(); |
+ EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer( |
+ 1, shm.Pass(), kBufferSize)); |
scoped_refptr<Buffer> registered = |
transfer_buffer_manager_->GetTransferBuffer(1); |
- // Distinct memory range and shared memory handle from that originally |
- // registered. |
- scoped_refptr<Buffer> null_buffer; |
- EXPECT_NE(null_buffer, registered); |
- EXPECT_NE(buffers_[0].memory(), registered->memory()); |
- EXPECT_EQ(kBufferSize, registered->size()); |
- EXPECT_NE(&buffers_[0], registered->shared_memory()); |
- |
- // But maps to the same physical memory. |
- *static_cast<int*>(registered->memory()) = 7; |
- *static_cast<int*>(buffers_[0].memory()) = 8; |
- EXPECT_EQ(8, *static_cast<int*>(registered->memory())); |
+ // Shared-memory ownership is transfered. It should be the same memory. |
+ EXPECT_EQ(shm_raw_pointer, registered->shared_memory()); |
} |
TEST_F(TransferBufferManagerTest, CanDestroyTransferBuffer) { |
- EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(1, |
- &buffers_[0], |
- kBufferSize)); |
+ scoped_ptr<base::SharedMemory> shm(new base::SharedMemory()); |
+ shm->CreateAndMapAnonymous(kBufferSize); |
+ EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer( |
+ 1, shm.Pass(), kBufferSize)); |
transfer_buffer_manager_->DestroyTransferBuffer(1); |
scoped_refptr<Buffer> registered = |
transfer_buffer_manager_->GetTransferBuffer(1); |
@@ -77,25 +64,31 @@ TEST_F(TransferBufferManagerTest, CanDestroyTransferBuffer) { |
} |
TEST_F(TransferBufferManagerTest, CannotRegregisterTransferBufferId) { |
- EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(1, |
- &buffers_[0], |
- kBufferSize)); |
- EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(1, |
- &buffers_[0], |
- kBufferSize)); |
- EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(1, |
- &buffers_[1], |
- kBufferSize)); |
+ scoped_ptr<base::SharedMemory> shm1(new base::SharedMemory()); |
+ scoped_ptr<base::SharedMemory> shm2(new base::SharedMemory()); |
+ scoped_ptr<base::SharedMemory> shm3(new base::SharedMemory()); |
+ shm1->CreateAndMapAnonymous(kBufferSize); |
+ shm2->CreateAndMapAnonymous(kBufferSize); |
+ shm3->CreateAndMapAnonymous(kBufferSize); |
+ |
+ EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer( |
+ 1, shm1.Pass(), kBufferSize)); |
+ EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer( |
+ 1, shm2.Pass(), kBufferSize)); |
+ EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer( |
+ 1, shm3.Pass(), kBufferSize)); |
} |
TEST_F(TransferBufferManagerTest, CanReuseTransferBufferIdAfterDestroying) { |
- EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(1, |
- &buffers_[0], |
- kBufferSize)); |
+ scoped_ptr<base::SharedMemory> shm1(new base::SharedMemory()); |
+ scoped_ptr<base::SharedMemory> shm2(new base::SharedMemory()); |
+ shm1->CreateAndMapAnonymous(kBufferSize); |
+ shm2->CreateAndMapAnonymous(kBufferSize); |
+ EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer( |
+ 1, shm1.Pass(), kBufferSize)); |
transfer_buffer_manager_->DestroyTransferBuffer(1); |
- EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(1, |
- &buffers_[1], |
- kBufferSize)); |
+ EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer( |
+ 1, shm2.Pass(), kBufferSize)); |
} |
TEST_F(TransferBufferManagerTest, DestroyUnusedTransferBufferIdDoesNotCrash) { |
@@ -103,15 +96,17 @@ TEST_F(TransferBufferManagerTest, DestroyUnusedTransferBufferIdDoesNotCrash) { |
} |
TEST_F(TransferBufferManagerTest, CannotRegisterNullTransferBuffer) { |
- EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(0, |
- &buffers_[0], |
- kBufferSize)); |
+ scoped_ptr<base::SharedMemory> shm(new base::SharedMemory()); |
+ shm->CreateAndMapAnonymous(kBufferSize); |
+ EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer( |
+ 0, shm.Pass(), kBufferSize)); |
} |
TEST_F(TransferBufferManagerTest, CannotRegisterNegativeTransferBufferId) { |
- EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(-1, |
- &buffers_[0], |
- kBufferSize)); |
+ scoped_ptr<base::SharedMemory> shm(new base::SharedMemory()); |
+ shm->CreateAndMapAnonymous(kBufferSize); |
+ EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer( |
+ -1, shm.Pass(), kBufferSize)); |
} |
} // namespace gpu |