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

Side by Side Diff: base/memory/shared_memory_mac_unittest.cc

Issue 1479473002: base: Use std::move() instead of Pass() for real movable types. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: basepass: missing-include Created 5 years 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 | « base/memory/shared_memory_mac.cc ('k') | base/memory/shared_memory_posix.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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <mach/mach.h> 5 #include <mach/mach.h>
6 #include <mach/mach_vm.h> 6 #include <mach/mach_vm.h>
7 #include <servers/bootstrap.h> 7 #include <servers/bootstrap.h>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/mac/mac_util.h" 10 #include "base/mac/mac_util.h"
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 224
225 // Tests that content written to shared memory in the server process can be read 225 // Tests that content written to shared memory in the server process can be read
226 // by the child process. 226 // by the child process.
227 TEST_F(SharedMemoryMacMultiProcessTest, MachBasedSharedMemory) { 227 TEST_F(SharedMemoryMacMultiProcessTest, MachBasedSharedMemory) {
228 // Mach-based SharedMemory isn't support on OSX 10.6. 228 // Mach-based SharedMemory isn't support on OSX 10.6.
229 if (mac::IsOSSnowLeopard()) 229 if (mac::IsOSSnowLeopard())
230 return; 230 return;
231 231
232 SetUpChild("MachBasedSharedMemoryClient"); 232 SetUpChild("MachBasedSharedMemoryClient");
233 233
234 scoped_ptr<SharedMemory> shared_memory( 234 scoped_ptr<SharedMemory> shared_memory(CreateSharedMemory(s_memory_size));
235 CreateSharedMemory(s_memory_size).Pass());
236 235
237 // Send the underlying memory object to the client process. 236 // Send the underlying memory object to the client process.
238 SendMachPort(client_port_.get(), shared_memory->handle().GetMemoryObject(), 237 SendMachPort(client_port_.get(), shared_memory->handle().GetMemoryObject(),
239 MACH_MSG_TYPE_COPY_SEND); 238 MACH_MSG_TYPE_COPY_SEND);
240 int rv = -1; 239 int rv = -1;
241 ASSERT_TRUE(child_process_.WaitForExitWithTimeout( 240 ASSERT_TRUE(child_process_.WaitForExitWithTimeout(
242 TestTimeouts::action_timeout(), &rv)); 241 TestTimeouts::action_timeout(), &rv));
243 EXPECT_EQ(0, rv); 242 EXPECT_EQ(0, rv);
244 } 243 }
245 244
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 shared_memory.reset(); 375 shared_memory.reset();
377 EXPECT_EQ(active_name_count, GetActiveNameCount()); 376 EXPECT_EQ(active_name_count, GetActiveNameCount());
378 } 377 }
379 378
380 // Tests that the read-only flag works. 379 // Tests that the read-only flag works.
381 TEST_F(SharedMemoryMacMultiProcessTest, MachReadOnly) { 380 TEST_F(SharedMemoryMacMultiProcessTest, MachReadOnly) {
382 // Mach-based SharedMemory isn't support on OSX 10.6. 381 // Mach-based SharedMemory isn't support on OSX 10.6.
383 if (mac::IsOSSnowLeopard()) 382 if (mac::IsOSSnowLeopard())
384 return; 383 return;
385 384
386 scoped_ptr<SharedMemory> shared_memory( 385 scoped_ptr<SharedMemory> shared_memory(CreateSharedMemory(s_memory_size));
387 CreateSharedMemory(s_memory_size).Pass());
388 386
389 SharedMemoryHandle shm2 = shared_memory->handle().Duplicate(); 387 SharedMemoryHandle shm2 = shared_memory->handle().Duplicate();
390 ASSERT_TRUE(shm2.IsValid()); 388 ASSERT_TRUE(shm2.IsValid());
391 SharedMemory shared_memory2(shm2, true); 389 SharedMemory shared_memory2(shm2, true);
392 shared_memory2.Map(s_memory_size); 390 shared_memory2.Map(s_memory_size);
393 ASSERT_DEATH(memset(shared_memory2.memory(), 'b', s_memory_size), ""); 391 ASSERT_DEATH(memset(shared_memory2.memory(), 'b', s_memory_size), "");
394 } 392 }
395 393
396 // Tests that the method ShareToProcess() works. 394 // Tests that the method ShareToProcess() works.
397 TEST_F(SharedMemoryMacMultiProcessTest, MachShareToProcess) { 395 TEST_F(SharedMemoryMacMultiProcessTest, MachShareToProcess) {
398 // Mach-based SharedMemory isn't support on OSX 10.6. 396 // Mach-based SharedMemory isn't support on OSX 10.6.
399 if (mac::IsOSSnowLeopard()) 397 if (mac::IsOSSnowLeopard())
400 return; 398 return;
401 399
402 mach_msg_type_number_t active_name_count = GetActiveNameCount(); 400 mach_msg_type_number_t active_name_count = GetActiveNameCount();
403 401
404 { 402 {
405 scoped_ptr<SharedMemory> shared_memory( 403 scoped_ptr<SharedMemory> shared_memory(CreateSharedMemory(s_memory_size));
406 CreateSharedMemory(s_memory_size).Pass());
407 404
408 SharedMemoryHandle shm2; 405 SharedMemoryHandle shm2;
409 ASSERT_TRUE(shared_memory->ShareToProcess(GetCurrentProcId(), &shm2)); 406 ASSERT_TRUE(shared_memory->ShareToProcess(GetCurrentProcId(), &shm2));
410 ASSERT_TRUE(shm2.IsValid()); 407 ASSERT_TRUE(shm2.IsValid());
411 SharedMemory shared_memory2(shm2, true); 408 SharedMemory shared_memory2(shm2, true);
412 shared_memory2.Map(s_memory_size); 409 shared_memory2.Map(s_memory_size);
413 410
414 ASSERT_EQ(0, memcmp(shared_memory->memory(), shared_memory2.memory(), 411 ASSERT_EQ(0, memcmp(shared_memory->memory(), shared_memory2.memory(),
415 s_memory_size)); 412 s_memory_size));
416 } 413 }
417 414
418 EXPECT_EQ(active_name_count, GetActiveNameCount()); 415 EXPECT_EQ(active_name_count, GetActiveNameCount());
419 } 416 }
420 417
421 // Tests that the method ShareReadOnlyToProcess() creates a memory object that 418 // Tests that the method ShareReadOnlyToProcess() creates a memory object that
422 // is read only. 419 // is read only.
423 TEST_F(SharedMemoryMacMultiProcessTest, MachShareToProcessReadonly) { 420 TEST_F(SharedMemoryMacMultiProcessTest, MachShareToProcessReadonly) {
424 // Mach-based SharedMemory isn't support on OSX 10.6. 421 // Mach-based SharedMemory isn't support on OSX 10.6.
425 if (mac::IsOSSnowLeopard()) 422 if (mac::IsOSSnowLeopard())
426 return; 423 return;
427 424
428 scoped_ptr<SharedMemory> shared_memory( 425 scoped_ptr<SharedMemory> shared_memory(CreateSharedMemory(s_memory_size));
429 CreateSharedMemory(s_memory_size).Pass());
430 426
431 // Check the protection levels. 427 // Check the protection levels.
432 int current_prot, max_prot; 428 int current_prot, max_prot;
433 ASSERT_TRUE(GetProtections(shared_memory->memory(), 429 ASSERT_TRUE(GetProtections(shared_memory->memory(),
434 shared_memory->mapped_size(), &current_prot, 430 shared_memory->mapped_size(), &current_prot,
435 &max_prot)); 431 &max_prot));
436 ASSERT_EQ(VM_PROT_READ | VM_PROT_WRITE, current_prot); 432 ASSERT_EQ(VM_PROT_READ | VM_PROT_WRITE, current_prot);
437 ASSERT_EQ(VM_PROT_READ | VM_PROT_WRITE, max_prot); 433 ASSERT_EQ(VM_PROT_READ | VM_PROT_WRITE, max_prot);
438 434
439 // Make a new memory object. 435 // Make a new memory object.
(...skipping 25 matching lines...) Expand all
465 461
466 // Tests that the method ShareReadOnlyToProcess() doesn't leak. 462 // Tests that the method ShareReadOnlyToProcess() doesn't leak.
467 TEST_F(SharedMemoryMacMultiProcessTest, MachShareToProcessReadonlyLeak) { 463 TEST_F(SharedMemoryMacMultiProcessTest, MachShareToProcessReadonlyLeak) {
468 // Mach-based SharedMemory isn't support on OSX 10.6. 464 // Mach-based SharedMemory isn't support on OSX 10.6.
469 if (mac::IsOSSnowLeopard()) 465 if (mac::IsOSSnowLeopard())
470 return; 466 return;
471 467
472 mach_msg_type_number_t active_name_count = GetActiveNameCount(); 468 mach_msg_type_number_t active_name_count = GetActiveNameCount();
473 469
474 { 470 {
475 scoped_ptr<SharedMemory> shared_memory( 471 scoped_ptr<SharedMemory> shared_memory(CreateSharedMemory(s_memory_size));
476 CreateSharedMemory(s_memory_size).Pass());
477 472
478 SharedMemoryHandle shm2; 473 SharedMemoryHandle shm2;
479 ASSERT_TRUE( 474 ASSERT_TRUE(
480 shared_memory->ShareReadOnlyToProcess(GetCurrentProcId(), &shm2)); 475 shared_memory->ShareReadOnlyToProcess(GetCurrentProcId(), &shm2));
481 ASSERT_TRUE(shm2.IsValid()); 476 ASSERT_TRUE(shm2.IsValid());
482 477
483 // Intentionally map with |readonly| set to |false|. 478 // Intentionally map with |readonly| set to |false|.
484 SharedMemory shared_memory2(shm2, false); 479 SharedMemory shared_memory2(shm2, false);
485 shared_memory2.Map(s_memory_size); 480 shared_memory2.Map(s_memory_size);
486 } 481 }
487 482
488 EXPECT_EQ(active_name_count, GetActiveNameCount()); 483 EXPECT_EQ(active_name_count, GetActiveNameCount());
489 } 484 }
490 485
491 } // namespace base 486 } // namespace base
OLDNEW
« no previous file with comments | « base/memory/shared_memory_mac.cc ('k') | base/memory/shared_memory_posix.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698