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

Side by Side Diff: content/common/discardable_shared_memory_heap_unittest.cc

Issue 1544293002: Convert Pass()→std::move() in //content (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 unified diff | Download patch
« no previous file with comments | « content/common/discardable_shared_memory_heap.cc ('k') | content/common/font_list_pango.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/common/discardable_shared_memory_heap.h" 5 #include "content/common/discardable_shared_memory_heap.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility>
8 9
9 #include "base/bind.h" 10 #include "base/bind.h"
10 #include "base/memory/discardable_shared_memory.h" 11 #include "base/memory/discardable_shared_memory.h"
11 #include "base/process/process_metrics.h" 12 #include "base/process/process_metrics.h"
12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
13 14
14 namespace content { 15 namespace content {
15 namespace { 16 namespace {
16 17
17 void NullTask() { 18 void NullTask() {
(...skipping 15 matching lines...) Expand all
33 const size_t kBlocks = 10; 34 const size_t kBlocks = 10;
34 size_t memory_size = block_size * kBlocks; 35 size_t memory_size = block_size * kBlocks;
35 int next_discardable_shared_memory_id = 0; 36 int next_discardable_shared_memory_id = 0;
36 37
37 scoped_ptr<base::DiscardableSharedMemory> memory( 38 scoped_ptr<base::DiscardableSharedMemory> memory(
38 new base::DiscardableSharedMemory); 39 new base::DiscardableSharedMemory);
39 ASSERT_TRUE(memory->CreateAndMap(memory_size)); 40 ASSERT_TRUE(memory->CreateAndMap(memory_size));
40 41
41 // Create new span for memory. 42 // Create new span for memory.
42 scoped_ptr<DiscardableSharedMemoryHeap::Span> new_span( 43 scoped_ptr<DiscardableSharedMemoryHeap::Span> new_span(
43 heap.Grow(memory.Pass(), memory_size, next_discardable_shared_memory_id++, 44 heap.Grow(std::move(memory), memory_size,
44 base::Bind(NullTask))); 45 next_discardable_shared_memory_id++, base::Bind(NullTask)));
45 46
46 // Size should match |memory_size|. 47 // Size should match |memory_size|.
47 EXPECT_EQ(memory_size, heap.GetSize()); 48 EXPECT_EQ(memory_size, heap.GetSize());
48 49
49 // Size of free lists should still be 0. 50 // Size of free lists should still be 0.
50 EXPECT_EQ(0u, heap.GetSizeOfFreeLists()); 51 EXPECT_EQ(0u, heap.GetSizeOfFreeLists());
51 52
52 // Free list should still be empty as |new_span| is currently in use. 53 // Free list should still be empty as |new_span| is currently in use.
53 EXPECT_FALSE(heap.SearchFreeLists(1, 0)); 54 EXPECT_FALSE(heap.SearchFreeLists(1, 0));
54 55
55 // Done using |new_span|. Merge it into the free lists. 56 // Done using |new_span|. Merge it into the free lists.
56 heap.MergeIntoFreeLists(new_span.Pass()); 57 heap.MergeIntoFreeLists(std::move(new_span));
57 58
58 // Size of free lists should now match |memory_size|. 59 // Size of free lists should now match |memory_size|.
59 EXPECT_EQ(memory_size, heap.GetSizeOfFreeLists()); 60 EXPECT_EQ(memory_size, heap.GetSizeOfFreeLists());
60 61
61 // Free lists should not contain a span that is larger than kBlocks. 62 // Free lists should not contain a span that is larger than kBlocks.
62 EXPECT_FALSE(heap.SearchFreeLists(kBlocks + 1, 0)); 63 EXPECT_FALSE(heap.SearchFreeLists(kBlocks + 1, 0));
63 64
64 // Free lists should contain a span that satisfies the request for kBlocks. 65 // Free lists should contain a span that satisfies the request for kBlocks.
65 scoped_ptr<DiscardableSharedMemoryHeap::Span> span = 66 scoped_ptr<DiscardableSharedMemoryHeap::Span> span =
66 heap.SearchFreeLists(kBlocks, 0); 67 heap.SearchFreeLists(kBlocks, 0);
67 ASSERT_TRUE(span); 68 ASSERT_TRUE(span);
68 69
69 // Free lists should be empty again. 70 // Free lists should be empty again.
70 EXPECT_FALSE(heap.SearchFreeLists(1, 0)); 71 EXPECT_FALSE(heap.SearchFreeLists(1, 0));
71 72
72 // Merge it into the free lists again. 73 // Merge it into the free lists again.
73 heap.MergeIntoFreeLists(span.Pass()); 74 heap.MergeIntoFreeLists(std::move(span));
74 } 75 }
75 76
76 TEST(DiscardableSharedMemoryHeapTest, SplitAndMerge) { 77 TEST(DiscardableSharedMemoryHeapTest, SplitAndMerge) {
77 size_t block_size = base::GetPageSize(); 78 size_t block_size = base::GetPageSize();
78 DiscardableSharedMemoryHeap heap(block_size); 79 DiscardableSharedMemoryHeap heap(block_size);
79 80
80 const size_t kBlocks = 6; 81 const size_t kBlocks = 6;
81 size_t memory_size = block_size * kBlocks; 82 size_t memory_size = block_size * kBlocks;
82 int next_discardable_shared_memory_id = 0; 83 int next_discardable_shared_memory_id = 0;
83 84
84 scoped_ptr<base::DiscardableSharedMemory> memory( 85 scoped_ptr<base::DiscardableSharedMemory> memory(
85 new base::DiscardableSharedMemory); 86 new base::DiscardableSharedMemory);
86 ASSERT_TRUE(memory->CreateAndMap(memory_size)); 87 ASSERT_TRUE(memory->CreateAndMap(memory_size));
87 scoped_ptr<DiscardableSharedMemoryHeap::Span> new_span( 88 scoped_ptr<DiscardableSharedMemoryHeap::Span> new_span(
88 heap.Grow(memory.Pass(), memory_size, next_discardable_shared_memory_id++, 89 heap.Grow(std::move(memory), memory_size,
89 base::Bind(NullTask))); 90 next_discardable_shared_memory_id++, base::Bind(NullTask)));
90 91
91 // Split span into two. 92 // Split span into two.
92 scoped_ptr<DiscardableSharedMemoryHeap::Span> leftover = 93 scoped_ptr<DiscardableSharedMemoryHeap::Span> leftover =
93 heap.Split(new_span.get(), 3); 94 heap.Split(new_span.get(), 3);
94 ASSERT_TRUE(leftover); 95 ASSERT_TRUE(leftover);
95 96
96 // Merge |leftover| into free lists. 97 // Merge |leftover| into free lists.
97 heap.MergeIntoFreeLists(leftover.Pass()); 98 heap.MergeIntoFreeLists(std::move(leftover));
98 99
99 // Some of the memory is still in use. 100 // Some of the memory is still in use.
100 EXPECT_FALSE(heap.SearchFreeLists(kBlocks, 0)); 101 EXPECT_FALSE(heap.SearchFreeLists(kBlocks, 0));
101 102
102 // Merge |span| into free lists. 103 // Merge |span| into free lists.
103 heap.MergeIntoFreeLists(new_span.Pass()); 104 heap.MergeIntoFreeLists(std::move(new_span));
104 105
105 // Remove a 2 page span from free lists. 106 // Remove a 2 page span from free lists.
106 scoped_ptr<DiscardableSharedMemoryHeap::Span> span1 = 107 scoped_ptr<DiscardableSharedMemoryHeap::Span> span1 =
107 heap.SearchFreeLists(2, kBlocks); 108 heap.SearchFreeLists(2, kBlocks);
108 ASSERT_TRUE(span1); 109 ASSERT_TRUE(span1);
109 110
110 // Remove another 2 page span from free lists. 111 // Remove another 2 page span from free lists.
111 scoped_ptr<DiscardableSharedMemoryHeap::Span> span2 = 112 scoped_ptr<DiscardableSharedMemoryHeap::Span> span2 =
112 heap.SearchFreeLists(2, kBlocks); 113 heap.SearchFreeLists(2, kBlocks);
113 ASSERT_TRUE(span2); 114 ASSERT_TRUE(span2);
114 115
115 // Merge |span1| back into free lists. 116 // Merge |span1| back into free lists.
116 heap.MergeIntoFreeLists(span1.Pass()); 117 heap.MergeIntoFreeLists(std::move(span1));
117 118
118 // Some of the memory is still in use. 119 // Some of the memory is still in use.
119 EXPECT_FALSE(heap.SearchFreeLists(kBlocks, 0)); 120 EXPECT_FALSE(heap.SearchFreeLists(kBlocks, 0));
120 121
121 // Merge |span2| back into free lists. 122 // Merge |span2| back into free lists.
122 heap.MergeIntoFreeLists(span2.Pass()); 123 heap.MergeIntoFreeLists(std::move(span2));
123 124
124 // All memory has been returned to the free lists. 125 // All memory has been returned to the free lists.
125 scoped_ptr<DiscardableSharedMemoryHeap::Span> large_span = 126 scoped_ptr<DiscardableSharedMemoryHeap::Span> large_span =
126 heap.SearchFreeLists(kBlocks, 0); 127 heap.SearchFreeLists(kBlocks, 0);
127 ASSERT_TRUE(large_span); 128 ASSERT_TRUE(large_span);
128 129
129 // Merge it into the free lists again. 130 // Merge it into the free lists again.
130 heap.MergeIntoFreeLists(large_span.Pass()); 131 heap.MergeIntoFreeLists(std::move(large_span));
131 } 132 }
132 133
133 TEST(DiscardableSharedMemoryHeapTest, MergeSingleBlockSpan) { 134 TEST(DiscardableSharedMemoryHeapTest, MergeSingleBlockSpan) {
134 size_t block_size = base::GetPageSize(); 135 size_t block_size = base::GetPageSize();
135 DiscardableSharedMemoryHeap heap(block_size); 136 DiscardableSharedMemoryHeap heap(block_size);
136 137
137 const size_t kBlocks = 6; 138 const size_t kBlocks = 6;
138 size_t memory_size = block_size * kBlocks; 139 size_t memory_size = block_size * kBlocks;
139 int next_discardable_shared_memory_id = 0; 140 int next_discardable_shared_memory_id = 0;
140 141
141 scoped_ptr<base::DiscardableSharedMemory> memory( 142 scoped_ptr<base::DiscardableSharedMemory> memory(
142 new base::DiscardableSharedMemory); 143 new base::DiscardableSharedMemory);
143 ASSERT_TRUE(memory->CreateAndMap(memory_size)); 144 ASSERT_TRUE(memory->CreateAndMap(memory_size));
144 scoped_ptr<DiscardableSharedMemoryHeap::Span> new_span( 145 scoped_ptr<DiscardableSharedMemoryHeap::Span> new_span(
145 heap.Grow(memory.Pass(), memory_size, next_discardable_shared_memory_id++, 146 heap.Grow(std::move(memory), memory_size,
146 base::Bind(NullTask))); 147 next_discardable_shared_memory_id++, base::Bind(NullTask)));
147 148
148 // Split span into two. 149 // Split span into two.
149 scoped_ptr<DiscardableSharedMemoryHeap::Span> leftover = 150 scoped_ptr<DiscardableSharedMemoryHeap::Span> leftover =
150 heap.Split(new_span.get(), 5); 151 heap.Split(new_span.get(), 5);
151 ASSERT_TRUE(leftover); 152 ASSERT_TRUE(leftover);
152 153
153 // Merge |new_span| into free lists. 154 // Merge |new_span| into free lists.
154 heap.MergeIntoFreeLists(new_span.Pass()); 155 heap.MergeIntoFreeLists(std::move(new_span));
155 156
156 // Merge |leftover| into free lists. 157 // Merge |leftover| into free lists.
157 heap.MergeIntoFreeLists(leftover.Pass()); 158 heap.MergeIntoFreeLists(std::move(leftover));
158 } 159 }
159 160
160 TEST(DiscardableSharedMemoryHeapTest, Grow) { 161 TEST(DiscardableSharedMemoryHeapTest, Grow) {
161 size_t block_size = base::GetPageSize(); 162 size_t block_size = base::GetPageSize();
162 DiscardableSharedMemoryHeap heap(block_size); 163 DiscardableSharedMemoryHeap heap(block_size);
163 int next_discardable_shared_memory_id = 0; 164 int next_discardable_shared_memory_id = 0;
164 165
165 scoped_ptr<base::DiscardableSharedMemory> memory1( 166 scoped_ptr<base::DiscardableSharedMemory> memory1(
166 new base::DiscardableSharedMemory); 167 new base::DiscardableSharedMemory);
167 ASSERT_TRUE(memory1->CreateAndMap(block_size)); 168 ASSERT_TRUE(memory1->CreateAndMap(block_size));
168 heap.MergeIntoFreeLists(heap.Grow(memory1.Pass(), block_size, 169 heap.MergeIntoFreeLists(heap.Grow(std::move(memory1), block_size,
169 next_discardable_shared_memory_id++, 170 next_discardable_shared_memory_id++,
170 base::Bind(NullTask)).Pass()); 171 base::Bind(NullTask)));
171 172
172 // Remove a span from free lists. 173 // Remove a span from free lists.
173 scoped_ptr<DiscardableSharedMemoryHeap::Span> span1 = 174 scoped_ptr<DiscardableSharedMemoryHeap::Span> span1 =
174 heap.SearchFreeLists(1, 0); 175 heap.SearchFreeLists(1, 0);
175 EXPECT_TRUE(span1); 176 EXPECT_TRUE(span1);
176 177
177 // No more memory available. 178 // No more memory available.
178 EXPECT_FALSE(heap.SearchFreeLists(1, 0)); 179 EXPECT_FALSE(heap.SearchFreeLists(1, 0));
179 180
180 // Grow free lists using new memory. 181 // Grow free lists using new memory.
181 scoped_ptr<base::DiscardableSharedMemory> memory2( 182 scoped_ptr<base::DiscardableSharedMemory> memory2(
182 new base::DiscardableSharedMemory); 183 new base::DiscardableSharedMemory);
183 ASSERT_TRUE(memory2->CreateAndMap(block_size)); 184 ASSERT_TRUE(memory2->CreateAndMap(block_size));
184 heap.MergeIntoFreeLists(heap.Grow(memory2.Pass(), block_size, 185 heap.MergeIntoFreeLists(heap.Grow(std::move(memory2), block_size,
185 next_discardable_shared_memory_id++, 186 next_discardable_shared_memory_id++,
186 base::Bind(NullTask)).Pass()); 187 base::Bind(NullTask)));
187 188
188 // Memory should now be available. 189 // Memory should now be available.
189 scoped_ptr<DiscardableSharedMemoryHeap::Span> span2 = 190 scoped_ptr<DiscardableSharedMemoryHeap::Span> span2 =
190 heap.SearchFreeLists(1, 0); 191 heap.SearchFreeLists(1, 0);
191 EXPECT_TRUE(span2); 192 EXPECT_TRUE(span2);
192 193
193 // Merge spans into the free lists again. 194 // Merge spans into the free lists again.
194 heap.MergeIntoFreeLists(span1.Pass()); 195 heap.MergeIntoFreeLists(std::move(span1));
195 heap.MergeIntoFreeLists(span2.Pass()); 196 heap.MergeIntoFreeLists(std::move(span2));
196 } 197 }
197 198
198 TEST(DiscardableSharedMemoryHeapTest, ReleaseFreeMemory) { 199 TEST(DiscardableSharedMemoryHeapTest, ReleaseFreeMemory) {
199 size_t block_size = base::GetPageSize(); 200 size_t block_size = base::GetPageSize();
200 DiscardableSharedMemoryHeap heap(block_size); 201 DiscardableSharedMemoryHeap heap(block_size);
201 int next_discardable_shared_memory_id = 0; 202 int next_discardable_shared_memory_id = 0;
202 203
203 scoped_ptr<base::DiscardableSharedMemory> memory( 204 scoped_ptr<base::DiscardableSharedMemory> memory(
204 new base::DiscardableSharedMemory); 205 new base::DiscardableSharedMemory);
205 ASSERT_TRUE(memory->CreateAndMap(block_size)); 206 ASSERT_TRUE(memory->CreateAndMap(block_size));
206 scoped_ptr<DiscardableSharedMemoryHeap::Span> span = 207 scoped_ptr<DiscardableSharedMemoryHeap::Span> span =
207 heap.Grow(memory.Pass(), block_size, next_discardable_shared_memory_id++, 208 heap.Grow(std::move(memory), block_size,
208 base::Bind(NullTask)); 209 next_discardable_shared_memory_id++, base::Bind(NullTask));
209 210
210 // Free lists should be empty. 211 // Free lists should be empty.
211 EXPECT_EQ(0u, heap.GetSizeOfFreeLists()); 212 EXPECT_EQ(0u, heap.GetSizeOfFreeLists());
212 213
213 heap.ReleaseFreeMemory(); 214 heap.ReleaseFreeMemory();
214 215
215 // Size should still match |block_size|. 216 // Size should still match |block_size|.
216 EXPECT_EQ(block_size, heap.GetSize()); 217 EXPECT_EQ(block_size, heap.GetSize());
217 218
218 heap.MergeIntoFreeLists(span.Pass()); 219 heap.MergeIntoFreeLists(std::move(span));
219 heap.ReleaseFreeMemory(); 220 heap.ReleaseFreeMemory();
220 221
221 // Memory should have been released. 222 // Memory should have been released.
222 EXPECT_EQ(0u, heap.GetSize()); 223 EXPECT_EQ(0u, heap.GetSize());
223 EXPECT_EQ(0u, heap.GetSizeOfFreeLists()); 224 EXPECT_EQ(0u, heap.GetSizeOfFreeLists());
224 } 225 }
225 226
226 TEST(DiscardableSharedMemoryHeapTest, ReleasePurgedMemory) { 227 TEST(DiscardableSharedMemoryHeapTest, ReleasePurgedMemory) {
227 size_t block_size = base::GetPageSize(); 228 size_t block_size = base::GetPageSize();
228 DiscardableSharedMemoryHeap heap(block_size); 229 DiscardableSharedMemoryHeap heap(block_size);
229 int next_discardable_shared_memory_id = 0; 230 int next_discardable_shared_memory_id = 0;
230 231
231 scoped_ptr<base::DiscardableSharedMemory> memory( 232 scoped_ptr<base::DiscardableSharedMemory> memory(
232 new base::DiscardableSharedMemory); 233 new base::DiscardableSharedMemory);
233 ASSERT_TRUE(memory->CreateAndMap(block_size)); 234 ASSERT_TRUE(memory->CreateAndMap(block_size));
234 scoped_ptr<DiscardableSharedMemoryHeap::Span> span = 235 scoped_ptr<DiscardableSharedMemoryHeap::Span> span =
235 heap.Grow(memory.Pass(), block_size, next_discardable_shared_memory_id++, 236 heap.Grow(std::move(memory), block_size,
236 base::Bind(NullTask)); 237 next_discardable_shared_memory_id++, base::Bind(NullTask));
237 238
238 // Unlock memory so it can be purged. 239 // Unlock memory so it can be purged.
239 span->shared_memory()->Unlock(0, 0); 240 span->shared_memory()->Unlock(0, 0);
240 241
241 // Purge and release shared memory. 242 // Purge and release shared memory.
242 bool rv = span->shared_memory()->Purge(base::Time::Now()); 243 bool rv = span->shared_memory()->Purge(base::Time::Now());
243 EXPECT_TRUE(rv); 244 EXPECT_TRUE(rv);
244 heap.ReleasePurgedMemory(); 245 heap.ReleasePurgedMemory();
245 246
246 // Shared memory backing for |span| should be gone. 247 // Shared memory backing for |span| should be gone.
247 EXPECT_FALSE(span->shared_memory()); 248 EXPECT_FALSE(span->shared_memory());
248 249
249 // Size should be 0. 250 // Size should be 0.
250 EXPECT_EQ(0u, heap.GetSize()); 251 EXPECT_EQ(0u, heap.GetSize());
251 } 252 }
252 253
253 TEST(DiscardableSharedMemoryHeapTest, Slack) { 254 TEST(DiscardableSharedMemoryHeapTest, Slack) {
254 size_t block_size = base::GetPageSize(); 255 size_t block_size = base::GetPageSize();
255 DiscardableSharedMemoryHeap heap(block_size); 256 DiscardableSharedMemoryHeap heap(block_size);
256 257
257 const size_t kBlocks = 6; 258 const size_t kBlocks = 6;
258 size_t memory_size = block_size * kBlocks; 259 size_t memory_size = block_size * kBlocks;
259 int next_discardable_shared_memory_id = 0; 260 int next_discardable_shared_memory_id = 0;
260 261
261 scoped_ptr<base::DiscardableSharedMemory> memory( 262 scoped_ptr<base::DiscardableSharedMemory> memory(
262 new base::DiscardableSharedMemory); 263 new base::DiscardableSharedMemory);
263 ASSERT_TRUE(memory->CreateAndMap(memory_size)); 264 ASSERT_TRUE(memory->CreateAndMap(memory_size));
264 heap.MergeIntoFreeLists(heap.Grow(memory.Pass(), memory_size, 265 heap.MergeIntoFreeLists(heap.Grow(std::move(memory), memory_size,
265 next_discardable_shared_memory_id++, 266 next_discardable_shared_memory_id++,
266 base::Bind(NullTask)).Pass()); 267 base::Bind(NullTask)));
267 268
268 // No free span that is less or equal to 3 + 1. 269 // No free span that is less or equal to 3 + 1.
269 EXPECT_FALSE(heap.SearchFreeLists(3, 1)); 270 EXPECT_FALSE(heap.SearchFreeLists(3, 1));
270 271
271 // No free span that is less or equal to 3 + 2. 272 // No free span that is less or equal to 3 + 2.
272 EXPECT_FALSE(heap.SearchFreeLists(3, 2)); 273 EXPECT_FALSE(heap.SearchFreeLists(3, 2));
273 274
274 // No free span that is less or equal to 1 + 4. 275 // No free span that is less or equal to 1 + 4.
275 EXPECT_FALSE(heap.SearchFreeLists(1, 4)); 276 EXPECT_FALSE(heap.SearchFreeLists(1, 4));
276 277
277 scoped_ptr<DiscardableSharedMemoryHeap::Span> span = 278 scoped_ptr<DiscardableSharedMemoryHeap::Span> span =
278 heap.SearchFreeLists(1, 5); 279 heap.SearchFreeLists(1, 5);
279 EXPECT_TRUE(span); 280 EXPECT_TRUE(span);
280 281
281 heap.MergeIntoFreeLists(span.Pass()); 282 heap.MergeIntoFreeLists(std::move(span));
282 } 283 }
283 284
284 void OnDeleted(bool* deleted) { 285 void OnDeleted(bool* deleted) {
285 *deleted = true; 286 *deleted = true;
286 } 287 }
287 288
288 TEST(DiscardableSharedMemoryHeapTest, DeletedCallback) { 289 TEST(DiscardableSharedMemoryHeapTest, DeletedCallback) {
289 size_t block_size = base::GetPageSize(); 290 size_t block_size = base::GetPageSize();
290 DiscardableSharedMemoryHeap heap(block_size); 291 DiscardableSharedMemoryHeap heap(block_size);
291 int next_discardable_shared_memory_id = 0; 292 int next_discardable_shared_memory_id = 0;
292 293
293 scoped_ptr<base::DiscardableSharedMemory> memory( 294 scoped_ptr<base::DiscardableSharedMemory> memory(
294 new base::DiscardableSharedMemory); 295 new base::DiscardableSharedMemory);
295 ASSERT_TRUE(memory->CreateAndMap(block_size)); 296 ASSERT_TRUE(memory->CreateAndMap(block_size));
296 bool deleted = false; 297 bool deleted = false;
297 scoped_ptr<DiscardableSharedMemoryHeap::Span> span = 298 scoped_ptr<DiscardableSharedMemoryHeap::Span> span = heap.Grow(
298 heap.Grow(memory.Pass(), block_size, next_discardable_shared_memory_id++, 299 std::move(memory), block_size, next_discardable_shared_memory_id++,
299 base::Bind(OnDeleted, base::Unretained(&deleted))); 300 base::Bind(OnDeleted, base::Unretained(&deleted)));
300 301
301 heap.MergeIntoFreeLists(span.Pass()); 302 heap.MergeIntoFreeLists(std::move(span));
302 heap.ReleaseFreeMemory(); 303 heap.ReleaseFreeMemory();
303 304
304 EXPECT_TRUE(deleted); 305 EXPECT_TRUE(deleted);
305 } 306 }
306 307
307 TEST(DiscardableSharedMemoryHeapTest, CreateMemoryAllocatorDumpTest) { 308 TEST(DiscardableSharedMemoryHeapTest, CreateMemoryAllocatorDumpTest) {
308 size_t block_size = base::GetPageSize(); 309 size_t block_size = base::GetPageSize();
309 DiscardableSharedMemoryHeap heap(block_size); 310 DiscardableSharedMemoryHeap heap(block_size);
310 int next_discardable_shared_memory_id = 0; 311 int next_discardable_shared_memory_id = 0;
311 312
312 scoped_ptr<base::DiscardableSharedMemory> memory( 313 scoped_ptr<base::DiscardableSharedMemory> memory(
313 new base::DiscardableSharedMemory); 314 new base::DiscardableSharedMemory);
314 ASSERT_TRUE(memory->CreateAndMap(block_size)); 315 ASSERT_TRUE(memory->CreateAndMap(block_size));
315 scoped_ptr<DiscardableSharedMemoryHeap::Span> span = 316 scoped_ptr<DiscardableSharedMemoryHeap::Span> span =
316 heap.Grow(memory.Pass(), block_size, next_discardable_shared_memory_id++, 317 heap.Grow(std::move(memory), block_size,
317 base::Bind(NullTask)); 318 next_discardable_shared_memory_id++, base::Bind(NullTask));
318 319
319 // Check if allocator dump is created when span exists. 320 // Check if allocator dump is created when span exists.
320 scoped_ptr<base::trace_event::ProcessMemoryDump> pmd( 321 scoped_ptr<base::trace_event::ProcessMemoryDump> pmd(
321 new base::trace_event::ProcessMemoryDump(nullptr)); 322 new base::trace_event::ProcessMemoryDump(nullptr));
322 EXPECT_TRUE(heap.CreateMemoryAllocatorDump(span.get(), "discardable/test1", 323 EXPECT_TRUE(heap.CreateMemoryAllocatorDump(span.get(), "discardable/test1",
323 pmd.get())); 324 pmd.get()));
324 325
325 // Unlock, Purge and release shared memory. 326 // Unlock, Purge and release shared memory.
326 span->shared_memory()->Unlock(0, 0); 327 span->shared_memory()->Unlock(0, 0);
327 bool rv = span->shared_memory()->Purge(base::Time::Now()); 328 bool rv = span->shared_memory()->Purge(base::Time::Now());
328 EXPECT_TRUE(rv); 329 EXPECT_TRUE(rv);
329 heap.ReleasePurgedMemory(); 330 heap.ReleasePurgedMemory();
330 331
331 // Check that allocator dump is created after memory is purged. 332 // Check that allocator dump is created after memory is purged.
332 EXPECT_TRUE(heap.CreateMemoryAllocatorDump(span.get(), "discardable/test2", 333 EXPECT_TRUE(heap.CreateMemoryAllocatorDump(span.get(), "discardable/test2",
333 pmd.get())); 334 pmd.get()));
334 } 335 }
335 336
336 } // namespace 337 } // namespace
337 } // namespace content 338 } // namespace content
OLDNEW
« no previous file with comments | « content/common/discardable_shared_memory_heap.cc ('k') | content/common/font_list_pango.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698