| Index: content/common/discardable_shared_memory_heap_unittest.cc
|
| diff --git a/content/common/discardable_shared_memory_heap_unittest.cc b/content/common/discardable_shared_memory_heap_unittest.cc
|
| index a13604f025ba16147d441a2650be37f50e830e01..20b38bf2a7ef25cd53ea088e4e1d01ef027ede9f 100644
|
| --- a/content/common/discardable_shared_memory_heap_unittest.cc
|
| +++ b/content/common/discardable_shared_memory_heap_unittest.cc
|
| @@ -11,12 +11,16 @@
|
| namespace content {
|
| namespace {
|
|
|
| -class DiscardableSharedMemoryHeapTest : public testing::Test {};
|
| -
|
| -TEST_F(DiscardableSharedMemoryHeapTest, Basic) {
|
| +TEST(DiscardableSharedMemoryHeapTest, Basic) {
|
| size_t block_size = base::GetPageSize();
|
| DiscardableSharedMemoryHeap heap(block_size);
|
|
|
| + // Initial size should be 0.
|
| + EXPECT_EQ(0u, heap.GetSize());
|
| +
|
| + // Initial free list size should be 0.
|
| + EXPECT_EQ(0u, heap.GetFreeListSize());
|
| +
|
| // Free list is initially empty.
|
| EXPECT_FALSE(heap.SearchFreeList(1));
|
|
|
| @@ -29,7 +33,13 @@ TEST_F(DiscardableSharedMemoryHeapTest, Basic) {
|
|
|
| // Create new span for memory.
|
| scoped_ptr<DiscardableSharedMemoryHeap::Span> new_span(
|
| - heap.Grow(memory.Pass(), memory_size));
|
| + heap.Grow(memory.Pass()));
|
| +
|
| + // Size should match |memory_size|.
|
| + EXPECT_EQ(memory_size, heap.GetSize());
|
| +
|
| + // Free list size should still be 0.
|
| + EXPECT_EQ(0u, heap.GetFreeListSize());
|
|
|
| // Free list should still be empty as |new_span| is currently in use.
|
| EXPECT_FALSE(heap.SearchFreeList(1));
|
| @@ -37,6 +47,9 @@ TEST_F(DiscardableSharedMemoryHeapTest, Basic) {
|
| // Done using |new_span|. Merge it into the free list.
|
| heap.MergeIntoFreeList(new_span.Pass());
|
|
|
| + // Free list size should now match |memory_size|.
|
| + EXPECT_EQ(memory_size, heap.GetFreeListSize());
|
| +
|
| // Free list should not contain a span that is larger than kBlocks.
|
| EXPECT_FALSE(heap.SearchFreeList(kBlocks + 1));
|
|
|
| @@ -52,7 +65,7 @@ TEST_F(DiscardableSharedMemoryHeapTest, Basic) {
|
| heap.MergeIntoFreeList(span.Pass());
|
| }
|
|
|
| -TEST_F(DiscardableSharedMemoryHeapTest, SplitAndMerge) {
|
| +TEST(DiscardableSharedMemoryHeapTest, SplitAndMerge) {
|
| size_t block_size = base::GetPageSize();
|
| DiscardableSharedMemoryHeap heap(block_size);
|
|
|
| @@ -63,7 +76,7 @@ TEST_F(DiscardableSharedMemoryHeapTest, SplitAndMerge) {
|
| new base::DiscardableSharedMemory);
|
| ASSERT_TRUE(memory->CreateAndMap(memory_size));
|
| scoped_ptr<DiscardableSharedMemoryHeap::Span> new_span(
|
| - heap.Grow(memory.Pass(), memory_size));
|
| + heap.Grow(memory.Pass()));
|
|
|
| // Split span into two.
|
| scoped_ptr<DiscardableSharedMemoryHeap::Span> leftover =
|
| @@ -105,7 +118,7 @@ TEST_F(DiscardableSharedMemoryHeapTest, SplitAndMerge) {
|
| heap.MergeIntoFreeList(large_span.Pass());
|
| }
|
|
|
| -TEST_F(DiscardableSharedMemoryHeapTest, MergeSingleBlockSpan) {
|
| +TEST(DiscardableSharedMemoryHeapTest, MergeSingleBlockSpan) {
|
| size_t block_size = base::GetPageSize();
|
| DiscardableSharedMemoryHeap heap(block_size);
|
|
|
| @@ -116,7 +129,7 @@ TEST_F(DiscardableSharedMemoryHeapTest, MergeSingleBlockSpan) {
|
| new base::DiscardableSharedMemory);
|
| ASSERT_TRUE(memory->CreateAndMap(memory_size));
|
| scoped_ptr<DiscardableSharedMemoryHeap::Span> new_span(
|
| - heap.Grow(memory.Pass(), memory_size));
|
| + heap.Grow(memory.Pass()));
|
|
|
| // Split span into two.
|
| scoped_ptr<DiscardableSharedMemoryHeap::Span> leftover =
|
| @@ -130,14 +143,14 @@ TEST_F(DiscardableSharedMemoryHeapTest, MergeSingleBlockSpan) {
|
| heap.MergeIntoFreeList(leftover.Pass());
|
| }
|
|
|
| -TEST_F(DiscardableSharedMemoryHeapTest, Grow) {
|
| +TEST(DiscardableSharedMemoryHeapTest, Grow) {
|
| size_t block_size = base::GetPageSize();
|
| DiscardableSharedMemoryHeap heap(block_size);
|
|
|
| scoped_ptr<base::DiscardableSharedMemory> memory1(
|
| new base::DiscardableSharedMemory);
|
| ASSERT_TRUE(memory1->CreateAndMap(block_size));
|
| - heap.MergeIntoFreeList(heap.Grow(memory1.Pass(), block_size).Pass());
|
| + heap.MergeIntoFreeList(heap.Grow(memory1.Pass()).Pass());
|
|
|
| // Remove a span from free list.
|
| scoped_ptr<DiscardableSharedMemoryHeap::Span> span1 = heap.SearchFreeList(1);
|
| @@ -150,7 +163,7 @@ TEST_F(DiscardableSharedMemoryHeapTest, Grow) {
|
| scoped_ptr<base::DiscardableSharedMemory> memory2(
|
| new base::DiscardableSharedMemory);
|
| ASSERT_TRUE(memory2->CreateAndMap(block_size));
|
| - heap.MergeIntoFreeList(heap.Grow(memory2.Pass(), block_size).Pass());
|
| + heap.MergeIntoFreeList(heap.Grow(memory2.Pass()).Pass());
|
|
|
| // Memory should now be available.
|
| scoped_ptr<DiscardableSharedMemoryHeap::Span> span2 = heap.SearchFreeList(1);
|
| @@ -161,15 +174,39 @@ TEST_F(DiscardableSharedMemoryHeapTest, Grow) {
|
| heap.MergeIntoFreeList(span2.Pass());
|
| }
|
|
|
| -TEST_F(DiscardableSharedMemoryHeapTest, ReleaseFreeMemory) {
|
| +TEST(DiscardableSharedMemoryHeapTest, ReleaseFreeMemory) {
|
| size_t block_size = base::GetPageSize();
|
| DiscardableSharedMemoryHeap heap(block_size);
|
|
|
| scoped_ptr<base::DiscardableSharedMemory> memory(
|
| new base::DiscardableSharedMemory);
|
| ASSERT_TRUE(memory->CreateAndMap(block_size));
|
| - scoped_ptr<DiscardableSharedMemoryHeap::Span> span =
|
| - heap.Grow(memory.Pass(), block_size);
|
| + scoped_ptr<DiscardableSharedMemoryHeap::Span> span = heap.Grow(memory.Pass());
|
| +
|
| + // Free list should be empty.
|
| + EXPECT_EQ(0u, heap.GetFreeListSize());
|
| +
|
| + heap.ReleaseFreeMemory();
|
| +
|
| + // Size should still match |block_size|.
|
| + EXPECT_EQ(block_size, heap.GetSize());
|
| +
|
| + heap.MergeIntoFreeList(span.Pass());
|
| + heap.ReleaseFreeMemory();
|
| +
|
| + // Memory should have been released.
|
| + EXPECT_EQ(0u, heap.GetSize());
|
| + EXPECT_EQ(0u, heap.GetFreeListSize());
|
| +}
|
| +
|
| +TEST(DiscardableSharedMemoryHeapTest, ReleasePurgedMemory) {
|
| + size_t block_size = base::GetPageSize();
|
| + DiscardableSharedMemoryHeap heap(block_size);
|
| +
|
| + scoped_ptr<base::DiscardableSharedMemory> memory(
|
| + new base::DiscardableSharedMemory);
|
| + ASSERT_TRUE(memory->CreateAndMap(block_size));
|
| + scoped_ptr<DiscardableSharedMemoryHeap::Span> span = heap.Grow(memory.Pass());
|
|
|
| // Unlock memory so it can be purged.
|
| span->shared_memory()->Unlock(0, 0);
|
| @@ -177,10 +214,13 @@ TEST_F(DiscardableSharedMemoryHeapTest, ReleaseFreeMemory) {
|
| // Purge and release shared memory.
|
| bool rv = span->shared_memory()->Purge(base::Time::Now());
|
| EXPECT_TRUE(rv);
|
| - heap.ReleaseFreeMemory();
|
| + heap.ReleasePurgedMemory();
|
|
|
| // Shared memory backing for |span| should be gone.
|
| EXPECT_FALSE(span->shared_memory());
|
| +
|
| + // Size should be 0.
|
| + EXPECT_EQ(0u, heap.GetSize());
|
| }
|
|
|
| } // namespace
|
|
|